aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-12-24 21:48:33 +0100
committerHarald Welte <laforge@gnumonks.org>2017-12-25 00:00:58 +0100
commit3f6f48f4c1194844da7e2f1c7b26cb97342179f7 (patch)
tree4becdf58aa6f9ce8dae718e97f66c55a8d532c78
parent46a38f1669c8174f8bb92482787d74bae1113041 (diff)
RTP_Emulation: Add RtpemConfig / RTPEM_configure() call
-rw-r--r--library/RTP_Emulation.ttcn36
1 files changed, 27 insertions, 9 deletions
diff --git a/library/RTP_Emulation.ttcn b/library/RTP_Emulation.ttcn
index 10cf6837..e55890e9 100644
--- a/library/RTP_Emulation.ttcn
+++ b/library/RTP_Emulation.ttcn
@@ -32,10 +32,7 @@ type component RTP_Emulation_CT {
port RTPEM_CTRL_PT CTRL;
/* configurable by user, should be fixed */
- var INT7b g_tx_payload_type := 0;
- var integer g_tx_samplerate_hz := 8000;
- var integer g_tx_duration_ms := 20;
- var BIT32_BO_LAST g_tx_ssrc := hex2bit('DEADBEEF'H);
+ var RtpemConfig g_cfg := c_default_cfg;
var HostName g_remote_host;
var PortNumber g_remote_port;
@@ -59,12 +56,29 @@ type enumerated RtpemMode {
RTPEM_MODE_BIDIR
};
+type record RtpemConfig {
+ INT7b tx_payload_type,
+ integer tx_samplerate_hz,
+ integer tx_duration_ms,
+ BIT32_BO_LAST tx_ssrc,
+ octetstring tx_fixed_payload optional
+};
+
+const RtpemConfig c_default_cfg := {
+ tx_payload_type := 0,
+ tx_samplerate_hz := 8000,
+ tx_duration_ms := 20,
+ tx_ssrc := '11011110101011011011111011101111'B,
+ tx_fixed_payload := '01020304'O
+}
+
signature RTPEM_bind(in HostName local_host, inout PortNumber local_port);
signature RTPEM_connect(in HostName remote_host, in PortNumber remote_port);
signature RTPEM_mode(in RtpemMode mode);
+signature RTPEM_configure(in RtpemConfig cfg);
type port RTPEM_CTRL_PT procedure {
- inout RTPEM_bind, RTPEM_connect, RTPEM_mode;
+ inout RTPEM_bind, RTPEM_connect, RTPEM_mode, RTPEM_configure;
} with { extension "internal" };
template PDU_RTP ts_RTP(BIT32_BO_LAST ssrc, INT7b pt, LIN2_BO_LAST seq, uint32_t ts,
@@ -84,20 +98,21 @@ template PDU_RTP ts_RTP(BIT32_BO_LAST ssrc, INT7b pt, LIN2_BO_LAST seq, uint32_t
}
private function f_tx_rtp(octetstring payload, BIT1 marker := '0'B) runs on RTP_Emulation_CT {
- var PDU_RTP rtp := valueof(ts_RTP(g_tx_ssrc, g_tx_payload_type, g_tx_next_seq,
+ 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}));
/* increment sequence + timestamp for next transmit */
g_tx_next_seq := g_tx_next_seq + 1;
- g_tx_next_ts := g_tx_next_ts + (g_tx_samplerate_hz / (1000 / g_tx_duration_ms));
+ g_tx_next_ts := g_tx_next_ts + (g_cfg.tx_samplerate_hz / (1000 / g_cfg.tx_duration_ms));
}
function f_main() runs on RTP_Emulation_CT
{
var Result res;
- timer T_transmit := int2float(g_tx_duration_ms)/1000.0;
+ timer T_transmit := int2float(g_cfg.tx_duration_ms)/1000.0;
var RTP_RecvFrom rx_rtp;
+ var RtpemConfig cfg;
var template RTP_RecvFrom tr := {
connId := ?,
remName := ?,
@@ -174,6 +189,9 @@ function f_main() runs on RTP_Emulation_CT
g_rx_enabled := true;
}
}
+ [] CTRL.getcall(RTPEM_configure:{?}) -> param (cfg) {
+ g_cfg := cfg;
+ }
/* simply ignore any RTTP/RTCP if receiver not enabled */
[g_rx_enabled==false] RTP.receive(tr_rtp) { }
@@ -190,7 +208,7 @@ function f_main() runs on RTP_Emulation_CT
/* transmit if timer has expired */
[] T_transmit.timeout {
/* send one RTP frame, re-start timer */
- f_tx_rtp('01020304'O);
+ f_tx_rtp(g_cfg.tx_fixed_payload);
T_transmit.start;
}