diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 328fc59ba..2a8ad5fb5 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -1841,6 +1841,26 @@ private function f_TC_assignment_codec(charstring id) runs on MSC_ConnHdlr { if (not match(mode_ie, t_mode_ie)) { setverdict(fail, "RSL Channel Mode IE doesn't match expectation"); } + + var RSL_IE_Body mr_conf; + if (g_pars.expect_mr_conf_ie != omit) { + if (f_rsl_find_ie(rsl, RSL_IE_MR_CONFIG, mr_conf) == false) { + setverdict(fail, "Missing MR CONFIG IE in RSL Chan Activ"); + self.stop; + } + log("found RSL MR CONFIG IE: ", mr_conf); + + if (not match(mr_conf, g_pars.expect_mr_conf_ie)) { + setverdict(fail, "RSL MR CONFIG IE does not match expectation. Expected: ", + g_pars.expect_mr_conf_ie); + } + } else { + if (f_rsl_find_ie(rsl, RSL_IE_MR_CONFIG, mr_conf) == true) { + log("found RSL MR CONFIG IE: ", mr_conf); + setverdict(fail, "Found MR CONFIG IE in RSL Chan Activ, expecting omit"); + self.stop; + } + } } testcase TC_assignment_codec_fr() runs on test_CT { @@ -1882,11 +1902,18 @@ 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 MSC_ConnHdlr vc_conn; + var RSL_IE_Body mr_conf := { + other := { + len := 2, + payload := '2804'O + } + }; f_init(1, true); f_sleep(1.0); pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecAMR_F})); + pars.expect_mr_conf_ie := mr_conf; vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars); vc_conn.done; } @@ -1894,11 +1921,18 @@ 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 MSC_ConnHdlr vc_conn; + var RSL_IE_Body mr_conf := { + other := { + len := 2, + payload := '2804'O + } + }; f_init(1, true); f_sleep(1.0); pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecAMR_H})); + pars.expect_mr_conf_ie := mr_conf; vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars); vc_conn.done; } diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn index 0f123b6ae..1261a4d9e 100644 --- a/bsc/MSC_ConnectionHandler.ttcn +++ b/bsc/MSC_ConnectionHandler.ttcn @@ -390,6 +390,7 @@ type record TestHdlrParams { RslLinkId link_id, integer media_nr, /* determins MGCP EP, port numbers */ BSSMAP_IE_SpeechCodecList ass_codec_list optional, + RSL_IE_Body expect_mr_conf_ie optional, /* typically present for AMR codecs */ TestHdlrEncrParams encr optional, TestHdlrParamsLcls lcls }; @@ -401,6 +402,7 @@ template (value) TestHdlrParams t_def_TestHdlrPars := { link_id := valueof(ts_RslLinkID_DCCH(0)), media_nr := 1, ass_codec_list := omit, + expect_mr_conf_ie := omit, encr := omit, lcls := { gcr := omit,