diff options
author | Harald Welte <laforge@gnumonks.org> | 2018-09-17 22:44:04 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-09-17 22:47:45 +0200 |
commit | b222f6666d5a7e91de477fe84112e69b1cb5b03a (patch) | |
tree | 5b0b0b3bf7004f41bbc6af6245a0e35ad714c953 | |
parent | 6434ba9f907f6eb2fe8926073a82b0b47ba6efd4 (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.c | 8 |
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); } |