msc: Rewrite TC_lu_and_mo_call() to be more modular
All relevant parameters are passed in in form of a CallParameters
record, and the bulk of the work has been moved to
BSC_ConnectionHandler.
Change-Id: I932c6c9f7a48b6a1f1ec399e8bba6a413c8bc69e
diff --git a/library/MGCP_Templates.ttcn b/library/MGCP_Templates.ttcn
index c0c827f..182868e 100644
--- a/library/MGCP_Templates.ttcn
+++ b/library/MGCP_Templates.ttcn
@@ -137,8 +137,8 @@
return cmd;
}
- template MgcpCommand tr_DLCX := {
- line := t_MgcpCmdLine("DLCX", ?, ?),
+ template MgcpCommand tr_DLCX(template MgcpEndpoint ep := ?) := {
+ line := t_MgcpCmdLine("DLCX", ?, ep),
params := *,
sdp := *
}
@@ -153,6 +153,18 @@
sdp := *
}
+ template MgcpResponse ts_DLCX_ACK2(MgcpTransId trans_id) := {
+ line := {
+ code := "250",
+ trans_id := trans_id,
+ string := "OK"
+ },
+ params:= { /* list of ConnectionIDs */ },
+ sdp := omit
+ }
+
+
+
template MgcpResponse ts_DLCX_ACK(MgcpTransId trans_id, MgcpConnectionId conn_id, template SDP_Message sdp := omit) := ts_CRCX_ACK(trans_id, conn_id, sdp);
template MgcpCommand tr_RSIP := {
@@ -244,16 +256,35 @@
}
}
- function f_MgcpResp_extract_conn_id(MgcpResponse resp) return MgcpConnectionId {
- var integer i;
- for (i := 0; i < lengthof(resp.params); i := i + 1) {
- var MgcpParameter par := resp.params[i];
- if (par.code == "I") {
- return str2hex(par.val);
+ function f_mgcp_extract_par(MgcpMessage msg, MgcpInfoCode code) return charstring {
+ var MgcpParameterList pars;
+ if (ischosen(msg.command)) {
+ pars := msg.command.params;
+ } else {
+ pars := msg.response.params;
+ }
+ for (var integer i := 0; i < lengthof(pars); i := i + 1) {
+ var MgcpParameter par := pars[i];
+ if (par.code == code) {
+ return par.val;
}
}
setverdict(fail);
- return '00000000'H;
+ return "";
+ }
+
+ function f_MgcpResp_extract_conn_id(MgcpResponse resp) return MgcpConnectionId {
+ var MgcpMessage msg := {
+ response := resp
+ }
+ return str2hex(f_mgcp_extract_par(msg, "I"));
+ }
+
+ function f_MgcpCmd_extract_call_id(MgcpCommand cmd) return MgcpCallId {
+ var MgcpMessage msg := {
+ command := cmd
+ }
+ return str2hex(f_mgcp_extract_par(msg, "C"));
}
function f_mgcp_alloc_tid() return MgcpTransId {
@@ -282,4 +313,5 @@
sdp := *
}
+
}