From 11e31c706663f586e78b531e401de562a07e0785 Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Sat, 1 Jun 2013 17:00:59 +0200 Subject: HO: Count neighbor measurements and reduce window of neigh_meas_avg Always start with a counter of 0 for a new measurement report. If the neigh_meas_avg is caluclated over the given window, the window is reduced, if there are less measurement reports received so far. Change-Id: I1c74f27f9663a3083610c985a080fca331c19bd3 --- src/libbsc/handover_decision.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/libbsc/handover_decision.c b/src/libbsc/handover_decision.c index a2abb391a..04ca14451 100644 --- a/src/libbsc/handover_decision.c +++ b/src/libbsc/handover_decision.c @@ -99,6 +99,13 @@ static int neigh_meas_avg(struct neigh_meas_proc *nmp, int window) unsigned int i, idx; int avg = 0; + /* reduce window to the actual number of existing measurements */ + if (window < nmp->rxlev_cnt) + window = nmp->rxlev_cnt; + /* this should never happen */ + if (window == 0) + return 0; + idx = calc_initial_idx(ARRAY_SIZE(nmp->rxlev), nmp->rxlev_cnt % ARRAY_SIZE(nmp->rxlev), window); @@ -177,6 +184,7 @@ static void process_meas_neigh(struct gsm_meas_rep *mr) nmp->arfcn = mrc->arfcn; nmp->bsic = mrc->bsic; + nmp->rxlev_cnt = 0; idx = nmp->rxlev_cnt % ARRAY_SIZE(nmp->rxlev); nmp->rxlev[idx] = mrc->rxlev; nmp->rxlev_cnt++; -- cgit v1.2.3