diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2016-07-23 16:54:16 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2016-07-28 11:55:00 +0200 |
commit | ec1b5a0e9e2b6549e0ede48e803095e569997355 (patch) | |
tree | 732b156550130463e08ee8a5387f7ae05926df0a /openbsc/src/libcommon | |
parent | 350533cc32cf686b6375f92083981e23c2a86082 (diff) |
gsm_ts2chan_nr(): add assertions for lchan_nr
Change-Id: Ibfdef347c85d4a145645a7325cd193ea1b475a54
Diffstat (limited to 'openbsc/src/libcommon')
-rw-r--r-- | openbsc/src/libcommon/gsm_data_shared.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/openbsc/src/libcommon/gsm_data_shared.c b/openbsc/src/libcommon/gsm_data_shared.c index 2fc56901a..14c33d722 100644 --- a/openbsc/src/libcommon/gsm_data_shared.c +++ b/openbsc/src/libcommon/gsm_data_shared.c @@ -560,24 +560,38 @@ uint8_t gsm_ts2chan_nr(const struct gsm_bts_trx_ts *ts, uint8_t lchan_nr) case GSM_PCHAN_TCH_F: case GSM_PCHAN_PDCH: case GSM_PCHAN_TCH_F_PDCH: + OSMO_ASSERT(lchan_nr == 0); cbits = 0x01; break; case GSM_PCHAN_TCH_H: + OSMO_ASSERT(lchan_nr < 2); cbits = 0x02; cbits += lchan_nr; break; case GSM_PCHAN_CCCH_SDCCH4: case GSM_PCHAN_CCCH_SDCCH4_CBCH: + /* + * As a special hack for BCCH, lchan_nr == 4 may be passed + * here. This should never be sent in an RSL message, so just + * return 0. See osmo-bts-xxx/oml.c:opstart_compl(). + */ + if (lchan_nr == 4) { + chan_nr = 0; + break; + } + OSMO_ASSERT(lchan_nr < 4); cbits = 0x04; cbits += lchan_nr; break; case GSM_PCHAN_SDCCH8_SACCH8C: case GSM_PCHAN_SDCCH8_SACCH8C_CBCH: + OSMO_ASSERT(lchan_nr < 8); cbits = 0x08; cbits += lchan_nr; break; default: case GSM_PCHAN_CCCH: + OSMO_ASSERT(lchan_nr == 0); cbits = 0x10; break; } |