library/RTP_Emulation: add optional port for RTP sniffing

Change-Id: I224d25aa298b5b512ab9e2a36c144e19c23d8462
diff --git a/library/RTP_Emulation.ttcn b/library/RTP_Emulation.ttcn
index 728d352..b2360dc 100644
--- a/library/RTP_Emulation.ttcn
+++ b/library/RTP_Emulation.ttcn
@@ -81,6 +81,8 @@
 
 	/* user-facing port for controlling the binding */
 	port RTPEM_CTRL_PT CTRL;
+	/* user-facing port for sniffing RTP frames */
+	port RTPEM_DATA_PT DATA;
 
 	/* configurable by user, should be fixed */
 	var RtpemConfig g_cfg := c_RtpemDefaultCfg;
@@ -186,6 +188,10 @@
 	      RTPEM_conn_refuse_received;
 } with { extension "internal" };
 
+type port RTPEM_DATA_PT message {
+	inout PDU_RTP, PDU_RTCP;
+} with { extension "internal" };
+
 function f_rtpem_bind(RTPEM_CTRL_PT pt, in HostName local_host, inout PortNumber local_port) {
 	pt.call(RTPEM_bind:{local_host, local_port}) {
 		[] pt.getreply(RTPEM_bind:{local_host, ?}) -> param (local_port) {};
@@ -515,10 +521,16 @@
 			if (g_cfg.iuup_mode) {
 				rx_rtp.msg.rtp.data := f_IuUP_Em_rx_decaps(g_iuup_ent, rx_rtp.msg.rtp.data);
 			}
+			if (DATA.checkstate("Connected")) {
+				DATA.send(rx_rtp.msg.rtp);
+			}
 		}
 		[g_rx_enabled] RTCP.receive(tr_rtcp) -> value rx_rtp {
 			//log("RX RTCP: ", rx_rtp);
 			g_stats_rtcp.num_pkts_rx := g_stats_rtcp.num_pkts_rx+1;
+			if (DATA.checkstate("Connected")) {
+				DATA.send(rx_rtp.msg.rtcp);
+			}
 		}
 
 		/* transmit if timer has expired */