[PATCH] osmo-ttcn3-hacks[master]: RTP_Emulation: Integrate IuUP support

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

Harald Welte gerrit-no-reply at lists.osmocom.org
Sun Dec 24 23:01:17 UTC 2017


Review at  https://gerrit.osmocom.org/5566

RTP_Emulation: Integrate IuUP support

Change-Id: I46de7fb9c324654275a27aa5f8c1be70340e3229
---
M library/RTP_Emulation.ttcn
1 file changed, 27 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/66/5566/1

diff --git a/library/RTP_Emulation.ttcn b/library/RTP_Emulation.ttcn
index e55890e..f952510 100644
--- a/library/RTP_Emulation.ttcn
+++ b/library/RTP_Emulation.ttcn
@@ -21,6 +21,9 @@
 import from RTP_CodecPort all;
 import from RTP_CodecPort_CtrlFunct all;
 
+import from IuUP_Types all;
+import from IuUP_Emulation all;
+
 type component RTP_Emulation_CT {
 	/* down-facing ports for RTP and RTCP codec ports on top of IPL4asp */
 	port RTP_CODEC_PT RTP;
@@ -32,7 +35,7 @@
 	port RTPEM_CTRL_PT CTRL;
 
 	/* configurable by user, should be fixed */
-	var RtpemConfig g_cfg := c_default_cfg;
+	var RtpemConfig g_cfg := c_RtpemDefaultCfg;
 
 	var HostName g_remote_host;
 	var PortNumber g_remote_port;
@@ -47,6 +50,8 @@
 	var INT7b g_rx_payload_type := 0;
 	var LIN2_BO_LAST g_rx_last_seq;
 	var uint32_t g_rx_last_ts;
+
+	var IuUP_Entity g_iuup_ent; // := valueof(t_IuUP_Entity(1));
 }
 
 type enumerated RtpemMode {
@@ -61,15 +66,19 @@
 	integer tx_samplerate_hz,
 	integer tx_duration_ms,
 	BIT32_BO_LAST tx_ssrc,
-	octetstring tx_fixed_payload optional
+	octetstring tx_fixed_payload optional,
+	boolean iuup_mode,
+	boolean iuup_tx_init
 };
 
-const RtpemConfig c_default_cfg := {
+const RtpemConfig c_RtpemDefaultCfg := {
 	tx_payload_type := 0,
 	tx_samplerate_hz := 8000,
 	tx_duration_ms := 20,
 	tx_ssrc := '11011110101011011011111011101111'B,
-	tx_fixed_payload := '01020304'O
+	tx_fixed_payload := '01020304'O,
+	iuup_mode := false,
+	iuup_tx_init := true
 }
 
 signature RTPEM_bind(in HostName local_host, inout PortNumber local_port);
@@ -98,6 +107,9 @@
 }
 
 private function f_tx_rtp(octetstring payload, BIT1 marker := '0'B) runs on RTP_Emulation_CT {
+	if (g_cfg.iuup_mode) {
+		payload := f_IuUP_Em_tx_encap(g_iuup_ent, payload);
+	}
 	var PDU_RTP rtp := valueof(ts_RTP(g_cfg.tx_ssrc, g_cfg.tx_payload_type, g_tx_next_seq,
 					  g_tx_next_ts, payload, marker));
 	RTP.send(t_RTP_Send(g_rtp_conn_id, RTP_messages_union:{rtp:=rtp}));
@@ -127,6 +139,8 @@
 	tr_rtp.msg := { rtp := ? };
 	tr_rtp.connId := g_rtcp_conn_id;
 	tr_rtcp.msg := { rtcp := ? };
+
+	g_iuup_ent := valueof(t_IuUP_Entity(g_cfg.iuup_tx_init));
 
 	while (true) {
 	alt {
@@ -164,11 +178,13 @@
 		[] CTRL.getcall(RTPEM_mode:{RTPEM_MODE_NONE}) {
 			T_transmit.stop;
 			g_rx_enabled := false;
+			CTRL.reply(RTPEM_mode:{RTPEM_MODE_NONE});
 		}
 		[] CTRL.getcall(RTPEM_mode:{RTPEM_MODE_TXONLY}) {
 			/* start transmit timer */
 			T_transmit.start;
 			g_rx_enabled := false;
+			CTRL.reply(RTPEM_mode:{RTPEM_MODE_TXONLY});
 		}
 		[] CTRL.getcall(RTPEM_mode:{RTPEM_MODE_RXONLY}) {
 
@@ -179,6 +195,7 @@
 				RTCP.clear;
 				g_rx_enabled := true;
 			}
+			CTRL.reply(RTPEM_mode:{RTPEM_MODE_RXONLY});
 		}
 		[] CTRL.getcall(RTPEM_mode:{RTPEM_MODE_BIDIR}) {
 			T_transmit.start;
@@ -188,9 +205,12 @@
 				RTCP.clear;
 				g_rx_enabled := true;
 			}
+			CTRL.reply(RTPEM_mode:{RTPEM_MODE_BIDIR});
 		}
 		[] CTRL.getcall(RTPEM_configure:{?}) -> param (cfg) {
 			g_cfg := cfg;
+			g_iuup_ent.cfg.active_init := g_cfg.iuup_tx_init;
+			CTRL.reply(RTPEM_configure:{cfg});
 		}
 
 		/* simply ignore any RTTP/RTCP if receiver not enabled */
@@ -200,6 +220,9 @@
 		/* process received RTCP/RTP if receiver enabled */
 		[g_rx_enabled] RTP.receive(tr_rtp) -> value rx_rtp {
 			log("RX RTP: ", rx_rtp);
+			if (g_cfg.iuup_mode) {
+				rx_rtp.msg.rtp.data := f_IuUP_Em_rx_decaps(g_iuup_ent, rx_rtp.msg.rtp.data);
+			}
 		}
 		[g_rx_enabled] RTCP.receive(tr_rtcp) -> value rx_rtp {
 			log("RX RTCP: ", rx_rtp);

-- 
To view, visit https://gerrit.osmocom.org/5566
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I46de7fb9c324654275a27aa5f8c1be70340e3229
Gerrit-PatchSet: 1
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>



More information about the gerrit-log mailing list