msc: new test: TC_lu_and_mo_csd
Related: OS#4394
Depends: https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.MobileL3_v13.4.0/-/merge_requests/3
Change-Id: Ia863a63a318a9b0a8b4bfc1dc425cbc0235256b3
diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn
index 4351e06..3d7dc07 100644
--- a/msc/BSC_ConnectionHandler.ttcn
+++ b/msc/BSC_ConnectionHandler.ttcn
@@ -375,7 +375,8 @@
EST_TYPE_EMERG_CALL,
EST_TYPE_PAG_RESP,
EST_TYPE_MO_SMS,
- EST_TYPE_SS_ACT
+ EST_TYPE_SS_ACT,
+ EST_TYPE_MO_CSD
};
/* helper function to fully establish a dedicated channel */
@@ -395,6 +396,9 @@
case (EST_TYPE_MO_CALL) {
l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, mi));
}
+ case (EST_TYPE_MO_CSD) {
+ l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, mi));
+ }
case (EST_TYPE_EMERG_CALL) {
l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_EMERG_CALL, mi));
}
@@ -951,6 +955,7 @@
important to set the TI flag properly */
BearerCapability_TLV bearer_cap, /* which bearer capabilities to claim */
boolean emergency, /* is this an emergency call? */
+ boolean csd, /* is this a circuit switched data call? */
/* MNCC related parameters */
uint32_t mncc_callref optional, /* call reference on the MNCC side */
@@ -1538,6 +1543,8 @@
if (cpars.emergency) {
f_establish_fully(EST_TYPE_EMERG_CALL);
+ } else if (cpars.csd) {
+ f_establish_fully(EST_TYPE_MO_CSD);
} else {
f_establish_fully(EST_TYPE_MO_CALL);
}
@@ -1548,6 +1555,8 @@
if (cpars.emergency) {
BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_EMERG_SETUP(cpars.transaction_id)));
+ } if (cpars.csd) {
+ BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_SETUP(cpars.transaction_id, cpars.called_party, ts_Bcap_csd)));
} else {
BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_SETUP(cpars.transaction_id, cpars.called_party)));
}
diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn
index 666c6c1..9650b3e 100644
--- a/msc/MSC_Tests.ttcn
+++ b/msc/MSC_Tests.ttcn
@@ -7187,6 +7187,21 @@
f_TC_auth_options(11);
}
+friend function f_tc_lu_and_mo_csd(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
+ f_init_handler(pars);
+ var CallParameters cpars := valueof(t_CallParams);
+ cpars.csd := true;
+ f_perform_lu();
+ f_mo_call(cpars);
+}
+testcase TC_lu_and_mo_csd() runs on MTC_CT {
+ var BSC_ConnHdlr vc_conn;
+ f_init();
+
+ vc_conn := f_start_handler(refers(f_tc_lu_and_mo_csd), 7);
+ vc_conn.done;
+}
+
control {
execute( TC_cr_before_reset() );
execute( TC_lu_imsi_noauth_tmsi() );
@@ -7364,6 +7379,8 @@
execute( TC_auth_options_9() );
execute( TC_auth_options_10() );
execute( TC_auth_options_11() );
+
+ execute( TC_lu_and_mo_csd() );
}