From 0b6c1762c50ce890fa97691ab2de3283bb7d1819 Mon Sep 17 00:00:00 2001 From: Philipp Maier Date: Tue, 4 Sep 2018 12:15:37 +0200 Subject: measurement: display fn_mod when measuremnet is added When adding a new measurement also log the frame number by the modulus of the measurement interval to simplify debuggung Change-Id: I77a4d947dab32de0d5717ebf13bd8de6179dfe6a --- src/common/measurement.c | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) (limited to 'src/common/measurement.c') diff --git a/src/common/measurement.c b/src/common/measurement.c index 59f5d834..1e547c8e 100644 --- a/src/common/measurement.c +++ b/src/common/measurement.c @@ -415,21 +415,46 @@ bool is_meas_overdue(struct gsm_lchan *lchan, uint32_t *fn_missed_end, uint32_t return false; } +/* determine the measurement interval modulus by a given lchan */ +static uint8_t modulus_by_lchan(struct gsm_lchan *lchan) +{ + enum gsm_phys_chan_config pchan = ts_pchan(lchan->ts); + + switch (pchan) { + case GSM_PCHAN_TCH_F: + case GSM_PCHAN_TCH_H: + return 104; + break; + case GSM_PCHAN_SDCCH8_SACCH8C: + case GSM_PCHAN_SDCCH8_SACCH8C_CBCH: + case GSM_PCHAN_CCCH_SDCCH4: + case GSM_PCHAN_CCCH_SDCCH4_CBCH: + return 102; + break; + default: + /* Invalid */ + return 1; + break; + } +} + /* receive a L1 uplink measurement from L1 (this function is only used * internally, it is public to call it from unit-tests) */ int lchan_new_ul_meas(struct gsm_lchan *lchan, struct bts_ul_meas *ulm, uint32_t fn) { + uint32_t fn_mod = fn % modulus_by_lchan(lchan); + if (lchan->state != LCHAN_S_ACTIVE) { LOGPFN(DMEAS, LOGL_NOTICE, fn, - "%s measurement during state: %s, num_ul_meas=%d\n", - gsm_lchan_name(lchan), gsm_lchans_name(lchan->state), - lchan->meas.num_ul_meas); + "%s measurement during state: %s, num_ul_meas=%d, fn_mod=%u\n", + gsm_lchan_name(lchan), gsm_lchans_name(lchan->state), + lchan->meas.num_ul_meas, fn_mod); } if (lchan->meas.num_ul_meas >= ARRAY_SIZE(lchan->meas.uplink)) { LOGPFN(DMEAS, LOGL_NOTICE, fn, - "%s no space for uplink measurement, num_ul_meas=%d\n", - gsm_lchan_name(lchan), lchan->meas.num_ul_meas); + "%s no space for uplink measurement, num_ul_meas=%d, fn_mod=%u\n", + gsm_lchan_name(lchan), lchan->meas.num_ul_meas, fn_mod); return -ENOSPC; } @@ -438,8 +463,8 @@ int lchan_new_ul_meas(struct gsm_lchan *lchan, struct bts_ul_meas *ulm, uint32_t if (!ulm->is_sub) ulm->is_sub = ts45008_83_is_sub(lchan, fn, false); - DEBUGPFN(DMEAS, fn, "%s adding measurement (is_sub=%u), num_ul_meas=%d\n", - gsm_lchan_name(lchan), ulm->is_sub, lchan->meas.num_ul_meas); + DEBUGPFN(DMEAS, fn, "%s adding measurement (is_sub=%u), num_ul_meas=%d, fn_mod=%u\n", + gsm_lchan_name(lchan), ulm->is_sub, lchan->meas.num_ul_meas, fn_mod); memcpy(&lchan->meas.uplink[lchan->meas.num_ul_meas++], ulm, sizeof(*ulm)); -- cgit v1.2.3