osmith has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33355 )
Change subject: msc: new test: TC_lu_and_mt_csd ......................................................................
msc: new test: TC_lu_and_mt_csd
Related: OS#4394 Change-Id: Ie1701546e3dc18a5b0da4608b44a580237c979a6 --- M library/MNCC_Types.ttcn M msc/BSC_ConnectionHandler.ttcn M msc/MSC_Tests.ttcn 3 files changed, 58 insertions(+), 3 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/55/33355/1
diff --git a/library/MNCC_Types.ttcn b/library/MNCC_Types.ttcn index 1de34a0..74b9ca9 100644 --- a/library/MNCC_Types.ttcn +++ b/library/MNCC_Types.ttcn @@ -192,6 +192,27 @@ 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 @@
/* 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 */ diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index 3d7dc07..039a97d 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -1057,10 +1057,17 @@ /* 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) := diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index 9650b3e..22b308e 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -7202,6 +7202,21 @@ 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 @@ execute( TC_auth_options_11() );
execute( TC_lu_and_mo_csd() ); + execute( TC_lu_and_mt_csd() ); }