aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2021-05-28 02:54:09 +0200
committerVadim Yanitskiy <vyanitskiy@sysmocom.de>2021-06-05 00:34:36 +0200
commitd9daa3fd9ea2744de371190632b05b149feb4773 (patch)
treec8d49f396047a7e8b9961af85d1a9600b9214d7c
parentb99db695a75d081efc5bea5692ea4563a88a2476 (diff)
[VAMOS] conf_lchans_as_pchan(): improve readability
-rw-r--r--src/common/oml.c54
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;
}