diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2014-06-08 11:19:45 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2014-06-08 11:19:45 +0200 |
commit | f758b152bac5127edee8a7eadd4a1e40600c721f (patch) | |
tree | e9447ab91085a1fc608c6f1a1ea39020b7aa7235 | |
parent | b1189e517ff4ef95b2f5784a6026675ee8cbf0e0 (diff) |
clean-up: Pass the pdch to kill arfcn, ts and tsc parameter
-rw-r--r-- | src/bts.cpp | 7 | ||||
-rw-r--r-- | src/encoding.cpp | 8 | ||||
-rw-r--r-- | src/encoding.h | 3 | ||||
-rw-r--r-- | src/tbf.cpp | 7 | ||||
-rw-r--r-- | src/tbf.h | 2 |
5 files changed, 17 insertions, 10 deletions
diff --git a/src/bts.cpp b/src/bts.cpp index 35f6af62..c07b8f4b 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -407,8 +407,7 @@ bool BTS::rcv_rach_sba(uint8_t ra, uint32_t Fn, int16_t qta, bitvec *immediate_a "(AGCH)\n"); *plen = Encoding::write_immediate_assignment(&m_bts, immediate_assignment, 0, ra, - Fn, qta >> 2, m_bts.trx[trx_no].arfcn, ts_no, - m_bts.trx[trx_no].pdch[ts_no].tsc, 0, 0, 0, 0, sb_fn, 1, + Fn, qta >> 2, &m_bts.trx[trx_no].pdch[ts_no], 0, 0, 0, 0, sb_fn, 1, m_bts.alpha, m_bts.gamma, -1); return true; } @@ -446,7 +445,7 @@ bool BTS::rcv_rach_tbf(uint8_t ra, uint32_t Fn, int16_t qta, bitvec *immediate_a tbf_name(tbf)); *plen = Encoding::write_immediate_assignment(&m_bts, immediate_assignment, 0, ra, - Fn, tbf->ta, tbf->trx->arfcn, tbf->first_ts, tbf->tsc(), + Fn, tbf->ta, tbf->first_pdch(), tbf->tfi(), tbf->dir.ul.usf[tbf->first_ts], 0, 0, 0, 0, m_bts.alpha, m_bts.gamma, -1); return true; @@ -543,7 +542,7 @@ void BTS::snd_dl_ass(gprs_rlcmac_tbf *tbf, uint8_t poll, const char *imsi) * so the assignment will not conflict with possible RACH requests. */ plen = Encoding::write_immediate_assignment(&m_bts, immediate_assignment, 1, 125, (tbf->pdch[tbf->first_ts]->last_rts_fn + 21216) % 2715648, tbf->ta, - tbf->trx->arfcn, tbf->first_ts, tbf->tsc(), tbf->tfi(), 0, tbf->tlli(), poll, + tbf->first_pdch(), tbf->tfi(), 0, tbf->tlli(), poll, tbf->poll_fn, 0, m_bts.alpha, m_bts.gamma, -1); pcu_l1if_tx_pch(immediate_assignment, plen, imsi); bitvec_free(immediate_assignment); diff --git a/src/encoding.cpp b/src/encoding.cpp index 13848aa8..644f32a4 100644 --- a/src/encoding.cpp +++ b/src/encoding.cpp @@ -29,7 +29,7 @@ int Encoding::write_immediate_assignment( struct gprs_rlcmac_bts *bts, bitvec * dest, uint8_t downlink, uint8_t ra, - uint32_t ref_fn, uint8_t ta, uint16_t arfcn, uint8_t ts, uint8_t tsc, + uint32_t ref_fn, uint8_t ta, gprs_rlcmac_pdch *pdch, uint8_t tfi, uint8_t usf, uint32_t tlli, uint8_t polling, uint32_t fn, uint8_t single_block, uint8_t alpha, uint8_t gamma, int8_t ta_idx) @@ -51,10 +51,10 @@ int Encoding::write_immediate_assignment( // GSM 04.08 10.5.2.25a Packet Channel Description bitvec_write_field(dest, wp,0x1,5); // Channel type - bitvec_write_field(dest, wp,ts,3); // TN - bitvec_write_field(dest, wp,tsc,3); // TSC + bitvec_write_field(dest, wp,pdch->ts_no,3); // TN + bitvec_write_field(dest, wp,pdch->tsc,3); // TSC bitvec_write_field(dest, wp,0x0,3); // non-hopping RF channel configuraion - bitvec_write_field(dest, wp,arfcn,10); // ARFCN + bitvec_write_field(dest, wp, pdch->trx->arfcn,10); // ARFCN //10.5.2.30 Request Reference bitvec_write_field(dest, wp,ra,8); // RA diff --git a/src/encoding.h b/src/encoding.h index e62c2c8f..dc4b95e9 100644 --- a/src/encoding.h +++ b/src/encoding.h @@ -24,6 +24,7 @@ #include <gsm_rlcmac.h> struct gprs_rlcmac_bts; +struct gprs_rlcmac_pdch; struct gprs_rlcmac_tbf; struct bitvec; @@ -38,7 +39,7 @@ public: static int write_immediate_assignment( struct gprs_rlcmac_bts *bts, bitvec * dest, uint8_t downlink, uint8_t ra, - uint32_t ref_fn, uint8_t ta, uint16_t arfcn, uint8_t ts, uint8_t tsc, + uint32_t ref_fn, uint8_t ta, gprs_rlcmac_pdch *pdch, uint8_t tfi, uint8_t usf, uint32_t tlli, uint8_t polling, uint32_t fn, uint8_t single_block, uint8_t alpha, uint8_t gamma, int8_t ta_idx); diff --git a/src/tbf.cpp b/src/tbf.cpp index 5943674e..59797510 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -1764,9 +1764,14 @@ void gprs_rlcmac_tbf::rotate_in_list() llist_add(&list, &bts->bts_data()->dl_tbfs); } +gprs_rlcmac_pdch *gprs_rlcmac_tbf::first_pdch() const +{ + return &trx->pdch[first_ts]; +} + uint8_t gprs_rlcmac_tbf::tsc() const { - return trx->pdch[first_ts].tsc; + return first_pdch()->tsc; } void tbf_print_vty_info(struct vty *vty, llist_head *ltbf) @@ -140,6 +140,8 @@ struct gprs_rlcmac_tbf { time_t created_ts() const; + gprs_rlcmac_pdch *first_pdch() const; + /* attempt to make things a bit more fair */ void rotate_in_list(); |