BTS_Tests: add FAACH to TC_meas_res_speech_tchX

The current TC_meas_res_speech_tchX tests only test a pure voice
transmission. A voice transmission can be occasionally interrupted by
FACCH transmissions. This should also be tested. Lets ad a _facch
variant for the two speech test variants we already that injects a FACCH
from time to time.

Related: OS#4799
Change-Id: Ie9cd39739d4b972f4e533a7bc90f79e914888aab
This commit is contained in:
Philipp Maier 2020-10-22 17:29:36 +02:00
parent d6d69b50fc
commit 149c392f25
1 changed files with 39 additions and 6 deletions

View File

@ -751,7 +751,8 @@ friend template ConnHdlrPars t_Pars(template RslChannelNr chan_nr,
timing_offset_256syms := mp_timing_offset_256syms_exp,
bs_power_level := 0,
ms_power_level := mp_ms_power_level_exp,
ms_actual_ta := mp_ms_actual_ta_exp
ms_actual_ta := mp_ms_actual_ta_exp,
facch_enabled := false
},
spec := omit,
encr := omit,
@ -1788,8 +1789,17 @@ private altstep as_l1_tch_loop() runs on ConnHdlr {
var L1ctlDlMessage l1_dl;
[] L1CTL.receive(tr_L1CTL_TRAFFIC_IND(g_chan_nr)) -> value l1_dl {
log("TCH received: ", l1_dl.payload.traffic_ind.data);
L1CTL.send(ts_L1CTL_TRAFFIC_REQ(g_chan_nr, l1_dl.dl_info.link_id,
l1_dl.payload.traffic_ind.data));
/* occasionaly inject FACCH frames into the uplink */
if (g_pars.l1_pars.facch_enabled == true and l1_dl.dl_info.frame_nr mod 5 == 0) {
var octetstring pl := '010301'O;
L1CTL.send(ts_L1CTL_DATA_REQ(g_chan_nr, ts_RslLinkID_DCCH(0),
f_pad_oct(pl, 23, '2B'O)));
} else {
L1CTL.send(ts_L1CTL_TRAFFIC_REQ(g_chan_nr, l1_dl.dl_info.link_id,
l1_dl.payload.traffic_ind.data));
}
repeat;
}
}
@ -1811,7 +1821,8 @@ private type record ConnL1Pars {
int16_t timing_offset_256syms,
uint4_t bs_power_level,
uint5_t ms_power_level,
uint8_t ms_actual_ta
uint8_t ms_actual_ta,
boolean facch_enabled
}
/* Convert tiing offset from 1/256th symbol to RSL Timing Offset */
@ -2976,7 +2987,7 @@ testcase TC_rsl_ms_pwr_dyn_active2() runs on test_CT {
Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
testcase TC_meas_res_speech_tchf() runs on test_CT {
function f_TC_meas_res_speech_tchf(boolean facch_enabled) runs on test_CT {
var template RSL_IE_ChannelMode ch_mode;
var ConnHdlr vc_conn;
var ConnHdlrPars pars;
@ -2984,13 +2995,23 @@ testcase TC_meas_res_speech_tchf() runs on test_CT {
ch_mode := ts_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM1);
for (var integer tn := 1; tn <= 1; tn := tn + 1) {
pars := valueof(t_Pars(t_RslChanNr_Bm(tn), ch_mode));
pars.l1_pars.facch_enabled := facch_enabled;
vc_conn := f_start_handler(refers(f_TC_meas_res_periodic), pars,
pcu_comp := false, trxc_comp := true);
vc_conn.done;
}
Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
testcase TC_meas_res_speech_tchh() runs on test_CT {
testcase TC_meas_res_speech_tchf() runs on test_CT {
f_TC_meas_res_speech_tchf(false);
}
testcase TC_meas_res_speech_tchf_facch() runs on test_CT {
f_TC_meas_res_speech_tchf(true);
}
function f_TC_meas_res_speech_tchh(boolean facch_enabled) runs on test_CT {
var template RSL_IE_ChannelMode ch_mode;
var ConnHdlr vc_conn;
var ConnHdlrPars pars;
@ -2998,12 +3019,22 @@ testcase TC_meas_res_speech_tchh() runs on test_CT {
ch_mode := ts_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM1);
for (var integer ss := 0; ss <= 1; ss := ss + 1) {
pars := valueof(t_Pars(t_RslChanNr_Lm(5, ss), ch_mode));
pars.l1_pars.facch_enabled := facch_enabled;
vc_conn := f_start_handler(refers(f_TC_meas_res_periodic), pars,
pcu_comp := false, trxc_comp := true);
vc_conn.done;
}
Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
testcase TC_meas_res_speech_tchh() runs on test_CT {
f_TC_meas_res_speech_tchh(false)
}
testcase TC_meas_res_speech_tchh_facch() runs on test_CT {
f_TC_meas_res_speech_tchh(true)
}
testcase TC_meas_res_speech_tchh_toa256() runs on test_CT {
var template RSL_IE_ChannelMode ch_mode;
var ConnHdlr vc_conn;
@ -7185,7 +7216,9 @@ control {
execute( TC_rach_load_idle_below_thresh() );
execute( TC_rach_load_count() );
execute( TC_meas_res_speech_tchf() );
execute( TC_meas_res_speech_tchf_facch() );
execute( TC_meas_res_speech_tchh() );
execute( TC_meas_res_speech_tchh_facch() );
execute( TC_meas_res_speech_tchh_toa256() );
execute( TC_meas_res_sign_tchf() );
execute( TC_meas_res_sign_tchh() );