diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index d0719a968..0099d5a75 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -7151,6 +7151,85 @@ testcase TC_fh_params_assignment_cmd() runs on test_CT { setverdict(pass); } +/* Verify the hopping parameters in System Information Type 4 */ +testcase TC_fh_params_si4_cbch() runs on test_CT { + var FHParamsTrx fhp := f_TC_fh_params_gen(tr_tn := 1); + var ASP_RSL_Unitdata rx_rsl_ud; + timer T := 5.0; + + f_init_vty(); + + /* (Re)configure TS0 as BCCH and TS1 as SDCCH8+CBCH */ + f_vty_enter_cfg_trx(BSCVTY, trx := 0); + + f_vty_transceive(BSCVTY, "timeslot 0"); + f_vty_transceive(BSCVTY, "phys_chan_config ccch"); + f_vty_transceive(BSCVTY, "exit"); /* go back */ + + f_vty_transceive(BSCVTY, "timeslot 1"); + f_vty_transceive(BSCVTY, "phys_chan_config sdcch8+cbch"); + f_vty_transceive(BSCVTY, "end"); /* we're done */ + + f_TC_fh_params_set(fhp); /* Enable frequency hopping */ + f_vty_transceive(BSCVTY, "drop bts connection 0 oml"); + + f_init(1); + + T.start; + alt { + [] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr_RSL_BCCH_INFO(RSL_SYSTEM_INFO_4))) -> value rx_rsl_ud { + var RSL_IE_Body ie := rx_rsl_ud.rsl.ies[2].body; /* FULL BCCH Information IE */ + var SystemInformation si := dec_SystemInformation(ie.other.payload); + + /* Make sure that what we decoded is System Information Type 4 */ + if (si.header.message_type != SYSTEM_INFORMATION_TYPE_4) { + setverdict(fail, "RSL FULL BCCH Information IE contains: ", si); + repeat; + } + + /* Make sure that CBCH Channel Description IE is present */ + if (not ispresent(si.payload.si4.cbch_chan_desc)) { + setverdict(fail, "CBCH Channel Description IE is absent"); + break; + } + + /* Finally, check the hopping parameters (HSN, MAIO) */ + var ChannelDescription chan_desc := si.payload.si4.cbch_chan_desc.v; + f_TC_fh_params_match_chan_desc(fhp, chan_desc); + + /* 3GPP TS 44.018, section 9.1.36.2 "CBCH Mobile Allocation": + * The CBCH Mobile Allocation IE *shall* be present if FH is enabled. */ + if (chan_desc.h and not ispresent(si.payload.si4.cbch_mobile_alloc)) { + setverdict(fail, "FH enabled, but Mobile Allocation IE is absent"); + break; + } else if (chan_desc.h and ispresent(si.payload.si4.cbch_mobile_alloc)) { + f_TC_fh_params_match_ma(fhp, chan_desc.chan_nr.tn, + si.payload.si4.cbch_mobile_alloc.v); + } + } + [] IPA_RSL[0].receive { repeat; } + [] T.timeout { + setverdict(fail, "Timeout waiting for RSL BCCH INFOrmation (SI4)"); + } + } + + /* Disable frequency hopping */ + f_TC_fh_params_unset(fhp); + + /* (Re)configure TS0 as CCCH+SDCCH4 and TS1 as TCH/F */ + f_vty_enter_cfg_trx(BSCVTY, trx := 0); + + f_vty_transceive(BSCVTY, "timeslot 0"); + f_vty_transceive(BSCVTY, "phys_chan_config ccch+sdcch4"); + f_vty_transceive(BSCVTY, "exit"); /* go back */ + + f_vty_transceive(BSCVTY, "timeslot 1"); + f_vty_transceive(BSCVTY, "phys_chan_config tch/f"); + f_vty_transceive(BSCVTY, "end"); /* we're done */ + + setverdict(pass); +} + /* Dyn PDCH todo: * activate OSMO as TCH/F * activate OSMO as TCH/H @@ -7383,6 +7462,7 @@ control { execute( TC_fh_params_chan_activ() ); execute( TC_fh_params_imm_ass() ); execute( TC_fh_params_assignment_cmd() ); + execute( TC_fh_params_si4_cbch() ); } }