diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 9a85a1fb3..754f7b3c3 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -119,6 +119,18 @@ modulepar { }; } +private function f_gen_test_hdlr_pars() return TestHdlrParams { + + var TestHdlrParams pars := valueof(t_def_TestHdlrPars); + if (mp_bssap_cfg.transport == BSSAP_TRANSPORT_AoIP) { + pars.aoip := true; + } else { + pars.aoip := false; + } + + return pars; +} + private function f_shutdown_helper() runs on test_CT { all component.stop; setverdict(pass); @@ -1571,7 +1583,7 @@ private function f_tc_ciph_mode_a5(charstring id) runs on MSC_ConnHdlr { } testcase TC_ciph_mode_a5_0() runs on test_CT { var MSC_ConnHdlr vc_conn; - var TestHdlrParams pars := valueof(t_def_TestHdlrPars); + var TestHdlrParams pars := f_gen_test_hdlr_pars(); pars.encr := valueof(t_EncrParams('01'O, f_rnd_octstring(8))); f_init(1, true); @@ -1581,7 +1593,7 @@ testcase TC_ciph_mode_a5_0() runs on test_CT { } testcase TC_ciph_mode_a5_1() runs on test_CT { var MSC_ConnHdlr vc_conn; - var TestHdlrParams pars := valueof(t_def_TestHdlrPars); + var TestHdlrParams pars := f_gen_test_hdlr_pars(); pars.encr := valueof(t_EncrParams('02'O, f_rnd_octstring(8))); f_init(1, true); @@ -1591,7 +1603,7 @@ testcase TC_ciph_mode_a5_1() runs on test_CT { } testcase TC_ciph_mode_a5_3() runs on test_CT { var MSC_ConnHdlr vc_conn; - var TestHdlrParams pars := valueof(t_def_TestHdlrPars); + var TestHdlrParams pars := f_gen_test_hdlr_pars(); pars.encr := valueof(t_EncrParams('08'O, f_rnd_octstring(8))); f_init(1, true); @@ -1613,7 +1625,7 @@ private function f_tc_assignment_fr_a5(charstring id) runs on MSC_ConnHdlr { } testcase TC_assignment_fr_a5_0() runs on test_CT { var MSC_ConnHdlr vc_conn; - var TestHdlrParams pars := valueof(t_def_TestHdlrPars); + var TestHdlrParams pars := f_gen_test_hdlr_pars(); pars.encr := valueof(t_EncrParams('01'O, f_rnd_octstring(8))); f_init(1, true); @@ -1623,7 +1635,7 @@ testcase TC_assignment_fr_a5_0() runs on test_CT { } testcase TC_assignment_fr_a5_1() runs on test_CT { var MSC_ConnHdlr vc_conn; - var TestHdlrParams pars := valueof(t_def_TestHdlrPars); + var TestHdlrParams pars := f_gen_test_hdlr_pars(); pars.encr := valueof(t_EncrParams('02'O, f_rnd_octstring(8))); f_init(1, true); @@ -1633,7 +1645,7 @@ testcase TC_assignment_fr_a5_1() runs on test_CT { } testcase TC_assignment_fr_a5_3() runs on test_CT { var MSC_ConnHdlr vc_conn; - var TestHdlrParams pars := valueof(t_def_TestHdlrPars); + var TestHdlrParams pars := f_gen_test_hdlr_pars(); pars.encr := valueof(t_EncrParams('08'O, f_rnd_octstring(8))); f_init(1, true); @@ -1644,7 +1656,7 @@ testcase TC_assignment_fr_a5_3() runs on test_CT { /* Expect ASSIGNMENT FAIL if mandatory IE is missing */ private function f_tc_assignment_fr_a5_1_codec_missing(charstring id) runs on MSC_ConnHdlr { - g_pars := valueof(t_def_TestHdlrPars); + g_pars := f_gen_test_hdlr_pars(); var template PDU_BSSAP exp_fail := tr_BSSMAP_AssignmentFail; var PDU_BSSAP ass_cmd := f_gen_ass_req(); const OCT8 kc := '0001020304050607'O; @@ -1665,7 +1677,7 @@ testcase TC_assignment_fr_a5_1_codec_missing() runs on test_CT { } private function f_tc_assignment_fr_a5_4(charstring id) runs on MSC_ConnHdlr { - g_pars := valueof(t_def_TestHdlrPars); + g_pars := f_gen_test_hdlr_pars(); var template PDU_BSSAP exp_compl := f_gen_exp_compl(); var PDU_BSSAP ass_cmd := f_gen_ass_req(); const OCT8 kc := '0001020304050607'O; @@ -1689,10 +1701,9 @@ testcase TC_assignment_fr_a5_4() runs on test_CT { private function f_tc_assignment_sign(charstring id) runs on MSC_ConnHdlr { - g_pars := valueof(t_def_TestHdlrPars); + g_pars := f_gen_test_hdlr_pars(); var template PDU_BSSAP exp_compl := tr_BSSMAP_AssignmentComplete(omit, omit); - var PDU_BSSAP ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, omit)); - + var PDU_BSSAP ass_cmd := f_gen_ass_req(); ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelTypeSIGNAL); f_establish_fully(ass_cmd, exp_compl); } @@ -1886,7 +1897,7 @@ private function f_TC_assignment_codec(charstring id) runs on MSC_ConnHdlr { } testcase TC_assignment_codec_fr() runs on test_CT { - var TestHdlrParams pars := valueof(t_def_TestHdlrPars); + var TestHdlrParams pars := f_gen_test_hdlr_pars(); var MSC_ConnHdlr vc_conn; f_init(1, true); @@ -1898,7 +1909,7 @@ testcase TC_assignment_codec_fr() runs on test_CT { } testcase TC_assignment_codec_hr() runs on test_CT { - var TestHdlrParams pars := valueof(t_def_TestHdlrPars); + var TestHdlrParams pars := f_gen_test_hdlr_pars(); var MSC_ConnHdlr vc_conn; f_init(1, true); @@ -1910,7 +1921,7 @@ testcase TC_assignment_codec_hr() runs on test_CT { } testcase TC_assignment_codec_efr() runs on test_CT { - var TestHdlrParams pars := valueof(t_def_TestHdlrPars); + var TestHdlrParams pars := f_gen_test_hdlr_pars(); var MSC_ConnHdlr vc_conn; f_init(1, true); @@ -1922,7 +1933,7 @@ testcase TC_assignment_codec_efr() runs on test_CT { } testcase TC_assignment_codec_amr_f() runs on test_CT { - var TestHdlrParams pars := valueof(t_def_TestHdlrPars); + var TestHdlrParams pars := f_gen_test_hdlr_pars(); var MSC_ConnHdlr vc_conn; /* Note: This setups the codec configuration. The parameter payload in @@ -1948,7 +1959,7 @@ testcase TC_assignment_codec_amr_f() runs on test_CT { } testcase TC_assignment_codec_amr_h() runs on test_CT { - var TestHdlrParams pars := valueof(t_def_TestHdlrPars); + var TestHdlrParams pars := f_gen_test_hdlr_pars(); var MSC_ConnHdlr vc_conn; /* See note above */ @@ -1975,7 +1986,8 @@ testcase TC_assignment_codec_amr_h() runs on test_CT { * a) BSSMAP Classmark Request should result in RR CLASSMARK ENQUIRY, * b) L3 RR CLASSMARK CHANGE should result in BSSMAP CLASSMARK UPDATE */ private function f_tc_classmark(charstring id) runs on MSC_ConnHdlr { - g_pars := valueof(t_def_TestHdlrPars); + g_pars := f_gen_test_hdlr_pars(); + f_create_chan_and_exp(); /* we should now have a COMPL_L3 at the MSC */ BSSAP.receive(tr_BSSMAP_ComplL3); @@ -1996,7 +2008,7 @@ testcase TC_classmark() runs on test_CT { } private function f_est_single_l3(template PDU_ML3_MS_NW l3) runs on MSC_ConnHdlr { - g_pars := valueof(t_def_TestHdlrPars); + g_pars := f_gen_test_hdlr_pars(); f_create_chan_and_exp(); /* we should now have a COMPL_L3 at the MSC */ BSSAP.receive(tr_BSSMAP_ComplL3); @@ -2064,7 +2076,7 @@ testcase TC_unsol_ho_fail() runs on test_CT { /* short message from MS should be ignored */ private function f_tc_err_82_short_msg(charstring id) runs on MSC_ConnHdlr { - g_pars := valueof(t_def_TestHdlrPars); + g_pars := f_gen_test_hdlr_pars(); f_create_chan_and_exp(); /* we should now have a COMPL_L3 at the MSC */ BSSAP.receive(tr_BSSMAP_ComplL3); @@ -2146,7 +2158,7 @@ runs on MSC_ConnHdlr { /* intra-BSC hand-over between BTS0 and BTS1 */ private function f_tc_ho_int(charstring id) runs on MSC_ConnHdlr { - g_pars := valueof(t_def_TestHdlrPars); + g_pars := f_gen_test_hdlr_pars(); var template PDU_BSSAP exp_compl := f_gen_exp_compl(); var PDU_BSSAP ass_cmd := f_gen_ass_req(); const OCT8 kc := '0001020304050607'O; @@ -2189,7 +2201,7 @@ testcase TC_ho_int() runs on test_CT { } private function f_tc_ho_out_of_this_bsc(charstring id) runs on MSC_ConnHdlr { - g_pars := valueof(t_def_TestHdlrPars); + g_pars := f_gen_test_hdlr_pars(); var PDU_BSSAP ass_req := f_gen_ass_req(); ass_req.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelType); @@ -2327,7 +2339,7 @@ private function f_tc_ho_into_this_bsc(charstring id) runs on MSC_ConnHdlr { } testcase TC_ho_into_this_bsc() runs on test_CT { var MSC_ConnHdlr vc_conn; - var TestHdlrParams pars := valueof(t_def_TestHdlrPars); + var TestHdlrParams pars := f_gen_test_hdlr_pars(); f_init(1, true); f_sleep(1.0); diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn index 079cc74bb..dfdf10c06 100644 --- a/bsc/MSC_ConnectionHandler.ttcn +++ b/bsc/MSC_ConnectionHandler.ttcn @@ -426,9 +426,13 @@ type record TestHdlrParams { RSL_IE_Body expect_mr_conf_ie optional, /* typically present for AMR codecs */ TestHdlrEncrParams encr optional, TestHdlrParamsLcls lcls, - TestHdlrParamsHandover handover optional + TestHdlrParamsHandover handover optional, + boolean aoip }; +/* Note: Do not use valueof() to get a value of this template, use + * f_gen_test_hdlr_pars() instead in order to get a configuration that is + * matched to the current test sitation (aoio vs. sccplite) */ template (value) TestHdlrParams t_def_TestHdlrPars := { ra := '23'O, fn := 23, @@ -444,7 +448,8 @@ template (value) TestHdlrParams t_def_TestHdlrPars := { csc := omit, exp_sts := omit }, - handover := omit + handover := omit, + aoip := true } function f_create_chan_and_exp() runs on MSC_ConnHdlr { @@ -828,15 +833,8 @@ function f_establish_fully(template (omit) PDU_BSSAP ass_tpl, template PDU_BSSAP runs on MSC_ConnHdlr { var BSSMAP_FIELD_CodecType codecType; - var boolean sccplite := false; timer T := 10.0; - /* Check if we run on SCCPLITE instead of SCCP by looking if a CIC is - * present or not. */ - if (isvalue(ass_tpl.pdu.bssmap.assignmentRequest.circuitIdentityCode)) { - sccplite := true; - } - if (isvalue(ass_tpl.pdu.bssmap.assignmentRequest.codecList)) { codecType := valueof(ass_tpl.pdu.bssmap.assignmentRequest.codecList.codecElements[0].codecType); } else { @@ -855,7 +853,7 @@ runs on MSC_ConnHdlr { var template PDU_BSSAP exp_l3_compl; exp_l3_compl := tr_BSSMAP_ComplL3() - if (sccplite) { + if (g_pars.aoip == false) { exp_l3_compl.pdu.bssmap.completeLayer3Information.codecList := omit; } else { exp_l3_compl.pdu.bssmap.completeLayer3Information.codecList := ?; @@ -930,7 +928,7 @@ runs on MSC_ConnHdlr { g_media.mgcp_conn[1].mdcx_seen_exp := 0; } else if (st.voice_call) { /* For voice calls we expect the following MGCP activity */ - if (sccplite) { + if (g_pars.aoip == false) { g_media.mgcp_conn[0].crcx_seen_exp := 1; g_media.mgcp_conn[0].mdcx_seen_exp := 1; g_media.mgcp_conn[1].crcx_seen_exp := 0;