From 57850ae188bcd3319e337e3da6930b88e705e7ce Mon Sep 17 00:00:00 2001 From: Vadim Yanitskiy Date: Wed, 26 May 2021 20:23:46 +0200 Subject: rsl: make rsl_dec_chan_nr() more readable, use RSL_CHAN_NR_MASK Change-Id: I1650e3b02e79461e42499268fa8ed30bff667489 --- src/gsm/rsl.c | 54 +++++++++++++++++++++++------------------------------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/src/gsm/rsl.c b/src/gsm/rsl.c index 8d345437..706fb548 100644 --- a/src/gsm/rsl.c +++ b/src/gsm/rsl.c @@ -187,38 +187,30 @@ int rsl_dec_chan_nr(uint8_t chan_nr, uint8_t *type, uint8_t *subch, uint8_t *tim { *timeslot = chan_nr & 0x7; - if ((chan_nr & 0xf8) == RSL_CHAN_Bm_ACCHs) { - *type = RSL_CHAN_Bm_ACCHs; + switch (chan_nr & RSL_CHAN_NR_MASK) { + case RSL_CHAN_Bm_ACCHs: + case RSL_CHAN_BCCH: + case RSL_CHAN_RACH: + case RSL_CHAN_PCH_AGCH: + case RSL_CHAN_OSMO_PDCH: + case RSL_CHAN_OSMO_CBCH4: + case RSL_CHAN_OSMO_CBCH8: + *type = chan_nr & RSL_CHAN_NR_MASK; *subch = 0; - } else if ((chan_nr & 0xf0) == RSL_CHAN_Lm_ACCHs) { - *type = RSL_CHAN_Lm_ACCHs; - *subch = (chan_nr >> 3) & 0x1; - } else if ((chan_nr & 0xe0) == RSL_CHAN_SDCCH4_ACCH) { - *type = RSL_CHAN_SDCCH4_ACCH; - *subch = (chan_nr >> 3) & 0x3; - } else if ((chan_nr & 0xc0) == RSL_CHAN_SDCCH8_ACCH) { - *type = RSL_CHAN_SDCCH8_ACCH; - *subch = (chan_nr >> 3) & 0x7; - } else if ((chan_nr & 0xf8) == RSL_CHAN_BCCH) { - *type = RSL_CHAN_BCCH; - *subch = 0; - } else if ((chan_nr & 0xf8) == RSL_CHAN_RACH) { - *type = RSL_CHAN_RACH; - *subch = 0; - } else if ((chan_nr & 0xf8) == RSL_CHAN_PCH_AGCH) { - *type = RSL_CHAN_PCH_AGCH; - *subch = 0; - } 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; + break; + default: + if ((chan_nr & 0xf0) == RSL_CHAN_Lm_ACCHs) { + *type = RSL_CHAN_Lm_ACCHs; + *subch = (chan_nr >> 3) & 0x1; + } else if ((chan_nr & 0xe0) == RSL_CHAN_SDCCH4_ACCH) { + *type = RSL_CHAN_SDCCH4_ACCH; + *subch = (chan_nr >> 3) & 0x3; + } else if ((chan_nr & 0xc0) == RSL_CHAN_SDCCH8_ACCH) { + *type = RSL_CHAN_SDCCH8_ACCH; + *subch = (chan_nr >> 3) & 0x7; + } else + return -EINVAL; + } return 0; } -- cgit v1.2.3