summaryrefslogtreecommitdiffstats
path: root/src/target/firmware
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2022-04-21 05:05:06 +0300
committerVadim Yanitskiy <vyanitskiy@sysmocom.de>2022-04-21 15:03:11 +0300
commita6fad425dbd7ec882f0537bdcaaf2beb86000d0f (patch)
treeb257af671ed5b0f9c1b9a0724818951e664891b4 /src/target/firmware
parent859485c681d4be4514f9e2d2a6250d6ff7292f86 (diff)
firmware/layer1: fix -Wtype-limits in chan_nr2mf_task_mask()
arm-none-eabi-gcc versions 11.2.0 shows the following warning: layer1/l23_api.c: In function 'chan_nr2mf_task_mask': layer1/l23_api.c:123:25: warning: comparison is always true due to limited range of data type [-Wtype-limits] 123 | if (second_task >= 0) /* optional */ Let's get rid of {master,second}_task by using a macro. Change-Id: I00bd3e11a14f10b78fd91f0e6915ca4fc0817d6a
Diffstat (limited to 'src/target/firmware')
-rw-r--r--src/target/firmware/layer1/l23_api.c40
1 files changed, 20 insertions, 20 deletions
diff --git a/src/target/firmware/layer1/l23_api.c b/src/target/firmware/layer1/l23_api.c
index 735d92aa..afcf9f53 100644
--- a/src/target/firmware/layer1/l23_api.c
+++ b/src/target/firmware/layer1/l23_api.c
@@ -73,72 +73,72 @@ static uint32_t chan_nr2mf_task_mask(uint8_t chan_nr, uint8_t neigh_mode)
uint8_t cbits = chan_nr >> 3;
uint8_t tn = chan_nr & 0x7;
uint8_t lch_idx;
- enum mframe_task master_task = MF_TASK_BCCH_NORM;
- enum mframe_task second_task = -1; /* optional */
enum mf_type multiframe = 0;
uint32_t task_mask = 0x00;
+#define TASK_SET(task) \
+ task_mask |= (1 << (task))
+
if (cbits == 0x01) {
lch_idx = 0;
- master_task = (tn & 1) ? MF_TASK_TCH_F_ODD : MF_TASK_TCH_F_EVEN;
+ TASK_SET((tn & 1) ? MF_TASK_TCH_F_ODD : MF_TASK_TCH_F_EVEN);
multiframe = (tn & 1) ? MF26ODD : MF26EVEN;
} else if ((cbits & 0x1e) == 0x02) {
lch_idx = cbits & 0x1;
- master_task = MF_TASK_TCH_H_0 + lch_idx;
+ TASK_SET(MF_TASK_TCH_H_0 + lch_idx);
multiframe = (lch_idx & 1) ? MF26ODD : MF26EVEN;
} else if ((cbits & 0x1c) == 0x04) {
lch_idx = cbits & 0x3;
- master_task = MF_TASK_SDCCH4_0 + lch_idx;
+ TASK_SET(MF_TASK_SDCCH4_0 + lch_idx);
multiframe = MF51;
} else if ((cbits & 0x18) == 0x08) {
lch_idx = cbits & 0x7;
- master_task = MF_TASK_SDCCH8_0 + lch_idx;
+ TASK_SET(MF_TASK_SDCCH8_0 + lch_idx);
multiframe = MF51;
} else if ((cbits & 0x1f) == 0x18) {
/* Osmocom specific extension for PDTCH and PTCCH */
- master_task = MF_TASK_GPRS_PDTCH;
- second_task = MF_TASK_GPRS_PTCCH;
+ TASK_SET(MF_TASK_GPRS_PDTCH);
+ TASK_SET(MF_TASK_GPRS_PTCCH);
/* FIXME: PDCH has different multiframe structure */
multiframe = MFNONE;
} else if ((cbits & 0x1f) == 0x19) {
/* Osmocom specific extension for CBCH on SDCCH/4 */
- master_task = MF_TASK_SDCCH4_CBCH;
+ TASK_SET(MF_TASK_SDCCH4_CBCH);
multiframe = MF51;
} else if ((cbits & 0x1f) == 0x1a) {
/* Osmocom specific extension for CBCH on SDCCH/8 */
- master_task = MF_TASK_SDCCH8_CBCH;
+ TASK_SET(MF_TASK_SDCCH8_CBCH);
multiframe = MF51;
#if 0
} else if (cbits == 0x10) {
/* FIXME: when to do extended BCCH? */
- master_task = MF_TASK_BCCH_NORM;
+ TASK_SET(MF_TASK_BCCH_NORM);
} else if (cbits == 0x11 || cbits == 0x12) {
/* FIXME: how to decide CCCH norm/extd? */
- master_task = MF_TASK_BCCH_CCCH;
+ TASK_SET(MF_TASK_BCCH_CCCH);
#endif
+ } else {
+ TASK_SET(MF_TASK_BCCH_NORM);
}
- /* Primary and secondary tasks */
- task_mask |= (1 << master_task);
- if (second_task >= 0) /* optional */
- task_mask |= (1 << second_task);
-
switch (neigh_mode) {
case NEIGH_MODE_PM:
switch (multiframe) {
case MF51:
- task_mask |= (1 << MF_TASK_NEIGH_PM51);
+ TASK_SET(MF_TASK_NEIGH_PM51);
break;
case MF26EVEN:
- task_mask |= (1 << MF_TASK_NEIGH_PM26E);
+ TASK_SET(MF_TASK_NEIGH_PM26E);
break;
case MF26ODD:
- task_mask |= (1 << MF_TASK_NEIGH_PM26O);
+ TASK_SET(MF_TASK_NEIGH_PM26O);
break;
}
break;
}
+#undef TASK_SET
+
return task_mask;
}