diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index 62eddf371..73368a2ba 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -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)); diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index 6ec08bb3e..503f98b10 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -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});