add DTMF capability to simulator test script

Change-Id: Ied1e02d74eb998d3d0b54a5277bf4aeff2ccbeae
changes/85/23185/1
Richard Fuchs 7 years ago
parent a44b34a7a9
commit 59d3399b41

@ -18,7 +18,7 @@ use NGCP::Rtpclient::SRTP;
my ($NUM, $RUNTIME, $STREAMS, $PAYLOAD, $INTERVAL, $RTCP_INTERVAL, $STATS_INTERVAL)
= (1000, 30, 1, 160, 20, 5, 5);
my ($NODEL, $IP, $IPV6, $KEEPGOING, $REINVITES, $PROTOS, $DEST, $SUITES, $NOENC, $RTCPMUX, $BUNDLE, $LAZY,
$CHANGE_SSRC, $PORT_LATCHING, $RECORD);
$CHANGE_SSRC, $PORT_LATCHING, $RECORD, $DTMF);
GetOptions(
'no-delete' => \$NODEL,
'num-calls=i' => \$NUM,
@ -42,6 +42,7 @@ GetOptions(
'change-ssrc' => \$CHANGE_SSRC,
'port-latching' => \$PORT_LATCHING,
'record' => \$RECORD,
'dtmf' => \$DTMF,
) or die;
($IP || $IPV6) or die("at least one of --local-ip or --local-ipv6 must be given");
@ -314,9 +315,34 @@ sub rtp {
my $ssrc = $$ctx{ssrc} // ($$ctx{ssrc} = rand(2**32));
my $seq = $$ctx{rtp_seqnum};
defined($seq) or $seq = int(rand(0xfffe)) + 1;
my $hdr = pack("CCnNN", 0x80, 0x00, $seq, rand(2**32), $ssrc);
my $pack = $hdr . rand_str($PAYLOAD);
my ($hdr, $payload);
# don't do DTMF as first packet XXX should work
if ($$ctx{out_count} && ($$ctx{is_dtmf} || ($DTMF && rand() < 0.1))) {
# DTMF in progress or start it
if (!$$ctx{is_dtmf}) {
# start DTMF
$$ctx{is_dtmf} = 1;
}
# else: DTMF in progress
$hdr = pack("CCnNN", 0x80, 96, $seq, rand(2**32), $ssrc);
if (rand() < 0.2) {
# end DTMF
$$ctx{is_dtmf} = 0;
$payload = pack("CCN", rand(10), 0x80 | rand(50)+10, rand(2**16));
# XXX triple-send end packet
}
else {
$payload = pack("CCN", rand(10), rand(50)+10, rand(2**16));
}
}
else {
# random PCM
$hdr = pack("CCnNN", 0x80, 0, $seq, rand(2**32), $ssrc);
$payload = rand_str($PAYLOAD);
}
my $pack = $hdr . $payload;
$$ctx{rtp_seqnum} = (++$seq & 0xffff);
$$ctx{out_count}++;
return $pack;
}
@ -636,11 +662,15 @@ SDP
my $cp = $p + 1;
$cp = $p if $$A{bundle} && $$A{want_rtcpmux} && $op eq 'offer';
$sdp .= "m=audio $p $$tr{name} 0 8 111";
$DTMF and $sdp .= ' 96';
$sdp .= "\n";
$sdp .= <<"SDP";
m=audio $p $$tr{name} 0 8 111
a=rtpmap:8 PCMA/8000
a=rtpmap:111 opus/48000/2
SDP
$DTMF and $sdp .= "a=rtpmap:96 telephone-event/8000\n";
if ($$A{want_rtcpmux} && $op eq 'offer') {
$sdp .= "a=rtcp-mux\n";
$sdp .= "a=rtcp:$cp\n";

Loading…
Cancel
Save