diff options
author | Vadim Yanitskiy <vyanitskiy@sysmocom.de> | 2021-05-28 02:54:09 +0200 |
---|---|---|
committer | Vadim Yanitskiy <vyanitskiy@sysmocom.de> | 2021-06-05 00:34:36 +0200 |
commit | d9daa3fd9ea2744de371190632b05b149feb4773 (patch) | |
tree | c8d49f396047a7e8b9961af85d1a9600b9214d7c | |
parent | b99db695a75d081efc5bea5692ea4563a88a2476 (diff) |
[VAMOS] conf_lchans_as_pchan(): improve readability
Change-Id: I1c5a033e89d9ca5fb01ebe9ffb521fd67d159bee
-rw-r--r-- | src/common/oml.c | 54 |
1 files changed, 21 insertions, 33 deletions
diff --git a/src/common/oml.c b/src/common/oml.c index cf839035..aba88473 100644 --- a/src/common/oml.c +++ b/src/common/oml.c @@ -813,62 +813,50 @@ static int handle_chan_comb(struct gsm_bts_trx_ts *ts, const uint8_t comb) return conf_lchans_as_pchan(ts, pchan); } -int conf_lchans_as_pchan(struct gsm_bts_trx_ts *ts, - enum gsm_phys_chan_config pchan) +static inline void lchans_type_set(struct gsm_bts_trx_ts *ts, + enum gsm_chan_t lchan_type, + unsigned int num_lchans) { - struct gsm_lchan *lchan; unsigned int i; + for (i = 0; i < num_lchans; i++) + ts->lchan[i].type = lchan_type; +} + +int conf_lchans_as_pchan(struct gsm_bts_trx_ts *ts, + enum gsm_phys_chan_config pchan) +{ switch (pchan) { case GSM_PCHAN_CCCH_SDCCH4_CBCH: - /* fallthrough */ case GSM_PCHAN_CCCH_SDCCH4: - for (i = 0; i < 4; i++) { - lchan = &ts->lchan[i]; - if (pchan == GSM_PCHAN_CCCH_SDCCH4_CBCH - && i == 2) { - lchan->type = GSM_LCHAN_CBCH; - } else { - lchan->type = GSM_LCHAN_SDCCH; - } - } + lchans_type_set(ts, GSM_LCHAN_SDCCH, 4); + if (pchan == GSM_PCHAN_CCCH_SDCCH4_CBCH) + ts->lchan[2].type = GSM_LCHAN_CBCH; /* fallthrough */ case GSM_PCHAN_CCCH: - lchan = &ts->lchan[CCCH_LCHAN]; - lchan->type = GSM_LCHAN_CCCH; + ts->lchan[CCCH_LCHAN].type = GSM_LCHAN_CBCH; break; case GSM_PCHAN_TCH_F: - lchan = &ts->lchan[0]; - lchan->type = GSM_LCHAN_TCH_F; + lchans_type_set(ts, GSM_LCHAN_TCH_F, 1); break; case GSM_PCHAN_TCH_H: - for (i = 0; i < 2; i++) { - lchan = &ts->lchan[i]; - lchan->type = GSM_LCHAN_TCH_H; - } + lchans_type_set(ts, GSM_LCHAN_TCH_H, 2); break; case GSM_PCHAN_SDCCH8_SACCH8C_CBCH: - /* fallthrough */ case GSM_PCHAN_SDCCH8_SACCH8C: - for (i = 0; i < 8; i++) { - lchan = &ts->lchan[i]; - if (pchan == GSM_PCHAN_SDCCH8_SACCH8C_CBCH - && i == 2) { - lchan->type = GSM_LCHAN_CBCH; - } else { - lchan->type = GSM_LCHAN_SDCCH; - } - } + lchans_type_set(ts, GSM_LCHAN_SDCCH, 8); + if (pchan == GSM_PCHAN_SDCCH8_SACCH8C_CBCH) + ts->lchan[2].type = GSM_LCHAN_CBCH; break; case GSM_PCHAN_PDCH: - lchan = &ts->lchan[0]; - lchan->type = GSM_LCHAN_PDTCH; + lchans_type_set(ts, GSM_LCHAN_PDTCH, 1); break; default: LOGP(DOML, LOGL_ERROR, "Unknown/unhandled PCHAN type: %u %s\n", ts->pchan, gsm_pchan_name(ts->pchan)); return -NM_NACK_PARAM_RANGE; } + return 0; } |