<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21146">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/L1CTL_Types: add missing template restrictions<br><br>The template restrictions are quite useful, becaue they give hints<br>to the TTCN-3 compiler, so it can spot more bugs.  For example,<br>the lack of thereof would not prevent one from passing 'omit' to<br>a template, that assigns a value to a non-optional field, so that<br>might lead to a DTE at run-time in some cases.<br><br>Since adding 'template (restriction) ' to each template parameter<br>obviously makes templates look more cumbersome, let's move the<br>part with template name and arguments onto a separate line, just<br>like it's sometimes done for function definitions in C.<br><br>Change-Id: I7e6846381e0b3fb611059fcfbafb19bd6c15cfd8<br>---<br>M library/L1CTL_Types.ttcn<br>1 file changed, 92 insertions(+), 60 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/L1CTL_Types.ttcn b/library/L1CTL_Types.ttcn</span><br><span>index 03ec23f..fe375ef 100644</span><br><span>--- a/library/L1CTL_Types.ttcn</span><br><span>+++ b/library/L1CTL_Types.ttcn</span><br><span>@@ -105,13 +105,15 @@</span><br><span>                 OCT2            padding</span><br><span>      } with { variant "" };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    template L1ctlHeader tr_L1ctlHeader(template L1ctlMsgType msg_type) := {</span><br><span style="color: hsl(120, 100%, 40%);">+      template L1ctlHeader</span><br><span style="color: hsl(120, 100%, 40%);">+  tr_L1ctlHeader(template (present) L1ctlMsgType msg_type) := {</span><br><span>                msg_type := msg_type,</span><br><span>                flags := ?,</span><br><span>          padding := ?</span><br><span>         };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  template (value) L1ctlHeader ts_L1ctlHeader(L1ctlMsgType msg_type) := {</span><br><span style="color: hsl(120, 100%, 40%);">+       template (value) L1ctlHeader</span><br><span style="color: hsl(120, 100%, 40%);">+  ts_L1ctlHeader(template (value) L1ctlMsgType msg_type) := {</span><br><span>          msg_type := msg_type,</span><br><span>                flags := { padding := '0000000'B, f_done := false },</span><br><span>                 padding := '0000'O</span><br><span>@@ -459,7 +461,8 @@</span><br><span> </span><br><span> </span><br><span>     /* for generating RESET_REQ */</span><br><span style="color: hsl(0, 100%, 40%);">-  template (value) L1ctlUlMessage t_L1ctlResetReq(L1ctlResetType rst_type) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       t_L1ctlResetReq(template (value) L1ctlResetType rst_type) := {</span><br><span>               header := ts_L1ctlHeader(L1CTL_RESET_REQ),</span><br><span>           ul_info := omit,</span><br><span>             ul_info_tbf := omit,</span><br><span>@@ -473,10 +476,12 @@</span><br><span>         };</span><br><span> </span><br><span>       /* for generating FBSB_REQ */</span><br><span style="color: hsl(0, 100%, 40%);">-   template (value) L1ctlUlMessage ts_L1CTL_FBSB_REQ(Arfcn arfcn, L1ctlFbsbFlags flags,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                      uint8_t sync_info_idx,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                          L1ctlCcchMode ccch_mode,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                        GsmRxLev rxlev_exp) := {</span><br><span style="color: hsl(120, 100%, 40%);">+    template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_FBSB_REQ(template (value) Arfcn arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                         template (value) L1ctlFbsbFlags flags,</span><br><span style="color: hsl(120, 100%, 40%);">+                        template (value) uint8_t sync_info_idx,</span><br><span style="color: hsl(120, 100%, 40%);">+                       template (value) L1ctlCcchMode ccch_mode,</span><br><span style="color: hsl(120, 100%, 40%);">+                     template (value) GsmRxLev rxlev_exp) := {</span><br><span>          header := ts_L1ctlHeader(L1CTL_FBSB_REQ),</span><br><span>            ul_info := omit,</span><br><span>             ul_info_tbf := omit,</span><br><span>@@ -497,7 +502,8 @@</span><br><span>   };</span><br><span> </span><br><span>       /* for matching against incoming FBSB_CONF */</span><br><span style="color: hsl(0, 100%, 40%);">-   template L1ctlDlMessage tr_L1CTL_FBSB_CONF(template uint8_t result) := {</span><br><span style="color: hsl(120, 100%, 40%);">+      template L1ctlDlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       tr_L1CTL_FBSB_CONF(template (present) uint8_t result) := {</span><br><span>           header := tr_L1ctlHeader(L1CTL_FBSB_CONF),</span><br><span>           dl_info := ?,</span><br><span>                payload := {</span><br><span>@@ -509,7 +515,8 @@</span><br><span>           }</span><br><span>    };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  template (value) L1ctlUlMessage ts_L1CTL_CCCH_MODE_REQ(L1ctlCcchMode ccch_mode) := {</span><br><span style="color: hsl(120, 100%, 40%);">+  template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_CCCH_MODE_REQ(template (value) L1ctlCcchMode ccch_mode) := {</span><br><span>                header := ts_L1ctlHeader(L1CTL_CCCH_MODE_REQ),</span><br><span>               ul_info := omit,</span><br><span>             ul_info_tbf := omit,</span><br><span>@@ -541,7 +548,8 @@</span><br><span>   };</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      template L1ctlDlMessage tr_L1CTL_MsgType(template L1ctlMsgType msg_type) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ template L1ctlDlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       tr_L1CTL_MsgType(template (present) L1ctlMsgType msg_type) := {</span><br><span>              header := tr_L1ctlHeader(msg_type),</span><br><span>          dl_info := *,</span><br><span>                payload := *</span><br><span>@@ -549,9 +557,12 @@</span><br><span> </span><br><span>      template L1ctlDlMessage tr_L1CTL_CCCH_MODE_CONF := tr_L1CTL_MsgType(L1CTL_CCCH_MODE_CONF);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  template L1ctlUlMessage ts_L1CTL_RACH_REQ(uint8_t ra, uint8_t combined, uint16_t offset,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                  template (value) RslChannelNr chan_nr := ts_RslChanNr_RACH(0),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                  template (value) RslLinkId link_id := ts_RslLinkID_DCCH(0)) := {</span><br><span style="color: hsl(120, 100%, 40%);">+    template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_RACH_REQ(template (value) uint8_t ra,</span><br><span style="color: hsl(120, 100%, 40%);">+                          template (value) uint8_t combined,</span><br><span style="color: hsl(120, 100%, 40%);">+                    template (value) uint16_t offset,</span><br><span style="color: hsl(120, 100%, 40%);">+                     template (value) RslChannelNr chan_nr := ts_RslChanNr_RACH(0),</span><br><span style="color: hsl(120, 100%, 40%);">+                        template (value) RslLinkId link_id := ts_RslLinkID_DCCH(0)) := {</span><br><span>           header := ts_L1ctlHeader(L1CTL_RACH_REQ),</span><br><span>            ul_info := {</span><br><span>                         chan_nr := chan_nr,</span><br><span>@@ -569,10 +580,11 @@</span><br><span>          }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   template L1ctlUlMessage ts_L1CTL_EXT_RACH_REQ(</span><br><span style="color: hsl(0, 100%, 40%);">-          uint16_t ra11, L1ctlRachSynchSeq seq,</span><br><span style="color: hsl(0, 100%, 40%);">-           uint8_t combined, uint16_t offset</span><br><span style="color: hsl(0, 100%, 40%);">-       ) := {</span><br><span style="color: hsl(120, 100%, 40%);">+        template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_EXT_RACH_REQ(template (value) uint16_t ra11,</span><br><span style="color: hsl(120, 100%, 40%);">+                       template (value) L1ctlRachSynchSeq seq,</span><br><span style="color: hsl(120, 100%, 40%);">+                       template (value) uint8_t combined,</span><br><span style="color: hsl(120, 100%, 40%);">+                            template (value) uint16_t offset) := {</span><br><span>                 header := ts_L1ctlHeader(L1CTL_EXT_RACH_REQ),</span><br><span>                ul_info := {</span><br><span>                         /* FIXME: both RSL chan_nr and link_id should be configurable */</span><br><span>@@ -592,7 +604,9 @@</span><br><span>               }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   template L1ctlUlMessage ts_L1CTL_PAR_REQ(uint8_t ta, uint8_t tx_power) := {</span><br><span style="color: hsl(120, 100%, 40%);">+   template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_PAR_REQ(template (value) uint8_t ta,</span><br><span style="color: hsl(120, 100%, 40%);">+                  template (value) uint8_t tx_power) := {</span><br><span>             header := ts_L1ctlHeader(L1CTL_PARAM_REQ),</span><br><span>           ul_info := {</span><br><span>                         chan_nr := t_RslChanNr_RACH(0),</span><br><span>@@ -611,8 +625,9 @@</span><br><span>        }</span><br><span> </span><br><span>        /* Base template to be inherited by ts_L1CTL_DM_EST_REQ_H0 and ts_L1CTL_DM_EST_REQ_H1 */</span><br><span style="color: hsl(0, 100%, 40%);">-        private template (value) L1ctlUlMessage ts_L1CTL_DM_EST_REQ(template (value) RslChannelNr chan_nr,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                  template (value) GsmTsc tsc) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ private template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_DM_EST_REQ(template (value) RslChannelNr chan_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                        template (value) GsmTsc tsc) := {</span><br><span>                header := ts_L1ctlHeader(L1CTL_DM_EST_REQ),</span><br><span>          ul_info := {</span><br><span>                         chan_nr := chan_nr,</span><br><span>@@ -630,9 +645,10 @@</span><br><span>           }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   template (value) L1ctlUlMessage ts_L1CTL_DM_EST_REQ_H0(template (value) RslChannelNr chan_nr,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                          template (value) GsmTsc tsc,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                            template (value) GsmArfcn arfcn)</span><br><span style="color: hsl(120, 100%, 40%);">+       template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_DM_EST_REQ_H0(template (value) RslChannelNr chan_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                        template (value) GsmTsc tsc,</span><br><span style="color: hsl(120, 100%, 40%);">+                          template (value) GsmArfcn arfcn)</span><br><span>      modifies ts_L1CTL_DM_EST_REQ := {</span><br><span>            payload := {</span><br><span>                         dm_est_req := {</span><br><span>@@ -647,11 +663,12 @@</span><br><span>              }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   template (value) L1ctlUlMessage ts_L1CTL_DM_EST_REQ_H1(template (value) RslChannelNr chan_nr,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                          template (value) GsmTsc tsc,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                            template (value) uint6_t hsn,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                           template (value) uint6_t maio,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                          template (value) L1ctlMA ma)</span><br><span style="color: hsl(120, 100%, 40%);">+   template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_DM_EST_REQ_H1(template (value) RslChannelNr chan_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                        template (value) GsmTsc tsc,</span><br><span style="color: hsl(120, 100%, 40%);">+                          template (value) uint6_t hsn,</span><br><span style="color: hsl(120, 100%, 40%);">+                         template (value) uint6_t maio,</span><br><span style="color: hsl(120, 100%, 40%);">+                        template (value) L1ctlMA ma)</span><br><span>  modifies ts_L1CTL_DM_EST_REQ := {</span><br><span>            payload := {</span><br><span>                         dm_est_req := {</span><br><span>@@ -671,7 +688,8 @@</span><br><span>                }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   template L1ctlUlMessage ts_L1CTL_DM_REL_REQ(RslChannelNr chan_nr) := {</span><br><span style="color: hsl(120, 100%, 40%);">+        template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_DM_REL_REQ(template (value) RslChannelNr chan_nr) := {</span><br><span>              header := ts_L1ctlHeader(L1CTL_DM_REL_REQ),</span><br><span>          ul_info := {</span><br><span>                         chan_nr := chan_nr,</span><br><span>@@ -685,9 +703,10 @@</span><br><span>           }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   template (value) L1ctlUlMessage ts_L1CTL_DATA_REQ(template (value) RslChannelNr chan_nr,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                         template (value) RslLinkId link_id,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                     octetstring l2_data) := {</span><br><span style="color: hsl(120, 100%, 40%);">+    template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_DATA_REQ(template (value) RslChannelNr chan_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                        template (value) RslLinkId link_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                   octetstring l2_data) := {</span><br><span>          header := ts_L1ctlHeader(L1CTL_DATA_REQ),</span><br><span>            ul_info := {</span><br><span>                         chan_nr := chan_nr,</span><br><span>@@ -704,10 +723,11 @@</span><br><span>          }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   template (value) L1ctlUlMessage ts_L1CTL_DATA_REQ_SACCH(template (value) RslChannelNr chan_nr,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                   template (value) RslLinkId link_id,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                     template (value) SacchL1Header l1h,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                     octetstring l2_data) := {</span><br><span style="color: hsl(120, 100%, 40%);">+    template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_DATA_REQ_SACCH(template (value) RslChannelNr chan_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                template (value) RslLinkId link_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                           template (value) SacchL1Header l1h,</span><br><span style="color: hsl(120, 100%, 40%);">+                           octetstring l2_data) := {</span><br><span>            header := ts_L1ctlHeader(L1CTL_DATA_REQ),</span><br><span>            ul_info := {</span><br><span>                         chan_nr := chan_nr,</span><br><span>@@ -724,9 +744,10 @@</span><br><span>           }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   template (value) L1ctlUlMessage ts_L1CTL_TRAFFIC_REQ(template (value) RslChannelNr chan_nr,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                          template (value) RslLinkId link_id,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                             octetstring frame) := {</span><br><span style="color: hsl(120, 100%, 40%);">+  template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_TRAFFIC_REQ(template (value) RslChannelNr chan_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                        template (value) RslLinkId link_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                           octetstring frame) := {</span><br><span>                 header := ts_L1ctlHeader(L1CTL_TRAFFIC_REQ),</span><br><span>                 ul_info := {</span><br><span>                         chan_nr := chan_nr,</span><br><span>@@ -742,7 +763,9 @@</span><br><span>            }</span><br><span>    };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  template (value) L1ctlUlMessage ts_L1CTL_TBF_CFG_REQ(boolean is_uplink, TfiUsfArr tfi_usf) := {</span><br><span style="color: hsl(120, 100%, 40%);">+       template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_TBF_CFG_REQ(template (value) boolean is_uplink,</span><br><span style="color: hsl(120, 100%, 40%);">+                           template (value) TfiUsfArr tfi_usf) := {</span><br><span>                header := ts_L1ctlHeader(L1CTL_TBF_CFG_REQ),</span><br><span>                 ul_info := omit,</span><br><span>             ul_info_tbf := omit,</span><br><span>@@ -757,7 +780,8 @@</span><br><span>           }</span><br><span>    };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  template L1ctlDlMessage tr_L1CTL_TBF_CFG_CONF(template boolean is_uplink) := {</span><br><span style="color: hsl(120, 100%, 40%);">+        template L1ctlDlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       tr_L1CTL_TBF_CFG_CONF(template (present) boolean is_uplink) := {</span><br><span>             header := tr_L1ctlHeader(L1CTL_TBF_CFG_CONF),</span><br><span>                dl_info := omit,</span><br><span>             payload := {</span><br><span>@@ -770,9 +794,10 @@</span><br><span>          }</span><br><span>    };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  template (value) L1ctlUlMessage ts_L1CTL_DATA_TBF_REQ(octetstring l2_data,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                           L1ctlGprsCs cs := L1CTL_CS1,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                            uint8_t tbf_nr := 0) := {</span><br><span style="color: hsl(120, 100%, 40%);">+        template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_DATA_TBF_REQ(octetstring l2_data,</span><br><span style="color: hsl(120, 100%, 40%);">+                          template (value) L1ctlGprsCs cs := L1CTL_CS1,</span><br><span style="color: hsl(120, 100%, 40%);">+                         template (value) uint8_t tbf_nr := 0) := {</span><br><span>             header := ts_L1ctlHeader(L1CTL_DATA_TBF_REQ),</span><br><span>                ul_info := omit,</span><br><span>             ul_info_tbf := {</span><br><span>@@ -786,10 +811,13 @@</span><br><span>             }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   template (value) L1ctlUlMessage ts_L1CTL_DATA_ABS_REQ(octetstring l2_data, Arfcn arfcn,</span><br><span style="color: hsl(0, 100%, 40%);">-                                              uint8_t ts, GsmFrameNumber fn,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                  L1ctlGprsCs cs := L1CTL_CS1,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                    uint8_t tbf_nr := 0) := {</span><br><span style="color: hsl(120, 100%, 40%);">+        template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_DATA_ABS_REQ(octetstring l2_data,</span><br><span style="color: hsl(120, 100%, 40%);">+                          template (value) Arfcn arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                         template (value) uint8_t ts,</span><br><span style="color: hsl(120, 100%, 40%);">+                          template (value) GsmFrameNumber fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                           template (value) L1ctlGprsCs cs := L1CTL_CS1,</span><br><span style="color: hsl(120, 100%, 40%);">+                         template (value) uint8_t tbf_nr := 0) := {</span><br><span>             header := ts_L1ctlHeader(L1CTL_DATA_ABS_REQ),</span><br><span>                ul_info := omit,</span><br><span>             ul_info_tbf := omit,</span><br><span>@@ -816,11 +844,12 @@</span><br><span>         };</span><br><span> </span><br><span>       /* for matching against incoming DATA_IND */</span><br><span style="color: hsl(0, 100%, 40%);">-    template L1ctlDlMessage tr_L1CTL_DATA_IND(template RslChannelNr chan_nr,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                 template RslLinkId link_id := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                template octetstring l2_data := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-                                              template uint8_t num_biterr := 0,</span><br><span style="color: hsl(0, 100%, 40%);">-                                               template uint8_t fire_crc := 0) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ template L1ctlDlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       tr_L1CTL_DATA_IND(template (present) RslChannelNr chan_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                      template (present) RslLinkId link_id := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                    template (present) octetstring l2_data := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                          template (present) uint8_t num_biterr := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                   template (present) uint8_t fire_crc := 0) := {</span><br><span>             header := tr_L1ctlHeader(L1CTL_DATA_IND),</span><br><span>            dl_info := {</span><br><span>                         chan_nr := chan_nr,</span><br><span>@@ -840,11 +869,12 @@</span><br><span>  };</span><br><span> </span><br><span>       /* for matching against incoming TRAFFIC_IND */</span><br><span style="color: hsl(0, 100%, 40%);">- template L1ctlDlMessage tr_L1CTL_TRAFFIC_IND(template RslChannelNr chan_nr,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                  template RslLinkId link_id := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                template octetstring frame := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                template uint8_t num_biterr := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-                                               template uint8_t fire_crc := ?) := {</span><br><span style="color: hsl(120, 100%, 40%);">+     template L1ctlDlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       tr_L1CTL_TRAFFIC_IND(template (present) RslChannelNr chan_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                      template (present) RslLinkId link_id := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                            template (present) octetstring frame := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                            template (present) uint8_t num_biterr := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                           template (present) uint8_t fire_crc := ?) := {</span><br><span>          header := tr_L1ctlHeader(L1CTL_TRAFFIC_IND),</span><br><span>                 dl_info := {</span><br><span>                         chan_nr := chan_nr,</span><br><span>@@ -863,8 +893,10 @@</span><br><span>           }</span><br><span>    };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  template (value) L1ctlUlMessage ts_L1CTL_CRYPTO_REQ(RslChannelNr chan_nr, uint8_t algo,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                     octetstring key) := {</span><br><span style="color: hsl(120, 100%, 40%);">+     template (value) L1ctlUlMessage</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_L1CTL_CRYPTO_REQ(template (value) RslChannelNr chan_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                        template (value) uint8_t algo,</span><br><span style="color: hsl(120, 100%, 40%);">+                        template (value) octetstring key) := {</span><br><span>           header := ts_L1ctlHeader(L1CTL_CRYPTO_REQ),</span><br><span>          ul_info := {</span><br><span>                         chan_nr := chan_nr,</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21146">change 21146</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/+/21146"/><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: I7e6846381e0b3fb611059fcfbafb19bd6c15cfd8 </div>
<div style="display:none"> Gerrit-Change-Number: 21146 </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>