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/L3_Templates.ttcn b/library/L3_Templates.ttcn
index 5816ab9..549997e 100644
--- a/library/L3_Templates.ttcn
+++ b/library/L3_Templates.ttcn
@@ -632,6 +632,30 @@
}
}
+template (value) PDU_ML3_MS_NW ts_ML3_MO_CC_REL_COMPL(integer tid) := {
+ discriminator := '0011'B,
+ tiOrSkip := {
+ transactionId := {
+ tio := int2bit(tid, 3),
+ tiFlag := '0'B,
+ tIExtension := omit
+ }
+ },
+ msgs := {
+ cc := {
+ releaseComplete_MS_NW := {
+ messageType := '101010'B,
+ nsd := '00'B,
+ cause := omit,
+ facility := omit,
+ user_user := omit,
+ ss_VersionIndicator := omit
+ }
+ }
+ }
+}
+
+
template PDU_ML3_NW_MS tr_ML3_MT_MM_AUTH_REQ(template OCT16 rand := ?) := {
discriminator := '0101'B,
tiOrSkip := {
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 := *
}
+
}