diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 2b90a6e44..5d65a665e 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -9649,7 +9649,9 @@ private function f_vty_set_imm_ass(TELNETasp_PT pt, BtsNr bts_nr := 0, charstrin } private function f_verify_imm_ass(RSL_Message imm_ass, template uint8_t ra := ?, template GsmFrameNumber fn := ?, - template RslChannelNr chan_nr := ?) + template RslChannelNr chan_nr := ?, + template (present) uint12_t arfcn := ?, + template (present) uint3_t tsc := ?) { var RSL_IE_Body full_imm_ass_info; if (not f_rsl_find_ie(imm_ass, RSL_IE_FULL_IMM_ASS_INFO, full_imm_ass_info)) { @@ -9660,7 +9662,7 @@ private function f_verify_imm_ass(RSL_Message imm_ass, template uint8_t ra := ?, var GsmRrMessage rr_imm_ass := dec_GsmRrMessage(full_imm_ass_info.full_imm_ass_info.payload); var template GsmRrMessage expect_imm_ass := tr_IMM_ASS(ra := ra, fn := fn, - ch_desc := tr_ChanDescH0(chan_nr), + ch_desc := tr_ChanDescH0(chan_nr, arfcn, tsc), page_mode := ?); if (not match(rr_imm_ass, expect_imm_ass)) { log("Error: expected ", expect_imm_ass, " got ", rr_imm_ass); @@ -9688,12 +9690,19 @@ testcase TC_imm_ass_post_chan_ack() runs on test_CT { /* First send the Chan Act ACK */ var RslChannelNr chan_nr := chan_act.ies[0].body.chan_nr; + var RSL_IE_Body chan_ident_ie; + if (not f_rsl_find_ie(chan_act, RSL_IE_CHAN_IDENT, chan_ident_ie)) { + setverdict(fail, "RSL Channel Identification IE is absent"); + mtc.stop; + } + f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, fn + 10)); /* Then expect the Immediate Assignment, after we ACKed the chan act */ imm_ass := f_exp_ipa_rx(0, tr_RSL_IMM_ASSIGN(0)); - f_verify_imm_ass(imm_ass, ra, fn, chan_nr); + f_verify_imm_ass(imm_ass, ra, fn, chan_nr, chan_ident_ie.chan_ident.ch_desc.v.arfcn, + chan_ident_ie.chan_ident.ch_desc.v.tsc); /* Check that the lchan is working */ var octetstring l3 := '00010203040506'O; @@ -9726,10 +9735,16 @@ testcase TC_imm_ass_pre_chan_ack() runs on test_CT { chan_act := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV)); var RslChannelNr chan_nr := chan_act.ies[0].body.chan_nr; + var RSL_IE_Body chan_ident_ie; + if (not f_rsl_find_ie(chan_act, RSL_IE_CHAN_IDENT, chan_ident_ie)) { + setverdict(fail, "RSL Channel Identification IE is absent"); + mtc.stop; + } /* *FIRST* expect the Immediate Assignment, before we ACK the chan act */ imm_ass := f_exp_ipa_rx(0, tr_RSL_IMM_ASSIGN(0)); - f_verify_imm_ass(imm_ass, ra, fn, chan_nr); + f_verify_imm_ass(imm_ass, ra, fn, chan_nr, chan_ident_ie.chan_ident.ch_desc.v.arfcn, + chan_ident_ie.chan_ident.ch_desc.v.tsc); /* Only now send the Chan Act ACK */ f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, fn+10)); @@ -9792,10 +9807,16 @@ testcase TC_imm_ass_pre_chan_ack_dyn_ts() runs on test_CT { chan_nr := valueof(t_RslChanNr_SDCCH8(tn := 6, sub_slot := 0)); chan_act := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV)); + var RSL_IE_Body chan_ident_ie; + if (not f_rsl_find_ie(chan_act, RSL_IE_CHAN_IDENT, chan_ident_ie)) { + setverdict(fail, "RSL Channel Identification IE is absent"); + mtc.stop; + } /* *FIRST* expect the Immediate Assignment, before we ACK the chan act */ imm_ass := f_exp_ipa_rx(0, tr_RSL_IMM_ASSIGN(0)); - f_verify_imm_ass(imm_ass, ra, fn, chan_nr); + f_verify_imm_ass(imm_ass, ra, fn, chan_nr, chan_ident_ie.chan_ident.ch_desc.v.arfcn, + chan_ident_ie.chan_ident.ch_desc.v.tsc); /* Only now send the Chan Act ACK */ f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, fn+10)); @@ -9863,9 +9884,15 @@ testcase TC_imm_ass_pre_ts_ack_dyn_ts() runs on test_CT { chan_nr := valueof(t_RslChanNr_SDCCH8(tn := 6, sub_slot := 0)); chan_act := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV)); + var RSL_IE_Body chan_ident_ie; + if (not f_rsl_find_ie(chan_act, RSL_IE_CHAN_IDENT, chan_ident_ie)) { + setverdict(fail, "RSL Channel Identification IE is absent"); + mtc.stop; + } f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, fn+10)); - f_verify_imm_ass(imm_ass, ra, fn, chan_nr); + f_verify_imm_ass(imm_ass, ra, fn, chan_nr, chan_ident_ie.chan_ident.ch_desc.v.arfcn, + chan_ident_ie.chan_ident.ch_desc.v.tsc); /* Check that the lchan is working */ var octetstring l3 := '00010203040506'O;