From 40fc52108899de210ed233d4014037c952453ecd Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Sat, 28 Jan 2012 12:02:06 +0100 Subject: [PATCH] layer1: Fixed power measurement, adding ARFCN wrapping Power measurement returned the first measurement result twice, now it is returned only once. Wrapping of ARFCN allows to measure the E-band en block. After measuring the ARFCN 1023, the ARFCN wraps to 0. Special flags like ARFCN_UPLINK or ARFCN_PCS are preserved while wrapping. --- src/target/firmware/layer1/l23_api.c | 2 +- src/target/firmware/layer1/prim_pm.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/target/firmware/layer1/l23_api.c b/src/target/firmware/layer1/l23_api.c index 58a093f4..2581b5bb 100644 --- a/src/target/firmware/layer1/l23_api.c +++ b/src/target/firmware/layer1/l23_api.c @@ -404,7 +404,7 @@ static void l1ctl_rx_pm_req(struct msgb *msg) l1s.pm.range.arfcn_start, l1s.pm.range.arfcn_end); break; } - + l1s_reset_hw(); /* must reset, otherwise measurement results are delayed */ l1s_pm_test(1, l1s.pm.range.arfcn_next); } diff --git a/src/target/firmware/layer1/prim_pm.c b/src/target/firmware/layer1/prim_pm.c index c2d85ac7..07b72097 100644 --- a/src/target/firmware/layer1/prim_pm.c +++ b/src/target/firmware/layer1/prim_pm.c @@ -118,10 +118,11 @@ static int l1s_pm_resp(uint8_t num_meas, __unused uint8_t p2, pmr->pm[1] = 0; if (l1s.pm.mode == 1) { - if (l1s.pm.range.arfcn_next <= l1s.pm.range.arfcn_end) { + if (l1s.pm.range.arfcn_next != l1s.pm.range.arfcn_end) { /* schedule PM for next ARFCN in range */ + l1s.pm.range.arfcn_next = + (l1s.pm.range.arfcn_next+1) & 0xfbff; l1s_pm_test(1, l1s.pm.range.arfcn_next); - l1s.pm.range.arfcn_next++; } else { /* we have finished, flush the msgb to L2 */ struct l1ctl_hdr *l1h = l1s.pm.msg->l1h; -- 2.11.4.GIT