BTS: add a testcase for PDCH interference reports

Change-Id: I39e70524ad3d2ee51b537c8f786b7754a02949b1
Related: SYS#5313, OS#1569, OS#1866
This commit is contained in:
Vadim Yanitskiy 2021-06-18 16:18:29 +02:00
parent d0766b28da
commit 83852c171b
1 changed files with 56 additions and 0 deletions

View File

@ -5838,6 +5838,61 @@ testcase TC_pcu_socket_two_nsvc() runs on test_CT {
setverdict(pass);
}
/* Verify periodic interference reports on PDCH */
testcase TC_pcu_interf_ind() runs on test_CT {
var template PCUIF_Message tr_interf_ind;
var template PCUIF_interf ts_interf;
var integer interf_ind_num := 0;
var PCUIF_send_data sd;
timer T;
f_init_with_pcuif();
f_TC_pcu_act_req(0, 0, 7, true);
/* We need trxcon for NOPE indications */
f_init_l1ctl();
f_l1_tune(L1CTL);
/* Expect -120 .. -90 dBm on TS7 of BTS0/TRX0 */
ts_interf := { 0, 0, 0, 0, 0, 0, 0, (90..120) };
tr_interf_ind := tr_PCUIF_INTERF_IND(
bts_nr := 0,
trx_nr := 0,
fn := ?,
interf := ts_interf
);
/* 4 SACCH periods => 4 reports (plus some guard time) */
var float Tval := int2float(4 * 480) / 1000.0 + 0.5;
/* Let it some time to stabilize */
f_sleep(0.5);
PCU.clear;
T.start(Tval);
alt {
[] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_interf_ind)) -> value sd {
/* Check TDMA frame number period */
if (sd.data.u.interf_ind.fn mod 104 != 0) {
setverdict(fail, "Odd TDMA frame number := ",
sd.data.u.interf_ind.fn);
}
interf_ind_num := interf_ind_num + 1;
if (interf_ind_num < 4)
{ repeat; }
}
[] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_INTERF_IND(0, 0))) -> value sd {
setverdict(fail, "Received unexpected interference report: ", sd.data);
}
[] PCU.receive { repeat; }
[] T.timeout {
setverdict(fail, "Timeout waiting for interference reports");
}
}
Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
/***********************************************************************
* Osmocom Style Dynamic Timeslot Support
***********************************************************************/
@ -7492,6 +7547,7 @@ control {
execute( TC_pcu_socket_nsvc_ipv4() );
execute( TC_pcu_socket_nsvc_ipv6() );
execute( TC_pcu_socket_two_nsvc() );
execute( TC_pcu_interf_ind() );
} else {
log("PCU socket path not available, skipping PCU tests");
}