msc: generate mobile identity inside f_establish_fully()
This reduces the code duplication in every caller of the function. Change-Id: Iaa071b131a8ff372d70677c8622d227f88e9ea53
This commit is contained in:
parent
51affb6e03
commit
b9e86fa815
|
@ -190,9 +190,18 @@ type enumerated EstablishType {
|
|||
};
|
||||
|
||||
/* helper function to fully establish a dedicated channel */
|
||||
function f_establish_fully(MobileIdentityLV mi, EstablishType etype := EST_TYPE_MO_CALL)
|
||||
function f_establish_fully(EstablishType etype := EST_TYPE_MO_CALL)
|
||||
runs on BSC_ConnHdlr {
|
||||
var PDU_ML3_MS_NW l3_info;
|
||||
var MobileIdentityLV mi;
|
||||
|
||||
/* If we have a TMSI, use TMSI instead of IMSI */
|
||||
if (ispresent(g_pars.tmsi)) {
|
||||
mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi));
|
||||
} else {
|
||||
mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
|
||||
}
|
||||
|
||||
select (etype) {
|
||||
case (EST_TYPE_MO_CALL) {
|
||||
l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, mi));
|
||||
|
@ -408,7 +417,6 @@ template (value) CallParameters t_CallParams(hexstring called, integer tid) := {
|
|||
function f_mt_call_establish(inout CallParameters cpars)
|
||||
runs on BSC_ConnHdlr {
|
||||
|
||||
var MobileIdentityLV mi;
|
||||
var MNCC_PDU mncc;
|
||||
var MgcpCommand mgcp_cmd;
|
||||
|
||||
|
@ -421,13 +429,7 @@ runs on BSC_ConnHdlr {
|
|||
/* BSC <- MSC: Expect paging. FIXME: By TMSI or not? */
|
||||
BSSAP.receive(tr_BSSMAP_Paging(g_pars.imsi));
|
||||
|
||||
/* If we have a TMSI, use TMSI instead of IMSI */
|
||||
if (ispresent(g_pars.tmsi)) {
|
||||
mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi));
|
||||
} else {
|
||||
mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
|
||||
}
|
||||
f_establish_fully(mi, EST_TYPE_PAG_RESP);
|
||||
f_establish_fully(EST_TYPE_PAG_RESP);
|
||||
|
||||
/* MS <- MSC: Expect CC SETUP */
|
||||
BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_SETUP(cpars.transaction_id, *, cpars.called_party)));
|
||||
|
@ -498,21 +500,14 @@ runs on BSC_ConnHdlr {
|
|||
function f_mo_call_establish(inout CallParameters cpars)
|
||||
runs on BSC_ConnHdlr {
|
||||
|
||||
var MobileIdentityLV mi;
|
||||
var MNCC_PDU mncc;
|
||||
var MgcpCommand mgcp_cmd;
|
||||
var boolean respond_to_dlcx;
|
||||
|
||||
/* If we have a TMSI, use TMSI instead of IMSI */
|
||||
if (ispresent(g_pars.tmsi)) {
|
||||
mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi));
|
||||
} else {
|
||||
mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
|
||||
}
|
||||
if (cpars.emergency) {
|
||||
f_establish_fully(mi, EST_TYPE_EMERG_CALL);
|
||||
f_establish_fully(EST_TYPE_EMERG_CALL);
|
||||
} else {
|
||||
f_establish_fully(mi, EST_TYPE_MO_CALL);
|
||||
f_establish_fully(EST_TYPE_MO_CALL);
|
||||
}
|
||||
|
||||
/* Create MNCC and MGCP expect */
|
||||
|
@ -664,18 +659,11 @@ function f_mo_seq_dtmf_dup(inout CallParameters cpars)
|
|||
runs on BSC_ConnHdlr {
|
||||
|
||||
timer T := 1.0;
|
||||
var MobileIdentityLV mi;
|
||||
var MNCC_PDU mncc;
|
||||
var MgcpCommand mgcp_cmd;
|
||||
var template PDU_ML3_MS_NW dtmf_dtap;
|
||||
|
||||
/* If we have a TMSI, use TMSI instead of IMSI */
|
||||
if (ispresent(g_pars.tmsi)) {
|
||||
mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi));
|
||||
} else {
|
||||
mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
|
||||
}
|
||||
f_establish_fully(mi);
|
||||
f_establish_fully();
|
||||
|
||||
/* Create MNCC and MGCP expect */
|
||||
f_create_mncc_expect(hex2str(cpars.called_party));
|
||||
|
|
|
@ -1137,7 +1137,7 @@ private function f_tc_establish_and_nothing(charstring id, BSC_ConnHdlrPars pars
|
|||
|
||||
f_perform_lu();
|
||||
|
||||
f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi)));
|
||||
f_establish_fully();
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_establish_and_nothing() runs on MTC_CT {
|
||||
|
@ -1156,7 +1156,7 @@ private function f_tc_mo_setup_and_nothing(charstring id, BSC_ConnHdlrPars pars)
|
|||
|
||||
f_perform_lu();
|
||||
|
||||
f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi)));
|
||||
f_establish_fully();
|
||||
f_create_mncc_expect(hex2str(cpars.called_party));
|
||||
f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
|
||||
|
||||
|
@ -1181,7 +1181,7 @@ private function f_tc_mo_crcx_ran_timeout(charstring id, BSC_ConnHdlrPars pars)
|
|||
|
||||
f_perform_lu();
|
||||
|
||||
f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi)));
|
||||
f_establish_fully();
|
||||
f_create_mncc_expect(hex2str(cpars.called_party));
|
||||
f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
|
||||
|
||||
|
@ -1220,7 +1220,7 @@ private function f_tc_mo_crcx_ran_reject(charstring id, BSC_ConnHdlrPars pars) r
|
|||
|
||||
f_perform_lu();
|
||||
|
||||
f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi)));
|
||||
f_establish_fully();
|
||||
f_create_mncc_expect(hex2str(cpars.called_party));
|
||||
f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
|
||||
|
||||
|
@ -1312,7 +1312,7 @@ private function f_mt_call_start(inout CallParameters cpars) runs on BSC_ConnHdl
|
|||
/* MSC->BSC: expect PAGING from MSC */
|
||||
BSSAP.receive(tr_BSSMAP_Paging(g_pars.imsi));
|
||||
/* MS -> MSC: PAGING RESPONSE */
|
||||
f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi)), EST_TYPE_PAG_RESP);
|
||||
f_establish_fully(EST_TYPE_PAG_RESP);
|
||||
|
||||
f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
|
||||
|
||||
|
@ -1737,7 +1737,7 @@ private function f_tc_mo_release_timeout(charstring id, BSC_ConnHdlrPars pars) r
|
|||
|
||||
f_perform_lu();
|
||||
|
||||
f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi)));
|
||||
f_establish_fully();
|
||||
f_create_mncc_expect(hex2str(cpars.called_party));
|
||||
f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
|
||||
|
||||
|
|
Loading…
Reference in New Issue