laforge has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21146 )

Change subject: library/L1CTL_Types: add missing template restrictions
......................................................................

library/L1CTL_Types: add missing template restrictions

The template restrictions are quite useful, becaue they give hints
to the TTCN-3 compiler, so it can spot more bugs.  For example,
the lack of thereof would not prevent one from passing 'omit' to
a template, that assigns a value to a non-optional field, so that
might lead to a DTE at run-time in some cases.

Since adding 'template (restriction) ' to each template parameter
obviously makes templates look more cumbersome, let's move the
part with template name and arguments onto a separate line, just
like it's sometimes done for function definitions in C.

Change-Id: I7e6846381e0b3fb611059fcfbafb19bd6c15cfd8
---
M library/L1CTL_Types.ttcn
1 file changed, 92 insertions(+), 60 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  pespin: Looks good to me, but someone else must approve
  Jenkins Builder: Verified



diff --git a/library/L1CTL_Types.ttcn b/library/L1CTL_Types.ttcn
index 03ec23f..fe375ef 100644
--- a/library/L1CTL_Types.ttcn
+++ b/library/L1CTL_Types.ttcn
@@ -105,13 +105,15 @@
                OCT2            padding
        } with { variant "" };

-       template L1ctlHeader tr_L1ctlHeader(template L1ctlMsgType msg_type) := {
+       template L1ctlHeader
+       tr_L1ctlHeader(template (present) L1ctlMsgType msg_type) := {
                msg_type := msg_type,
                flags := ?,
                padding := ?
        };

-       template (value) L1ctlHeader ts_L1ctlHeader(L1ctlMsgType msg_type) := {
+       template (value) L1ctlHeader
+       ts_L1ctlHeader(template (value) L1ctlMsgType msg_type) := {
                msg_type := msg_type,
                flags := { padding := '0000000'B, f_done := false },
                padding := '0000'O
@@ -459,7 +461,8 @@


        /* for generating RESET_REQ */
-       template (value) L1ctlUlMessage t_L1ctlResetReq(L1ctlResetType 
rst_type) := {
+       template (value) L1ctlUlMessage
+       t_L1ctlResetReq(template (value) L1ctlResetType rst_type) := {
                header := ts_L1ctlHeader(L1CTL_RESET_REQ),
                ul_info := omit,
                ul_info_tbf := omit,
@@ -473,10 +476,12 @@
        };

        /* for generating FBSB_REQ */
-       template (value) L1ctlUlMessage ts_L1CTL_FBSB_REQ(Arfcn arfcn, 
L1ctlFbsbFlags flags,
-                                                         uint8_t sync_info_idx,
-                                                         L1ctlCcchMode 
ccch_mode,
-                                                         GsmRxLev rxlev_exp) 
:= {
+       template (value) L1ctlUlMessage
+       ts_L1CTL_FBSB_REQ(template (value) Arfcn arfcn,
+                         template (value) L1ctlFbsbFlags flags,
+                         template (value) uint8_t sync_info_idx,
+                         template (value) L1ctlCcchMode ccch_mode,
+                         template (value) GsmRxLev rxlev_exp) := {
                header := ts_L1ctlHeader(L1CTL_FBSB_REQ),
                ul_info := omit,
                ul_info_tbf := omit,
@@ -497,7 +502,8 @@
        };

        /* for matching against incoming FBSB_CONF */
-       template L1ctlDlMessage tr_L1CTL_FBSB_CONF(template uint8_t result) := {
+       template L1ctlDlMessage
+       tr_L1CTL_FBSB_CONF(template (present) uint8_t result) := {
                header := tr_L1ctlHeader(L1CTL_FBSB_CONF),
                dl_info := ?,
                payload := {
@@ -509,7 +515,8 @@
                }
        };

-       template (value) L1ctlUlMessage ts_L1CTL_CCCH_MODE_REQ(L1ctlCcchMode 
ccch_mode) := {
+       template (value) L1ctlUlMessage
+       ts_L1CTL_CCCH_MODE_REQ(template (value) L1ctlCcchMode ccch_mode) := {
                header := ts_L1ctlHeader(L1CTL_CCCH_MODE_REQ),
                ul_info := omit,
                ul_info_tbf := omit,
@@ -541,7 +548,8 @@
        };
 

-       template L1ctlDlMessage tr_L1CTL_MsgType(template L1ctlMsgType 
msg_type) := {
+       template L1ctlDlMessage
+       tr_L1CTL_MsgType(template (present) L1ctlMsgType msg_type) := {
                header := tr_L1ctlHeader(msg_type),
                dl_info := *,
                payload := *
@@ -549,9 +557,12 @@

        template L1ctlDlMessage tr_L1CTL_CCCH_MODE_CONF := 
tr_L1CTL_MsgType(L1CTL_CCCH_MODE_CONF);

-       template L1ctlUlMessage ts_L1CTL_RACH_REQ(uint8_t ra, uint8_t combined, 
uint16_t offset,
-                                                 template (value) RslChannelNr 
chan_nr := ts_RslChanNr_RACH(0),
-                                                 template (value) RslLinkId 
link_id := ts_RslLinkID_DCCH(0)) := {
+       template (value) L1ctlUlMessage
+       ts_L1CTL_RACH_REQ(template (value) uint8_t ra,
+                         template (value) uint8_t combined,
+                         template (value) uint16_t offset,
+                         template (value) RslChannelNr chan_nr := 
ts_RslChanNr_RACH(0),
+                         template (value) RslLinkId link_id := 
ts_RslLinkID_DCCH(0)) := {
                header := ts_L1ctlHeader(L1CTL_RACH_REQ),
                ul_info := {
                        chan_nr := chan_nr,
@@ -569,10 +580,11 @@
                }
        }

-       template L1ctlUlMessage ts_L1CTL_EXT_RACH_REQ(
-               uint16_t ra11, L1ctlRachSynchSeq seq,
-               uint8_t combined, uint16_t offset
-       ) := {
+       template (value) L1ctlUlMessage
+       ts_L1CTL_EXT_RACH_REQ(template (value) uint16_t ra11,
+                             template (value) L1ctlRachSynchSeq seq,
+                             template (value) uint8_t combined,
+                             template (value) uint16_t offset) := {
                header := ts_L1ctlHeader(L1CTL_EXT_RACH_REQ),
                ul_info := {
                        /* FIXME: both RSL chan_nr and link_id should be 
configurable */
@@ -592,7 +604,9 @@
                }
        }

-       template L1ctlUlMessage ts_L1CTL_PAR_REQ(uint8_t ta, uint8_t tx_power) 
:= {
+       template (value) L1ctlUlMessage
+       ts_L1CTL_PAR_REQ(template (value) uint8_t ta,
+                        template (value) uint8_t tx_power) := {
                header := ts_L1ctlHeader(L1CTL_PARAM_REQ),
                ul_info := {
                        chan_nr := t_RslChanNr_RACH(0),
@@ -611,8 +625,9 @@
        }

        /* Base template to be inherited by ts_L1CTL_DM_EST_REQ_H0 and 
ts_L1CTL_DM_EST_REQ_H1 */
-       private template (value) L1ctlUlMessage ts_L1CTL_DM_EST_REQ(template 
(value) RslChannelNr chan_nr,
-                                                                   template 
(value) GsmTsc tsc) := {
+       private template (value) L1ctlUlMessage
+       ts_L1CTL_DM_EST_REQ(template (value) RslChannelNr chan_nr,
+                           template (value) GsmTsc tsc) := {
                header := ts_L1ctlHeader(L1CTL_DM_EST_REQ),
                ul_info := {
                        chan_nr := chan_nr,
@@ -630,9 +645,10 @@
                }
        }

-       template (value) L1ctlUlMessage ts_L1CTL_DM_EST_REQ_H0(template (value) 
RslChannelNr chan_nr,
-                                                              template (value) 
GsmTsc tsc,
-                                                              template (value) 
GsmArfcn arfcn)
+       template (value) L1ctlUlMessage
+       ts_L1CTL_DM_EST_REQ_H0(template (value) RslChannelNr chan_nr,
+                              template (value) GsmTsc tsc,
+                              template (value) GsmArfcn arfcn)
        modifies ts_L1CTL_DM_EST_REQ := {
                payload := {
                        dm_est_req := {
@@ -647,11 +663,12 @@
                }
        }

-       template (value) L1ctlUlMessage ts_L1CTL_DM_EST_REQ_H1(template (value) 
RslChannelNr chan_nr,
-                                                              template (value) 
GsmTsc tsc,
-                                                              template (value) 
uint6_t hsn,
-                                                              template (value) 
uint6_t maio,
-                                                              template (value) 
L1ctlMA ma)
+       template (value) L1ctlUlMessage
+       ts_L1CTL_DM_EST_REQ_H1(template (value) RslChannelNr chan_nr,
+                              template (value) GsmTsc tsc,
+                              template (value) uint6_t hsn,
+                              template (value) uint6_t maio,
+                              template (value) L1ctlMA ma)
        modifies ts_L1CTL_DM_EST_REQ := {
                payload := {
                        dm_est_req := {
@@ -671,7 +688,8 @@
                }
        }

-       template L1ctlUlMessage ts_L1CTL_DM_REL_REQ(RslChannelNr chan_nr) := {
+       template (value) L1ctlUlMessage
+       ts_L1CTL_DM_REL_REQ(template (value) RslChannelNr chan_nr) := {
                header := ts_L1ctlHeader(L1CTL_DM_REL_REQ),
                ul_info := {
                        chan_nr := chan_nr,
@@ -685,9 +703,10 @@
                }
        }

-       template (value) L1ctlUlMessage ts_L1CTL_DATA_REQ(template (value) 
RslChannelNr chan_nr,
-                                                        template (value) 
RslLinkId link_id,
-                                                        octetstring l2_data) 
:= {
+       template (value) L1ctlUlMessage
+       ts_L1CTL_DATA_REQ(template (value) RslChannelNr chan_nr,
+                         template (value) RslLinkId link_id,
+                         octetstring l2_data) := {
                header := ts_L1ctlHeader(L1CTL_DATA_REQ),
                ul_info := {
                        chan_nr := chan_nr,
@@ -704,10 +723,11 @@
                }
        }

-       template (value) L1ctlUlMessage ts_L1CTL_DATA_REQ_SACCH(template 
(value) RslChannelNr chan_nr,
-                                                        template (value) 
RslLinkId link_id,
-                                                        template (value) 
SacchL1Header l1h,
-                                                        octetstring l2_data) 
:= {
+       template (value) L1ctlUlMessage
+       ts_L1CTL_DATA_REQ_SACCH(template (value) RslChannelNr chan_nr,
+                               template (value) RslLinkId link_id,
+                               template (value) SacchL1Header l1h,
+                               octetstring l2_data) := {
                header := ts_L1ctlHeader(L1CTL_DATA_REQ),
                ul_info := {
                        chan_nr := chan_nr,
@@ -724,9 +744,10 @@
                }
        }

-       template (value) L1ctlUlMessage ts_L1CTL_TRAFFIC_REQ(template (value) 
RslChannelNr chan_nr,
-                                                            template (value) 
RslLinkId link_id,
-                                                            octetstring frame) 
:= {
+       template (value) L1ctlUlMessage
+       ts_L1CTL_TRAFFIC_REQ(template (value) RslChannelNr chan_nr,
+                            template (value) RslLinkId link_id,
+                            octetstring frame) := {
                header := ts_L1ctlHeader(L1CTL_TRAFFIC_REQ),
                ul_info := {
                        chan_nr := chan_nr,
@@ -742,7 +763,9 @@
                }
        };

-       template (value) L1ctlUlMessage ts_L1CTL_TBF_CFG_REQ(boolean is_uplink, 
TfiUsfArr tfi_usf) := {
+       template (value) L1ctlUlMessage
+       ts_L1CTL_TBF_CFG_REQ(template (value) boolean is_uplink,
+                            template (value) TfiUsfArr tfi_usf) := {
                header := ts_L1ctlHeader(L1CTL_TBF_CFG_REQ),
                ul_info := omit,
                ul_info_tbf := omit,
@@ -757,7 +780,8 @@
                }
        };

-       template L1ctlDlMessage tr_L1CTL_TBF_CFG_CONF(template boolean 
is_uplink) := {
+       template L1ctlDlMessage
+       tr_L1CTL_TBF_CFG_CONF(template (present) boolean is_uplink) := {
                header := tr_L1ctlHeader(L1CTL_TBF_CFG_CONF),
                dl_info := omit,
                payload := {
@@ -770,9 +794,10 @@
                }
        };

-       template (value) L1ctlUlMessage ts_L1CTL_DATA_TBF_REQ(octetstring 
l2_data,
-                                                            L1ctlGprsCs cs := 
L1CTL_CS1,
-                                                            uint8_t tbf_nr := 
0) := {
+       template (value) L1ctlUlMessage
+       ts_L1CTL_DATA_TBF_REQ(octetstring l2_data,
+                             template (value) L1ctlGprsCs cs := L1CTL_CS1,
+                             template (value) uint8_t tbf_nr := 0) := {
                header := ts_L1ctlHeader(L1CTL_DATA_TBF_REQ),
                ul_info := omit,
                ul_info_tbf := {
@@ -786,10 +811,13 @@
                }
        }

-       template (value) L1ctlUlMessage ts_L1CTL_DATA_ABS_REQ(octetstring 
l2_data, Arfcn arfcn,
-                                                    uint8_t ts, GsmFrameNumber 
fn,
-                                                    L1ctlGprsCs cs := 
L1CTL_CS1,
-                                                    uint8_t tbf_nr := 0) := {
+       template (value) L1ctlUlMessage
+       ts_L1CTL_DATA_ABS_REQ(octetstring l2_data,
+                             template (value) Arfcn arfcn,
+                             template (value) uint8_t ts,
+                             template (value) GsmFrameNumber fn,
+                             template (value) L1ctlGprsCs cs := L1CTL_CS1,
+                             template (value) uint8_t tbf_nr := 0) := {
                header := ts_L1ctlHeader(L1CTL_DATA_ABS_REQ),
                ul_info := omit,
                ul_info_tbf := omit,
@@ -816,11 +844,12 @@
        };

        /* for matching against incoming DATA_IND */
-       template L1ctlDlMessage tr_L1CTL_DATA_IND(template RslChannelNr chan_nr,
-                                                template RslLinkId link_id := 
?,
-                                                template octetstring l2_data 
:= ?,
-                                                template uint8_t num_biterr := 
0,
-                                                template uint8_t fire_crc := 
0) := {
+       template L1ctlDlMessage
+       tr_L1CTL_DATA_IND(template (present) RslChannelNr chan_nr,
+                         template (present) RslLinkId link_id := ?,
+                         template (present) octetstring l2_data := ?,
+                         template (present) uint8_t num_biterr := 0,
+                         template (present) uint8_t fire_crc := 0) := {
                header := tr_L1ctlHeader(L1CTL_DATA_IND),
                dl_info := {
                        chan_nr := chan_nr,
@@ -840,11 +869,12 @@
        };

        /* for matching against incoming TRAFFIC_IND */
-       template L1ctlDlMessage tr_L1CTL_TRAFFIC_IND(template RslChannelNr 
chan_nr,
-                                                    template RslLinkId link_id 
:= ?,
-                                                    template octetstring frame 
:= ?,
-                                                    template uint8_t 
num_biterr := ?,
-                                                    template uint8_t fire_crc 
:= ?) := {
+       template L1ctlDlMessage
+       tr_L1CTL_TRAFFIC_IND(template (present) RslChannelNr chan_nr,
+                            template (present) RslLinkId link_id := ?,
+                            template (present) octetstring frame := ?,
+                            template (present) uint8_t num_biterr := ?,
+                            template (present) uint8_t fire_crc := ?) := {
                header := tr_L1ctlHeader(L1CTL_TRAFFIC_IND),
                dl_info := {
                        chan_nr := chan_nr,
@@ -863,8 +893,10 @@
                }
        };

-       template (value) L1ctlUlMessage ts_L1CTL_CRYPTO_REQ(RslChannelNr 
chan_nr, uint8_t algo,
-                                                           octetstring key) := 
{
+       template (value) L1ctlUlMessage
+       ts_L1CTL_CRYPTO_REQ(template (value) RslChannelNr chan_nr,
+                           template (value) uint8_t algo,
+                           template (value) octetstring key) := {
                header := ts_L1ctlHeader(L1CTL_CRYPTO_REQ),
                ul_info := {
                        chan_nr := chan_nr,

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21146
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I7e6846381e0b3fb611059fcfbafb19bd6c15cfd8
Gerrit-Change-Number: 21146
Gerrit-PatchSet: 3
Gerrit-Owner: fixeria <vyanits...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <lafo...@osmocom.org>
Gerrit-Reviewer: pespin <pes...@sysmocom.de>
Gerrit-MessageType: merged

Reply via email to