msc: new test: TC_lu_and_mt_csd

Related: OS#4394
Change-Id: Ie1701546e3dc18a5b0da4608b44a580237c979a6
This commit is contained in:
Oliver Smith 2023-05-31 13:52:24 +02:00 committed by osmith
parent 92b280c8a6
commit c1dd36a71b
3 changed files with 48 additions and 3 deletions

View File

@ -192,6 +192,27 @@ template MNCC_bearer_cap ts_MNCC_bcap_voice := {
data := omit
};
template MNCC_bearer_cap ts_MNCC_bcap_data := {
transfer := 1, /* unrestricted digital information */
mode := 0, /* circuit */
coding := 0, /* GSM standard */
radio := 3, /* FR/HR, FR preferred */
speech_ctm := 0, /* not supported */
speech_ver := { -1 },
data := {
rate_adaptation := GSM48_BCAP_RA_V110_X30,
sig_access := GSM48_BCAP_SA_NONE,
async := 1,
nr_stop_bits := 1,
nr_data_bits := 1,
user_rate := GSM48_BCAP_UR_4800,
parity := GSM48_BCAP_PAR_ODD,
interm_rate := GSM48_BCAP_IR_8k,
transp := GSM48_BCAP_TR_TRANSP,
modem_type := GSM48_BCAP_MT_V21
}
};
type record MNCC_number {
GSM48_type_of_number number_type,
GSM48_num_plan_ind plan,
@ -514,12 +535,13 @@ template MNCC_PDU tr_MNCC_SIMPLE(template MNCC_MsgType msg_type, template uint32
/* MT: MSC <- MNCC: SETUP.req from ext. MNCC handler to MSC */
template MNCC_PDU ts_MNCC_SETUP_req(uint32_t call_id, charstring called, charstring calling, charstring imsi := "") := {
template MNCC_PDU ts_MNCC_SETUP_req(uint32_t call_id, charstring called, charstring calling, charstring imsi := "",
template MNCC_bearer_cap bcap := ts_MNCC_bcap_voice) := {
msg_type := MNCC_SETUP_REQ,
u := {
signal := { /* See 24.008 9.3.23.1 */
callref := call_id,
bearer_cap := ts_MNCC_bcap_voice, /* mandatory */
bearer_cap := valueof(bcap), /* mandatory */
called := valueof(ts_MNCC_number(called)), /* optional */
calling := valueof(ts_MNCC_number(calling)), /* optional */
redirecting := omit, /* optional */

View File

@ -1057,10 +1057,17 @@ template CallParameters tr_CallParams := {
/* Allocate a call reference and send SETUP via MNCC to MSC */
function f_mt_call_initiate(inout CallParameters cpars)
runs on BSC_ConnHdlr {
var template MNCC_bearer_cap bcap := ts_MNCC_bcap_voice;
if (cpars.csd) {
bcap := ts_MNCC_bcap_data;
}
cpars.mo_call := false;
cpars.mncc_callref := f_rnd_int(2147483648);
MNCC.send(ts_MNCC_SETUP_req(cpars.mncc_callref, hex2str(g_pars.msisdn),
hex2str(cpars.called_party), hex2str(g_pars.imsi)));
hex2str(cpars.called_party), hex2str(g_pars.imsi), bcap));
}
private template (value) SDP_Message ts_SDP_CRCX_CN(CallParameters cpars) :=

View File

@ -7202,6 +7202,21 @@ testcase TC_lu_and_mo_csd() runs on MTC_CT {
vc_conn.done;
}
friend function f_tc_lu_and_mt_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_mt_call(cpars);
}
testcase TC_lu_and_mt_csd() runs on MTC_CT {
var BSC_ConnHdlr vc_conn;
f_init();
vc_conn := f_start_handler(refers(f_tc_lu_and_mt_csd), 7);
vc_conn.done;
}
control {
execute( TC_cr_before_reset() );
execute( TC_lu_imsi_noauth_tmsi() );
@ -7381,6 +7396,7 @@ control {
execute( TC_auth_options_11() );
execute( TC_lu_and_mo_csd() );
execute( TC_lu_and_mt_csd() );
}