diff options
author | Harald Welte <laforge@gnumonks.org> | 2018-02-21 12:41:02 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-02-27 19:59:00 +0100 |
commit | c092f4e1ded65447061198ea1c57458becc71574 (patch) | |
tree | 91fb420fda3a1e66df5934ad16e04e0b5b57a296 | |
parent | d5bbd8ccf79eaf13bc23cc71accbeb3ff638b6dd (diff) |
measurement.c: higher-precision TA/TOA math
Change-Id: I0dc8e78545465dfc5c93691a49b86b6b8b56b432
-rw-r--r-- | include/osmo-bts/gsm_data_shared.h | 4 | ||||
-rw-r--r-- | src/common/l1sap.c | 2 | ||||
-rw-r--r-- | src/common/measurement.c | 10 |
3 files changed, 8 insertions, 8 deletions
diff --git a/include/osmo-bts/gsm_data_shared.h b/include/osmo-bts/gsm_data_shared.h index 7cefb10e..770aea8b 100644 --- a/include/osmo-bts/gsm_data_shared.h +++ b/include/osmo-bts/gsm_data_shared.h @@ -165,8 +165,8 @@ enum gsm_lchan_state { struct bts_ul_meas { /* BER in units of 0.01%: 10.000 == 100% ber, 0 == 0% ber */ uint16_t ber10k; - /* timing advance offset (in quarter bits) */ - int16_t ta_offs_qbits; + /* timing advance offset (in 1/256 bits) */ + int16_t ta_offs_256bits; /* C/I ratio in dB */ float c_i; /* flags */ diff --git a/src/common/l1sap.c b/src/common/l1sap.c index 50bd612d..e095417e 100644 --- a/src/common/l1sap.c +++ b/src/common/l1sap.c @@ -522,7 +522,7 @@ static int l1sap_info_meas_ind(struct gsm_bts_trx *trx, return 0; memset(&ulm, 0, sizeof(ulm)); - ulm.ta_offs_qbits = info_meas_ind->ta_offs_qbits; + ulm.ta_offs_256bits = info_meas_ind->ta_offs_qbits*(256/4); ulm.ber10k = info_meas_ind->ber10k; ulm.inv_rssi = info_meas_ind->inv_rssi; ulm.is_sub = info_meas_ind->is_sub; diff --git a/src/common/measurement.c b/src/common/measurement.c index 98d9403d..bdb28508 100644 --- a/src/common/measurement.c +++ b/src/common/measurement.c @@ -342,7 +342,7 @@ int lchan_meas_check_compute(struct gsm_lchan *lchan, uint32_t fn) uint32_t irssi_full_sum = 0; uint32_t ber_sub_sum = 0; uint32_t irssi_sub_sum = 0; - int32_t taqb_sum = 0; + int32_t ta256b_sum = 0; unsigned int num_meas_sub = 0; int i; @@ -362,7 +362,7 @@ int lchan_meas_check_compute(struct gsm_lchan *lchan, uint32_t fn) ber_full_sum += m->ber10k; irssi_full_sum += m->inv_rssi; - taqb_sum += m->ta_offs_qbits; + ta256b_sum += m->ta_offs_256bits; if (m->is_sub) { num_meas_sub++; @@ -374,7 +374,7 @@ int lchan_meas_check_compute(struct gsm_lchan *lchan, uint32_t fn) /* step 2: divide */ ber_full_sum = ber_full_sum / lchan->meas.num_ul_meas; irssi_full_sum = irssi_full_sum / lchan->meas.num_ul_meas; - taqb_sum = taqb_sum / lchan->meas.num_ul_meas; + ta256b_sum = ta256b_sum / lchan->meas.num_ul_meas; if (num_meas_sub) { ber_sub_sum = ber_sub_sum / num_meas_sub; @@ -387,9 +387,9 @@ int lchan_meas_check_compute(struct gsm_lchan *lchan, uint32_t fn) irssi_sub_sum = 120; /* -120 dBm */ } - LOGP(DMEAS, LOGL_INFO, "%s Computed TA(% 4dqb) BER-FULL(%2u.%02u%%), RSSI-FULL(-%3udBm), " + LOGP(DMEAS, LOGL_INFO, "%s Computed TA256(% 4d) BER-FULL(%2u.%02u%%), RSSI-FULL(-%3udBm), " "BER-SUB(%2u.%02u%%), RSSI-SUB(-%3udBm)\n", gsm_lchan_name(lchan), - taqb_sum, ber_full_sum/100, + ta256b_sum, ber_full_sum/100, ber_full_sum%100, irssi_full_sum, ber_sub_sum/100, ber_sub_sum%100, irssi_sub_sum); |