fixeria has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/42022?usp=email )


Change subject: bts: f_verify_ramp_up(): fix RxLev / dBm mixup
......................................................................

bts: f_verify_ramp_up(): fix RxLev / dBm mixup

Comparing RxLev and dBm values is comparing apples to oranges.  It's
just a lucky coincidence that fake_trx is using RF path loss value of
110 dB, which is also the offset between RxLev and dBm.

* Add `mp_rf_path_loss` matching the default value (110 dB) in fake_trx.
* Add `f_bts_max_rx_level_dbm()` calculating the expected Rx power level.
* Apply `rxlev2dbm()` on `l1_dl.dl_info.rx_level` whenever needed.
* Clarify the units in verdict / logging messages.

Change-Id: I818d18d6e0711247b73ee1f336133e2ed3f6e2cb
Related: OS#6939
---
M bts/BTS_Tests.ttcn
1 file changed, 52 insertions(+), 44 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks 
refs/changes/22/42022/1

diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 0fd2cff..3942ad1 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -115,6 +115,7 @@
        integer mp_ms_power_level_exp := 7;
        integer mp_bts_tx_nom_pwr_exp := 50; /* Expected Tx Nominal Output 
Power of the BTS, in dBm */
        integer mp_bts_tx_pwr_att_exp := 20; /* Expected Tx Power attenuation 
wrt to Tx Nominal Output Power, in dB */
+       integer mp_rf_path_loss := 110; /* RF path loss, in dB */
        integer mp_ms_actual_ta_exp := 0;
        integer mp_timing_offset_256syms_exp := 512;
        integer mp_uplink_power_target := -75;
@@ -2751,16 +2752,21 @@
        f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);
 }

