diff options
author | Harald Welte <laforge@gnumonks.org> | 2014-12-28 15:00:45 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2014-12-30 00:35:28 +0100 |
commit | 30f1f376383df3ae8d85e96542bf14d174c25d89 (patch) | |
tree | d2c7cf085cce2a44ad055b741b25ef8794f105a2 /openbsc/src/libcommon | |
parent | 65be6de155407142ddab44faf8aee5f8d5ebf628 (diff) |
Add basic support for CBCH / SMS-CB (Cell Brroadcast)
We can now configure the pyisical channel types for CBCH either in the
CCCH+SDCCH4 or in the SDCCH8 chanel combination.
Depending on whether a CBCH exists on the BTS, we also generate the SI4
with matching CBCH channel description to notify the phones of the
existance of the CBCH.
There is now a VTY command how a SMS-CB message can be sent to a given
BTS.
We do not yet have any logic at all for actual scheduling of multiple
CBCH RSL messages towards one or multiple BTSs yet, though.
Diffstat (limited to 'openbsc/src/libcommon')
-rw-r--r-- | openbsc/src/libcommon/gsm_data_shared.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/openbsc/src/libcommon/gsm_data_shared.c b/openbsc/src/libcommon/gsm_data_shared.c index 8687a1047..210d2284b 100644 --- a/openbsc/src/libcommon/gsm_data_shared.c +++ b/openbsc/src/libcommon/gsm_data_shared.c @@ -51,7 +51,7 @@ static void gsm_mo_init(struct gsm_abis_mo *mo, struct gsm_bts *bts, gsm_abis_mo_reset(mo); } -const struct value_string gsm_pchant_names[10] = { +const struct value_string gsm_pchant_names[12] = { { GSM_PCHAN_NONE, "NONE" }, { GSM_PCHAN_CCCH, "CCCH" }, { GSM_PCHAN_CCCH_SDCCH4,"CCCH+SDCCH4" }, @@ -61,10 +61,12 @@ const struct value_string gsm_pchant_names[10] = { { GSM_PCHAN_PDCH, "PDCH" }, { GSM_PCHAN_TCH_F_PDCH, "TCH/F_PDCH" }, { GSM_PCHAN_UNKNOWN, "UNKNOWN" }, + { GSM_PCHAN_CCCH_SDCCH4_CBCH, "CCCH+SDCCH4+CBCH" }, + { GSM_PCHAN_SDCCH8_SACCH8C, "SDCCH8+CBCH" }, { 0, NULL } }; -const struct value_string gsm_pchant_descs[10] = { +const struct value_string gsm_pchant_descs[12] = { { GSM_PCHAN_NONE, "Physical Channel not configured" }, { GSM_PCHAN_CCCH, "FCCH + SCH + BCCH + CCCH (Comb. IV)" }, { GSM_PCHAN_CCCH_SDCCH4, @@ -75,6 +77,8 @@ const struct value_string gsm_pchant_descs[10] = { { GSM_PCHAN_PDCH, "Packet Data Channel for GPRS/EDGE" }, { GSM_PCHAN_TCH_F_PDCH, "Dynamic TCH/F or GPRS PDCH" }, { GSM_PCHAN_UNKNOWN, "Unknown / Unsupported channel combination" }, + { GSM_PCHAN_CCCH_SDCCH4_CBCH, "FCCH + SCH + BCCH + CCCH + CBCH + 3 SDCCH + 2 SACCH (Comb. V)" }, + { GSM_PCHAN_SDCCH8_SACCH8C, "7 SDCCH + 4 SACCH + CBCH (Comb. VII)" }, { 0, NULL } }; @@ -88,12 +92,13 @@ enum gsm_phys_chan_config gsm_pchan_parse(const char *name) return get_string_value(gsm_pchant_names, name); } -const struct value_string gsm_lchant_names[6] = { +const struct value_string gsm_lchant_names[8] = { { GSM_LCHAN_NONE, "NONE" }, { GSM_LCHAN_SDCCH, "SDCCH" }, { GSM_LCHAN_TCH_F, "TCH/F" }, { GSM_LCHAN_TCH_H, "TCH/H" }, { GSM_LCHAN_UNKNOWN, "UNKNOWN" }, + { GSM_LCHAN_CBCH, "CBCH" }, { 0, NULL } }; @@ -515,10 +520,12 @@ uint8_t gsm_ts2chan_nr(const struct gsm_bts_trx_ts *ts, uint8_t lchan_nr) cbits += lchan_nr; break; case GSM_PCHAN_CCCH_SDCCH4: + case GSM_PCHAN_CCCH_SDCCH4_CBCH: cbits = 0x04; cbits += lchan_nr; break; case GSM_PCHAN_SDCCH8_SACCH8C: + case GSM_PCHAN_SDCCH8_SACCH8C_CBCH: cbits = 0x08; cbits += lchan_nr; break; |