<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/14089">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bts: Add TC_sacch_chan_act() to test SACCH INFO at RSL CHAN ACT<br><br>According to 3GPP Ts 48.058, every logical channel can receive some<br>specific SACCH filling at the time of RSL channel activation.  This<br>overrides the global SACCH FILLING.<br><br>Related: OS#3750<br>Change-Id: I8adb371a7e0b80792dd2fa35e5204802068df5ba<br>---<br>M bts/BTS_Tests.ttcn<br>M library/RSL_Types.ttcn<br>2 files changed, 82 insertions(+), 4 deletions(-)<br><br></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 5b69b5d..0ee3cd4 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -497,7 +497,7 @@</span><br><span>       var RSL_Message rx := f_rsl_transceive_ret(tx, exp_rx, id, ignore_other);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function f_rsl_chan_act(RSL_IE_ChannelMode mode, boolean encr_enable := false)</span><br><span style="color: hsl(120, 100%, 40%);">+function f_rsl_chan_act(RSL_IE_ChannelMode mode, boolean encr_enable := false, RSL_IE_List more_ies := {})</span><br><span> runs on ConnHdlr {</span><br><span>   var RSL_Message ch_act := valueof(ts_RSL_CHAN_ACT(g_chan_nr, mode));</span><br><span>         if (encr_enable) {</span><br><span>@@ -507,6 +507,7 @@</span><br><span>             ch_act.ies := ch_act.ies & { valueof(t_RSL_IE(RSL_IE_ENCR_INFO, RSL_IE_Body:{encr_info :=</span><br><span> encr_info})) };</span><br><span>     }</span><br><span style="color: hsl(120, 100%, 40%);">+     ch_act.ies := ch_act.ies & more_ies;</span><br><span>     f_rsl_transceive(ch_act, tr_RSL_CHAN_ACT_ACK(g_chan_nr), "RSL CHAN ACT");</span><br><span> }</span><br><span> </span><br><span>@@ -960,7 +961,52 @@</span><br><span>  Misc_Helpers.f_shutdown(__BFILE__, __LINE__);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* TODO: Test for SACCH information present in RSL CHAN ACT (overrides FILLING) */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Test for SACCH information present in RSL CHAN ACT (overrides FILLING) */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_sacch_chan_act(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+        var octetstring si5 := f_rnd_octstring(19);</span><br><span style="color: hsl(120, 100%, 40%);">+   var octetstring si6 := f_rnd_octstring(19);</span><br><span style="color: hsl(120, 100%, 40%);">+   var octetstring si5_specific := f_rnd_octstring(19);</span><br><span style="color: hsl(120, 100%, 40%);">+  var octetstring si6_specific := f_rnd_octstring(19);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* First, configure both SI5 and SI6 to be transmitted */</span><br><span style="color: hsl(120, 100%, 40%);">+     RSL.send(ts_RSL_SACCH_FILL(RSL_SYSTEM_INFO_5, si5));</span><br><span style="color: hsl(120, 100%, 40%);">+  RSL.send(ts_RSL_SACCH_FILL(RSL_SYSTEM_INFO_6, si6));</span><br><span style="color: hsl(120, 100%, 40%);">+</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%);">+  /* activate channel with different SACCH filling */</span><br><span style="color: hsl(120, 100%, 40%);">+   var RSL_SacchInfo sacch_info := valueof(ts_RSL_SacchInfo({</span><br><span style="color: hsl(120, 100%, 40%);">+                            ts_RSL_SacchInfoElem(RSL_SYSTEM_INFO_5, si5_specific),</span><br><span style="color: hsl(120, 100%, 40%);">+                                ts_RSL_SacchInfoElem(RSL_SYSTEM_INFO_6, si6_specific)</span><br><span style="color: hsl(120, 100%, 40%);">+                         }));</span><br><span style="color: hsl(120, 100%, 40%);">+  var RSL_IE_List addl_ies := { valueof(t_RSL_IE(RSL_IE_SACCH_INFO,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     RSL_IE_Body:{sacch_info := sacch_info})) };</span><br><span style="color: hsl(120, 100%, 40%);">+   f_est_dchan(more_ies := addl_ies);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* check that SACCH actually are received as expected */</span><br><span style="color: hsl(120, 100%, 40%);">+      f_sacch_present(si5_specific);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_sacch_present(si6_specific);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* release the channel */</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%);">+testcase TC_sacch_chan_act() 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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   for (var integer i := 0; i < sizeof(g_AllChannels); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+            pars := valueof(t_Pars(g_AllChannels[i], ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+              log(testcasename(), ": Starting for ", g_AllChannels[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+           vc_conn := f_start_handler(refers(f_TC_sacch_chan_act), pars);</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%);">+     /* TODO: do the above in parallel, rather than sequentially? */</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> /* TODO: Test for SACCH transmission rules in the context of special CHAN ACT (HO) */</span><br><span> </span><br><span> </span><br><span>@@ -1386,7 +1432,7 @@</span><br><span> }</span><br><span> </span><br><span> /* Establish dedicated channel: L1CTL + RSL side */</span><br><span style="color: hsl(0, 100%, 40%);">-private function f_est_dchan(boolean encr_enable := false) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_est_dchan(boolean encr_enable := false, RSL_IE_List more_ies := {}) runs on ConnHdlr {</span><br><span>  var GsmFrameNumber fn;</span><br><span>       var ImmediateAssignment imm_ass;</span><br><span>     var integer ra := 23;</span><br><span>@@ -1395,7 +1441,7 @@</span><br><span>        fn := f_rach_req_wait_chan_rqd(ra);</span><br><span> </span><br><span>      /* Activate channel on BTS side */</span><br><span style="color: hsl(0, 100%, 40%);">-      f_rsl_chan_act(g_pars.chan_mode, encr_enable);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_rsl_chan_act(g_pars.chan_mode, encr_enable, more_ies);</span><br><span> </span><br><span>         /* Send IMM.ASS via CCHAN */</span><br><span>         var ChannelDescription ch_desc := {</span><br><span>@@ -4418,6 +4464,7 @@</span><br><span>  execute( TC_sacch_info_mod() );</span><br><span>      execute( TC_sacch_multi() );</span><br><span>         execute( TC_sacch_multi_chg() );</span><br><span style="color: hsl(120, 100%, 40%);">+      execute( TC_sacch_chan_act() );</span><br><span>      execute( TC_rach_content() );</span><br><span>        execute( TC_rach_count() );</span><br><span>  execute( TC_rach_max_ta() );</span><br><span>diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn</span><br><span>index 39ba3d3..0d772b3 100644</span><br><span>--- a/library/RSL_Types.ttcn</span><br><span>+++ b/library/RSL_Types.ttcn</span><br><span>@@ -565,6 +565,35 @@</span><br><span>             cause_ext := omit</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* 9.3.29 */</span><br><span style="color: hsl(120, 100%, 40%);">+  type record RSL_SacchInfo {</span><br><span style="color: hsl(120, 100%, 40%);">+           uint8_t len,</span><br><span style="color: hsl(120, 100%, 40%);">+          uint8_t num_msgs,</span><br><span style="color: hsl(120, 100%, 40%);">+             RSL_SacchInfoElements elems</span><br><span style="color: hsl(120, 100%, 40%);">+   } with {</span><br><span style="color: hsl(120, 100%, 40%);">+              variant (len) "LENGTHTO(num_msgs,elems)";</span><br><span style="color: hsl(120, 100%, 40%);">+           variant (num_msgs) "LENGTHTO(elems)";</span><br><span style="color: hsl(120, 100%, 40%);">+               variant (num_msgs) "UNIT(elements)"</span><br><span style="color: hsl(120, 100%, 40%);">+ };</span><br><span style="color: hsl(120, 100%, 40%);">+    type record RSL_SacchInfoElement {</span><br><span style="color: hsl(120, 100%, 40%);">+            RSL_IE_SysinfoType si_type,</span><br><span style="color: hsl(120, 100%, 40%);">+           uint8_t len,</span><br><span style="color: hsl(120, 100%, 40%);">+          octetstring msg</span><br><span style="color: hsl(120, 100%, 40%);">+       } with {</span><br><span style="color: hsl(120, 100%, 40%);">+              variant (len) "LENGTHTO(msg)";</span><br><span style="color: hsl(120, 100%, 40%);">+      };</span><br><span style="color: hsl(120, 100%, 40%);">+    type record of RSL_SacchInfoElement RSL_SacchInfoElements;</span><br><span style="color: hsl(120, 100%, 40%);">+    template (value) RSL_SacchInfo ts_RSL_SacchInfo(template (value) RSL_SacchInfoElements elems) := {</span><br><span style="color: hsl(120, 100%, 40%);">+            len := 0, /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+           num_msgs := 0, /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+              elems := elems</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+     template (value) RSL_SacchInfoElement ts_RSL_SacchInfoElem(RSL_IE_SysinfoType tp, octetstring msg) := {</span><br><span style="color: hsl(120, 100%, 40%);">+               si_type := tp,</span><br><span style="color: hsl(120, 100%, 40%);">+                len := lengthof(msg),</span><br><span style="color: hsl(120, 100%, 40%);">+         msg := msg</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /* 9.3.40 */</span><br><span>         type enumerated RSL_ChanNeeded {</span><br><span>             RSL_CHANNEED_ANY        ('00'B),</span><br><span>@@ -703,6 +732,7 @@</span><br><span>               RSL_IE_ChanNeeded       chan_needed,</span><br><span>                 RSL_IE_CbCommandType    cb_cmd_type,</span><br><span>                 RSL_LV                  smscb_message,</span><br><span style="color: hsl(120, 100%, 40%);">+                RSL_SacchInfo           sacch_info,</span><br><span> </span><br><span>              RSL_IE_StartingTime     starting_time,</span><br><span>               RSL_IE_EncryptionInfo   encr_info,</span><br><span>@@ -755,6 +785,7 @@</span><br><span>                                     chan_needed, iei = RSL_IE_CHAN_NEEDED;</span><br><span>                                       cb_cmd_type, iei = RSL_IE_CB_CMD_TYPE;</span><br><span>                                       smscb_message, iei = RSL_IE_SMSCB_MSG;</span><br><span style="color: hsl(120, 100%, 40%);">+                                        sacch_info, iei = RSL_IE_SACCH_INFO;</span><br><span>                                         starting_time, iei = RSL_IE_STARTNG_TIME;</span><br><span>                                    encr_info, iei = RSL_IE_ENCR_INFO;</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/14089">change 14089</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/14089"/><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-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I8adb371a7e0b80792dd2fa35e5204802068df5ba </div>
<div style="display:none"> Gerrit-Change-Number: 14089 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>