<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21148">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved
  pespin: Looks good to me, but someone else must approve

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">library: move Osmocom_Types.Arfcn to GSM_Types.GsmBandArfcn<br><br>In some cases GsmArfcn itself is not enough.  It case of L1CTL<br>and GSMTAP, it needs to be equipped with a band discriminator:<br><br>  - DCS / PCS (as the numbers may overlap),<br>  - Downlink / Uplink (not yet there).<br><br>Let's rename this record and move it to GSM_Types.  Also, add<br>send / receive tamplates, so we can add new fields later.<br><br>Change-Id: I7a63f03bbd15a06caafb786122dc12991d115771<br>---<br>M bts/BTS_Tests.ttcn<br>M bts/BTS_Tests_LAPDm.ttcn<br>M library/GSMTAP_Types.ttcn<br>M library/GSM_Types.ttcn<br>M library/L1CTL_PortType.ttcn<br>M library/L1CTL_Types.ttcn<br>M library/LAPDm_RAW_PT.ttcn<br>M library/Osmocom_Types.ttcn<br>8 files changed, 50 insertions(+), 22 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 462e2d5..4be8d2b 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -585,7 +585,7 @@</span><br><span>                     for (j := 0; j < lengthof(g.trx_maio); j := j + 1) {</span><br><span>                              var FreqHopGroupItem gi := g.trx_maio[j];</span><br><span>                            var GsmArfcn arfcn := c_arfcn_list[gi.trx_nr];</span><br><span style="color: hsl(0, 100%, 40%);">-                          fhp.ma := fhp.ma & { { false, arfcn } };</span><br><span style="color: hsl(120, 100%, 40%);">+                          fhp.ma := fhp.ma & { valueof(ts_GsmBandArfcn(arfcn)) };</span><br><span>                          fhp.ma_map.ma[gi.trx_nr] := '1'B;</span><br><span>                    }</span><br><span> </span><br><span>@@ -636,7 +636,8 @@</span><br><span> }</span><br><span> </span><br><span> friend function f_l1_tune(L1CTL_PT L1CTL, L1ctlCcchMode ccch_mode := CCCH_MODE_COMBINED) {</span><br><span style="color: hsl(0, 100%, 40%);">-      f_L1CTL_FBSB(L1CTL, { false, mp_trx0_arfcn }, ccch_mode, mp_rxlev_exp);</span><br><span style="color: hsl(120, 100%, 40%);">+       var GsmBandArfcn arfcn := valueof(ts_GsmBandArfcn(mp_trx0_arfcn));</span><br><span style="color: hsl(120, 100%, 40%);">+    f_L1CTL_FBSB(L1CTL, arfcn, ccch_mode, mp_rxlev_exp);</span><br><span> }</span><br><span> </span><br><span> private function f_trxc_fake_rssi(TRXC_RSSI rssi) runs on ConnHdlr {</span><br><span>diff --git a/bts/BTS_Tests_LAPDm.ttcn b/bts/BTS_Tests_LAPDm.ttcn</span><br><span>index d961adb..0c032bb 100644</span><br><span>--- a/bts/BTS_Tests_LAPDm.ttcn</span><br><span>+++ b/bts/BTS_Tests_LAPDm.ttcn</span><br><span>@@ -43,7 +43,8 @@</span><br><span> </span><br><span> /* master function switching to a dedicated radio channel */</span><br><span> function f_switch_dcch() runs on ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">-       var BCCH_tune_req tune_req := { arfcn := { false, mp_trx0_arfcn }, combined_ccch := true };</span><br><span style="color: hsl(120, 100%, 40%);">+   var GsmBandArfcn arfcn := valueof(ts_GsmBandArfcn(mp_trx0_arfcn));</span><br><span style="color: hsl(120, 100%, 40%);">+    var BCCH_tune_req tune_req := { arfcn := arfcn, combined_ccch := true };</span><br><span>     var DCCH_switch_req sw_req;</span><br><span> </span><br><span>      /* Craft channel description (with or without frequency hopping parameters) */</span><br><span>diff --git a/library/GSMTAP_Types.ttcn b/library/GSMTAP_Types.ttcn</span><br><span>index 3288284..76e6ea3 100644</span><br><span>--- a/library/GSMTAP_Types.ttcn</span><br><span>+++ b/library/GSMTAP_Types.ttcn</span><br><span>@@ -1,5 +1,6 @@</span><br><span> module GSMTAP_Types {</span><br><span>   import from Osmocom_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+        import from GSM_Types all;</span><br><span> </span><br><span>       const uint8_t GSMTAP_VERSION    := 2;</span><br><span> </span><br><span>@@ -49,7 +50,7 @@</span><br><span>                uint8_t         hdr_len,</span><br><span>             GsmtapMsgType   msg_type,</span><br><span>            uint8_t         timeslot,</span><br><span style="color: hsl(0, 100%, 40%);">-               Arfcn           arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                GsmBandArfcn    arfcn,</span><br><span>               int8_t          signal_dbm,</span><br><span>          int8_t          snr_db,</span><br><span>              uint32_t        frame_number,</span><br><span>diff --git a/library/GSM_Types.ttcn b/library/GSM_Types.ttcn</span><br><span>index bcf2794..d954962 100644</span><br><span>--- a/library/GSM_Types.ttcn</span><br><span>+++ b/library/GSM_Types.ttcn</span><br><span>@@ -29,6 +29,31 @@</span><br><span> type uint16_t GsmLac;</span><br><span> type uint16_t GsmCellId;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* ARFCN with explicit band discrimination */</span><br><span style="color: hsl(120, 100%, 40%);">+type record GsmBandArfcn {</span><br><span style="color: hsl(120, 100%, 40%);">+   boolean         pcs,</span><br><span style="color: hsl(120, 100%, 40%);">+  BIT5            spare,</span><br><span style="color: hsl(120, 100%, 40%);">+        GsmArfcn        arfcn</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+       variant (arfcn) "BYTEORDER(last)"</span><br><span style="color: hsl(120, 100%, 40%);">+   variant (arfcn) "FIELDLENGTH(10)"</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%);">+template (value) GsmBandArfcn</span><br><span style="color: hsl(120, 100%, 40%);">+ts_GsmBandArfcn(template (value) GsmArfcn arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+            template (value) boolean pcs := false) := {</span><br><span style="color: hsl(120, 100%, 40%);">+   pcs := pcs,</span><br><span style="color: hsl(120, 100%, 40%);">+   spare := '00000'B,</span><br><span style="color: hsl(120, 100%, 40%);">+    arfcn := arfcn</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+template GsmBandArfcn</span><br><span style="color: hsl(120, 100%, 40%);">+tr_GsmBandArfcn(template (present) GsmArfcn arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+         template (present) boolean pcs := ?) := {</span><br><span style="color: hsl(120, 100%, 40%);">+     pcs := pcs,</span><br><span style="color: hsl(120, 100%, 40%);">+   spare := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+   arfcn := arfcn</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> type enumerated GprsCodingScheme {</span><br><span>   CS1, CS2, CS3, CS4</span><br><span> };</span><br><span>diff --git a/library/L1CTL_PortType.ttcn b/library/L1CTL_PortType.ttcn</span><br><span>index 19b3ee3..5c554c2 100644</span><br><span>--- a/library/L1CTL_PortType.ttcn</span><br><span>+++ b/library/L1CTL_PortType.ttcn</span><br><span>@@ -42,7 +42,10 @@</span><br><span>               return len;</span><br><span>  }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   function f_L1CTL_FBSB(L1CTL_PT pt, Arfcn arfcn, L1ctlCcchMode ccch_mode := CCCH_MODE_COMBINED, integer rxlev_exp := 57) {</span><br><span style="color: hsl(120, 100%, 40%);">+     function f_L1CTL_FBSB(L1CTL_PT pt, GsmBandArfcn arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                              L1ctlCcchMode ccch_mode := CCCH_MODE_COMBINED,</span><br><span style="color: hsl(120, 100%, 40%);">+                        integer rxlev_exp := 57)</span><br><span style="color: hsl(120, 100%, 40%);">+        {</span><br><span>            timer T := 15.0;</span><br><span>             for (var integer i := 0; i < 10; i := i+1) {</span><br><span>                      var L1ctlDlMessage dl;</span><br><span>diff --git a/library/L1CTL_Types.ttcn b/library/L1CTL_Types.ttcn</span><br><span>index fe375ef..220a2cd 100644</span><br><span>--- a/library/L1CTL_Types.ttcn</span><br><span>+++ b/library/L1CTL_Types.ttcn</span><br><span>@@ -122,7 +122,7 @@</span><br><span>    type record L1ctlDlInfo {</span><br><span>            RslChannelNr    chan_nr,</span><br><span>             RslLinkId       link_id,</span><br><span style="color: hsl(0, 100%, 40%);">-                Arfcn           arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                GsmBandArfcn    arfcn,</span><br><span>               uint32_t        frame_nr,</span><br><span>            GsmRxLev        rx_level,</span><br><span>            uint8_t         snr,</span><br><span>@@ -245,7 +245,7 @@</span><br><span>           uint8_t         ts_nr,</span><br><span>               OCT1            padding,</span><br><span>             uint32_le       fn,</span><br><span style="color: hsl(0, 100%, 40%);">-             Arfcn           arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                GsmBandArfcn    arfcn,</span><br><span>               OCT2            padding2</span><br><span>     } with { variant "" };</span><br><span> </span><br><span>@@ -264,7 +264,7 @@</span><br><span>   };</span><br><span> </span><br><span>       type record L1ctlFbsbReq {</span><br><span style="color: hsl(0, 100%, 40%);">-              Arfcn           arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                GsmBandArfcn    arfcn,</span><br><span>               uint16_t        timeout_tdma_frames,</span><br><span>                 uint16_t        freq_err_thresh1,</span><br><span>            uint16_t        freq_err_thresh2,</span><br><span>@@ -319,11 +319,11 @@</span><br><span> </span><br><span>        type record L1ctlH0 {</span><br><span>                uint8_t         h,</span><br><span style="color: hsl(0, 100%, 40%);">-              Arfcn           arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                GsmBandArfcn    arfcn,</span><br><span>               octetstring     padding length(130)</span><br><span>  } with { variant "" };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    type record length(0..64) of Arfcn L1ctlMA;</span><br><span style="color: hsl(120, 100%, 40%);">+   type record length(0..64) of GsmBandArfcn L1ctlMA;</span><br><span>   type record L1ctlH1 {</span><br><span>                uint8_t         h,</span><br><span>           uint8_t         hsn,</span><br><span>@@ -477,7 +477,7 @@</span><br><span> </span><br><span>       /* for generating FBSB_REQ */</span><br><span>        template (value) L1ctlUlMessage</span><br><span style="color: hsl(0, 100%, 40%);">- ts_L1CTL_FBSB_REQ(template (value) Arfcn arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_FBSB_REQ(template (value) GsmBandArfcn arfcn,</span><br><span>                         template (value) L1ctlFbsbFlags flags,</span><br><span>                       template (value) uint8_t sync_info_idx,</span><br><span>                      template (value) L1ctlCcchMode ccch_mode,</span><br><span>@@ -655,7 +655,7 @@</span><br><span>                            h0h1 := {</span><br><span>                                    h0 := {</span><br><span>                                              h := 0,</span><br><span style="color: hsl(0, 100%, 40%);">-                                         arfcn := { false, arfcn },</span><br><span style="color: hsl(120, 100%, 40%);">+                                            arfcn := ts_GsmBandArfcn(arfcn),</span><br><span>                                             padding := f_pad_oct(''O, 130, '00'O)</span><br><span>                                        }</span><br><span>                            }</span><br><span>@@ -813,7 +813,7 @@</span><br><span> </span><br><span>  template (value) L1ctlUlMessage</span><br><span>      ts_L1CTL_DATA_ABS_REQ(octetstring l2_data,</span><br><span style="color: hsl(0, 100%, 40%);">-                            template (value) Arfcn arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                         template (value) GsmBandArfcn arfcn,</span><br><span>                         template (value) uint8_t ts,</span><br><span>                         template (value) GsmFrameNumber fn,</span><br><span>                          template (value) L1ctlGprsCs cs := L1CTL_CS1,</span><br><span>diff --git a/library/LAPDm_RAW_PT.ttcn b/library/LAPDm_RAW_PT.ttcn</span><br><span>index d0ad24b..3e2fba2 100644</span><br><span>--- a/library/LAPDm_RAW_PT.ttcn</span><br><span>+++ b/library/LAPDm_RAW_PT.ttcn</span><br><span>@@ -22,7 +22,7 @@</span><br><span> </span><br><span>         /* request to tune to a given ARFCN and start BCCH decoding */</span><br><span>       type record BCCH_tune_req {</span><br><span style="color: hsl(0, 100%, 40%);">-             Arfcn arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+          GsmBandArfcn arfcn,</span><br><span>          boolean combined_ccch</span><br><span>        }</span><br><span> </span><br><span>@@ -102,7 +102,7 @@</span><br><span>          GprsCodingScheme cs,</span><br><span>                 uint8_t ts_nr,</span><br><span>               GsmFrameNumber fn,</span><br><span style="color: hsl(0, 100%, 40%);">-              Arfcn arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+          GsmBandArfcn arfcn,</span><br><span>          RlcmacUlBlock block</span><br><span>  }</span><br><span>    type union RLCMAC_ph_data_req {</span><br><span>@@ -198,7 +198,8 @@</span><br><span>        }</span><br><span> </span><br><span>        /* tune to given ARFCN and start BCCH/CCCH decoding */</span><br><span style="color: hsl(0, 100%, 40%);">-  private function f_tune_bcch(Arfcn arfcn, boolean combined) runs on lapdm_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        private function f_tune_bcch(GsmBandArfcn arfcn, boolean combined)</span><br><span style="color: hsl(120, 100%, 40%);">+    runs on lapdm_CT {</span><br><span>           var L1ctlCcchMode mode := CCCH_MODE_NON_COMBINED;</span><br><span>            if (combined) {</span><br><span>                      mode := CCCH_MODE_COMBINED;</span><br><span>@@ -274,7 +275,8 @@</span><br><span>    }</span><br><span> </span><br><span>        template (value) RLCMAC_ph_data_req ts_PH_DATA_ABS(uint8_t tbf_id, GprsCodingScheme cs,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                    uint8_t ts, uint32_t fn, Arfcn arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         uint8_t ts, uint32_t fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      GsmBandArfcn arfcn,</span><br><span>                                                          RlcmacUlBlock block) := {</span><br><span>                 abs := {</span><br><span>                     tbf_id := tbf_id,</span><br><span>diff --git a/library/Osmocom_Types.ttcn b/library/Osmocom_Types.ttcn</span><br><span>index 4012f6d..862509b 100644</span><br><span>--- a/library/Osmocom_Types.ttcn</span><br><span>+++ b/library/Osmocom_Types.ttcn</span><br><span>@@ -44,11 +44,6 @@</span><br><span> const BIT1 CSN1_L := '0'B;</span><br><span> const BIT1 CSN1_H := '1'B;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-type record Arfcn {</span><br><span style="color: hsl(0, 100%, 40%);">-  boolean         pcs,</span><br><span style="color: hsl(0, 100%, 40%);">-    uint15_t        arfcn</span><br><span style="color: hsl(0, 100%, 40%);">-} with { variant "" };</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /* based on Linux */</span><br><span> type enumerated AddressFamily {</span><br><span>     AF_UNSPEC       ('00'O),</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21148">change 21148</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/+/21148"/><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: I7a63f03bbd15a06caafb786122dc12991d115771 </div>
<div style="display:none"> Gerrit-Change-Number: 21148 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>