<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>