aboutsummaryrefslogtreecommitdiffstats
path: root/src/common/gsm_data.c
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2021-05-27 00:51:30 +0200
committerlaforge <laforge@osmocom.org>2021-06-04 20:04:13 +0000
commit5d888e5064fd75f16183cabc71ff4e38b205614a (patch)
treeb26fe83f5f91b4d77256796a29eae47b33d10ced /src/common/gsm_data.c
parent0704b29d6d19cda1fed8f010c9c7a2ef5581a474 (diff)
[VAMOS] rsl_lchan_lookup(): make it more readable
Diffstat (limited to 'src/common/gsm_data.c')
-rw-r--r--src/common/gsm_data.c35
1 files changed, 28 insertions, 7 deletions
diff --git a/src/common/gsm_data.c b/src/common/gsm_data.c
index 8425d1a4..6b57851a 100644
--- a/src/common/gsm_data.c
+++ b/src/common/gsm_data.c
@@ -282,41 +282,62 @@ struct gsm_lchan *rsl_lchan_lookup(struct gsm_bts_trx *trx, uint8_t chan_nr,
if (rc)
*rc = -EINVAL;
- if (cbits == ABIS_RSL_CHAN_NR_CBITS_Bm_ACCHs) {
+ switch (cbits) {
+ case ABIS_RSL_CHAN_NR_CBITS_Bm_ACCHs:
lch_idx = 0; /* TCH/F */
if (ts->pchan != GSM_PCHAN_TCH_F &&
ts->pchan != GSM_PCHAN_PDCH &&
ts->pchan != GSM_PCHAN_TCH_F_PDCH &&
ts->pchan != GSM_PCHAN_TCH_F_TCH_H_PDCH)
ok = false;
- } else if ((cbits & 0x1e) == ABIS_RSL_CHAN_NR_CBITS_Lm_ACCHs(0)) {
+ break;
+ case ABIS_RSL_CHAN_NR_CBITS_Lm_ACCHs(0):
+ case ABIS_RSL_CHAN_NR_CBITS_Lm_ACCHs(1):
lch_idx = cbits & 0x1; /* TCH/H */
if (ts->pchan != GSM_PCHAN_TCH_H &&
ts->pchan != GSM_PCHAN_TCH_F_TCH_H_PDCH)
ok = false;
- } else if ((cbits & 0x1c) == ABIS_RSL_CHAN_NR_CBITS_SDCCH4_ACCH(0)) {
+ break;
+ case ABIS_RSL_CHAN_NR_CBITS_SDCCH4_ACCH(0):
+ case ABIS_RSL_CHAN_NR_CBITS_SDCCH4_ACCH(1):
+ case ABIS_RSL_CHAN_NR_CBITS_SDCCH4_ACCH(2):
+ case ABIS_RSL_CHAN_NR_CBITS_SDCCH4_ACCH(3):
lch_idx = cbits & 0x3; /* SDCCH/4 */
if (ts->pchan != GSM_PCHAN_CCCH_SDCCH4 &&
ts->pchan != GSM_PCHAN_CCCH_SDCCH4_CBCH)
ok = false;
- } else if ((cbits & 0x18) == ABIS_RSL_CHAN_NR_CBITS_SDCCH8_ACCH(0)) {
+ break;
+ case ABIS_RSL_CHAN_NR_CBITS_SDCCH8_ACCH(0):
+ case ABIS_RSL_CHAN_NR_CBITS_SDCCH8_ACCH(1):
+ case ABIS_RSL_CHAN_NR_CBITS_SDCCH8_ACCH(2):
+ case ABIS_RSL_CHAN_NR_CBITS_SDCCH8_ACCH(3):
+ case ABIS_RSL_CHAN_NR_CBITS_SDCCH8_ACCH(4):
+ case ABIS_RSL_CHAN_NR_CBITS_SDCCH8_ACCH(5):
+ case ABIS_RSL_CHAN_NR_CBITS_SDCCH8_ACCH(6):
+ case ABIS_RSL_CHAN_NR_CBITS_SDCCH8_ACCH(7):
lch_idx = cbits & 0x7; /* SDCCH/8 */
if (ts->pchan != GSM_PCHAN_SDCCH8_SACCH8C &&
ts->pchan != GSM_PCHAN_SDCCH8_SACCH8C_CBCH)
ok = false;
- } else if (cbits == 0x10 || cbits == 0x11 || cbits == 0x12) {
+ break;
+ case ABIS_RSL_CHAN_NR_CBITS_BCCH:
+ case ABIS_RSL_CHAN_NR_CBITS_RACH:
+ case ABIS_RSL_CHAN_NR_CBITS_PCH_AGCH:
lch_idx = 0;
if (ts->pchan != GSM_PCHAN_CCCH &&
ts->pchan != GSM_PCHAN_CCCH_SDCCH4 &&
ts->pchan != GSM_PCHAN_CCCH_SDCCH4_CBCH)
ok = false;
/* FIXME: we should not return first sdcch4 !!! */
- } else if ((chan_nr & RSL_CHAN_NR_MASK) == RSL_CHAN_OSMO_PDCH) {
+ break;
+ case ABIS_RSL_CHAN_NR_CBITS_OSMO_PDCH:
lch_idx = 0;
if (ts->pchan != GSM_PCHAN_TCH_F_TCH_H_PDCH)
ok = false;
- } else
+ break;
+ default:
return NULL;
+ }
if (rc && ok)
*rc = 0;