Change in osmo-bts[master]: osmo-bts-sysmo: merge measurement data and payload

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
Fri Feb 14 15:04:32 UTC 2020


dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/17146 )


Change subject: osmo-bts-sysmo: merge measurement data and payload
......................................................................

osmo-bts-sysmo: merge measurement data and payload

For osmo-bts-sysmo the MPH INFO MEAS IND indication is still sent
separately. Lets merge the measurement information into the PH DATA
and TCH indication like we already did it for osmo-bts-trx

Change-Id: Iffe7865727fbf9bca8eb32a96e8ea05cf718a948
Related: OS#2977
---
M include/osmo-bts/l1sap.h
M src/common/l1sap.c
M src/osmo-bts-sysmo/l1_if.c
M src/osmo-bts-sysmo/main.c
M src/osmo-bts-sysmo/tch.c
5 files changed, 35 insertions(+), 32 deletions(-)



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

diff --git a/include/osmo-bts/l1sap.h b/include/osmo-bts/l1sap.h
index 1883869..94d42d8 100644
--- a/include/osmo-bts/l1sap.h
+++ b/include/osmo-bts/l1sap.h
@@ -136,6 +136,11 @@
 		     struct gsm_lchan *lchan, uint8_t chan_nr, uint32_t fn,
 		     uint16_t ber10k, int16_t lqual_cb);
 
+int add_l1sap_header2(struct gsm_bts_trx *trx, struct msgb *rmsg,
+		     struct gsm_lchan *lchan, uint8_t chan_nr, uint32_t fn,
+		     uint16_t ber10k, int16_t lqual_cb, int8_t rssi,
+		     int16_t ta_offs, uint8_t is_sub);
+
 #define msgb_l1sap_prim(msg) ((struct osmo_phsap_prim *)(msg)->l1h)
 
 int bts_check_for_first_ciphrd(struct gsm_lchan *lchan,
diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index 0b51045..084c86b 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -180,6 +180,15 @@
 		     struct gsm_lchan *lchan, uint8_t chan_nr, uint32_t fn,
 		     uint16_t ber10k, int16_t lqual_cb)
 {
+	return add_l1sap_header2(trx, rmsg, lchan, chan_nr, fn, ber10k,
+				 lqual_cb, 0, 0, 0);
+}
+
+int add_l1sap_header2(struct gsm_bts_trx *trx, struct msgb *rmsg,
+		     struct gsm_lchan *lchan, uint8_t chan_nr, uint32_t fn,
+		     uint16_t ber10k, int16_t lqual_cb, int8_t rssi,
+		     int16_t ta_offs, uint8_t is_sub)
+{
 	struct osmo_phsap_prim *l1sap;
 
 	LOGPLCHAN(lchan, DL1P, LOGL_DEBUG, "Rx -> RTP: %s\n", osmo_hexdump(rmsg->data, rmsg->len));
@@ -194,6 +203,10 @@
 	l1sap->u.tch.ber10k = ber10k;
 	l1sap->u.tch.lqual_cb = lqual_cb;
 
+	l1sap->u.tch.rssi = rssi;
+	l1sap->u.tch.ta_offs_256bits = ta_offs;
+	l1sap->u.tch.is_sub = is_sub;
+
 	return l1sap_up(trx, l1sap);
 }
 
diff --git a/src/osmo-bts-sysmo/l1_if.c b/src/osmo-bts-sysmo/l1_if.c
index db0dfb5..2e5e5b6 100644
--- a/src/osmo-bts-sysmo/l1_if.c
+++ b/src/osmo-bts-sysmo/l1_if.c
@@ -940,25 +940,6 @@
 #define LOG_FMT_MEAS "Meas: RSSI %-3.2f dBm, Qual %-3.2f dB, BER %-3.2f, Timing %d"
 #define LOG_PARAM_MEAS(meas_param) (meas_param)->fRssi, (meas_param)->fLinkQuality, (meas_param)->fBer, (meas_param)->i16BurstTiming
 
