Change in osmo-pcu[master]: tbf: Reimplement rlcmac_diag() and make it available from C

pespin gerrit-no-reply at lists.osmocom.org
Mon Aug 23 16:28:20 UTC 2021


pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/25058 )

Change subject: tbf: Reimplement rlcmac_diag() and make it available from C
......................................................................

tbf: Reimplement rlcmac_diag() and make it available from C

We never use the std:string anyway, we always call .c_str() to log using
osmocom logging system.
Furthermore, we'll need to use it from C code soon (next commit).

Change-Id: I3ad66f9f3f4d55d11da3a3b8b38656ae2dd50603
---
M src/tbf.cpp
M src/tbf.h
2 files changed, 28 insertions(+), 27 deletions(-)

Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, approved
  osmith: Looks good to me, but someone else must approve



diff --git a/src/tbf.cpp b/src/tbf.cpp
index 498c69b..88aa049 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -446,7 +446,7 @@
 {
 	if (run_diag) {
 		LOGPTBF(tbf, LOGL_NOTICE, "%s timeout expired, freeing TBF: %s\n",
-			get_value_string(tbf_timers_names, t), tbf->rlcmac_diag().c_str());
+			get_value_string(tbf_timers_names, t), tbf_rlcmac_diag(tbf));
 	} else {
 		LOGPTBF(tbf, LOGL_NOTICE, "%s timeout expired, freeing TBF\n",
 			get_value_string(tbf_timers_names, t));
@@ -610,7 +610,7 @@
 		if (!ul_tbf->ctrl_ack_to_toggle()) {
 			LOGPTBF(this, LOGL_NOTICE,
 				"Timeout for polling PACKET CONTROL ACK for PACKET UPLINK ACK: %s\n",
-				rlcmac_diag().c_str());
+				tbf_rlcmac_diag(this));
 		}
 		bts_do_rate_ctr_inc(bts, CTR_RLC_ACK_TIMEDOUT);
 		bts_do_rate_ctr_inc(bts, CTR_PUAN_POLL_TIMEDOUT);
@@ -628,7 +628,7 @@
 		if (!(state_fsm.state_flags & (1 << GPRS_RLCMAC_FLAG_TO_UL_ASS))) {
 			LOGPTBF(this, LOGL_NOTICE,
 				"Timeout for polling PACKET CONTROL ACK for PACKET UPLINK ASSIGNMENT: %s\n",
-				rlcmac_diag().c_str());
+				tbf_rlcmac_diag(this));
 			state_fsm.state_flags |= (1 << GPRS_RLCMAC_FLAG_TO_UL_ASS);
 		}
 		bts_do_rate_ctr_inc(bts, CTR_RLC_ASS_TIMEDOUT);
@@ -645,7 +645,7 @@
 		if (!(state_fsm.state_flags & (1 << GPRS_RLCMAC_FLAG_TO_DL_ASS))) {
 			LOGPTBF(this, LOGL_NOTICE,
 				"Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: %s\n",
-				rlcmac_diag().c_str());
+				tbf_rlcmac_diag(this));
 			state_fsm.state_flags |= (1 << GPRS_RLCMAC_FLAG_TO_DL_ASS);
 		}
 		dl_ass_state = GPRS_RLCMAC_DL_ASS_NONE;
@@ -670,7 +670,7 @@
 		if (!(dl_tbf->state_fsm.state_flags & (1 << GPRS_RLCMAC_FLAG_TO_DL_ACK))) {
 			LOGPTBF(this, LOGL_NOTICE,
 				"Timeout for polling PACKET DOWNLINK ACK: %s\n",
-				dl_tbf->rlcmac_diag().c_str());
+				tbf_rlcmac_diag(dl_tbf));
 			dl_tbf->state_fsm.state_flags |= (1 << GPRS_RLCMAC_FLAG_TO_DL_ACK);
 		}
 
@@ -800,26 +800,6 @@
 	}
 }
 
