aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bsc/BSC_Tests.ttcn80
1 files changed, 80 insertions, 0 deletions
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index d0719a96..0099d5a7 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() );
}
}