diff options
author | Vadim Yanitskiy <vyanitskiy@sysmocom.de> | 2022-04-21 05:05:06 +0300 |
---|---|---|
committer | Vadim Yanitskiy <vyanitskiy@sysmocom.de> | 2022-04-21 15:03:11 +0300 |
commit | a6fad425dbd7ec882f0537bdcaaf2beb86000d0f (patch) | |
tree | b257af671ed5b0f9c1b9a0724818951e664891b4 /src/target/firmware | |
parent | 859485c681d4be4514f9e2d2a6250d6ff7292f86 (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.c | 40 |
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; } |