msc: add and fix Iu mt call
Change-Id: I3ce29f3d9254656dc295674e8cec72a741b7764a
This commit is contained in:
parent
0b16bf1fcb
commit
8fe8a90da2
|
@ -905,21 +905,89 @@ runs on BSC_ConnHdlr {
|
|||
|
||||
}
|
||||
} else {
|
||||
var template TransportLayerAddress rab_tla := ? /* FIXME: encode the mgw_rtp_ip/mgw_rtp_port */
|
||||
var template RAB_SetupOrModifyList rab_sml := tr_RAB_SML(rab_id := ?, tla := rab_tla, binding_id := ?);
|
||||
|
||||
interleave {
|
||||
[] MGCP.receive(tr_CRCX(cpars.mgcp_ep)) -> value mgcp_cmd {
|
||||
var SDP_Message sdp := valueof(ts_SDP_CRCX_CN(cpars));
|
||||
MGCP.send(ts_CRCX_ACK(mgcp_cmd.line.trans_id, cpars.mgw_conn_2.mgcp_connection_id, sdp));
|
||||
/* MSC acknowledges the MNCC_CREATE to the MNCC handler */
|
||||
MNCC.receive(tr_MNCC_RTP_CREATE(cpars.mncc_callref));
|
||||
log("f_mt_call_complete 4.iu");
|
||||
if (not f_handle_crcx(cpars, mgcp_cmd)) {
|
||||
break;
|
||||
}
|
||||
[] BSSAP.receive(tr_RANAP_RabAssReq(rab_sml)) {
|
||||
//BSSAP.send(ts_RANAP_RabAssResp(rab_sml)); FIXME
|
||||
}
|
||||
|
||||
/* FIXME: same MNCC and MGCP as in 2G above */
|
||||
/* MSC acknowledges the MNCC_CREATE to the MNCC handler */
|
||||
[] MNCC.receive(tr_MNCC_RTP_CREATE(cpars.mncc_callref)) {
|
||||
log("f_mt_call_complete 5.iu");
|
||||
}
|
||||
|
||||
[] BSSAP.receive(tr_RANAP_RabAssReq(?)) {
|
||||
log("f_mt_call_complete 6.iu");
|
||||
var RAB_SetupOrModifiedList l := {
|
||||
{
|
||||
{
|
||||
id := id_RAB_SetupOrModifiedItem,
|
||||
criticality := ignore,
|
||||
value_ := {
|
||||
rAB_SetupOrModifiedItem := {
|
||||
rAB_ID := int2bit(23, 8),
|
||||
transportLayerAddress := hex2bit( '350001c0a8021500000000000000000000000000'H),
|
||||
iuTransportAssociation := {
|
||||
bindingID := '040c0000'O
|
||||
},
|
||||
dl_dataVolumes := omit,
|
||||
iE_Extensions := omit
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
BSSAP.send(ts_RANAP_RabAssResp(l));
|
||||
|
||||
BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_CONNECT(cpars.transaction_id)));
|
||||
}
|
||||
|
||||
[] MNCC.receive(tr_MNCC_SETUP_cnf(cpars.mncc_callref)) {
|
||||
log("f_mt_call_complete 7.iu");
|
||||
MNCC.send(ts_MNCC_RTP_CONNECT(cpars.mncc_callref,
|
||||
/* ip 42.23.11.5 */ hex2int('42231105'H),
|
||||
/* port 423 */ 423,
|
||||
/* payload type 3 = GSM FR */ 3));
|
||||
}
|
||||
|
||||
/* MDCX setting up the RAN side remote RTP address received from Assignment Complete */
|
||||
[] MGCP.receive(tr_MDCX) -> value mgcp_cmd {
|
||||
log("f_mt_call_complete 8.iu");
|
||||
var SDP_Message sdp := valueof(ts_SDP(cpars.mgw_conn_2.mgw_rtp_ip, cpars.mgw_conn_2.mgw_rtp_ip,
|
||||
hex2str(cpars.mgcp_call_id), "42",
|
||||
cpars.mgw_conn_2.mgw_rtp_port,
|
||||
{ int2str(cpars.rtp_payload_type) },
|
||||
{ valueof(ts_SDP_rtpmap(cpars.rtp_payload_type,
|
||||
cpars.rtp_sdp_format)),
|
||||
valueof(ts_SDP_ptime(20)) }));
|
||||
if (cpars.use_osmux) {
|
||||
osmux_cid := f_MgcpCmd_extract_osmux_cid(mgcp_cmd);
|
||||
if (osmux_cid != 0) { /* we expect MSC to use specific CID here */
|
||||
setverdict(fail, "MSC using unexpected CID " & int2str(osmux_cid) & " != 0");
|
||||
mtc.stop;
|
||||
}
|
||||
mgcp_resp := ts_MDCX_ACK_osmux(mgcp_cmd.line.trans_id, cpars.mgw_conn_1.mgcp_connection_id, osmux_cid, sdp);
|
||||
} else {
|
||||
mgcp_resp := ts_MDCX_ACK(mgcp_cmd.line.trans_id, cpars.mgw_conn_2.mgcp_connection_id, sdp);
|
||||
}
|
||||
MGCP.send(mgcp_resp);
|
||||
}
|
||||
|
||||
/* MDCX setting up the CN side remote RTP address received from MNCC CONNECT */
|
||||
[] MGCP.receive(tr_MDCX) -> value mgcp_cmd {
|
||||
log("f_mt_call_complete 9.iu");
|
||||
var SDP_Message sdp := valueof(ts_SDP(cpars.mgw_conn_2.mgw_rtp_ip, cpars.mgw_conn_2.mgw_rtp_ip,
|
||||
hex2str(cpars.mgcp_call_id), "42",
|
||||
cpars.mgw_conn_2.mgw_rtp_port,
|
||||
{ int2str(cpars.rtp_payload_type) },
|
||||
{ valueof(ts_SDP_rtpmap(cpars.rtp_payload_type,
|
||||
cpars.rtp_sdp_format)),
|
||||
valueof(ts_SDP_ptime(20)) }));
|
||||
MGCP.send(ts_MDCX_ACK(mgcp_cmd.line.trans_id, cpars.mgw_conn_2.mgcp_connection_id, sdp));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1658,7 +1658,7 @@ testcase TC_lu_imsi_auth_tmsi_encr_013_2() runs on MTC_CT {
|
|||
}
|
||||
|
||||
/* LU followed by MT call (including paging) */
|
||||
private function f_tc_lu_and_mt_call(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
|
||||
friend function f_tc_lu_and_mt_call(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
|
||||
f_init_handler(pars);
|
||||
var CallParameters cpars := valueof(t_CallParams('12345'H, 0));
|
||||
cpars.use_osmux := pars.use_osmux;
|
||||
|
|
|
@ -249,6 +249,13 @@ testcase TC_iu_mo_release_timeout() runs on MTC_CT {
|
|||
vc_conn.done;
|
||||
}
|
||||
|
||||
testcase TC_iu_lu_and_mt_call() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
f_init(3);
|
||||
vc_conn := f_start_handler(refers(f_tc_lu_and_mt_call), 1142, ran_idx := 2, ran_is_geran := false);
|
||||
vc_conn.done;
|
||||
}
|
||||
|
||||
testcase TC_iu_lu_and_mo_sms() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
f_init(3);
|
||||
|
@ -438,6 +445,8 @@ control {
|
|||
execute( TC_iu_mo_release_timeout() );
|
||||
execute( TC_reset_two_1iu() );
|
||||
|
||||
execute( TC_iu_lu_and_mt_call() );
|
||||
|
||||
execute( TC_iu_lu_and_mo_sms() );
|
||||
execute( TC_iu_lu_and_mt_sms() );
|
||||
execute( TC_iu_lu_and_mt_sms_paging_and_nothing() );
|
||||
|
|
Loading…
Reference in New Issue