diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2016-07-18 23:43:44 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2016-07-28 11:56:49 +0200 |
commit | d384110d3d09e06658d5ca2d5c63dc78dd656b91 (patch) | |
tree | 470dd812af1df17aadcbf3b880bb90fcdd6b1e2c /openbsc/src/libcommon | |
parent | 6e999b75fa3881540e0426f01c9f80b8953ec33c (diff) |
dyn TS: gsm_lchan2chan_nr(): decouple from ts->pchan
For upcoming dynamic TS, the pchan choice for RSL De-/Activation is not
trivial. So in order to pass the desired pchan to generate the RSL chan_nr,
introduce gsm_lchan_as_pchan2chan_nr().
To avoid code dup, this requires decoupling the gsm_ts2chan_nr() pchan from the
actual ts struct, so refactor gsm_ts2chan_nr() to gsm_pchan2chan_nr() with
explicit pchan, ts_nr and lchan_nr arguments.
Change-Id: I1a40e8452fe8120d350a27973e56be0b8c8c517f
Diffstat (limited to 'openbsc/src/libcommon')
-rw-r--r-- | openbsc/src/libcommon/gsm_data_shared.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/openbsc/src/libcommon/gsm_data_shared.c b/openbsc/src/libcommon/gsm_data_shared.c index 14c33d722..84c57c3b5 100644 --- a/openbsc/src/libcommon/gsm_data_shared.c +++ b/openbsc/src/libcommon/gsm_data_shared.c @@ -552,11 +552,12 @@ gsm_objclass2obj(struct gsm_bts *bts, uint8_t obj_class, } /* See Table 10.5.25 of GSM04.08 */ -uint8_t gsm_ts2chan_nr(const struct gsm_bts_trx_ts *ts, uint8_t lchan_nr) +uint8_t gsm_pchan2chan_nr(enum gsm_phys_chan_config pchan, + uint8_t ts_nr, uint8_t lchan_nr) { uint8_t cbits, chan_nr; - switch (ts->pchan) { + switch (pchan) { case GSM_PCHAN_TCH_F: case GSM_PCHAN_PDCH: case GSM_PCHAN_TCH_F_PDCH: @@ -596,14 +597,20 @@ uint8_t gsm_ts2chan_nr(const struct gsm_bts_trx_ts *ts, uint8_t lchan_nr) break; } - chan_nr = (cbits << 3) | (ts->nr & 0x7); + chan_nr = (cbits << 3) | (ts_nr & 0x7); return chan_nr; } uint8_t gsm_lchan2chan_nr(const struct gsm_lchan *lchan) { - return gsm_ts2chan_nr(lchan->ts, lchan->nr); + return gsm_pchan2chan_nr(lchan->ts->pchan, lchan->ts->nr, lchan->nr); +} + +uint8_t gsm_lchan_as_pchan2chan_nr(const struct gsm_lchan *lchan, + enum gsm_phys_chan_config as_pchan) +{ + return gsm_pchan2chan_nr(as_pchan, lchan->ts->nr, lchan->nr); } /* return the gsm_lchan for the CBCH (if it exists at all) */ |