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.orgdexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/20840 ) Change subject: measurement: count measurements for FACCH/H twice. ...................................................................... measurement: count measurements for FACCH/H twice. The FACCH/H replaces to voice frames in TCH/H. This means during the transmission of a FACCH one measurement value less is handed up to the higher layers. This needs to be compensated by adding a the FAACH/H measurement twice (as if it were from two voice frames). Change-Id: Id533bb3207bac40d00d77b484619f66ea5c0774d Related: OS#4799 --- M include/osmo-bts/gsm_data.h M src/common/l1sap.c M src/common/measurement.c 3 files changed, 24 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/40/20840/1 diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h index 1c1c5d4..45a131c 100644 --- a/include/osmo-bts/gsm_data.h +++ b/include/osmo-bts/gsm_data.h @@ -111,6 +111,9 @@ uint8_t is_sub:1; /* RSSI in dBm * -1 */ uint8_t inv_rssi; + /* weight of the measurement report: 2 for FACCH on TCH/H, 1 for all + * other channels types. */ + uint8_t weight; }; struct amr_mode { diff --git a/src/common/l1sap.c b/src/common/l1sap.c index c9ec9bf..710cd99 100644 --- a/src/common/l1sap.c +++ b/src/common/l1sap.c @@ -658,6 +658,7 @@ struct info_meas_ind_param *info_meas_ind; struct ph_data_param *ph_data_ind; struct ph_tch_param *ph_tch_ind; + uint8_t link_id = 0; uint8_t chan_nr; uint32_t fn; uint8_t inv_rssi; @@ -694,6 +695,7 @@ ph_data_ind = &l1sap->u.data; if (ph_data_ind->rssi == 0) return; + link_id = ph_data_ind->link_id; chan_nr = ph_data_ind->chan_nr; fn = ph_data_ind->fn; inv_rssi = abs(ph_data_ind->rssi); @@ -730,6 +732,22 @@ ulm.inv_rssi = inv_rssi; ulm.is_sub = is_sub; + /* TCH channels are multiplexed with a FACCH channel. In the case of + * TCH/F the FACCH has the same length (spread over 8 TDMA frames) + * as a regular voice TDMA frames. This means that we either get + * one voice frame or a SACCH frame every 4 bursts. For TCH/H the + * seizes are different. A voice frame spreads over 4 TDMA frames + * and a SACCH over 6 TDMA frames. This means we either get 2 voice + * frames every 4 bursts or we end up with a single SACCH frame. Since + * measurement results are trsamitted to l1sap together with the actual + * data. The data of one TCH/H SACCH frame actually covers the period + * of two voice frames, which means a TCH/H SACCH measurement has a + * weight of two. */ + if (ind_type == PRIM_PH_DATA && lchan->type == GSM_LCHAN_TCH_H && !L1SAP_IS_LINK_SACCH(link_id)) + ulm.weight = 2; + else + ulm.weight = 1; + /* we assume that symbol period is 1 bit: */ set_ms_to_data(lchan, ta_offs_256bits / 256, true); diff --git a/src/common/measurement.c b/src/common/measurement.c index 22f783d..f73f43b 100644 --- a/src/common/measurement.c +++ b/src/common/measurement.c @@ -739,7 +739,9 @@ * interval. */ int lchan_meas_process_measurement(struct gsm_lchan *lchan, struct bts_ul_meas *ulm, uint32_t fn) { - lchan_new_ul_meas(lchan, ulm, fn); + unsigned int i; + for (i = 0; i < ulm->weight; i++) + lchan_new_ul_meas(lchan, ulm, fn); return lchan_meas_check_compute(lchan, fn); } -- To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/20840 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: Id533bb3207bac40d00d77b484619f66ea5c0774d Gerrit-Change-Number: 20840 Gerrit-PatchSet: 1 Gerrit-Owner: dexter <pmaier at sysmocom.de> Gerrit-MessageType: newchange -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201022/187c15d8/attachment.htm>