aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-06-08 11:19:45 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-06-08 11:19:45 +0200
commitf758b152bac5127edee8a7eadd4a1e40600c721f (patch)
treee9447ab91085a1fc608c6f1a1ea39020b7aa7235
parentb1189e517ff4ef95b2f5784a6026675ee8cbf0e0 (diff)
clean-up: Pass the pdch to kill arfcn, ts and tsc parameter
-rw-r--r--src/bts.cpp7
-rw-r--r--src/encoding.cpp8
-rw-r--r--src/encoding.h3
-rw-r--r--src/tbf.cpp7
-rw-r--r--src/tbf.h2
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)
diff --git a/src/tbf.h b/src/tbf.h
index 80e2068f..f0c819aa 100644
--- a/src/tbf.h
+++ b/src/tbf.h
@@ -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();