diff --git a/src/target/firmware/layer1/l23_api.c b/src/target/firmware/layer1/l23_api.c index daffaf8b6..e78020def 100644 --- a/src/target/firmware/layer1/l23_api.c +++ b/src/target/firmware/layer1/l23_api.c @@ -97,10 +97,13 @@ static uint32_t chan_nr2mf_task_mask(uint8_t chan_nr, uint8_t neigh_mode) lch_idx = cbits & 0x7; master_task = MF_TASK_SDCCH8_0 + lch_idx; multiframe = MF51; - } else if ((cbits & 0x1e) == 0x18) { - /* Osmocom specific extension for CBCH */ - master_task = (cbits & 0x01) ? /* 0b1100T */ - MF_TASK_SDCCH4_CBCH : MF_TASK_SDCCH8_CBCH; + } else if ((cbits & 0x1f) == 0x19) { + /* Osmocom specific extension for CBCH on SDCCH/4 */ + master_task = MF_TASK_SDCCH4_CBCH; + multiframe = MF51; + } else if ((cbits & 0x1f) == 0x1a) { + /* Osmocom specific extension for CBCH on SDCCH/8 */ + master_task = MF_TASK_SDCCH8_CBCH; multiframe = MF51; #if 0 } else if (cbits == 0x10) { @@ -141,10 +144,12 @@ static int chan_nr2dchan_type(uint8_t chan_nr) return GSM_DCHAN_SDCCH_4; } else if ((cbits & 0x18) == 0x08) { return GSM_DCHAN_SDCCH_8; - } else if ((cbits & 0x1e) == 0x18) { - /* Osmocom-specific extension for CBCH */ - return (cbits & 0x01) ? /* 0b1100T */ - GSM_DCHAN_SDCCH_8_CBCH : GSM_DCHAN_SDCCH_4_CBCH; + } else if ((cbits & 0x1f) == 0x19) { + /* Osmocom-specific extension for CBCH on SDCCH/4 */ + return GSM_DCHAN_SDCCH_4_CBCH; + } else if ((cbits & 0x1f) == 0x1a) { + /* Osmocom-specific extension for CBCH on SDCCH/8 */ + return GSM_DCHAN_SDCCH_8_CBCH; } return GSM_DCHAN_UNKNOWN; diff --git a/src/target/firmware/layer1/mframe_sched.c b/src/target/firmware/layer1/mframe_sched.c index 7fa38c138..9c2954c3f 100644 --- a/src/target/firmware/layer1/mframe_sched.c +++ b/src/target/firmware/layer1/mframe_sched.c @@ -416,10 +416,10 @@ uint8_t mframe_task2chan_nr(enum mframe_task mft, uint8_t ts) /* Osmocom specific extensions */ case MF_TASK_SDCCH4_CBCH: - cbits = 0x18; + cbits = 0x19; break; case MF_TASK_SDCCH8_CBCH: - cbits = 0x19; + cbits = 0x1a; break; case MF_TASK_UL_ALL_NB: