Change in osmo-bts[master]: measurement: remove missed interval end detection

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

dexter gerrit-no-reply at lists.osmocom.org
Thu Sep 6 16:11:14 UTC 2018


dexter has uploaded this change for review. ( https://gerrit.osmocom.org/10814


Change subject: measurement: remove missed interval end detection
......................................................................

measurement: remove missed interval end detection

The function is_meas_overdue() was introduced to allow
lchan_meas_process_measurement() to detect when the end of a measurement
interval has been missed. Interval ends may be missed when the SACCH
block of the related measurement interval gets lost. This is due to the
fact that the SACCH block is used as a trigger to start the measurement
result computation.

The idea behind is_meas_overdue() was to check the frame number of the
current measurement against the frame number of the previous measurement
in order to see if there was a measurement for SACCH in between or not.
Unfortunately SACCH and TCH Voice data is not necessarly processed in
order by each phy. Depending on the phy there may be a jitter between
the timing of SACCH and TCH Voice. Depending on the phy this jitter may
be enough to mess up the timing so that we see a SACCH block earlier
than expected. So we can not use the current frame number of TCH Voice
measurements to check for missed SACCH blocks.

Change-Id: Idfdbf64c1f965f35c12559b3995e2b746c74ee9e
Related: OS#3502
Related: OS#2975
---
M include/osmo-bts/measurement.h
M src/common/measurement.c
M tests/meas/meas_test.c
M tests/meas/meas_test.ok
4 files changed, 2 insertions(+), 704 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/14/10814/1

diff --git a/include/osmo-bts/measurement.h b/include/osmo-bts/measurement.h
index b4fc35b..a2367c8 100644
--- a/include/osmo-bts/measurement.h
+++ b/include/osmo-bts/measurement.h
@@ -16,6 +16,4 @@
 
 int is_meas_complete(struct gsm_lchan *lchan, uint32_t fn);
 
-bool is_meas_overdue(struct gsm_lchan *lchan, uint32_t *fn_missed_end, uint32_t fn);
-
 #endif
diff --git a/src/common/measurement.c b/src/common/measurement.c
index 1e547c8..2af8bda 100644
--- a/src/common/measurement.c
+++ b/src/common/measurement.c
@@ -322,99 +322,6 @@
 	return rc;
 }
 
-/* Check if a measurement period is overdue. This situation may occur when the
- * SACCH frame that closes the measurement interval was not received. Then the
- * end of the measurement will not be detected. Using this function we can
- * detect if we missed a measurement period end and we also find the frame
- * number of the lost SACCH frame. (this function is only used internally,
- * it is public to call it from unit-tests) */
-bool is_meas_overdue(struct gsm_lchan *lchan, uint32_t *fn_missed_end, uint32_t fn)
-{
-	uint32_t fn_mod;
-	uint32_t last_fn_mod;
-	uint32_t fn_rounded;
-	uint8_t interval_end;
-	uint8_t modulus;
-	const uint8_t *tbl;
-	enum gsm_phys_chan_config pchan = ts_pchan(lchan->ts);
-
-	/* On the very first measurement we will not be able to do this check
-	 * as we do not have a reference yet. So we have to assume that we
-	 * did not miss the interval end yet. */
-	if (lchan->meas.last_fn == LCHAN_FN_DUMMY)
-		return false;
-
-	/* Determine the interval ending and the modulus to calculate with */
-	switch (pchan) {
-	case GSM_PCHAN_TCH_F:
-		modulus = 104;
-		interval_end = tchf_meas_rep_fn104_by_ts[lchan->ts->nr];
-		interval_end = translate_tch_meas_rep_fn104_inv(interval_end);
-		break;
-	case GSM_PCHAN_TCH_H:
-		modulus = 104;
-		if (lchan->nr == 0)
-			tbl = tchh0_meas_rep_fn104_by_ts;
-		else
-			tbl = tchh1_meas_rep_fn104_by_ts;
-		interval_end = tbl[lchan->ts->nr];
-		interval_end = translate_tch_meas_rep_fn104_inv(interval_end);
-		break;
-	case GSM_PCHAN_SDCCH8_SACCH8C:
-	case GSM_PCHAN_SDCCH8_SACCH8C_CBCH:
-		modulus = 102;
-		interval_end = sdcch8_meas_rep_fn102_by_ss[lchan->nr];
-		break;
-	case GSM_PCHAN_CCCH_SDCCH4:
-	case GSM_PCHAN_CCCH_SDCCH4_CBCH:
-		modulus = 102;
-		interval_end = sdcch4_meas_rep_fn102_by_ss[lchan->nr];
-		break;
-	default:
-		return false;
-		break;
-	}
-
-	fn_mod = fn % modulus;
-	last_fn_mod = lchan->meas.last_fn % modulus;
-	fn_rounded = fn - fn_mod;
-
-	if (fn_mod > last_fn_mod) {
-		/* When the current frame number is larger then the last frame
-		 * number we check if the interval ending falls in between
-		 * the two. If it does we calculate the absolute frame number
-		 * position on which the interval should have ended. */
-		if (interval_end > last_fn_mod && interval_end < fn_mod) {
-			*fn_missed_end = interval_end + fn_rounded;
-			return true;
-		}
-	} else {
-		/* When the current frame number is smaller then the last frame
-		 * number, than the modulus interval has wrapped. We then just
-		 * check the presence of the interval ending in the section
-		 * that starts at the current frame number and ends at the
-		 * interval end. */
-		if (interval_end > last_fn_mod) {
-			if (fn < lchan->meas.last_fn)
-				*fn_missed_end = interval_end + GSM_MAX_FN - modulus;
-			else
-				*fn_missed_end = interval_end + fn_rounded - modulus;
-			return true;
-		}
-		/* We also check the section that starts from the beginning of
-		 * the interval and ends at the current frame number. */
-		if (interval_end < fn_mod) {
-			if (fn < lchan->meas.last_fn)
-				*fn_missed_end = interval_end;
-			else
-				*fn_missed_end = interval_end + fn_rounded;
-			return true;
-		}
-	}
-
-	return false;
-}
-
 /* determine the measurement interval modulus by a given lchan */
 static uint8_t modulus_by_lchan(struct gsm_lchan *lchan)
 {
@@ -830,28 +737,8 @@
 	uint32_t fn_missed_end;
 	bool missed_end;
 
-	/* The measurement processing detects the end of a measurement period
-	 * by checking if the received measurement sample is from a SACCH
-	 * block. If so, then the measurement computation is performed and the
-	 * next cycle starts. However, when the SACCH block is not received
-	 * then the associated measurement indication is also skipped. Because
-	 * of this we must check now if the measurement interval ended between
-	 * the last and the current call of this function */
-	missed_end = is_meas_overdue(lchan, &fn_missed_end, fn);
-
-	if (missed_end) {
-		DEBUGPFN(DMEAS, fn, "%s measurement interval ending missed, catching up...\n", gsm_lchan_name(lchan));
-		/* We missed the end of the interval. Do the computation now
-		 * and add the uplink measurement we got as the first sample
-		 * of a new interval */
-		lchan_meas_check_compute(lchan, fn_missed_end);
-		lchan_new_ul_meas(lchan, ulm, fn);
-	} else {
-		/* This is the normal case, we first add the measurement sample
-		 * to the current interva and run the check+computation */
-		lchan_new_ul_meas(lchan, ulm, fn);
-		lchan_meas_check_compute(lchan, fn);
-	}
+	lchan_new_ul_meas(lchan, ulm, fn);
+	lchan_meas_check_compute(lchan, fn);
 }
 
 /* Reset all measurement related struct members to their initial values. This
diff --git a/tests/meas/meas_test.c b/tests/meas/meas_test.c
index a33a808..8f50479 100644
--- a/tests/meas/meas_test.c
+++ b/tests/meas/meas_test.c
@@ -125,588 +125,6 @@
 
 }
 
-static void test_is_meas_overdue(void)
-{
-	struct gsm_lchan *lchan;
-	bool rc;
-	uint32_t fn_missed_end;
-	unsigned int i;
-
-	printf("\n\n");
-	printf("===========================================================\n");
-	printf("Testing is_meas_overdue()\n");
-
-	/* Missing period-end-trigger at fn=12, TCH/F, TS0 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_F;
-	lchan->meas.last_fn = 95;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 17 + 104);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 12 + 104);
-
-	/* Missing period-end-trigger at fn=12, TCH/H, TS0 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 95;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 17 + 104);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 12 + 104);
-
-	/* Missing period-end-trigger at fn=12, TCH/H, TS1 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[1].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 95;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 17 + 104);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 12 + 104);
-
-	/* Missing period-end-trigger at fn=25, TCH/F, TS1 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[1].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_F;
-	lchan->meas.last_fn = 21;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 30);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 25);
-
-	/* Missing period-end-trigger at fn=25, TCH/H, TS0 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[1];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 21;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 30);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 25);
-
-	/* Missing period-end-trigger at fn=25, TCH/H, TS1 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[1].lchan[1];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 21;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 30);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 25);
-
-	/* Missing period-end-trigger at fn=38, TCH/F, TS2 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[2].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_F;
-	lchan->meas.last_fn = 34;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 43);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 38);
-
-	/* Missing period-end-trigger at fn=38, TCH/H, TS2 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[2].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 34;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 43);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 38);
-
-	/* Missing period-end-trigger at fn=38, TCH/H, TS3 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[3].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 34;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 43);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 38);
-
-	/* Missing period-end-trigger at fn=51, TCH/F, TS3 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[3].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_F;
-	lchan->meas.last_fn = 47;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 52);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 51);
-
-	/* Missing period-end-trigger at fn=51, TCH/H, TS2 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[2].lchan[1];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 47;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 52);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 51);
-
-	/* Missing period-end-trigger at fn=51, TCH/H, TS3 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[3].lchan[1];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 47;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 52);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 51);
-
-	/* Missing period-end-trigger at fn=64, TCH/F, TS4 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[4].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_F;
-	lchan->meas.last_fn = 60;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 69);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 64);
-
-	/* Missing period-end-trigger at fn=64, TCH/H, TS4 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[4].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 60;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 69);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 64);
-
-	/* Missing period-end-trigger at fn=64, TCH/H, TS4 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[5].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 60;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 69);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 64);
-
-	/* Missing period-end-trigger at fn=77, TCH/F, TS5 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[5].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_F;
-	lchan->meas.last_fn = 73;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 78);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 77);
-
-	/* Missing period-end-trigger at fn=77, TCH/H, TS4 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[4].lchan[1];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 73;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 78);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 77);
-
-	/* Missing period-end-trigger at fn=77, TCH/H, TS5 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[5].lchan[1];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 73;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 78);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 77);
-
-	/* Missing period-end-trigger at fn=90, TCH/F, TS6 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[6].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_F;
-	lchan->meas.last_fn = 86;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 91);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 90);
-
-	/* Missing period-end-trigger at fn=90, TCH/H, TS6 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[6].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 86;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 91);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 90);
-
-	/* Missing period-end-trigger at fn=90, TCH/H, TS7 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[7].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 86;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 91);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 90);
-
-	/* Missing period-end-trigger at fn=103, TCH/F, TS7 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[7].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_F;
-	lchan->meas.last_fn = 99;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 0 + 104);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 103);
-
-	/* Missing period-end-trigger at fn=103, TCH/H, TS6 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[6].lchan[1];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 99;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 0 + 104);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 103);
-
-	/* Missing period-end-trigger at fn=103, TCH/H, TS7 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[7].lchan[1];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 99;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 0 + 104);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 103);
-
-	/* Dropout inside the interval, no period-end-trigger missed */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[2].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 56;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 69);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, but right after period-end-trigger */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[2].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 38;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 39);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, two neigbouring frames at random position
-	 * (should not happen in the real world) */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[2].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 43;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 44);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, Two neigbouring frames (period end, right side) */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[2].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 38;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 39);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, Two neigbouring frames (period end, left side,
-	 * should not happen in the real world) */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[2].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 37;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 38);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, test directly on a the trigger frame */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[2].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 34;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 38);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, previous frame is trigger frame
-	 * (should not happen in the real world) */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[2].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_H;
-	lchan->meas.last_fn = 38;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 38);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* Missing period-end-trigger at fn=38+i*104, TCH/F, TS2 to
-	 * see the modulus is correct. */
-	for (i = 0; i < 100; i++) {
-		fn_missed_end = LCHAN_FN_DUMMY;
-		lchan = &trx->ts[2].lchan[0];
-		lchan->ts->pchan = GSM_PCHAN_TCH_F;
-		lchan->meas.last_fn = 34 + 104 * 1;
-		rc = is_meas_overdue(lchan, &fn_missed_end, 43 + 104 * 1);
-		OSMO_ASSERT(rc);
-		OSMO_ASSERT(fn_missed_end == 38 + 104 * 1);
-	}
-
-	/* See whats happening if we miss a period-end-triggerend at the
-	 * hyperframe beginning. */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_F;
-	lchan->meas.last_fn = GSM_MAX_FN - 104 + 95;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 17);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 12);
-
-	/* See whats happening if we miss a period-end-triggerend at the
-	 * hyperframe ending. */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[6].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_F;
-	lchan->meas.last_fn = GSM_MAX_FN - 104 + 86;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 8);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == GSM_MAX_FN - 104 + 90);
-
-	/* See whats happening if we miss a period-end-triggerend exactly at the
-	 * hyperframe ending. */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[7].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_F;
-	lchan->meas.last_fn = GSM_MAX_FN - 104 + 99;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 0);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == GSM_MAX_FN - 1);
-
-	/* Test a wrap around at the hyperframe ending, while no measurements
-	 * are lost */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_F;
-	lchan->meas.last_fn = GSM_MAX_FN - 104 + 99;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 0);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* Test a wrap around at the hyperframe ending, measurements are lost,
-	 * but not the one that triggers the period end */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_F;
-	lchan->meas.last_fn = GSM_MAX_FN - 104 + 95;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 4);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* Test a wrap around right before the hyperframe ending, while no
-	 * measurements are lost. */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[7].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_TCH_F;
-	lchan->meas.last_fn = GSM_MAX_FN - 104 + 99;
-	rc = is_meas_overdue(lchan, &fn_missed_end, GSM_MAX_FN - 1);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* Missing period-end-trigger at fn=66, SDCCH/8, TS0, SS0 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 47;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 15 + 102);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 66);
-
-	/* Missing period-end-trigger at fn=70, SDCCH/8, TS0, SS1 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[1];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 51;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 19 + 102);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 70);
-
-	/* Missing period-end-trigger at fn=74, SDCCH/8, TS0, SS2 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[2];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 55;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 23 + 102);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 74);
-
-	/* Missing period-end-trigger at fn=78, SDCCH/8, TS0, SS3 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[3];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 59;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 27 + 102);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 78);
-
-	/* Missing period-end-trigger at fn=98, SDCCH/8, TS0, SS4 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[4];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 82;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 31 + 102);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 98);
-
-	/* Missing period-end-trigger at fn=102, SDCCH/8, TS0, SS5 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[5];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 86;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 35 + 102);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 102);
-
-	/* Missing period-end-trigger at fn=106, SDCCH/8, TS0, SS6 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[6];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 90;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 39 + 102);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 4 + 102);
-
-	/* Missing period-end-trigger at fn=200, SDCCH/8, TS0, SS7 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[7];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 94;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 43 + 102);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 8 + 102);
-
-	/* No dropout, SDCCH/8, TS0, SS0 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 47;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 66);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, SDCCH/8, TS0, SS1 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[1];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 51;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 70);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, SDCCH/8, TS0, SS2 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[2];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 55;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 74);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, SDCCH/8, TS0, SS3 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[3];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 59;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 78);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, SDCCH/8, TS0, SS4 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[4];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 82;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 98);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, SDCCH/8, TS0, SS5 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[5];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 86;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 102);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, SDCCH/8, TS0, SS6 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[6];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 90;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 4 + 102);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, SDCCH/8, TS0, SS7 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[7];
-	lchan->ts->pchan = GSM_PCHAN_SDCCH8_SACCH8C;
-	lchan->meas.last_fn = 94;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 8 + 102);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* Missing period-end-trigger at fn=88, SDCCH/4, TS0, SS0 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_CCCH_SDCCH4;
-	lchan->meas.last_fn = 57;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 37 + 102);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 88);
-
-	/* Missing period-end-trigger at fn=92, SDCCH/4, TS0, SS1 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[1];
-	lchan->ts->pchan = GSM_PCHAN_CCCH_SDCCH4;
-	lchan->meas.last_fn = 61;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 41 + 102);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 92);
-
-	/* Missing period-end-trigger at fn=6, SDCCH/4, TS0, SS2 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[2];
-	lchan->ts->pchan = GSM_PCHAN_CCCH_SDCCH4;
-	lchan->meas.last_fn = GSM_MAX_FN - 102 + 98;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 47);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 6);
-
-	/* Missing period-end-trigger at fn=10, SDCCH/4, TS0, SS3 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[3];
-	lchan->ts->pchan = GSM_PCHAN_CCCH_SDCCH4;
-	lchan->meas.last_fn = 0;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 51);
-	OSMO_ASSERT(rc);
-	OSMO_ASSERT(fn_missed_end == 10);
-
-	/* No dropout, SDCCH/4, TS0, SS0 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[0];
-	lchan->ts->pchan = GSM_PCHAN_CCCH_SDCCH4;
-	lchan->meas.last_fn = 57;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 88);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, SDCCH/4, TS0, SS1 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[1];
-	lchan->ts->pchan = GSM_PCHAN_CCCH_SDCCH4;
-	lchan->meas.last_fn = 61;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 92);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, SDCCH/4, TS0, SS2 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[2];
-	lchan->ts->pchan = GSM_PCHAN_CCCH_SDCCH4;
-	lchan->meas.last_fn = GSM_MAX_FN - 102 + 98;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 6);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-
-	/* No dropout, SDCCH/4, TS0, SS3 */
-	fn_missed_end = LCHAN_FN_DUMMY;
-	lchan = &trx->ts[0].lchan[3];
-	lchan->ts->pchan = GSM_PCHAN_CCCH_SDCCH4;
-	lchan->meas.last_fn = 0;
-	rc = is_meas_overdue(lchan, &fn_missed_end, 10);
-	OSMO_ASSERT(!rc);
-	OSMO_ASSERT(fn_missed_end == LCHAN_FN_DUMMY);
-}
-
 static void test_is_meas_complete_single(struct gsm_lchan *lchan,
 					 uint32_t fn_end, uint8_t intv_len)
 {
@@ -1152,7 +570,6 @@
 	printf("*** MEASUREMENT INTERVAL ENDING DETECTION TESTS ***\n");
 	printf("***************************************************\n");
 
-	test_is_meas_overdue();
 	test_is_meas_complete();
 	test_lchan_meas_process_measurement(false, false);
 	test_lchan_meas_process_measurement(true, false);
diff --git a/tests/meas/meas_test.ok b/tests/meas/meas_test.ok
index 3d4f430..e62bb42 100644
--- a/tests/meas/meas_test.ok
+++ b/tests/meas/meas_test.ok
@@ -714,10 +714,6 @@
 
 
 ===========================================================
-Testing is_meas_overdue()
-
-
-===========================================================
 Testing is_meas_complete()
 
 

-- 
To view, visit https://gerrit.osmocom.org/10814
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Idfdbf64c1f965f35c12559b3995e2b746c74ee9e
Gerrit-Change-Number: 10814
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180906/80ded57d/attachment.htm>


More information about the gerrit-log mailing list