<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15940">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">msc: add and fix Iu mt call<br><br>Change-Id: I3ce29f3d9254656dc295674e8cec72a741b7764a<br>---<br>M msc/BSC_ConnectionHandler.ttcn<br>M msc/MSC_Tests.ttcn<br>M msc/MSC_Tests_Iu.ttcn<br>3 files changed, 88 insertions(+), 11 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn</span><br><span>index 7bbae34..11f0a5f 100644</span><br><span>--- a/msc/BSC_ConnectionHandler.ttcn</span><br><span>+++ b/msc/BSC_ConnectionHandler.ttcn</span><br><span>@@ -905,21 +905,89 @@</span><br><span> </span><br><span>              }</span><br><span>    } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                var template TransportLayerAddress rab_tla := ? /* FIXME: encode the mgw_rtp_ip/mgw_rtp_port */</span><br><span style="color: hsl(0, 100%, 40%);">-         var template RAB_SetupOrModifyList rab_sml := tr_RAB_SML(rab_id := ?, tla := rab_tla, binding_id := ?);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>              interleave {</span><br><span>                 [] MGCP.receive(tr_CRCX(cpars.mgcp_ep)) -> value mgcp_cmd {</span><br><span style="color: hsl(0, 100%, 40%);">-                  var SDP_Message sdp := valueof(ts_SDP_CRCX_CN(cpars));</span><br><span style="color: hsl(0, 100%, 40%);">-                  MGCP.send(ts_CRCX_ACK(mgcp_cmd.line.trans_id, cpars.mgw_conn_2.mgcp_connection_id, sdp));</span><br><span style="color: hsl(0, 100%, 40%);">-                       /* MSC acknowledges the MNCC_CREATE to the MNCC handler */</span><br><span style="color: hsl(0, 100%, 40%);">-                      MNCC.receive(tr_MNCC_RTP_CREATE(cpars.mncc_callref));</span><br><span style="color: hsl(120, 100%, 40%);">+                 log("f_mt_call_complete 4.iu");</span><br><span style="color: hsl(120, 100%, 40%);">+                     if (not f_handle_crcx(cpars, mgcp_cmd)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                             break;</span><br><span>                       }</span><br><span style="color: hsl(0, 100%, 40%);">-               [] BSSAP.receive(tr_RANAP_RabAssReq(rab_sml)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                 //BSSAP.send(ts_RANAP_RabAssResp(rab_sml)); FIXME</span><br><span>                    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           /* FIXME: same MNCC and MGCP as in 2G above */</span><br><span style="color: hsl(120, 100%, 40%);">+                /* MSC acknowledges the MNCC_CREATE to the MNCC handler */</span><br><span style="color: hsl(120, 100%, 40%);">+            [] MNCC.receive(tr_MNCC_RTP_CREATE(cpars.mncc_callref)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     log("f_mt_call_complete 5.iu");</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           [] BSSAP.receive(tr_RANAP_RabAssReq(?)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     log("f_mt_call_complete 6.iu");</span><br><span style="color: hsl(120, 100%, 40%);">+                     var RAB_SetupOrModifiedList l := {</span><br><span style="color: hsl(120, 100%, 40%);">+                            {</span><br><span style="color: hsl(120, 100%, 40%);">+                                     {</span><br><span style="color: hsl(120, 100%, 40%);">+                                             id := id_RAB_SetupOrModifiedItem,</span><br><span style="color: hsl(120, 100%, 40%);">+                                             criticality := ignore,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                value_ := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                             rAB_SetupOrModifiedItem := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                        rAB_ID := int2bit(23, 8),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     transportLayerAddress := hex2bit( '350001c0a8021500000000000000000000000000'H),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                       iuTransportAssociation := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                           bindingID := '040c0000'O</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      },</span><br><span style="color: hsl(120, 100%, 40%);">+                                                    dl_dataVolumes := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                       iE_Extensions := omit</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 }</span><br><span style="color: hsl(120, 100%, 40%);">+                                             }</span><br><span style="color: hsl(120, 100%, 40%);">+                                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                             }</span><br><span style="color: hsl(120, 100%, 40%);">+                     };</span><br><span style="color: hsl(120, 100%, 40%);">+                    BSSAP.send(ts_RANAP_RabAssResp(l));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                 BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_CONNECT(cpars.transaction_id)));</span><br><span style="color: hsl(120, 100%, 40%);">+                       }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           [] MNCC.receive(tr_MNCC_SETUP_cnf(cpars.mncc_callref)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      log("f_mt_call_complete 7.iu");</span><br><span style="color: hsl(120, 100%, 40%);">+                     MNCC.send(ts_MNCC_RTP_CONNECT(cpars.mncc_callref,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                   /* ip 42.23.11.5 */ hex2int('42231105'H),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     /* port 423 */ 423,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                   /* payload type 3 = GSM FR */ 3));</span><br><span style="color: hsl(120, 100%, 40%);">+                      }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* MDCX setting up the RAN side remote RTP address received from Assignment Complete */</span><br><span style="color: hsl(120, 100%, 40%);">+               [] MGCP.receive(tr_MDCX) -> value mgcp_cmd {</span><br><span style="color: hsl(120, 100%, 40%);">+                       log("f_mt_call_complete 8.iu");</span><br><span style="color: hsl(120, 100%, 40%);">+                     var SDP_Message sdp := valueof(ts_SDP(cpars.mgw_conn_2.mgw_rtp_ip, cpars.mgw_conn_2.mgw_rtp_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                               hex2str(cpars.mgcp_call_id), "42",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                          cpars.mgw_conn_2.mgw_rtp_port,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                { int2str(cpars.rtp_payload_type) },</span><br><span style="color: hsl(120, 100%, 40%);">+                                                          { valueof(ts_SDP_rtpmap(cpars.rtp_payload_type,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                                       cpars.rtp_sdp_format)),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                                       valueof(ts_SDP_ptime(20)) }));</span><br><span style="color: hsl(120, 100%, 40%);">+                        if (cpars.use_osmux) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                osmux_cid := f_MgcpCmd_extract_osmux_cid(mgcp_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+                           if (osmux_cid != 0) { /* we expect MSC to use specific CID here */</span><br><span style="color: hsl(120, 100%, 40%);">+                                    setverdict(fail, "MSC using unexpected CID " & int2str(osmux_cid) & " != 0");</span><br><span style="color: hsl(120, 100%, 40%);">+                                     mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                             }</span><br><span style="color: hsl(120, 100%, 40%);">+                             mgcp_resp := ts_MDCX_ACK_osmux(mgcp_cmd.line.trans_id, cpars.mgw_conn_1.mgcp_connection_id, osmux_cid, sdp);</span><br><span style="color: hsl(120, 100%, 40%);">+                  } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                              mgcp_resp := ts_MDCX_ACK(mgcp_cmd.line.trans_id, cpars.mgw_conn_2.mgcp_connection_id, sdp);</span><br><span style="color: hsl(120, 100%, 40%);">+                   }</span><br><span style="color: hsl(120, 100%, 40%);">+                     MGCP.send(mgcp_resp);</span><br><span style="color: hsl(120, 100%, 40%);">+                 }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* MDCX setting up the CN side remote RTP address received from MNCC CONNECT */</span><br><span style="color: hsl(120, 100%, 40%);">+               [] MGCP.receive(tr_MDCX) -> value mgcp_cmd {</span><br><span style="color: hsl(120, 100%, 40%);">+                       log("f_mt_call_complete 9.iu");</span><br><span style="color: hsl(120, 100%, 40%);">+                     var SDP_Message sdp := valueof(ts_SDP(cpars.mgw_conn_2.mgw_rtp_ip, cpars.mgw_conn_2.mgw_rtp_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                               hex2str(cpars.mgcp_call_id), "42",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                          cpars.mgw_conn_2.mgw_rtp_port,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                { int2str(cpars.rtp_payload_type) },</span><br><span style="color: hsl(120, 100%, 40%);">+                                                          { valueof(ts_SDP_rtpmap(cpars.rtp_payload_type,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                                       cpars.rtp_sdp_format)),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                 valueof(ts_SDP_ptime(20)) }));</span><br><span style="color: hsl(120, 100%, 40%);">+                      MGCP.send(ts_MDCX_ACK(mgcp_cmd.line.trans_id, cpars.mgw_conn_2.mgcp_connection_id, sdp));</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>          }</span><br><span>    }</span><br><span> </span><br><span>diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn</span><br><span>index b4db43d..4ef592f 100644</span><br><span>--- a/msc/MSC_Tests.ttcn</span><br><span>+++ b/msc/MSC_Tests.ttcn</span><br><span>@@ -1658,7 +1658,7 @@</span><br><span> }</span><br><span> </span><br><span> /* LU followed by MT call (including paging) */</span><br><span style="color: hsl(0, 100%, 40%);">-private function f_tc_lu_and_mt_call(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+friend function f_tc_lu_and_mt_call(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {</span><br><span>    f_init_handler(pars);</span><br><span>        var CallParameters cpars := valueof(t_CallParams('12345'H, 0));</span><br><span>      cpars.use_osmux := pars.use_osmux;</span><br><span>diff --git a/msc/MSC_Tests_Iu.ttcn b/msc/MSC_Tests_Iu.ttcn</span><br><span>index 628fbcd..987baf0 100644</span><br><span>--- a/msc/MSC_Tests_Iu.ttcn</span><br><span>+++ b/msc/MSC_Tests_Iu.ttcn</span><br><span>@@ -249,6 +249,13 @@</span><br><span>   vc_conn.done;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_iu_lu_and_mt_call() runs on MTC_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+      var BSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+     f_init(3);</span><br><span style="color: hsl(120, 100%, 40%);">+    vc_conn := f_start_handler(refers(f_tc_lu_and_mt_call), 1142, ran_idx := 2, ran_is_geran := false);</span><br><span style="color: hsl(120, 100%, 40%);">+   vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> testcase TC_iu_lu_and_mo_sms() runs on MTC_CT {</span><br><span>        var BSC_ConnHdlr vc_conn;</span><br><span>    f_init(3);</span><br><span>@@ -438,6 +445,8 @@</span><br><span>     execute( TC_iu_mo_release_timeout() );</span><br><span>       execute( TC_reset_two_1iu() );</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    execute( TC_iu_lu_and_mt_call() );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         execute( TC_iu_lu_and_mo_sms() );</span><br><span>    execute( TC_iu_lu_and_mt_sms() );</span><br><span>    execute( TC_iu_lu_and_mt_sms_paging_and_nothing() );</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15940">change 15940</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15940"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I3ce29f3d9254656dc295674e8cec72a741b7764a </div>
<div style="display:none"> Gerrit-Change-Number: 15940 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>