<p>Hoernchen has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/14507">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">BTS: BS power tests<br><br>osmo-bts does currently not use the signaled lchan BS power level, nor<br>does it update the BS power IE returned in the measurement results.<br><br>Change-Id: If91fb57b4070c60bb277d0b55d69ee3dde47ee48<br>---<br>M bts/BTS_Tests.ttcn<br>M library/RSL_Types.ttcn<br>2 files changed, 115 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/07/14507/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn</span><br><span>index 9d7b8c2..3b27469 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -1892,6 +1892,99 @@</span><br><span>       f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+function f_check_meas_bs_power_level(integer level) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+        timer T := 8.0;</span><br><span style="color: hsl(120, 100%, 40%);">+       T.start;</span><br><span style="color: hsl(120, 100%, 40%);">+      var RSL_Message rsl;</span><br><span style="color: hsl(120, 100%, 40%);">+  alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] as_l1_sacch();</span><br><span style="color: hsl(120, 100%, 40%);">+     [] L1CTL.receive { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+  [] RSL.receive(tr_RSL_MEAS_RES(g_chan_nr, ?, ?, ?)) -> value rsl {</span><br><span style="color: hsl(120, 100%, 40%);">+         if (rsl.ies[3].body.bs_power.power_level == level) {</span><br><span style="color: hsl(120, 100%, 40%);">+                  setverdict(pass)</span><br><span style="color: hsl(120, 100%, 40%);">+              } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Received wrong BS power level in MEAS RES ", rsl));</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] T.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+                Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "No MEAS RES received at all");</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* see if the rsl meas res contains our expeced bs power level</span><br><span style="color: hsl(120, 100%, 40%);">+bs power set during assignment */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_TC_rsl_bs_pwr_static_ass(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+      f_l1_tune(L1CTL);</span><br><span style="color: hsl(120, 100%, 40%);">+     RSL.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  if (mp_bts_trxc_port != -1) {</span><br><span style="color: hsl(120, 100%, 40%);">+         f_trxc_fake_rssi(rxlev2dbm(mp_ul_rxlev_exp));</span><br><span style="color: hsl(120, 100%, 40%);">+         f_trxc_fake_toffs256(g_pars.l1_pars.timing_offset_256syms);</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   var uint5_t pwr_var := 1;</span><br><span style="color: hsl(120, 100%, 40%);">+     var template (value) RSL_IE_BS_Power bs_power := ts_RSL_IE_BS_Power(pwr_var);</span><br><span style="color: hsl(120, 100%, 40%);">+ var template (value) RSL_IE pwr := t_RSL_IE(RSL_IE_BS_POWER, RSL_IE_Body:{bs_power := bs_power});</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   f_est_dchan(more_ies :={valueof(pwr)});</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     f_check_meas_bs_power_level(pwr_var);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       f_rsl_chan_deact();</span><br><span style="color: hsl(120, 100%, 40%);">+   f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* see if the rsl meas res contains our expeced bs power level</span><br><span style="color: hsl(120, 100%, 40%);">+bs power set after assignment */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_TC_rsl_bs_pwr_static_power_control(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+ f_l1_tune(L1CTL);</span><br><span style="color: hsl(120, 100%, 40%);">+     RSL.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  if (mp_bts_trxc_port != -1) {</span><br><span style="color: hsl(120, 100%, 40%);">+         f_trxc_fake_rssi(rxlev2dbm(mp_ul_rxlev_exp));</span><br><span style="color: hsl(120, 100%, 40%);">+         f_trxc_fake_toffs256(g_pars.l1_pars.timing_offset_256syms);</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   var uint5_t pwr_var := 1;</span><br><span style="color: hsl(120, 100%, 40%);">+     var template (value) RSL_IE_BS_Power bs_power := ts_RSL_IE_BS_Power(pwr_var);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       f_est_dchan();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      RSL.send(ts_RSL_BS_PWR_CTRL(g_chan_nr, bs_power));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_check_meas_bs_power_level(pwr_var);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       f_rsl_chan_deact();</span><br><span style="color: hsl(120, 100%, 40%);">+   f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_rsl_bs_pwr_static_ass() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+     var ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+ var ConnHdlrPars pars;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+     for (var integer tn := 1; tn <= 4; tn := tn+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+           pars := valueof(t_Pars(t_RslChanNr_Bm(tn), ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+            vc_conn := f_start_handler(refers(f_TC_rsl_bs_pwr_static_ass), pars,</span><br><span style="color: hsl(120, 100%, 40%);">+                                     pcu_comp := false, trxc_comp := true);</span><br><span style="color: hsl(120, 100%, 40%);">+             vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+     Misc_Helpers.f_shutdown(__BFILE__, __LINE__);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_rsl_bs_pwr_static_power_control() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+   var ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+ var ConnHdlrPars pars;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+     for (var integer tn := 1; tn <= 4; tn := tn+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+           pars := valueof(t_Pars(t_RslChanNr_Bm(tn), ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+            vc_conn := f_start_handler(refers(f_TC_rsl_bs_pwr_static_power_control), pars,</span><br><span style="color: hsl(120, 100%, 40%);">+                                           pcu_comp := false, trxc_comp := true);</span><br><span style="color: hsl(120, 100%, 40%);">+             vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+     Misc_Helpers.f_shutdown(__BFILE__, __LINE__);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* target level -100, first rssi -90, ms power 7, expected increase to 7+6 within 6 seconds,</span><br><span> second rssi -110, ms power 7+6, expected decrease to 7 within 6 seconds,</span><br><span> These power levels are valid for all bands and require no special handling */</span><br><span>@@ -6012,6 +6105,8 @@</span><br><span>      execute( TC_meas_res_sign_sdcch4() );</span><br><span>        execute( TC_meas_res_sign_sdcch8() );</span><br><span>        execute( TC_meas_res_sign_tchh_toa256() );</span><br><span style="color: hsl(120, 100%, 40%);">+    execute( TC_rsl_bs_pwr_static_ass() );</span><br><span style="color: hsl(120, 100%, 40%);">+        execute( TC_rsl_bs_pwr_static_power_control() );</span><br><span>     execute( TC_rsl_ms_pwr_ctrl() );</span><br><span>     execute( TC_rsl_ms_pwr_dyn_active() );</span><br><span>       execute( TC_rsl_ms_pwr_dyn_active2() );</span><br><span>diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn</span><br><span>index e8bb67f..87de9a4 100644</span><br><span>--- a/library/RSL_Types.ttcn</span><br><span>+++ b/library/RSL_Types.ttcn</span><br><span>@@ -390,6 +390,14 @@</span><br><span>          uint5_t         power_level</span><br><span>  }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ template (value) RSL_IE_BS_Power ts_RSL_IE_BS_Power(uint5_t power_level,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                          boolean epc := false, boolean fpc := false) := {</span><br><span style="color: hsl(120, 100%, 40%);">+          reserved := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                epc := epc,</span><br><span style="color: hsl(120, 100%, 40%);">+           fpc := fpc,</span><br><span style="color: hsl(120, 100%, 40%);">+           power_level := power_level</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /* 9.3.7 */</span><br><span>  type enumerated RSL_AlgId {</span><br><span>          RSL_ALG_ID_A5_0 ('00000001'B),</span><br><span>@@ -1468,6 +1476,18 @@</span><br><span>              }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* 8.4.16: BTS <- BSC */</span><br><span style="color: hsl(120, 100%, 40%);">+   template (value) RSL_Message ts_RSL_BS_PWR_CTRL(template (value) RslChannelNr chan_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                        template (value) RSL_IE_BS_Power bs_power) := {</span><br><span style="color: hsl(120, 100%, 40%);">+               msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),</span><br><span style="color: hsl(120, 100%, 40%);">+           msg_type := RSL_MT_BS_POWER_CONTROL,</span><br><span style="color: hsl(120, 100%, 40%);">+          ies := {</span><br><span style="color: hsl(120, 100%, 40%);">+                      t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),</span><br><span style="color: hsl(120, 100%, 40%);">+                   t_RSL_IE(RSL_IE_BS_POWER, RSL_IE_Body:{bs_power := bs_power})</span><br><span style="color: hsl(120, 100%, 40%);">+                 /* One optional IE: BS POWER PARAMETERS */</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /* 8.4.19 BTS -> BSC */</span><br><span>   template (value) RSL_Message ts_RSL_RF_CHAN_REL_ACK(template (value) RslChannelNr chan_nr) :=</span><br><span>                ts_RSL_MsgDiscType(ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/14507">change 14507</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/14507"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: If91fb57b4070c60bb277d0b55d69ee3dde47ee48 </div>
<div style="display:none"> Gerrit-Change-Number: 14507 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Hoernchen <ewild@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>