-std::string gprs_rlcmac_tbf::rlcmac_diag()
-{
-	std::ostringstream os;
-	os << "|";
-	if ((state_fsm.state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH)))
-		os << "Assignment was on CCCH|";
-	if ((state_fsm.state_flags & (1 << GPRS_RLCMAC_FLAG_PACCH)))
-		os << "Assignment was on PACCH|";
-	if ((state_fsm.state_flags & (1 << GPRS_RLCMAC_FLAG_UL_DATA)))
-		os << "Uplink data was received|";
-	else if (direction == GPRS_RLCMAC_UL_TBF)
-		os << "No uplink data received yet|";
-	if ((state_fsm.state_flags & (1 << GPRS_RLCMAC_FLAG_DL_ACK)))
-		os << "Downlink ACK was received|";
-	else if (direction == GPRS_RLCMAC_DL_TBF)
-		os << "No downlink ACK received yet|";
-
-	return os.str();
-}
-
 struct msgb *gprs_rlcmac_tbf::create_dl_ass(uint32_t fn, uint8_t ts)
 {
 	struct msgb *msg;
@@ -1111,3 +1091,25 @@
 {
 	tbf->poll_timeout(pdch, poll_fn, reason);
 }
+
+const char* tbf_rlcmac_diag(const struct gprs_rlcmac_tbf *tbf)
+{
+	static char buf[256];
+	struct osmo_strbuf sb = { .buf = buf, .len = sizeof(buf) };
+
+	OSMO_STRBUF_PRINTF(sb, "|");
+	if (tbf->state_fsm.state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH))
+		OSMO_STRBUF_PRINTF(sb, "Assignment was on CCCH|");
+	if (tbf->state_fsm.state_flags & (1 << GPRS_RLCMAC_FLAG_PACCH))
+		OSMO_STRBUF_PRINTF(sb, "Assignment was on PACCH|");
+	if (tbf->state_fsm.state_flags & (1 << GPRS_RLCMAC_FLAG_UL_DATA))
+		OSMO_STRBUF_PRINTF(sb, "Uplink data was received|");
+	else if (tbf->direction == GPRS_RLCMAC_UL_TBF)
+		OSMO_STRBUF_PRINTF(sb, "No uplink data received yet|");
+	if (tbf->state_fsm.state_flags & (1 << GPRS_RLCMAC_FLAG_DL_ACK))
+		OSMO_STRBUF_PRINTF(sb, "Downlink ACK was received|");
+	else if (tbf->direction == GPRS_RLCMAC_DL_TBF)
+		OSMO_STRBUF_PRINTF(sb, "No downlink ACK received yet|");
+
+	return buf;
+}
diff --git a/src/tbf.h b/src/tbf.h
index 3313255..da683b6 100644
--- a/src/tbf.h
+++ b/src/tbf.h
@@ -173,6 +173,7 @@
 void tbf_set_polling(struct gprs_rlcmac_tbf *tbf, uint32_t new_poll_fn, uint8_t ts, enum pdch_ulc_tbf_poll_reason t);
 void tbf_poll_timeout(struct gprs_rlcmac_tbf *tbf, struct gprs_rlcmac_pdch *pdch, uint32_t poll_fn, enum pdch_ulc_tbf_poll_reason reason);
 void tbf_update_state_fsm_name(struct gprs_rlcmac_tbf *tbf);
+const char* tbf_rlcmac_diag(const struct gprs_rlcmac_tbf *tbf);
 #ifdef __cplusplus
 }
 #endif
@@ -207,8 +208,6 @@
 
 	uint8_t tsc() const;
 
-	std::string rlcmac_diag();
-
 	bool n_inc(enum tbf_counters n);
 	void n_reset(enum tbf_counters n);
 

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

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I3ad66f9f3f4d55d11da3a3b8b38656ae2dd50603
Gerrit-Change-Number: 25058
Gerrit-PatchSet: 4
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: osmith <osmith at sysmocom.de>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210823/f8f73d3c/attachment.htm>


More information about the gerrit-log mailing list