summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2020-07-31 21:43:23 +0700
committerVadim Yanitskiy <vyanitskiy@sysmocom.de>2020-07-31 21:46:42 +0700
commit92e9820966bf6cea79325ad1c7e59c9dc95cdca3 (patch)
tree27022d0ce3f45c73346f0028a4da11f0258f2ff7
parent8194febb09f75c9027d52e8376b679d3327e97a3 (diff)
firmware/layer1: refactor multi-frame task mask composition
-rw-r--r--src/target/firmware/layer1/l23_api.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/target/firmware/layer1/l23_api.c b/src/target/firmware/layer1/l23_api.c
index 62c21f67..e9ce0324 100644
--- a/src/target/firmware/layer1/l23_api.c
+++ b/src/target/firmware/layer1/l23_api.c
@@ -79,8 +79,8 @@ static uint32_t chan_nr2mf_task_mask(uint8_t chan_nr, uint8_t neigh_mode)
uint8_t lch_idx;
enum mframe_task master_task = 0;
enum mframe_task second_task = 0;
- uint32_t neigh_task = 0;
enum mf_type multiframe = 0;
+ uint32_t task_mask = 0x00;
if (cbits == 0x01) {
lch_idx = 0;
@@ -121,22 +121,27 @@ static uint32_t chan_nr2mf_task_mask(uint8_t chan_nr, uint8_t neigh_mode)
master_task = MF_TASK_BCCH_CCCH;
#endif
}
+
+ /* Primary and secondary tasks */
+ task_mask |= (1 << master_task) | (1 << second_task);
+
switch (neigh_mode) {
case NEIGH_MODE_PM:
switch (multiframe) {
case MF51:
- neigh_task = (1 << MF_TASK_NEIGH_PM51);
+ task_mask |= (1 << MF_TASK_NEIGH_PM51);
break;
case MF26EVEN:
- neigh_task = (1 << MF_TASK_NEIGH_PM26E);
+ task_mask |= (1 << MF_TASK_NEIGH_PM26E);
break;
case MF26ODD:
- neigh_task = (1 << MF_TASK_NEIGH_PM26O);
+ task_mask |= (1 << MF_TASK_NEIGH_PM26O);
break;
}
break;
}
- return (1 << master_task) | (1 << second_task) | neigh_task;
+
+ return task_mask;
}
static int chan_nr2dchan_type(uint8_t chan_nr)