diff --git a/library/MGCP_Templates.ttcn b/library/MGCP_Templates.ttcn index 917ef8920..2fd9b18ea 100644 --- a/library/MGCP_Templates.ttcn +++ b/library/MGCP_Templates.ttcn @@ -113,10 +113,10 @@ module MGCP_Templates { sdp := sdp } - template MgcpCommand tr_CRCX(template MgcpEndpoint ep := ?) := { + template MgcpCommand tr_CRCX(template MgcpEndpoint ep := ?, template SDP_Message sdp := *) := { line := t_MgcpCmdLine("CRCX", ?, ep), params := *, - sdp := * + sdp := sdp } template MgcpResponse tr_CRCX_ACK := { @@ -187,10 +187,10 @@ module MGCP_Templates { sdp := sdp } - template MgcpCommand tr_MDCX := { + template MgcpCommand tr_MDCX(template SDP_Message sdp := *) := { line := t_MgcpCmdLine("MDCX", ?, ?), params := *, - sdp := * + sdp := sdp } template MgcpResponse tr_MDCX_ACK := { @@ -284,6 +284,18 @@ module MGCP_Templates { } } + template SDP_connection tr_SDP_connection_IP(template charstring addr, template charstring addr_type := ?, + template integer ttl := *, + template integer num_of_addr := *) := { + net_type := "IN", + addr_type := addr_type, + conn_addr := { + addr := addr, + ttl := ttl, + num_of_addr := num_of_addr + } + } + template SDP_time ts_SDP_time(charstring beg, charstring end) := { time_field := { start_time := beg, @@ -310,6 +322,25 @@ module MGCP_Templates { attributes := attributes } + template SDP_media_desc tr_SDP_media_desc(template integer port_number := ?, + template SDP_fmt_list fmts := ?, + template SDP_attribute_list attributes := ?) := { + media_field := { + media := "audio", + ports := { + port_number := port_number, + num_of_ports := omit + }, + transport := "RTP/AVP", + fmts := fmts + }, + information := *, + connections := *, + bandwidth := *, + key := *, + attributes := attributes + } + /* master template for generating SDP based in template arguments */ template SDP_Message ts_SDP(charstring local_addr, charstring remote_addr, charstring session_id, charstring session_version, @@ -331,6 +362,23 @@ module MGCP_Templates { media_list := { ts_SDP_media_desc(rtp_port, fmts, attributes) } } + template SDP_Message tr_SDP(template charstring remote_addr := ?, template integer rtp_port := ?) := { + protocol_version := 0, + origin := ?, + session_name := ?, + information := *, + uri := *, + emails := *, + phone_numbers := *, + connection := tr_SDP_connection_IP(remote_addr, ?), + bandwidth := *, + times := ?, + timezone_adjustments := *, + key := *, + attributes := *, + media_list := { tr_SDP_media_desc(rtp_port) } + } + template SDP_attribute ts_SDP_rtpmap(integer fmt, charstring val) := { rtpmap := { attr_value := int2str(fmt) & " " & val