aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2018-09-17 22:44:04 +0200
committerHarald Welte <laforge@gnumonks.org>2018-09-17 22:47:45 +0200
commitb222f6666d5a7e91de477fe84112e69b1cb5b03a (patch)
tree5b0b0b3bf7004f41bbc6af6245a0e35ad714c953
parent6434ba9f907f6eb2fe8926073a82b0b47ba6efd4 (diff)
CBCH: Fix CBCH implementation for osmo-bts-trx
Unfortunately the code in Icc15603079a1709ec094f400a9bcf0008211890f was incomplete as it missed a few spots where the CBCH-enabled channel types weren't yet covered. Using this patch I can both still perform RACH / Location Update as well as actually receive SMSCB messages on an attached phone (Galaxy S5). Change-Id: I311b141668549ef37054cbe74be66bf17ac1d7e6 Closes: OS#1617 Closes: OS#3559
-rw-r--r--src/osmo-bts-trx/l1_if.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/osmo-bts-trx/l1_if.c b/src/osmo-bts-trx/l1_if.c
index 2b4f5c86..faff3a00 100644
--- a/src/osmo-bts-trx/l1_if.c
+++ b/src/osmo-bts-trx/l1_if.c
@@ -48,9 +48,11 @@ static const uint8_t transceiver_chan_types[_GSM_PCHAN_MAX] = {
[GSM_PCHAN_NONE] = 8,
[GSM_PCHAN_CCCH] = 4,
[GSM_PCHAN_CCCH_SDCCH4] = 5,
+ [GSM_PCHAN_CCCH_SDCCH4_CBCH] = 5,
[GSM_PCHAN_TCH_F] = 1,
[GSM_PCHAN_TCH_H] = 3,
[GSM_PCHAN_SDCCH8_SACCH8C] = 7,
+ [GSM_PCHAN_SDCCH8_SACCH8C_CBCH] = 7,
[GSM_PCHAN_PDCH] = 13,
/* [GSM_PCHAN_TCH_F_PDCH] not needed here, see trx_set_ts_as_pchan() */
[GSM_PCHAN_UNKNOWN] = 0,
@@ -268,7 +270,8 @@ int bts_model_trx_close(struct gsm_bts_trx *trx)
trx_sched_reset(&l1h->l1s);
/* deactivate lchan for CCCH */
- if (pchan == GSM_PCHAN_CCCH || pchan == GSM_PCHAN_CCCH_SDCCH4) {
+ if (pchan == GSM_PCHAN_CCCH || pchan == GSM_PCHAN_CCCH_SDCCH4 ||
+ pchan == GSM_PCHAN_CCCH_SDCCH4_CBCH) {
lchan_set_state(&trx->ts[0].lchan[CCCH_LCHAN], LCHAN_S_INACTIVE);
}
@@ -378,7 +381,8 @@ static uint8_t trx_set_ts_as_pchan(struct gsm_bts_trx_ts *ts,
return NM_NACK_RES_NOTAVAIL;
/* activate lchan for CCCH */
- if (pchan == GSM_PCHAN_CCCH || pchan == GSM_PCHAN_CCCH_SDCCH4) {
+ if (pchan == GSM_PCHAN_CCCH || pchan == GSM_PCHAN_CCCH_SDCCH4 ||
+ pchan == GSM_PCHAN_CCCH_SDCCH4_CBCH) {
ts->lchan[CCCH_LCHAN].rel_act_kind = LCHAN_REL_ACT_OML;
lchan_set_state(&ts->lchan[CCCH_LCHAN], LCHAN_S_ACTIVE);
}