aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2022-08-10 17:56:25 +0700
committerVadim Yanitskiy <vyanitskiy@sysmocom.de>2022-08-10 18:14:11 +0700
commita2cd893d3dcabc484e3af583454f4c98acbfb760 (patch)
treec865fe6667816f03f714fb8216bc0ec3e4dd8fbf
parente2003d0c9cfb295839083f4bd9a0620537307ce5 (diff)
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
-rw-r--r--bts/BTS_Tests.ttcn20
1 files changed, 15 insertions, 5 deletions
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 9f2e3666..b2d63835 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -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; }