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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">library/PCUIF_Types: get rid of version 9 compatibility glue<br><br>Change-Id: Ia9f366ca1fdad700a90ca3367e43523f7bac39a1<br>Related: OS#5083<br>---<br>M bts/BTS_Tests.ttcn<br>M library/PCUIF_Types.ttcn<br>M pcu/PCUIF_Components.ttcn<br>M pcu/PCU_Tests.ttcn<br>4 files changed, 95 insertions(+), 194 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 1e96dcb..2dc6635 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -5687,7 +5687,7 @@</span><br><span> </span><br><span>      for (var integer i := 0; i < mp_transceiver_num; i := i + 1) {</span><br><span>            for (var integer tn := 0; tn < 8; tn := tn + 1) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    if (info_ind.trx.v10[i].pdch_mask[tn] != '1'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      if (info_ind.trx[i].pdch_mask[tn] != '1'B) {</span><br><span>                                 /* Skip inactive timeslots */</span><br><span>                                continue;</span><br><span>                    }</span><br><span>@@ -5708,7 +5708,7 @@</span><br><span>                            tr_ts := tr_PCUIF_InfoTrxTsH0;</span><br><span>                       }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                   var PCUIF_InfoTrxTs ts := info_ind.trx.v10[i].ts[tn];</span><br><span style="color: hsl(120, 100%, 40%);">+                 var PCUIF_InfoTrxTs ts := info_ind.trx[i].ts[tn];</span><br><span>                    log("Checking timeslot #", tn, " of trx#", i, ": ", ts);</span><br><span>                       if (not match(ts, tr_ts)) {</span><br><span>                          setverdict(fail, "Hopping parameters do not match: ",</span><br><span>@@ -5720,7 +5720,7 @@</span><br><span>      }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Verify IPv4 NSVC address in the INFO.ind message (version >= 10) */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Verify IPv4 NSVC address in the INFO.ind message */</span><br><span> testcase TC_pcu_socket_nsvc_ipv4() runs on test_CT {</span><br><span>  f_init_vty_bsc();</span><br><span>    f_vty_config2(BSCVTY, {"network", "bts 0"} , "gprs nsvc 0 remote ip 127.127.127.127");</span><br><span>@@ -5729,23 +5729,19 @@</span><br><span>       f_init();</span><br><span> </span><br><span>        var PCUIF_RemoteAddr remote_addr := g_pcu_last_info.u.info_ind.remote_addr;</span><br><span style="color: hsl(0, 100%, 40%);">-     if (not ischosen(remote_addr.v10)) {</span><br><span style="color: hsl(0, 100%, 40%);">-            Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,</span><br><span style="color: hsl(0, 100%, 40%);">-                                      log2str("Unexpected remote_addr: ", remote_addr));</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+     var template PCUIF_RemoteAddr tr_remote_addr := {</span><br><span style="color: hsl(120, 100%, 40%);">+             addr_type := { PCUIF_ADDR_TYPE_IPV4, ? },</span><br><span style="color: hsl(120, 100%, 40%);">+             addr := { f_inet_addr("127.127.127.127"), ? }</span><br><span style="color: hsl(120, 100%, 40%);">+       };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  if (remote_addr.v10.addr_type[0] != PCUIF_ADDR_TYPE_IPV4) {</span><br><span style="color: hsl(0, 100%, 40%);">-             setverdict(fail, "Received address family is not IPv4");</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       if (substr(remote_addr.v10.addr[0], 0, 4) != f_inet_addr("127.127.127.127")) {</span><br><span style="color: hsl(0, 100%, 40%);">-                setverdict(fail, "Unexpected address: ", remote_addr.v10.addr[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+  if (not match(remote_addr, tr_remote_addr)) {</span><br><span style="color: hsl(120, 100%, 40%);">+         setverdict(fail, "NSVC address ", remote_addr, " does not match ", tr_remote_addr);</span><br><span>      }</span><br><span> </span><br><span>        setverdict(pass);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Verify IPv4 NSVC address in the INFO.ind message (version >= 10) */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Verify IPv4 NSVC address in the INFO.ind message */</span><br><span> testcase TC_pcu_socket_nsvc_ipv6() runs on test_CT {</span><br><span>  f_init_vty_bsc();</span><br><span>    f_vty_config2(BSCVTY, {"network", "bts 0"} , "gprs nsvc 0 remote ip fd00::ca:ff:ee");</span><br><span>@@ -5753,17 +5749,13 @@</span><br><span>        f_init();</span><br><span> </span><br><span>        var PCUIF_RemoteAddr remote_addr := g_pcu_last_info.u.info_ind.remote_addr;</span><br><span style="color: hsl(0, 100%, 40%);">-     if (not ischosen(remote_addr.v10)) {</span><br><span style="color: hsl(0, 100%, 40%);">-            Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,</span><br><span style="color: hsl(0, 100%, 40%);">-                                      log2str("Unexpected remote_addr: ", remote_addr));</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+     var template PCUIF_RemoteAddr tr_remote_addr := {</span><br><span style="color: hsl(120, 100%, 40%);">+             addr_type := { PCUIF_ADDR_TYPE_IPV6, ? },</span><br><span style="color: hsl(120, 100%, 40%);">+             addr := { f_inet6_addr("fd00::ca:ff:ee"), ? }</span><br><span style="color: hsl(120, 100%, 40%);">+       };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  if (remote_addr.v10.addr_type[0] != PCUIF_ADDR_TYPE_IPV6) {</span><br><span style="color: hsl(0, 100%, 40%);">-             setverdict(fail, "Received address family is not IPv6");</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       if (remote_addr.v10.addr[0] != f_inet6_addr("fd00::ca:ff:ee")) {</span><br><span style="color: hsl(0, 100%, 40%);">-              setverdict(fail, "Unexpected address: ", remote_addr.v10.addr[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+  if (not match(remote_addr, tr_remote_addr)) {</span><br><span style="color: hsl(120, 100%, 40%);">+         setverdict(fail, "NSVC address ", remote_addr, " does not match ", tr_remote_addr);</span><br><span>      }</span><br><span> </span><br><span>        setverdict(pass);</span><br><span>@@ -5779,7 +5771,7 @@</span><br><span>    var PCUIF_send_data sd;</span><br><span> </span><br><span>  [] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd {</span><br><span style="color: hsl(0, 100%, 40%);">-          var BIT8 pdch_mask := f_PCUIF_ver_INFO_PDCHMask_get(sd.data.u.info_ind, trx_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+              var BIT8 pdch_mask := sd.data.u.info_ind.trx[trx_nr].pdch_mask;</span><br><span>              if (substr(pdch_mask, g_chan_nr.tn, 1) != exp) {</span><br><span>                     repeat;</span><br><span>              }</span><br><span>@@ -7358,12 +7350,9 @@</span><br><span>           execute( TC_dyn_osmo_pdch_double_act() );</span><br><span>            execute( TC_dyn_ipa_pdch_act_deact() );</span><br><span>              execute( TC_dyn_ipa_pdch_act_tchf_act_nack() );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-         if (PCUIF_Types.mp_pcuif_version >= 10) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    execute( TC_pcu_info_ind_fh_params() );</span><br><span style="color: hsl(0, 100%, 40%);">-                 execute( TC_pcu_socket_nsvc_ipv4() );</span><br><span style="color: hsl(0, 100%, 40%);">-                   execute( TC_pcu_socket_nsvc_ipv6() );</span><br><span style="color: hsl(0, 100%, 40%);">-           }</span><br><span style="color: hsl(120, 100%, 40%);">+             execute( TC_pcu_info_ind_fh_params() );</span><br><span style="color: hsl(120, 100%, 40%);">+               execute( TC_pcu_socket_nsvc_ipv4() );</span><br><span style="color: hsl(120, 100%, 40%);">+         execute( TC_pcu_socket_nsvc_ipv6() );</span><br><span>        } else {</span><br><span>             log("PCU socket path not available, skipping PCU tests");</span><br><span>  }</span><br><span>diff --git a/library/PCUIF_Types.ttcn b/library/PCUIF_Types.ttcn</span><br><span>index 96b2bac..2216a0e 100644</span><br><span>--- a/library/PCUIF_Types.ttcn</span><br><span>+++ b/library/PCUIF_Types.ttcn</span><br><span>@@ -153,30 +153,14 @@</span><br><span> } with { variant (ma) "BYTEORDER(first), BITORDER(msb)" };</span><br><span> private type record length(8) of PCUIF_InfoTrxTs PCUIF_InfoTrxTsList;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Version >= 10 specific coding */</span><br><span style="color: hsl(0, 100%, 40%);">-private type record PCUIF_InfoV10Trx {</span><br><span style="color: hsl(120, 100%, 40%);">+private type record PCUIF_InfoTrx {</span><br><span>         uint16_t                arfcn,</span><br><span>       BIT8                    pdch_mask,</span><br><span>   OCT1                    spare,</span><br><span>       uint32_t                hLayer1,</span><br><span>     PCUIF_InfoTrxTsList     ts</span><br><span> } with { variant (pdch_mask) "BITORDER(msb)" };</span><br><span style="color: hsl(0, 100%, 40%);">-type record length(8) of PCUIF_InfoV10Trx PCUIF_InfoV10TrxList;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* Version <= 9 specific coding */</span><br><span style="color: hsl(0, 100%, 40%);">-private type record PCUIF_InfoV09Trx {</span><br><span style="color: hsl(0, 100%, 40%);">-       uint16_t        arfcn,</span><br><span style="color: hsl(0, 100%, 40%);">-  BIT8            pdch_mask,</span><br><span style="color: hsl(0, 100%, 40%);">-      OCT1            spare,</span><br><span style="color: hsl(0, 100%, 40%);">-  OCT8            tsc,</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t        hLayer1</span><br><span style="color: hsl(0, 100%, 40%);">-} with { variant (pdch_mask) "BITORDER(msb)" };</span><br><span style="color: hsl(0, 100%, 40%);">-private type record length(8) of PCUIF_InfoV09Trx PCUIF_InfoV09TrxList;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-type union PCUIF_InfoTrxs {</span><br><span style="color: hsl(0, 100%, 40%);">-      PCUIF_InfoV09TrxList    v09,</span><br><span style="color: hsl(0, 100%, 40%);">-    PCUIF_InfoV10TrxList    v10</span><br><span style="color: hsl(0, 100%, 40%);">-} with { variant "" };</span><br><span style="color: hsl(120, 100%, 40%);">+type record length(8) of PCUIF_InfoTrx PCUIF_InfoTrxs;</span><br><span> </span><br><span> type record PCUIF_info_ind {</span><br><span>      uint32_t        version,</span><br><span>@@ -216,20 +200,6 @@</span><br><span>      record length(2) of uint16_t    local_port,</span><br><span>  record length(2) of uint16_t    remote_port,</span><br><span>         PCUIF_RemoteAddr                remote_addr</span><br><span style="color: hsl(0, 100%, 40%);">-} with {</span><br><span style="color: hsl(0, 100%, 40%);">-     /* NOTE: TITAN is not smart enough to handle 'version < 10' and 'version > 9',</span><br><span style="color: hsl(0, 100%, 40%);">-     * so we cannot support more than two versions at the same time here. Sigh. */</span><br><span style="color: hsl(0, 100%, 40%);">-  variant (trx) "CROSSTAG(v09, version = 9; v10, version = 10)"</span><br><span style="color: hsl(0, 100%, 40%);">- variant (remote_addr) "CROSSTAG(v09, version = 9; v10, version = 10)"</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-type union PCUIF_RemoteAddr {</span><br><span style="color: hsl(0, 100%, 40%);">-  PCUIF_RemoteAddrV09             v09,</span><br><span style="color: hsl(0, 100%, 40%);">-    PCUIF_RemoteAddrV10             v10</span><br><span style="color: hsl(0, 100%, 40%);">-} with { variant "" };</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-type record PCUIF_RemoteAddrV09 {</span><br><span style="color: hsl(0, 100%, 40%);">-    record length(2) of OCT4        addr</span><br><span> } with { variant "" };</span><br><span> </span><br><span> type enumerated PCUIF_AddrType {</span><br><span>@@ -238,7 +208,7 @@</span><br><span>       PCUIF_ADDR_TYPE_IPV6            ('29'O)</span><br><span> } with { variant "FIELDLENGTH(8)" };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-type record PCUIF_RemoteAddrV10 {</span><br><span style="color: hsl(120, 100%, 40%);">+type record PCUIF_RemoteAddr {</span><br><span>       record length(2) of PCUIF_AddrType      addr_type,</span><br><span>   record length(2) of octetstring         addr length(16)</span><br><span> } with { variant "" };</span><br><span>@@ -822,9 +792,10 @@</span><br><span>   ma := ma</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-template (value) PCUIF_InfoV10Trx ts_PCUIF_InfoV10Trx(template (value) uint16_t arfcn := 871,</span><br><span style="color: hsl(0, 100%, 40%);">-                                               template (value) BIT8 pdch_mask := '00000001'B,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                 template (value) uint3_t tsc := 7) := {</span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PCUIF_InfoTrx</span><br><span style="color: hsl(120, 100%, 40%);">+ts_PCUIF_InfoTrx(template (value) uint16_t arfcn := 871,</span><br><span style="color: hsl(120, 100%, 40%);">+                template (value) BIT8 pdch_mask := '00000001'B,</span><br><span style="color: hsl(120, 100%, 40%);">+               template (value) uint3_t tsc := 7) := {</span><br><span>     arfcn := arfcn,</span><br><span>      pdch_mask := pdch_mask,</span><br><span>      spare := '00'O,</span><br><span>@@ -837,34 +808,16 @@</span><br><span>      }</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-template (value) PCUIF_InfoV09Trx ts_PCUIF_InfoV09Trx(template (value) uint16_t arfcn := 871,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                      template (value) BIT8 pdch_mask := '00000001'B,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                 OCT1 tsc := '07'O) := {</span><br><span style="color: hsl(0, 100%, 40%);">-   arfcn := arfcn,</span><br><span style="color: hsl(0, 100%, 40%);">- pdch_mask := pdch_mask,</span><br><span style="color: hsl(0, 100%, 40%);">- spare := '00'O,</span><br><span style="color: hsl(0, 100%, 40%);">- tsc := tsc & tsc & tsc & tsc & tsc & tsc & tsc & tsc,</span><br><span style="color: hsl(0, 100%, 40%);">-       hLayer1 := 0</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-template (value) PCUIF_InfoV09Trx ts_PCUIF_InfoV09TrxNULL := ts_PCUIF_InfoV09Trx(0, '00000000'B, '00'O);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-template (value) PCUIF_InfoTrxs ts_PCUIF_InfoV09Trxs_def(uint16_t base_arfcn) := {</span><br><span style="color: hsl(0, 100%, 40%);">- v09 := {</span><br><span style="color: hsl(0, 100%, 40%);">-                ts_PCUIF_InfoV09Trx(arfcn := base_arfcn + 0), ts_PCUIF_InfoV09TrxNULL,</span><br><span style="color: hsl(0, 100%, 40%);">-          ts_PCUIF_InfoV09TrxNULL, ts_PCUIF_InfoV09TrxNULL,</span><br><span style="color: hsl(0, 100%, 40%);">-               ts_PCUIF_InfoV09TrxNULL, ts_PCUIF_InfoV09TrxNULL,</span><br><span style="color: hsl(0, 100%, 40%);">-               ts_PCUIF_InfoV09TrxNULL, ts_PCUIF_InfoV09TrxNULL</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-template (value) PCUIF_InfoTrxs ts_PCUIF_InfoV10Trxs_def(uint16_t base_arfcn) := {</span><br><span style="color: hsl(0, 100%, 40%);">-   v10 := {</span><br><span style="color: hsl(0, 100%, 40%);">-                ts_PCUIF_InfoV10Trx(arfcn := base_arfcn + 0), ts_PCUIF_InfoV10Trx(arfcn := base_arfcn + 1),</span><br><span style="color: hsl(0, 100%, 40%);">-             ts_PCUIF_InfoV10Trx(arfcn := base_arfcn + 2), ts_PCUIF_InfoV10Trx(arfcn := base_arfcn + 3),</span><br><span style="color: hsl(0, 100%, 40%);">-             ts_PCUIF_InfoV10Trx(arfcn := base_arfcn + 4), ts_PCUIF_InfoV10Trx(arfcn := base_arfcn + 5),</span><br><span style="color: hsl(0, 100%, 40%);">-             ts_PCUIF_InfoV10Trx(arfcn := base_arfcn + 6), ts_PCUIF_InfoV10Trx(arfcn := base_arfcn + 7)</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PCUIF_InfoTrxs</span><br><span style="color: hsl(120, 100%, 40%);">+ts_PCUIF_InfoTrxs_def(uint16_t base_arfcn) := {</span><br><span style="color: hsl(120, 100%, 40%);">+   ts_PCUIF_InfoTrx(arfcn := base_arfcn + 0),</span><br><span style="color: hsl(120, 100%, 40%);">+    ts_PCUIF_InfoTrx(arfcn := base_arfcn + 1),</span><br><span style="color: hsl(120, 100%, 40%);">+    ts_PCUIF_InfoTrx(arfcn := base_arfcn + 2),</span><br><span style="color: hsl(120, 100%, 40%);">+    ts_PCUIF_InfoTrx(arfcn := base_arfcn + 3),</span><br><span style="color: hsl(120, 100%, 40%);">+    ts_PCUIF_InfoTrx(arfcn := base_arfcn + 4),</span><br><span style="color: hsl(120, 100%, 40%);">+    ts_PCUIF_InfoTrx(arfcn := base_arfcn + 5),</span><br><span style="color: hsl(120, 100%, 40%);">+    ts_PCUIF_InfoTrx(arfcn := base_arfcn + 6),</span><br><span style="color: hsl(120, 100%, 40%);">+    ts_PCUIF_InfoTrx(arfcn := base_arfcn + 7)</span><br><span> };</span><br><span> </span><br><span> template (value) PCUIF_Message ts_PCUIF_INFO_IND(template (value) uint8_t bts_nr,</span><br><span>@@ -1005,39 +958,12 @@</span><br><span> }</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* TODO: remove this as soon as we drop version 9 support */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_PCUIF_ver_INFO_Trxs(uint16_t base_arfcn)</span><br><span style="color: hsl(0, 100%, 40%);">-return PCUIF_InfoTrxs {</span><br><span style="color: hsl(0, 100%, 40%);">-    if (PCUIF_Types.mp_pcuif_version >= 10) {</span><br><span style="color: hsl(0, 100%, 40%);">-            return valueof(ts_PCUIF_InfoV10Trxs_def(base_arfcn));</span><br><span style="color: hsl(0, 100%, 40%);">-   } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                return valueof(ts_PCUIF_InfoV09Trxs_def(base_arfcn));</span><br><span style="color: hsl(0, 100%, 40%);">-   }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-function f_PCUIF_ver_INFO_PDCHMask_get(in PCUIF_info_ind info, uint8_t trx_nr)</span><br><span style="color: hsl(0, 100%, 40%);">-return BIT8 {</span><br><span style="color: hsl(0, 100%, 40%);">-   if (PCUIF_Types.mp_pcuif_version >= 10) {</span><br><span style="color: hsl(0, 100%, 40%);">-            return info.trx.v10[trx_nr].pdch_mask;</span><br><span style="color: hsl(0, 100%, 40%);">-  } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                return info.trx.v09[trx_nr].pdch_mask;</span><br><span style="color: hsl(0, 100%, 40%);">-  }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-function f_PCUIF_ver_INFO_PDCHMask_set(inout PCUIF_info_ind info, BIT8 pdch_mask,</span><br><span style="color: hsl(0, 100%, 40%);">-                                    template (present) uint8_t trx_nr := ?)</span><br><span style="color: hsl(120, 100%, 40%);">+function f_PCUIF_PDCHMask_set(inout PCUIF_info_ind info, BIT8 pdch_mask,</span><br><span style="color: hsl(120, 100%, 40%);">+                            template (present) uint8_t trx_nr := ?)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      if (PCUIF_Types.mp_pcuif_version >= 10) {</span><br><span style="color: hsl(0, 100%, 40%);">-            for (var integer nr := 0; nr < lengthof(info.trx.v10); nr := nr + 1) {</span><br><span style="color: hsl(0, 100%, 40%);">-                       if (match(nr, trx_nr)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                info.trx.v10[nr].pdch_mask := pdch_mask;</span><br><span style="color: hsl(0, 100%, 40%);">-                        }</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span style="color: hsl(0, 100%, 40%);">-       } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                for (var integer nr := 0; nr < lengthof(info.trx.v09); nr := nr + 1) {</span><br><span style="color: hsl(0, 100%, 40%);">-                       if (match(nr, trx_nr)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                info.trx.v09[nr].pdch_mask := pdch_mask;</span><br><span style="color: hsl(0, 100%, 40%);">-                        }</span><br><span style="color: hsl(120, 100%, 40%);">+     for (var integer nr := 0; nr < lengthof(info.trx); nr := nr + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+         if (match(nr, trx_nr)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      info.trx[nr].pdch_mask := pdch_mask;</span><br><span>                 }</span><br><span>    }</span><br><span> }</span><br><span>@@ -1054,31 +980,21 @@</span><br><span> }</span><br><span> </span><br><span> /* TODO: second (redundant) NSVC connection is not (yet) supported */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_PCUIF_ver_INFO_RemoteAddr(PCUIF_AddrType addr_type,</span><br><span style="color: hsl(0, 100%, 40%);">-                              charstring addr)</span><br><span style="color: hsl(120, 100%, 40%);">+function f_PCUIF_RemoteAddr(PCUIF_AddrType addr_type,</span><br><span style="color: hsl(120, 100%, 40%);">+                      charstring addr_str)</span><br><span> return PCUIF_RemoteAddr {</span><br><span>        var PCUIF_RemoteAddr remote_addr;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (PCUIF_Types.mp_pcuif_version >= 10) {</span><br><span style="color: hsl(0, 100%, 40%);">-            remote_addr.v10.addr_type[0] := addr_type;</span><br><span style="color: hsl(0, 100%, 40%);">-              if (addr_type == PCUIF_ADDR_TYPE_IPV4)  {</span><br><span style="color: hsl(0, 100%, 40%);">-                       remote_addr.v10.addr[0] := f_inet_addr(addr);</span><br><span style="color: hsl(0, 100%, 40%);">-           } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        remote_addr.v10.addr[0] := f_inet6_addr(addr);</span><br><span style="color: hsl(0, 100%, 40%);">-          }</span><br><span style="color: hsl(0, 100%, 40%);">-               remote_addr.v10.addr_type[1] := PCUIF_ADDR_TYPE_UNSPEC;</span><br><span style="color: hsl(0, 100%, 40%);">-         remote_addr.v10.addr[1] := f_pad_oct(''O, 16, '00'O);</span><br><span style="color: hsl(120, 100%, 40%);">+ remote_addr.addr_type[0] := addr_type;</span><br><span style="color: hsl(120, 100%, 40%);">+        if (addr_type == PCUIF_ADDR_TYPE_IPV4)  {</span><br><span style="color: hsl(120, 100%, 40%);">+             remote_addr.addr[0] := f_inet_addr(addr_str);</span><br><span>        } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                if (addr_type != PCUIF_ADDR_TYPE_IPV4) {</span><br><span style="color: hsl(0, 100%, 40%);">-                        testcase.stop("NSVC address type := ", addr_type,</span><br><span style="color: hsl(0, 100%, 40%);">-                                   "is not supported in version := ",</span><br><span style="color: hsl(0, 100%, 40%);">-                                    PCUIF_Types.mp_pcuif_version);</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-               /* v9 requires the IP in host byte order */</span><br><span style="color: hsl(0, 100%, 40%);">-             remote_addr.v09.addr[0] := f_inet_haddr(addr);</span><br><span style="color: hsl(0, 100%, 40%);">-          remote_addr.v09.addr[1] := f_pad_oct(''O, 4, '00'O);</span><br><span style="color: hsl(120, 100%, 40%);">+          remote_addr.addr[0] := f_inet6_addr(addr_str);</span><br><span>       }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ remote_addr.addr_type[1] := PCUIF_ADDR_TYPE_UNSPEC;</span><br><span style="color: hsl(120, 100%, 40%);">+   remote_addr.addr[1] := f_pad_oct(''O, 16, '00'O);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  return remote_addr;</span><br><span> }</span><br><span> </span><br><span>diff --git a/pcu/PCUIF_Components.ttcn b/pcu/PCUIF_Components.ttcn</span><br><span>index 27cf56d..6a24ed6 100644</span><br><span>--- a/pcu/PCUIF_Components.ttcn</span><br><span>+++ b/pcu/PCUIF_Components.ttcn</span><br><span>@@ -350,19 +350,18 @@</span><br><span> runs on RAW_PCU_BTS_CT</span><br><span> {</span><br><span>         var PCUIF_Message pcu_msg;</span><br><span style="color: hsl(0, 100%, 40%);">-      var PCUIF_InfoV10TrxList trx_list := g_info_ind.trx.v10;</span><br><span> </span><br><span>         /* Find an active TS: */</span><br><span>     for (var uint8_t ts_nr := 0; ts_nr < 8; ts_nr := ts_nr + 1) {</span><br><span style="color: hsl(0, 100%, 40%);">-                for (var integer trx_nr := 0; trx_nr < lengthof(trx_list); trx_nr := trx_nr + 1) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   if (trx_list[trx_nr].pdch_mask[ts_nr] == '0'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+              for (var integer trx_nr := 0; trx_nr < lengthof(g_info_ind.trx); trx_nr := trx_nr + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   if (g_info_ind.trx[trx_nr].pdch_mask[ts_nr] == '0'B) {</span><br><span>                               continue; /* TRX+TS not activated */</span><br><span>                         }</span><br><span> </span><br><span>                        /* Send empty DATA.ind to set up FN */</span><br><span>                       pcu_msg := valueof(ts_PCUIF_DATA_IND(bts_nr, trx_nr, ts_nr, 0 /* FIXME */,</span><br><span>                                                        PCU_IF_SAPI_PDTCH, ''O, start_fn,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                       trx_list[trx_nr].arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                       g_info_ind.trx[trx_nr].arfcn,</span><br><span>                                                        rssi := -80, ber10k := 0,</span><br><span>                                                            ta_offs_qbits := 0, lqual_cb := 10));</span><br><span>                   PCUIF.send(pcu_msg);</span><br><span>@@ -377,12 +376,11 @@</span><br><span> {</span><br><span>    var PCUIF_Message pcu_msg;</span><br><span>   var boolean has_msg, use_msg;</span><br><span style="color: hsl(0, 100%, 40%);">-   var PCUIF_InfoV10TrxList trx_list := g_info_ind.trx.v10;</span><br><span> </span><br><span>         for (var uint8_t ts_nr := 0; ts_nr < 8; ts_nr := ts_nr + 1) {</span><br><span style="color: hsl(0, 100%, 40%);">-                for (var integer trx_nr := 0; trx_nr < lengthof(trx_list); trx_nr := trx_nr + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+         for (var integer trx_nr := 0; trx_nr < lengthof(g_info_ind.trx); trx_nr := trx_nr + 1) {</span><br><span>                  //var charstring prefix := "BTS=" & int2str(bts_nr) & ",TRX=" & int2str(trx_nr) & ",TS=" & int2str(ts_nr) & ",FN=" & int2str(fn) & ": ";</span><br><span style="color: hsl(0, 100%, 40%);">-                      if (trx_list[trx_nr].pdch_mask[ts_nr] == '0'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      if (g_info_ind.trx[trx_nr].pdch_mask[ts_nr] == '0'B) {</span><br><span>                               //log(prefix, "disabled");</span><br><span>                                 continue; /* TRX+TS not activated */</span><br><span>                         }</span><br><span>@@ -406,7 +404,7 @@</span><br><span>                              /* NOPE.ind: */</span><br><span>                              pcu_msg := valueof(ts_PCUIF_DATA_IND(bts_nr, trx_nr, ts_nr, 0 /* FIXME */,</span><br><span>                                                                PCU_IF_SAPI_PDTCH, ''O, fn,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                     trx_list[trx_nr].arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                               g_info_ind.trx[trx_nr].arfcn,</span><br><span>                                                                rssi := -80, ber10k := 0,</span><br><span>                                                                    ta_offs_qbits := 0, lqual_cb := 10));</span><br><span>                           //log(prefix, "DATA.ind (len=0)");</span><br><span>diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn</span><br><span>index cac423a..bea9ddd 100644</span><br><span>--- a/pcu/PCU_Tests.ttcn</span><br><span>+++ b/pcu/PCU_Tests.ttcn</span><br><span>@@ -79,7 +79,7 @@</span><br><span> := {</span><br><span>        version := PCUIF_Types.mp_pcuif_version,</span><br><span>     flags := flags,</span><br><span style="color: hsl(0, 100%, 40%);">- trx := f_PCUIF_ver_INFO_Trxs(GPRS_Components.mp_base_arfcn),</span><br><span style="color: hsl(120, 100%, 40%);">+  trx := ts_PCUIF_InfoTrxs_def(GPRS_Components.mp_base_arfcn),</span><br><span>         bsic := 7,</span><br><span>   mcc := 262,</span><br><span>  mnc := 42,</span><br><span>@@ -109,7 +109,7 @@</span><br><span>     nsvci := { mp_nsconfig.nsvc[0].nsvci, 0 },</span><br><span>   local_port := { mp_nsconfig.nsvc[0].provider.ip.remote_udp_port, 0 },</span><br><span>        remote_port := { mp_nsconfig.nsvc[0].provider.ip.local_udp_port, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-   remote_addr := f_PCUIF_ver_INFO_RemoteAddr(</span><br><span style="color: hsl(120, 100%, 40%);">+   remote_addr := f_PCUIF_RemoteAddr(</span><br><span>           f_PCUIF_AF2addr_type(mp_nsconfig.nsvc[0].provider.ip.address_family), mp_nsconfig.nsvc[0].provider.ip.local_ip)</span><br><span> }</span><br><span> </span><br><span>@@ -2644,8 +2644,8 @@</span><br><span>     ms := g_ms[0]; /* We only use first MS in this test */</span><br><span> </span><br><span>   /* Only 1 TRX with 8 PDCH */</span><br><span style="color: hsl(0, 100%, 40%);">-    f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '11111111'B, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-        f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));</span><br><span style="color: hsl(120, 100%, 40%);">+       f_PCUIF_PDCHMask_set(info_ind, '11111111'B, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_PCUIF_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));</span><br><span> </span><br><span>   /* Initialize the PCU interface abstraction */</span><br><span>       f_init_raw(testcasename(), info_ind);</span><br><span>@@ -2703,8 +2703,8 @@</span><br><span>        ms := g_ms[0]; /* We only use first MS in this test */</span><br><span> </span><br><span>   /* Only 1 TRX with 8 PDCH */</span><br><span style="color: hsl(0, 100%, 40%);">-    f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '11111111'B, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-        f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));</span><br><span style="color: hsl(120, 100%, 40%);">+       f_PCUIF_PDCHMask_set(info_ind, '11111111'B, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_PCUIF_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));</span><br><span> </span><br><span>   /* Initialize the PCU interface abstraction */</span><br><span>       f_init_raw(testcasename(), info_ind);</span><br><span>@@ -2752,8 +2752,8 @@</span><br><span>        ms := g_ms[0]; /* We only use first MS in this test */</span><br><span> </span><br><span>   /* Only 1 TRX with 8 PDCH */</span><br><span style="color: hsl(0, 100%, 40%);">-    f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '11111111'B, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-        f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));</span><br><span style="color: hsl(120, 100%, 40%);">+       f_PCUIF_PDCHMask_set(info_ind, '11111111'B, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_PCUIF_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));</span><br><span> </span><br><span>   /* Initialize the PCU interface abstraction */</span><br><span>       f_init_raw(testcasename(), info_ind);</span><br><span>@@ -3378,8 +3378,8 @@</span><br><span>        info_ind := valueof(ts_PCUIF_INFO_default);</span><br><span> </span><br><span>      /* Only the first TRX is enabled. */</span><br><span style="color: hsl(0, 100%, 40%);">-    f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));</span><br><span style="color: hsl(0, 100%, 40%);">- f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000001'B, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_PCUIF_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));</span><br><span style="color: hsl(120, 100%, 40%);">+        f_PCUIF_PDCHMask_set(info_ind, '00000001'B, 0);</span><br><span> </span><br><span>  /* Initialize the PCU interface abstraction */</span><br><span>       f_init_raw(testcasename(), info_ind);</span><br><span>@@ -3425,7 +3425,7 @@</span><br><span>                                             in GsmRrMessage rr_msg)</span><br><span> {</span><br><span>    var ImmediateAssignment ia := rr_msg.payload.imm_ass;</span><br><span style="color: hsl(0, 100%, 40%);">-   var PCUIF_InfoTrxTs ts := info_ind.trx.v10[0].ts[ia.pkt_chan_desc.tn];</span><br><span style="color: hsl(120, 100%, 40%);">+        var PCUIF_InfoTrxTs ts := info_ind.trx[0].ts[ia.pkt_chan_desc.tn];</span><br><span> </span><br><span>       var template PacketChannelDescription tr_pkt_chan_desc := {</span><br><span>          channel_Type_spare := ?,</span><br><span>@@ -3465,7 +3465,7 @@</span><br><span>     var GprsMS ms := valueof(t_GprsMS_def);</span><br><span> </span><br><span>  /* Enable frequency hopping on TRX0/TS7 */</span><br><span style="color: hsl(0, 100%, 40%);">-      info_ind.trx.v10[0].ts[7] := f_TC_pcuif_fh_params_gen(32);</span><br><span style="color: hsl(120, 100%, 40%);">+    info_ind.trx[0].ts[7] := f_TC_pcuif_fh_params_gen(32);</span><br><span> </span><br><span>   /* Initialize the PCU interface abstraction */</span><br><span>       f_init_raw(testcasename(), info_ind);</span><br><span>@@ -3486,7 +3486,7 @@</span><br><span>        var GprsMS ms := valueof(t_GprsMS_def);</span><br><span> </span><br><span>  /* Enable frequency hopping on TRX0/TS7 */</span><br><span style="color: hsl(0, 100%, 40%);">-      info_ind.trx.v10[0].ts[7] := f_TC_pcuif_fh_params_gen(32);</span><br><span style="color: hsl(120, 100%, 40%);">+    info_ind.trx[0].ts[7] := f_TC_pcuif_fh_params_gen(32);</span><br><span> </span><br><span>   /* Initialize the PCU interface abstraction */</span><br><span>       f_init_raw(testcasename(), info_ind);</span><br><span>@@ -3504,7 +3504,7 @@</span><br><span>        var GprsMS ms := valueof(t_GprsMS_def);</span><br><span> </span><br><span>  /* Enable frequency hopping on TRX0/TS7 */</span><br><span style="color: hsl(0, 100%, 40%);">-      info_ind.trx.v10[0].ts[7] := f_TC_pcuif_fh_params_gen(16);</span><br><span style="color: hsl(120, 100%, 40%);">+    info_ind.trx[0].ts[7] := f_TC_pcuif_fh_params_gen(16);</span><br><span> </span><br><span>   /* Initialize NS/BSSGP side */</span><br><span>       f_init_bssgp();</span><br><span>@@ -3528,7 +3528,7 @@</span><br><span>                                           in FrequencyParameters fp)</span><br><span> {</span><br><span>         /* FIXME: TRX0/TS7 is a hard-coded expectation, make it configurable */</span><br><span style="color: hsl(0, 100%, 40%);">- var PCUIF_InfoTrxTs ts := info_ind.trx.v10[0].ts[7];</span><br><span style="color: hsl(120, 100%, 40%);">+  var PCUIF_InfoTrxTs ts := info_ind.trx[0].ts[7];</span><br><span> </span><br><span>         /* Table 12.8.1: Frequency Parameters information elements */</span><br><span>        var template FrequencyParameters tr_fp := {</span><br><span>@@ -3566,7 +3566,7 @@</span><br><span>  var uint32_t poll_fn;</span><br><span> </span><br><span>    /* Enable frequency hopping on TRX0/TS7 */</span><br><span style="color: hsl(0, 100%, 40%);">-      info_ind.trx.v10[0].ts[7] := f_TC_pcuif_fh_params_gen(33);</span><br><span style="color: hsl(120, 100%, 40%);">+    info_ind.trx[0].ts[7] := f_TC_pcuif_fh_params_gen(33);</span><br><span> </span><br><span>   /* Initialize the PCU interface abstraction */</span><br><span>       f_init_raw(testcasename(), info_ind);</span><br><span>@@ -3608,7 +3608,7 @@</span><br><span>        var uint32_t poll_fn;</span><br><span> </span><br><span>    /* Enable frequency hopping on TRX0/TS7 */</span><br><span style="color: hsl(0, 100%, 40%);">-      info_ind.trx.v10[0].ts[7] := f_TC_pcuif_fh_params_gen(33);</span><br><span style="color: hsl(120, 100%, 40%);">+    info_ind.trx[0].ts[7] := f_TC_pcuif_fh_params_gen(33);</span><br><span> </span><br><span>   /* Initialize NS/BSSGP side */</span><br><span>       f_init_bssgp();</span><br><span>@@ -3678,10 +3678,10 @@</span><br><span>    info_ind := valueof(ts_PCUIF_INFO_default(c_PCUIF_Flags_noMCS));</span><br><span>     /* Only the 3 first TRX are enabled. The enabled ones all have same</span><br><span>     amount of resources, hence same amount of initial resources. */</span><br><span style="color: hsl(0, 100%, 40%);">-      f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000000'B, (3 .. 7));</span><br><span style="color: hsl(0, 100%, 40%);">- f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000011'B, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-        f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00001100'B, 1);</span><br><span style="color: hsl(0, 100%, 40%);">-        f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '11000000'B, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_PCUIF_PDCHMask_set(info_ind, '00000000'B, (3 .. 7));</span><br><span style="color: hsl(120, 100%, 40%);">+        f_PCUIF_PDCHMask_set(info_ind, '00000011'B, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_PCUIF_PDCHMask_set(info_ind, '00001100'B, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_PCUIF_PDCHMask_set(info_ind, '11000000'B, 2);</span><br><span> </span><br><span>  /* Initialize the PCU interface abstraction */</span><br><span>       f_init_raw(testcasename(), info_ind);</span><br><span>@@ -3695,9 +3695,9 @@</span><br><span> </span><br><span>    /* Check if all TBFs are allocated on different TRX in an uniform way */</span><br><span>     for (i := 0; i < num_ms; i := i + 1) {</span><br><span style="color: hsl(0, 100%, 40%);">-               if (g_ms[i].ul_tbf.arfcn != info_ind.trx.v10[i mod 3].arfcn) {</span><br><span style="color: hsl(120, 100%, 40%);">+                if (g_ms[i].ul_tbf.arfcn != info_ind.trx[i mod 3].arfcn) {</span><br><span>                   setverdict(fail, "Got assigned ARFCN ", g_ms[i].ul_tbf.arfcn,</span><br><span style="color: hsl(0, 100%, 40%);">-                            " vs exp ", info_ind.trx.v10[i mod 3].arfcn);</span><br><span style="color: hsl(120, 100%, 40%);">+                               " vs exp ", info_ind.trx[i mod 3].arfcn);</span><br><span>                       f_shutdown(__BFILE__, __LINE__);</span><br><span>             }</span><br><span>    }</span><br><span>@@ -3728,8 +3728,8 @@</span><br><span> </span><br><span>        info_ind := valueof(ts_PCUIF_INFO_default);</span><br><span>  /* Only use 1 PDCH to make sure both end up in the same slot: */</span><br><span style="color: hsl(0, 100%, 40%);">-        f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000001'B, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-        f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));</span><br><span style="color: hsl(120, 100%, 40%);">+       f_PCUIF_PDCHMask_set(info_ind, '00000001'B, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_PCUIF_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));</span><br><span> </span><br><span>   /* Initialize the PCU interface abstraction */</span><br><span>       f_init_raw(testcasename(), info_ind);</span><br><span>@@ -3929,7 +3929,7 @@</span><br><span>        f_init_bssgp();</span><br><span> </span><br><span>  /* Explicitly set the given PDCH slot-mask to all transceivers */</span><br><span style="color: hsl(0, 100%, 40%);">-       f_PCUIF_ver_INFO_PDCHMask_set(info_ind, pdch_mask);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_PCUIF_PDCHMask_set(info_ind, pdch_mask);</span><br><span> </span><br><span>       /* Allocate 56 GprsMS instances (maximum for 8 PDCH slots) */</span><br><span>        f_init_gprs_ms(7 * 8);</span><br><span>@@ -5679,20 +5679,18 @@</span><br><span> </span><br><span>         execute( TC_mo_ping_pong_with_ul_racap_egprs_only() );</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      /* Frequency hopping specific test cases */</span><br><span style="color: hsl(0, 100%, 40%);">-     if (PCUIF_Types.mp_pcuif_version >= 10) {</span><br><span style="color: hsl(0, 100%, 40%);">-            /* Immediate Assignment on AGCH/PCH */</span><br><span style="color: hsl(0, 100%, 40%);">-          execute( TC_pcuif_fh_imm_ass_ul_egprs() );</span><br><span style="color: hsl(0, 100%, 40%);">-              execute( TC_pcuif_fh_imm_ass_ul() );</span><br><span style="color: hsl(0, 100%, 40%);">-            execute( TC_pcuif_fh_imm_ass_dl() );</span><br><span style="color: hsl(0, 100%, 40%);">-            /* Packet Uplink/Downlink Assignment on PACCH */</span><br><span style="color: hsl(0, 100%, 40%);">-                execute( TC_pcuif_fh_pkt_ass_ul() );</span><br><span style="color: hsl(0, 100%, 40%);">-            execute( TC_pcuif_fh_pkt_ass_dl() );</span><br><span style="color: hsl(0, 100%, 40%);">-            execute( TC_multitrx_multims_alloc() );</span><br><span style="color: hsl(0, 100%, 40%);">-         execute( TC_dl_multislot_tbf_ms_class_from_sgsn() );</span><br><span style="color: hsl(0, 100%, 40%);">-            execute( TC_dl_multislot_tbf_ms_class_from_2phase() );</span><br><span style="color: hsl(0, 100%, 40%);">-          execute( TC_ul_multislot_tbf_ms_class_from_2phase() );</span><br><span style="color: hsl(0, 100%, 40%);">-  }</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Immediate Assignment on AGCH/PCH */</span><br><span style="color: hsl(120, 100%, 40%);">+        execute( TC_pcuif_fh_imm_ass_ul_egprs() );</span><br><span style="color: hsl(120, 100%, 40%);">+    execute( TC_pcuif_fh_imm_ass_ul() );</span><br><span style="color: hsl(120, 100%, 40%);">+  execute( TC_pcuif_fh_imm_ass_dl() );</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Packet Uplink/Downlink Assignment on PACCH */</span><br><span style="color: hsl(120, 100%, 40%);">+      execute( TC_pcuif_fh_pkt_ass_ul() );</span><br><span style="color: hsl(120, 100%, 40%);">+  execute( TC_pcuif_fh_pkt_ass_dl() );</span><br><span style="color: hsl(120, 100%, 40%);">+  execute( TC_multitrx_multims_alloc() );</span><br><span style="color: hsl(120, 100%, 40%);">+       execute( TC_dl_multislot_tbf_ms_class_from_sgsn() );</span><br><span style="color: hsl(120, 100%, 40%);">+  execute( TC_dl_multislot_tbf_ms_class_from_2phase() );</span><br><span style="color: hsl(120, 100%, 40%);">+        execute( TC_ul_multislot_tbf_ms_class_from_2phase() );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     execute( TC_multiplex_dl_gprs_egprs() );</span><br><span> </span><br><span>         execute( TC_pcuif_info_ind_subsequent() );</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/23460">change 23460</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/+/23460"/><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: Ia9f366ca1fdad700a90ca3367e43523f7bac39a1 </div>
<div style="display:none"> Gerrit-Change-Number: 23460 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </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: fixeria <vyanitskiy@sysmocom.de> </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>