BTS_Tests: fix TC_rsl_ms_pwr_dyn_{up,ass_down,max}: reply received SACCH L1H

As was explained in [1], until recently we relied on trxcon sendig
dummy RR Measurement Reports with patched L1 SACCH Header values.
Now trxcon does not patch it for us, so we need to send Uplink
SACCH blocks with the correct L1H ourselves.

Revision 2 of [1] was successfully tested and proved to fix the
above-mentioned testcases.  However during code review I was asked
to make the statements sending Uplink SACCH blocks self-explanatory.

In revision 3 of [1] I modified the code to call f_send_meas_rep(),
which was introduced in [2], which as stated in the commit message
is using g_pars.l1_pars.{ms_power_level,ms_actual_ta} instead of
the values from received L1H.  Of course this does not work.

Add and use f_send_meas_rep_l1h(), which allows to send the given L1H.
Take a chance to add a log() statement, so that we can see what we Tx.

Change-Id: Ia79a0a7b06394bd34d0f40226cf40e6e8bd2ba35
Fixes: [1] I31dd6b9026d04403092256176f67785a0a6486ad
Related: [2] Ia5d0315e053702df5fa8dad8c6c66c11c9f3edcb
Related: OS#5635
This commit is contained in:
Vadim Yanitskiy 2022-08-10 17:56:25 +07:00
parent e2003d0c9c
commit a2cd893d3d
1 changed files with 15 additions and 5 deletions

View File

@ -782,6 +782,15 @@ runs on ConnHdlr {
friend function f_send_meas_rep(template (value) MeasurementResults meas_res)
runs on ConnHdlr {
var template (value) SacchL1Header l1h;
l1h := ts_SacchL1Header(g_pars.l1_pars.ms_power_level, g_pars.l1_pars.ms_actual_ta);
f_send_meas_rep_l1h(meas_res, l1h);
}
/* Send the given measurement results and L1H to the IUT over the Um interface */
friend function f_send_meas_rep_l1h(template (value) MeasurementResults meas_res,
template (value) SacchL1Header l1h)
runs on ConnHdlr {
var octetstring l2;
/* RR Measurement Report to be sent */
@ -792,7 +801,8 @@ runs on ConnHdlr {
/* TITAN has weird (and often unusable) padding model, so we pad here manaully */
l2 := f_pad_oct(enc_LapdmFrameAB(valueof(ts_LAPDm_AB(0, meas_rep))), 21, '00'O);
l1h := ts_SacchL1Header(g_pars.l1_pars.ms_power_level, g_pars.l1_pars.ms_actual_ta);
log(%definitionId, "(): Tx SACCH L1 header: ", l1h);
/* Send RR Measurement Report over the Um interface */
L1CTL.send(ts_L1CTL_DATA_REQ_SACCH(g_chan_nr, ts_RslLinkID_SACCH(0), l1h, l2));
@ -2979,7 +2989,7 @@ private function f_TC_rsl_ms_pwr_dyn_ass_updown(charstring id) runs on ConnHdlr
T2.start;
alt {
[] as_l1_sacch_l1h(l1h) {
f_send_meas_rep(ts_MeasurementResults);
f_send_meas_rep_l1h(ts_MeasurementResults, l1h);
if (l1h.ms_power_lvl < (pwr_var + 6)) {
repeat;
@ -3000,7 +3010,7 @@ private function f_TC_rsl_ms_pwr_dyn_ass_updown(charstring id) runs on ConnHdlr
T4.start;
alt {
[] as_l1_sacch_l1h(l1h) {
f_send_meas_rep(ts_MeasurementResults);
f_send_meas_rep_l1h(ts_MeasurementResults, l1h);
if (l1h.ms_power_lvl > pwr_var) {
repeat;
@ -3045,7 +3055,7 @@ private function f_TC_rsl_ms_pwr_dyn_max(charstring id) runs on ConnHdlr {
T1.start;
alt {
[] as_l1_sacch_l1h(l1h) {
f_send_meas_rep(ts_MeasurementResults);
f_send_meas_rep_l1h(ts_MeasurementResults, l1h);
repeat;
}
[] L1CTL.receive { repeat; }
@ -3094,7 +3104,7 @@ private function f_TC_rsl_ms_pwr_dyn_up(charstring id) runs on ConnHdlr {
T1.start;
alt {
[] as_l1_sacch_l1h(l1h) {
f_send_meas_rep(ts_MeasurementResults);
f_send_meas_rep_l1h(ts_MeasurementResults, l1h);
repeat;
}
[] L1CTL.receive { repeat; }