-static int process_meas_res(struct gsm_bts_trx *trx, uint8_t chan_nr,
-			    uint32_t fn, GsmL1_MeasParam_t *m)
-{
-	struct osmo_phsap_prim l1sap;
-	memset(&l1sap, 0, sizeof(l1sap));
-	osmo_prim_init(&l1sap.oph, SAP_GSM_PH, PRIM_MPH_INFO,
-		PRIM_OP_INDICATION, NULL);
-	l1sap.u.info.type = PRIM_INFO_MEAS;
-	l1sap.u.info.u.meas_ind.chan_nr = chan_nr;
-	l1sap.u.info.u.meas_ind.ta_offs_256bits = m->i16BurstTiming * 64;
-	l1sap.u.info.u.meas_ind.ber10k = (unsigned int) (m->fBer * 10000);
-	l1sap.u.info.u.meas_ind.inv_rssi = (uint8_t) (m->fRssi * -1);
-	l1sap.u.info.u.meas_ind.fn = fn;
-
-	/* l1sap wants to take msgb ownership.  However, as there is no
-	 * msg, it will msgb_free(l1sap.oph.msg == NULL) */
-	return l1sap_up(trx, &l1sap);
-}
-
 static int handle_ph_data_ind(struct femtol1_hdl *fl1, GsmL1_PhDataInd_t *data_ind,
 			      struct msgb *l1p_msg)
 {
@@ -983,8 +964,6 @@
 	fn = data_ind->u32Fn;
 	link_id =  (data_ind->sapi == GsmL1_Sapi_Sacch) ? LID_SACCH : LID_DEDIC;
 
-	process_meas_res(trx, chan_nr, fn, &data_ind->measParam);
-
 	gsm_fn2gsmtime(&g_time, fn);
 
 	DEBUGPGT(DL1P, &g_time, "Rx PH-DATA.ind %s (hL2 %08x): %s, " LOG_FMT_MEAS "\n",
@@ -1010,11 +989,10 @@
 	l1sap->u.data.chan_nr = chan_nr;
 	l1sap->u.data.fn = fn;
 	l1sap->u.data.rssi = (int8_t) (data_ind->measParam.fRssi);
-	if (!pcu_direct) { /* FIXME: if pcu_direct=1, then this is not set, what to do in pcu_tx_data_ind() in this case ?*/
-		l1sap->u.data.ber10k = data_ind->measParam.fBer * 10000;
-		l1sap->u.data.ta_offs_256bits = data_ind->measParam.i16BurstTiming * 64;
-		l1sap->u.data.lqual_cb = data_ind->measParam.fLinkQuality * 10;
-	}
+	l1sap->u.data.ber10k = data_ind->measParam.fBer * 10000;
+	l1sap->u.data.ta_offs_256bits = data_ind->measParam.i16BurstTiming * 64;
+	l1sap->u.data.lqual_cb = data_ind->measParam.fLinkQuality * 10;
+
 	/* copy data from L1 primitive to L1SAP primitive */
 	sap_msg->l2h = msgb_put(sap_msg, data_ind->msgUnitParam.u8Size);
 	memcpy(sap_msg->l2h, data_ind->msgUnitParam.u8Buffer,
diff --git a/src/osmo-bts-sysmo/main.c b/src/osmo-bts-sysmo/main.c
index bb2c436..44c6d5d 100644
--- a/src/osmo-bts-sysmo/main.c
+++ b/src/osmo-bts-sysmo/main.c
@@ -87,6 +87,7 @@
 	gsm_bts_set_feature(bts, BTS_FEAT_SPEECH_F_AMR);
 	gsm_bts_set_feature(bts, BTS_FEAT_SPEECH_H_AMR);
 	gsm_bts_set_feature(bts, BTS_FEAT_MS_PWR_CTRL_DSP);
+	gsm_bts_set_feature(bts, BTS_FEAT_MEAS_PAYLOAD_COMB);
 
 	bts_model_vty_init(bts);
 
diff --git a/src/osmo-bts-sysmo/tch.c b/src/osmo-bts-sysmo/tch.c
index 54e7313..a9997f6 100644
--- a/src/osmo-bts-sysmo/tch.c
+++ b/src/osmo-bts-sysmo/tch.c
@@ -516,9 +516,12 @@
 		LOGPFN(DL1P, LOGL_DEBUG, data_ind->u32Fn, "chan_nr %d Rx Payload size 0\n", chan_nr);
 		/* Push empty payload to upper layers */
 		rmsg = msgb_alloc_headroom(256, 128, "L1P-to-RTP");
-		return add_l1sap_header(trx, rmsg, lchan, chan_nr, data_ind->u32Fn,
-					data_ind->measParam.fBer * 10000,
-					data_ind->measParam.fLinkQuality * 10);
+		return add_l1sap_header2(trx, rmsg, lchan, chan_nr, data_ind->u32Fn,
+					 data_ind->measParam.fBer * 10000,
+					 data_ind->measParam.fLinkQuality * 10,
+					 data_ind->measParam.fRssi,
+					 data_ind->measParam.i16BurstTiming * 64,
+					 0);
 	}
 
 	payload_type = data_ind->msgUnitParam.u8Buffer[0];
@@ -611,9 +614,12 @@
 	}
 
 	if (rmsg)
-		return add_l1sap_header(trx, rmsg, lchan, chan_nr, data_ind->u32Fn,
-					data_ind->measParam.fBer * 10000,
-					data_ind->measParam.fLinkQuality * 10);
+		return add_l1sap_header2(trx, rmsg, lchan, chan_nr, data_ind->u32Fn,
+					 data_ind->measParam.fBer * 10000,
+					 data_ind->measParam.fLinkQuality * 10,
+					 data_ind->measParam.fRssi,
+					 data_ind->measParam.i16BurstTiming * 64,
+					 0);
 
 	return 0;
 

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/17146
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: Iffe7865727fbf9bca8eb32a96e8ea05cf718a948
Gerrit-Change-Number: 17146
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/20200214/a324143a/attachment.htm>


More information about the gerrit-log mailing list