diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2013-06-01 17:00:59 +0200 |
---|---|---|
committer | Ivan Kluchnikov <kluchnikovi@gmail.com> | 2018-09-03 14:49:18 +0300 |
commit | 133faf012160c767bf78b3a7f70646b5449b36de (patch) | |
tree | 061a4cc9c88344336d44917f15631d7efa40425e /openbsc/src | |
parent | da3e33f38ba2e6c141e3958859cd0afe1215f4bc (diff) |
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: If476838dc14729b894693f371e181ac657b84017
Diffstat (limited to 'openbsc/src')
-rw-r--r-- | openbsc/src/libbsc/handover_decision.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/openbsc/src/libbsc/handover_decision.c b/openbsc/src/libbsc/handover_decision.c index eefa009f2..354363ac2 100644 --- a/openbsc/src/libbsc/handover_decision.c +++ b/openbsc/src/libbsc/handover_decision.c @@ -76,6 +76,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); @@ -154,6 +161,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++; |