Change in osmo-pcu[master]: gsmtap: Set signal level and SNR fields

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/.

pespin gerrit-no-reply at lists.osmocom.org
Tue May 19 15:28:51 UTC 2020


pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-pcu/+/18365 )


Change subject: gsmtap: Set signal level and SNR fields
......................................................................

gsmtap: Set signal level and SNR fields

lqlual (containing C/I value) is passed instead of SNR, but let's have
that better than nothing.

Change-Id: Ibe9502d42c8bd1b984069e7fd805dde87ecbab0c
---
M src/bts.cpp
M src/bts.h
M src/pcu_l1_if.cpp
M src/pdch.cpp
4 files changed, 21 insertions(+), 8 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/65/18365/1

diff --git a/src/bts.cpp b/src/bts.cpp
index 2cf219a..a75de30 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -434,6 +434,13 @@
 		      uint8_t ts_no, uint8_t channel, uint32_t fn,
 		      const uint8_t *data, unsigned int len)
 {
+	struct pcu_l1_meas meas;
+	send_gsmtap_meas(categ, uplink, trx_no, ts_no, channel, fn, data, len, &meas);
+}
+void BTS::send_gsmtap_meas(enum pcu_gsmtap_category categ, bool uplink, uint8_t trx_no,
+		      uint8_t ts_no, uint8_t channel, uint32_t fn,
+		      const uint8_t *data, unsigned int len, struct pcu_l1_meas *meas)
+{
 	uint16_t arfcn;
 
 	/* check if category is activated at all */
@@ -444,7 +451,8 @@
 	if (uplink)
 		arfcn |= GSMTAP_ARFCN_F_UPLINK;
 
-	gsmtap_send(m_bts.gsmtap, arfcn, ts_no, channel, 0, fn, 0, 0, data, len);
+	gsmtap_send(m_bts.gsmtap, arfcn, ts_no, channel, 0, fn,
+		    meas->rssi, meas->link_qual, data, len);
 }
 
 static inline bool tbf_check(gprs_rlcmac_tbf *tbf, uint32_t fn, uint8_t trx_no, uint8_t ts)
diff --git a/src/bts.h b/src/bts.h
index 9986bdc..aae8b43 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -316,6 +316,9 @@
 	void send_gsmtap(enum pcu_gsmtap_category categ, bool uplink, uint8_t trx_no,
 			      uint8_t ts_no, uint8_t channel, uint32_t fn,
 			      const uint8_t *data, unsigned int len);
+	void send_gsmtap_meas(enum pcu_gsmtap_category categ, bool uplink, uint8_t trx_no,
+			      uint8_t ts_no, uint8_t channel, uint32_t fn,
+			      const uint8_t *data, unsigned int len, struct pcu_l1_meas *meas);
 
 	/*
 	 * Below for C interface for the VTY
diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp
index 30d22bd..40e933e 100644
--- a/src/pcu_l1_if.cpp
+++ b/src/pcu_l1_if.cpp
@@ -347,7 +347,7 @@
 
 	if (rc < 0 && (bts->gsmtap_categ_mask & (1 <<PCU_GSMTAP_C_UL_UNKNOWN))) {
 		gsmtap_send(bts->gsmtap, data_ind->arfcn | GSMTAP_ARFCN_F_UPLINK, data_ind->ts_nr,
-			    GSMTAP_CHANNEL_UNKNOWN, 0, data_ind->fn, 0, 0, data_ind->data, data_ind->len);
+			    GSMTAP_CHANNEL_UNKNOWN, 0, data_ind->fn, meas.rssi, meas.link_qual, data_ind->data, data_ind->len);
 	}
 
 	return rc;
diff --git a/src/pdch.cpp b/src/pdch.cpp
index f7cdd89..b97f4c7 100644
--- a/src/pdch.cpp
+++ b/src/pdch.cpp
@@ -704,9 +704,9 @@
 
 	rc = decode_gsm_rlcmac_uplink(rlc_block, ul_control_block);
 	if (ul_control_block->u.MESSAGE_TYPE == MT_PACKET_UPLINK_DUMMY_CONTROL_BLOCK)
-		bts()->send_gsmtap(PCU_GSMTAP_C_UL_DUMMY, true, trx_no(), ts_no, GSMTAP_CHANNEL_PACCH, fn, data, data_len);
+		bts()->send_gsmtap_meas(PCU_GSMTAP_C_UL_DUMMY, true, trx_no(), ts_no, GSMTAP_CHANNEL_PACCH, fn, data, data_len, meas);
 	else
-		bts()->send_gsmtap(PCU_GSMTAP_C_UL_CTRL, true, trx_no(), ts_no, GSMTAP_CHANNEL_PACCH, fn, data, data_len);
+		bts()->send_gsmtap_meas(PCU_GSMTAP_C_UL_CTRL, true, trx_no(), ts_no, GSMTAP_CHANNEL_PACCH, fn, data, data_len, meas);
 
 	if(rc < 0) {
 		LOGP(DRLCMACUL, LOGL_ERROR, "Dropping Uplink Control Block with invalid "
@@ -789,8 +789,9 @@
 	 * control blocks (see 44.060, section 10.3, 1st par.)
 	 */
 	if (mcs_is_edge(cs)) {
-		bts()->send_gsmtap(PCU_GSMTAP_C_UL_DATA_EGPRS, true, trx_no(), ts_no, GSMTAP_CHANNEL_PDTCH, fn,
-				   data, data_len);
+		bts()->send_gsmtap_meas(PCU_GSMTAP_C_UL_DATA_EGPRS, true,
+					trx_no(), ts_no, GSMTAP_CHANNEL_PDTCH, fn,
+					data, data_len, meas);
 		if (!bts()->bts_data()->egprs_enabled) {
 			LOGP(DRLCMACUL, LOGL_ERROR,
 				"Got %s RLC block but EGPRS is not enabled\n",
@@ -798,8 +799,9 @@
 			return 0;
 		}
 	} else {
-		bts()->send_gsmtap(PCU_GSMTAP_C_UL_DATA_GPRS, true, trx_no(), ts_no, GSMTAP_CHANNEL_PDTCH, fn,
-				   data, data_len);
+		bts()->send_gsmtap_meas(PCU_GSMTAP_C_UL_DATA_GPRS, true,
+					trx_no(), ts_no, GSMTAP_CHANNEL_PDTCH, fn,
+					data, data_len, meas);
 	}
 
 	LOGP(DRLCMACUL, LOGL_DEBUG, "  UL data: %s\n", osmo_hexdump(data, len));

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

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: Ibe9502d42c8bd1b984069e7fd805dde87ecbab0c
Gerrit-Change-Number: 18365
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200519/1928241f/attachment.htm>


More information about the gerrit-log mailing list