rsl: Add osmocom-specific extensions to RSL channel numbers for CBCH

We don't really *need* it in libosmocore as such, but the lack of
having all osmocom extensions listed here lead to using overlapping
definitions: 0x18 was used for dynamic PDCH on the Abis side, but also
for CBCH on the L1SAP side.  Let's list them all here to increase
visibility in case anyone wants to extend this further...

Related: OS#4027
Change-Id: I93e557358cf1c1b622f77f906959df7ca6d5cb12
This commit is contained in:
Harald Welte 2019-05-27 16:51:23 +02:00
parent 1d32b7fecd
commit a8d7ebb6fb
2 changed files with 14 additions and 0 deletions

View File

@ -50,6 +50,8 @@ union abis_rsl_chan_nr {
#define ABIS_RSL_CHAN_NR_CBITS_RACH 0x11
#define ABIS_RSL_CHAN_NR_CBITS_PCH_AGCH 0x12
#define ABIS_RSL_CHAN_NR_CBITS_OSMO_PDCH 0x18 /*< non-standard, for dyn TS */
#define ABIS_RSL_CHAN_NR_CBITS_OSMO_CBCH4 0x19 /*< non-standard, for CBCH/SDCCH4 */
#define ABIS_RSL_CHAN_NR_CBITS_OSMO_CBCH8 0x1a /*< non-standard, for CBCH/SDCCH8 */
/* Link Identifier 9.3.2 */
union abis_rsl_link_id {
@ -424,6 +426,8 @@ enum {
#define RSL_CHAN_RACH 0x88
#define RSL_CHAN_PCH_AGCH 0x90
#define RSL_CHAN_OSMO_PDCH 0xc0 /*< non-standard, for dyn TS */
#define RSL_CHAN_OSMO_CBCH4 0xc8 /*< non-standard, for CBCH/SDCCH4 */
#define RSL_CHAN_OSMO_CBCH8 0xd0 /*< non-standard, for CBCH/SDCCH8 */
/* Chapter 9.3.3 */
#define RSL_ACT_TYPE_INITIAL 0x00

View File

@ -209,6 +209,12 @@ int rsl_dec_chan_nr(uint8_t chan_nr, uint8_t *type, uint8_t *subch, uint8_t *tim
} else if ((chan_nr & 0xf8) == RSL_CHAN_OSMO_PDCH) {
*type = RSL_CHAN_OSMO_PDCH;
*subch = 0;
} else if ((chan_nr & 0xf8) == RSL_CHAN_OSMO_CBCH4) {
*type = RSL_CHAN_OSMO_CBCH4;
*subch = 0;
} else if ((chan_nr & 0xf8) == RSL_CHAN_OSMO_CBCH8) {
*type = RSL_CHAN_OSMO_CBCH8;
*subch = 0;
} else
return -EINVAL;
@ -242,6 +248,10 @@ char *rsl_chan_nr_str_buf(char *buf, size_t buf_len, uint8_t chan_nr)
snprintf(buf, buf_len, "PCH/AGCH on TS%d", ts);
else if (cbits == 0x18)
snprintf(buf, buf_len, "PDCH on TS%d", ts);
else if (cbits == 0x19)
snprintf(buf, buf_len, "CBCH(SDCCH/4) on TS%d", ts);
else if (cbits == 0x1a)
snprintf(buf, buf_len, "CBCH(SDCCH/8) on TS%d", ts);
else
snprintf(buf, buf_len, "UNKNOWN on TS%d", ts);