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>