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