asterisk: Implement AMI Action DedicatedBearerStatus

Related: SYS#6879
Change-Id: I49c216f8874fe63480414096d9c03a1af00a0fc2
diff --git a/asterisk/IMS_ConnectionHandler.ttcn b/asterisk/IMS_ConnectionHandler.ttcn
index dd3223c..7a9f11f 100644
--- a/asterisk/IMS_ConnectionHandler.ttcn
+++ b/asterisk/IMS_ConnectionHandler.ttcn
@@ -47,6 +47,8 @@
 const charstring IMS_COORD_CMD_START := "IMS_COORD_CMD_START";
 const charstring IMS_COORD_CMD_CALL_ESTABLISHED := "IMS_COORD_CMD_CALL_ESTABLISHED";
 const charstring IMS_COORD_CMD_HANGUP := "IMS_COORD_CMD_HANGUP";
+const charstring IMS_COORD_CMD_CALL_TRYING := "IMS_COORD_CMD_CALL_TRYING";
+const charstring IMS_COORD_CMD_CALL_SESSION_PROGRESS := "IMS_COORD_CMD_CALL_SESSION_PROGRESS";
 
 type component IMS_ConnHdlr extends SIP_ConnHdlr {
 	var charstring g_name;
@@ -113,15 +115,20 @@
 }
 type record of IMS_ConnHdlrPars IMS_ConnHdlrParsList;
 
+type record IMS_CallParsMO {
+	/* Whether to COORD.send(IMS_COORD_CMD_CALL_TRYING) when receiving an INVITE from UE. */
+	boolean tx_coord_cmd_invite_trying
+}
+template (value) IMS_CallParsMO t_IMS_CallParsMO := {
+	tx_coord_cmd_invite_trying := false
+}
+
 type record IMS_CallParsMT {
-	/* Whether to wait for COORD.receive(COORD_CMD_PICKUP) before accepting the call. */
-	boolean wait_coord_cmd_pickup,
-	/* Whether to expect CANCEL instead of ACK as answer to our OK */
-	boolean exp_cancel
+	/* Whether to COORD.send(IMS_COORD_CMD_CALL_SESSION_PROGRESS) when receiving an 183 Session Progress from UE. */
+	boolean tx_coord_cmd_session_progress
 }
 template (value) IMS_CallParsMT t_IMS_CallParsMT := {
-	wait_coord_cmd_pickup := false,
-	exp_cancel := false
+	tx_coord_cmd_session_progress := false
 }
 
 type record IMS_CallPars {
@@ -141,6 +148,7 @@
 	boolean support_precondition_ext,
 	boolean require_precondition_ext,
 	SDP_Message peer_sdp optional,
+	IMS_CallParsMO mo,
 	IMS_CallParsMT mt
 }
 
@@ -160,6 +168,7 @@
 	support_precondition_ext := true,
 	require_precondition_ext := false,
 	peer_sdp := omit,
+	mo := t_IMS_CallParsMO,
 	mt := t_IMS_CallParsMT
 }
 
@@ -1043,6 +1052,11 @@
 				    body := omit);
 		SIP.send(req);
 
+		if (g_pars.subscr.cp.mt.tx_coord_cmd_session_progress) {
+			/* Signal used to inform that Dedicated bearer can be established: */
+			COORD.send(IMS_COORD_CMD_CALL_SESSION_PROGRESS);
+		}
+
 		/* Rx 200 OK (PRACK) */
 		exp := tr_SIP_Response(g_pars.subscr.cp.sip_call_id,
 				       from_addr_exp,
@@ -1213,6 +1227,11 @@
 						   userAgent := omit);
 		SIP.send(tx_resp);
 
+		if (g_pars.subscr.cp.mo.tx_coord_cmd_invite_trying) {
+			/* Signal used to inform that Dedicated bearer can be established: */
+			COORD.send(IMS_COORD_CMD_CALL_TRYING);
+		}
+
 		tx_sdp := f_gen_sdp();
 
 		/* Use precondition ? */