+/* calculate max. Rx power level (in dBm) expected on the Um interface */
+private function f_bts_max_rx_level_dbm() return integer {
+       return mp_bts_tx_nom_pwr_exp - mp_bts_tx_pwr_att_exp - mp_rf_path_loss;
+}
+
 /* Wait until the BTS has reached full tx power (nominal tx power minus 
configured attenuation) */
-private function f_wait_ramp_up() runs on ConnHdlr return integer {
+private function f_wait_ramp_up() runs on ConnHdlr {
        var L1ctlMessage l1_dl;
-       var integer max_rx_lvl := mp_bts_tx_nom_pwr_exp - mp_bts_tx_pwr_att_exp;
+       var integer max_rx_lvl := f_bts_max_rx_level_dbm();
        timer Tup := 10.0;
        Tup.start;
        alt {
        [] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value 
l1_dl {
-               var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;
-               log("Received rx_level=", rx_lvl);
+               var integer rx_lvl := rxlev2dbm(l1_dl.dl_info.rx_level);
+               log("BCCH RxLev ", rx_lvl, " dBm");

                if (rx_lvl != max_rx_lvl) {
                        repeat;
@@ -2769,11 +2775,10 @@
                }
        [] L1CTL.receive { repeat; }
        [] Tup.timeout {
-               Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
-                                       log2str("Didn't reach full power ", 
max_rx_lvl));
+               setverdict(fail, "Didn't reach full power ", max_rx_lvl, " 
dBm");
+               Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
                }
        }
-       return max_rx_lvl;
 }

 /* verify BTS ramps power up to full tx power (nominal tx power minus 
configured attenuation) */
@@ -2781,37 +2786,37 @@
        var L1ctlMessage l1_dl;
        var integer initial_rx_lvl := -1;
        var integer last_rx_lvl := -1;
-       var integer max_rx_lvl := mp_bts_tx_nom_pwr_exp - mp_bts_tx_pwr_att_exp;
+       var integer max_rx_lvl := f_bts_max_rx_level_dbm();

        timer T := 2.0;
        alt {
        [] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value 
l1_dl {
-               var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;
-               log("Received rx_level=", rx_lvl);
+               var integer rx_lvl := rxlev2dbm(l1_dl.dl_info.rx_level);
+               log("BCCH RxLev ", rx_lvl, " dBm");
                if (initial_rx_lvl == -1) {
                        initial_rx_lvl := rx_lvl;
                        last_rx_lvl := rx_lvl;

                        /* Expect a somehow low value during first received 
messages */
                        if (initial_rx_lvl >= max_rx_lvl / 2) {
-                               Misc_Helpers.f_shutdown(__BFILE__, __LINE__, 
fail,
-                                                       log2str("Detected high 
initial tx power during ramp up: ",
-                                                               initial_rx_lvl 
, ", full power is ", max_rx_lvl));
+                               setverdict(fail, "Detected high initial Tx 
power during ramp up: ",
+                                          initial_rx_lvl , " dBm (full power 
is ", max_rx_lvl, " dBm)");
+                               Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
                        }
                }

                /* received Rx level bigger than maximum allowed power by CN */
                if (rx_lvl > max_rx_lvl) {
-                       Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
-                                               log2str("Detected Tx power 
higher than full power: ",
-                                                       rx_lvl , " > ", 
max_rx_lvl));
+                       setverdict(fail, "Detected Tx power higher than full 
power: ",
+                                  rx_lvl , " > ", max_rx_lvl, " dBm");
+                       Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
                }

                /* Make sure it never decreases, since we are rumping up */
                if (last_rx_lvl > rx_lvl) {
-                       Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
-                                               log2str("Detected Tx power 
decrease during ramp up: ",
-                                                       last_rx_lvl , " -> ", 
rx_lvl));
+                       setverdict(fail, "Detected Tx power decrease during 
ramp up: ",
+                                  last_rx_lvl , " -> ", rx_lvl, " dBm");
+                       Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
                }

                if (rx_lvl == max_rx_lvl and not T.running) {
@@ -2830,11 +2835,11 @@

        /* We didn't increase tx power during ramp up */
        if (initial_rx_lvl < last_rx_lvl) {
-               log("Tx power increased during ramp up: ", initial_rx_lvl , " 
-> ", last_rx_lvl);
+               log("Tx power increased during ramp up: ", initial_rx_lvl , " 
-> ", last_rx_lvl, " dBm");
        } else {
-               Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
-                                       log2str("No Tx power increase during 
whole ramp up: ",
-                                               initial_rx_lvl , " -> ", 
last_rx_lvl));
+               setverdict(fail, "No Tx power increase during whole ramp up: ",
+                          initial_rx_lvl , " -> ", last_rx_lvl, " dBm");
+               Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
        }
 }

@@ -2847,21 +2852,21 @@
        Tdown.start;
        alt {
        [] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value 
l1_dl {
-               var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;
-               log("Received rx_level=", rx_lvl);
+               var integer rx_lvl := rxlev2dbm(l1_dl.dl_info.rx_level);
+               log("BCCH RxLev ", rx_lvl, " dBm");

                /* received Rx level bigger than maximum allowed power by CN */
                if (rx_lvl > max_rx_lvl) {
-                       Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
-                                               log2str("Detected Tx power 
higher than full power: ",
-                                                       rx_lvl , " > ", 
max_rx_lvl));
+                       setverdict(fail, "Detected Tx power higher than full 
power: ",
+                                  rx_lvl , " > ", max_rx_lvl, " dBm");
+                       Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
                }

                /* Make sure it never increases, since we are rumping down */
                if (last_rx_lvl < rx_lvl) {
-                       Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
-                                               log2str("Detected Tx power 
increase during ramp up: ",
-                                                       last_rx_lvl , " -> ", 
rx_lvl));
+                       setverdict(fail, "Detected Tx power increase during 
ramp down: ",
+                                  last_rx_lvl , " -> ", rx_lvl, " dBm");
+                       Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
                }

                last_rx_lvl := rx_lvl;
@@ -2877,16 +2882,16 @@

        /* We didn't increase tx power during ramp down */
        if (max_rx_lvl > last_rx_lvl) {
-               log("Tx power decreased during ramp down: ", max_rx_lvl , " -> 
", last_rx_lvl);
+               log("Tx power decreased during ramp down: ", max_rx_lvl , " -> 
", last_rx_lvl, " dBm");
        } else {
-               Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
-                                       log2str("No Tx power decrease during 
whole ramp down: ",
-                                               max_rx_lvl , " -> ", 
last_rx_lvl));
+               setverdict(fail, "No Tx power decrease during whole ramp down: 
",
+                          max_rx_lvl , " -> ", last_rx_lvl, " dBm");
+               Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
        }
 }

 /* verify BTS power down to rx_level 0 without ramping */
-private function f_verify_power_down(integer max_rx_lvl) runs on ConnHdlr {
+private function f_verify_power_down(GsmRxLev max_rx_lvl) runs on ConnHdlr {
        var L1ctlMessage l1_dl;
        var boolean first_data_ind := true;

@@ -2896,7 +2901,7 @@
        [first_data_ind == true] 
L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value l1_dl {
                first_data_ind := false;
                var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;
-               log("Received rx_level=", rx_lvl);
+               log("BCCH RxLev ", rx_lvl);

                /* The first data indication could still have the original 
power level */
                if (rx_lvl != 0 and rx_lvl != max_rx_lvl) {
@@ -2908,7 +2913,7 @@
        }
        [first_data_ind == false] 
L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value l1_dl {
                var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;
-               log("Received rx_level=", rx_lvl);
+               log("BCCH RxLev ", rx_lvl);

                /* Expect immediate power off so either rx_level == 0 or no 
report at all
                   because TRX was shut down already */
@@ -2953,11 +2958,13 @@
        RSL.clear;

        /* Wait until BTS is started and at full power */
-       var integer max_rx_lvl := f_wait_ramp_up();
-       log("Reached nominal level ", max_rx_lvl, ", shutting down OML link");
+       f_wait_ramp_up();
+
+       var integer max_rx_lvl := f_bts_max_rx_level_dbm();
+       log("Reached nominal level ", max_rx_lvl, " dBm, shutting down OML 
link");

        f_vty_transceive(BSCVTY, "drop bts connection 0 oml");
-       f_verify_power_down(max_rx_lvl);
+       f_verify_power_down(dbm2rxlev(max_rx_lvl));

        setverdict(pass);
 }
@@ -2985,13 +2992,14 @@
        RSL.clear;

        /* Wait until BTS is started and at full power */
-       var integer max_rx_lvl := f_wait_ramp_up();
-       log("Reached nominal level ", max_rx_lvl, ", changing ADM state to 
LOCKED");
+       f_wait_ramp_up();
+       var integer max_rx_lvl := f_bts_max_rx_level_dbm();
+       log("Reached nominal level ", max_rx_lvl, " dBm, changing ADM state to 
LOCKED");

        log("ADM STATE UNLOCKED->LOCKED");
        f_vty_enter_cfg_trx(BSCVTY);
        f_vty_transceive(BSCVTY, "rf_locked 1");
-       f_verify_ramp_down(max_rx_lvl);
+       f_verify_ramp_down(dbm2rxlev(max_rx_lvl));

        /* Let some time after we received 0dBm, then check we don't receive 
BCCH
         * anymore because scheduler has stopped after ramping down */

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/42022?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I818d18d6e0711247b73ee1f336133e2ed3f6e2cb
Gerrit-Change-Number: 42022
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <[email protected]>

Reply via email to