diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2012-03-29 09:07:57 +0200 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2012-03-29 09:07:57 +0200 |
commit | e7997163b240168301d7d2988f2cd74ae1f397e9 (patch) | |
tree | 6c4b754ee17820ec85a843c068f10bd9dc05f572 /src/target/firmware/layer1 | |
parent | 43c588b6c64f84583818ed766c7392dbec9531d1 (diff) |
Fixed neighbour cell measurement task for SDCCH/8 multiframes
Only on BCCH's multiframe we are allowed to measure on frames 0, 10, 20,
30, 40. On SDCCH/8 multiframe, measurements are performed on frame 50
only.
Diffstat (limited to 'src/target/firmware/layer1')
-rw-r--r-- | src/target/firmware/layer1/l23_api.c | 8 | ||||
-rw-r--r-- | src/target/firmware/layer1/mframe_sched.c | 11 |
2 files changed, 13 insertions, 6 deletions
diff --git a/src/target/firmware/layer1/l23_api.c b/src/target/firmware/layer1/l23_api.c index 1c4459e6..ae39e634 100644 --- a/src/target/firmware/layer1/l23_api.c +++ b/src/target/firmware/layer1/l23_api.c @@ -228,8 +228,8 @@ static void l1ctl_rx_dm_est_req(struct msgb *msg) printd("L1CTL_DM_EST_REQ (arfcn=%u, chan_nr=0x%02x, tsc=%u)\n", ntohs(est_req->h0.band_arfcn), ul->chan_nr, est_req->tsc); - /* disable neighbour cell measurement */ - mframe_disable(MF_TASK_NEIGH_PM51); + /* disable neighbour cell measurement of C0 TS 0 */ + mframe_disable(MF_TASK_NEIGH_PM51_C0T0); /* configure dedicated channel state */ l1s.dedicated.type = chan_nr2dchan_type(ul->chan_nr); @@ -539,9 +539,9 @@ static void l1ctl_rx_neigh_pm_req(struct msgb *msg) printf("L1CTL_NEIGH_PM_REQ new list with %u entries\n", pm_req->n); l1s.neigh_pm.n = pm_req->n; /* atomic */ - /* on BCCH enable PM on frame 51 */ + /* on C0 enable PM on frame 51 */ if (l1s.dedicated.type == GSM_DCHAN_NONE) - mframe_enable(MF_TASK_NEIGH_PM51); + mframe_enable(MF_TASK_NEIGH_PM51_C0T0); } /* receive a L1CTL_TRAFFIC_REQ from L23 */ diff --git a/src/target/firmware/layer1/mframe_sched.c b/src/target/firmware/layer1/mframe_sched.c index 2367d425..f3a6b433 100644 --- a/src/target/firmware/layer1/mframe_sched.c +++ b/src/target/firmware/layer1/mframe_sched.c @@ -198,8 +198,8 @@ static const struct mframe_sched_item mf_sdcch8_7[] = { { .sched_set = NULL } }; -/* Measurement for MF 51 */ -static const struct mframe_sched_item mf_neigh_pm51[] = { +/* Measurement for MF 51 C0 */ +static const struct mframe_sched_item mf_neigh_pm51_c0t0[] = { { .sched_set = NEIGH_PM , .modulo = 51, .frame_nr = 0 }, { .sched_set = NEIGH_PM , .modulo = 51, .frame_nr = 10 }, { .sched_set = NEIGH_PM , .modulo = 51, .frame_nr = 20 }, @@ -208,6 +208,12 @@ static const struct mframe_sched_item mf_neigh_pm51[] = { { .sched_set = NULL } }; +/* Measurement for MF 51 */ +static const struct mframe_sched_item mf_neigh_pm51[] = { + { .sched_set = NEIGH_PM , .modulo = 51, .frame_nr = 50 }, + { .sched_set = NULL } +}; + /* TCH */ #define TCH tch_sched_set #define TCH_A tch_a_sched_set @@ -326,6 +332,7 @@ static const struct mframe_sched_item *sched_set_for_task[32] = { [MF_TASK_TCH_H_0] = mf_tch_h_0, [MF_TASK_TCH_H_1] = mf_tch_h_1, + [MF_TASK_NEIGH_PM51_C0T0] = mf_neigh_pm51_c0t0, [MF_TASK_NEIGH_PM51] = mf_neigh_pm51, [MF_TASK_NEIGH_PM26E] = mf_neigh_pm26_even, [MF_TASK_NEIGH_PM26O] = mf_neigh_pm26_odd, |