aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libcommon
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2016-07-23 16:54:16 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2016-07-28 11:55:00 +0200
commitec1b5a0e9e2b6549e0ede48e803095e569997355 (patch)
tree732b156550130463e08ee8a5387f7ae05926df0a /openbsc/src/libcommon
parent350533cc32cf686b6375f92083981e23c2a86082 (diff)
gsm_ts2chan_nr(): add assertions for lchan_nr
Diffstat (limited to 'openbsc/src/libcommon')
-rw-r--r--openbsc/src/libcommon/gsm_data_shared.c14
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;
}