diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..495a75efad3bfc655de2112ed7079077c9222a87 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/build/ + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..a79646b889dacfa6d0d93a9643855a7535c573f4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +FROM ubuntu:bionic + +WORKDIR /home/etsi-its-asn1 + +RUN apt update +RUN apt install -y git build-essential automake libtool wget sed + +RUN git -C /home/etsi-its-asn1 clone https://github.com/brchiu/asn1c.git -n asn1c +RUN git -C /home/etsi-its-asn1/asn1c checkout velichkov_s1ap_plus_option_group_plus_adding_trailing_ull +RUN git -C /home/etsi-its-asn1/asn1c status -v + +RUN ( cd /home/etsi-its-asn1/asn1c ; autoreconf -iv ; ./configure --prefix=/usr ) +RUN make -C /home/etsi-its-asn1/asn1c +RUN make -C /home/etsi-its-asn1/asn1c install +RUN rm -rf /home/etsi-its-asn1/asn1c + +WORKDIR /home/etsi-its-asn1 + +CMD ./syntax_check.bash diff --git a/IVIM-PDU-Descriptions.asn b/IVIM-PDU-Descriptions.asn index 5006e1de60f7e7dac84a83b92eceda2553b4b2eb..fafdc1f82402ca32a49583315a1c4e4d82cf82b1 100755 --- a/IVIM-PDU-Descriptions.asn +++ b/IVIM-PDU-Descriptions.asn @@ -1,23 +1,39 @@ --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: In vehicle information message --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- @brief Specification of the In vehicle information Message ETSI TS 103 301 +-- Latest version available at @url https://forge.etsi.org/rep/ITS/asn1/is_ts103301.git + IVIM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (103301) ivim (2) version2 (2) + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts103301 (103301) ivim (2) version2 (2) } -DEFINITIONS AUTOMATIC TAGS ::= +DEFINITIONS AUTOMATIC TAGS ::= BEGIN IMPORTS -IviStructure FROM IVI {iso (1) standard (0) ivi (19321) version1 (1)} -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)}; +-- @brief Include ISO 19321 +-- Include references from @url https://standards.iso.org/iso/ts/19321/ed-2/en/ISO19321IVIv2.asn +IviStructure +FROM IVI { iso (1) standard (0) ivi (19321) version2 (2) } + +-- @brief Include ETSI TS 102 894-2 +-- Include references from @url https://forge.etsi.org/rep/ITS/ITS_ASN1/blob/master/CDD_TS102894-2/ITS-Container.asn +ItsPduHeader +FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)}; + +-- In vehicle information Message Message +-- @brief In vehicle information Message Root +-- This DF includes DEs for the IVIM protocolVersion, the IVI message type identifier _messageID_, +-- the station identifier _stationID_ of the originating ITS-S and the IVI data from ISO TS 19321. IVIM ::= SEQUENCE { + -- @details header + -- The DE _protocolVersion_ is used to select the appropriate protocol decoder at the receiving ITS-S. + -- It shall be set to 2. + -- The DE _messageID_ shall be ivim(6). header ItsPduHeader, + -- @details ivi + -- The DE _ivi_ contains the IVI data as defined in ISO TS 19321. ivi IviStructure } diff --git a/MAPEM-PDU-Descriptions.asn b/MAPEM-PDU-Descriptions.asn index dd5db142bacecd935deba46ad97db47cd6ffde63..9c5fdb3047b8a73f12eebaa56ee4475690be54b7 100755 --- a/MAPEM-PDU-Descriptions.asn +++ b/MAPEM-PDU-Descriptions.asn @@ -1,23 +1,38 @@ --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: Map (lane topology) extended message --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- @brief Specification of the Map (lane topology) extended Message ETSI TS 103 301 +-- Latest version available at @url https://forge.etsi.org/rep/ITS/asn1/is_ts103301.git + MAPEM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (103301) mapem (1) version2 (2) + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts103301 (103301) mapem (1) version2 (2) } -DEFINITIONS AUTOMATIC TAGS ::= +DEFINITIONS AUTOMATIC TAGS ::= BEGIN IMPORTS -MapData FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2) } -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)}; +-- @brief Include ISO TS 19091 +-- Include references from @url https://standards.iso.org/iso/ts/19091/ed-2/en/ISO-TS-19091-addgrp-C-2018.asn +MapData FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2) } + +-- @brief Include ETSI TS 102 894-2 +-- Include references from @url https://forge.etsi.org/rep/ITS/ITS_ASN1/blob/master/CDD_TS102894-2/ITS-Container.asn +ItsPduHeader +FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)}; + +-- Map (lane topology) extended Message +-- @brief Map (lane topology) extended Message Root +-- This DF includes DEs for the MAPEM: protocolVersion, the MAPEM message type identifier _messageID_, +-- the station identifier _stationID_ of the originating ITS-S and the Map data from ISO TS 19091. MAPEM ::= SEQUENCE { + -- @details header + -- The DE _protocolVersion_ is used to select the appropriate protocol decoder at the receiving ITS-S. + -- It shall be set to 2. + -- The DE _messageID_ shall be mapem(5). header ItsPduHeader, + -- @details map + -- The DE _map_ contains the MAP data as defined in ISO TS 19091. map MapData } diff --git a/README.md b/README.md index c9ba1d8e65fd36f6436ddb7597f34b7a6c9dfe76..686c771f4d5c69239bc00e5b7a8889b3ff5de8be 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Abstract syntax notation module for ETSI TS 103 301 -These modules was published as a part of delivery **[ETSI TS 103 301 v1.3.1](https://www.etsi.org/deliver/etsi_ts/103300_103399/103301/01.02.01_60/ts_103301v010201p.pdf) (2020-02)** +These modules will be published as a part of delivery **[ETSI TS 103 301 v2.1.1](https://www.etsi.org/deliver/etsi_ts/103300_103399/103301/01.02.01_60/ts_103301v010201p.pdf) (2021-??)** ## License @@ -11,5 +11,20 @@ See the attached LICENSE file or visit https://forge.etsi.org/legal-matters. ## Dependencies * The **[ITS-Container](https://forge.etsi.org/rep/ITS/asn1/cdd_ts102894_2)** module from **[ETSI TS 102 894-2 v1.3.1](https://www.etsi.org/deliver/etsi_ts/102800_102899/10289402/01.03.01_60/ts_10289402v010301p.pdf)**: "Intelligent Transport Systems (ITS); Users and applications requirements; Part 2: Applications and facilities layer common data dictionary". -* The **[DSRC](https://standards.iso.org/iso/ts/19091/)** module from **CEN ISO/TS 19091**: "Intelligent transport systems - Cooperative ITS - Using V2I and I2V communications for applications related to signalized intersections". -* The **[IVI](https://standards.iso.org/iso/ts/19321/ed-1/)** module from **CEN ISO/TS 19321-2015**: "Intelligent transport systems - Cooperative ITS - Dictionary of in-vehicle information (IVI) data structures". +* The **[DSRC](https://standards.iso.org/iso/ts/19091/ed-2/en)** module from **CEN ISO/TS 19091-2018**: "Intelligent transport systems - Cooperative ITS - Using V2I and I2V communications for applications related to signalized intersections". +* The **[IVI](https://standards.iso.org/iso/ts/19321/ed-2/en/)** module from **CEN ISO/TS 19321-2020**: "Intelligent transport systems - Cooperative ITS - Dictionary of in-vehicle information (IVI) data structures". + + +## Syntax check + +The correctness of these ASN.1 files can be verified using the bash script **syntax_check.bash** + +See the notes in this script for further details. + +For convenience a Dockerfile is available that might be useful for this. + +``` +Usage: + >docker build -t etsi-its-asn-is:2.1.1 . + >docker run -v `pwd`:/home/etsi-its-asn1 etsi-its-asn-is:2.1.1 +``` diff --git a/RTCMEM-PDU-Descriptions.asn b/RTCMEM-PDU-Descriptions.asn index 220ba3aa5bf6bc21b2ec0fb38936c25c06be5f3f..ef2db78e2f1652f2bf61a0d735c38ac6f41ae6c1 100755 --- a/RTCMEM-PDU-Descriptions.asn +++ b/RTCMEM-PDU-Descriptions.asn @@ -1,24 +1,39 @@ --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: RTCM corrections extended message --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- @brief Specification of the RTCM corrections extended Message ETSI TS 103 301 +-- Latest version available at @url https://forge.etsi.org/rep/ITS/asn1/is_ts103301.git RTCMEM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (103301) rtcmem (5) version1 (1) + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts103301 (103301) rtcmem (5) version1 (1) } -DEFINITIONS AUTOMATIC TAGS ::= +DEFINITIONS AUTOMATIC TAGS ::= BEGIN IMPORTS -RTCMcorrections FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2) } -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)}; +-- @brief Include ISO 19091 +-- Include references from @url https://standards.iso.org/iso/ts/19091/ed-2/en/ISO-TS-19091-addgrp-C-2018.asn +RTCMcorrections +FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2) } +-- @brief Include ETSI TS 102 894-2 +-- Include references from @url https://forge.etsi.org/rep/ITS/ITS_ASN1/blob/master/CDD_TS102894-2/ITS-Container.asn +ItsPduHeader +FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)}; + +-- RTCM corrections extended extended Message + +-- @brief RTCM corrections extended extended Message Root +-- This DF includes DEs for the RTCMEM: protocolVersion, the RTCMEM message type identifier _messageID_, +-- the station identifier _stationID_ of the originating ITS-S and the RTCM corrections as os ISO TS 19091. RTCMEM ::= SEQUENCE { - header ItsPduHeader, + -- @details header + -- The DE _protocolVersion_ is used to select the appropriate protocol decoder at the receiving ITS-S. + -- It shall be set to 1. + -- The DE _messageID_ shall be rtcmem(13). + header ItsPduHeader, + -- @details rtcmc + -- The DE _rtcmc_ contains the RTCM corrections data as defined in ISO TS 19091. rtcmc RTCMcorrections } diff --git a/SPATEM-PDU-Descriptions.asn b/SPATEM-PDU-Descriptions.asn index 96aa188760c1b0862b1a5efdd9e262136460046f..b933c5ecb26533e2bbca9a16705b4acd202f45b8 100755 --- a/SPATEM-PDU-Descriptions.asn +++ b/SPATEM-PDU-Descriptions.asn @@ -1,23 +1,39 @@ --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: Signal phase and timing extended message --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- @brief Specification of the Signal phase and timing extended Message ETSI TS 103 301 +-- Latest version available at @url https://forge.etsi.org/rep/ITS/asn1/is_ts103301.git + SPATEM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (103301) spatem (0) version2 (2) + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts103301 (103301) spatem (0) version2 (2) } -DEFINITIONS AUTOMATIC TAGS ::= +DEFINITIONS AUTOMATIC TAGS ::= BEGIN IMPORTS -SPAT FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2) } -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2) }; +-- @brief Include ISO TS 19091 +-- Include references from @url https://standards.iso.org/iso/ts/19091/ed-2/en/ISO-TS-19091-addgrp-C-2018.asn +SPAT +FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2) } + +-- @brief Include ETSI TS 102 894-2 +-- Include references from @url https://forge.etsi.org/rep/ITS/ITS_ASN1/blob/master/CDD_TS102894-2/ITS-Container.asn +ItsPduHeader +FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2) }; + +-- Signal phase and timing extended Message +-- @brief Signal phase and timing extended Message Root +-- This DF includes DEs for the SPATEM: protocolVersion, the SPATEM message type identifier _messageID_, +-- the station identifier _stationID_ of the originating ITS-S and the SPaT data from ISO TS 19091. SPATEM ::= SEQUENCE { + -- @details header + -- The DE _protocolVersion_ is used to select the appropriate protocol decoder at the receiving ITS-S. + -- It shall be set to 2. + -- The DE _messageID_ shall be spatem(4). header ItsPduHeader, + -- @details spat + -- The DE _spat_ contains the SPaT data as defined in ISO TS 19091. spat SPAT } diff --git a/SREM-PDU-Descriptions.asn b/SREM-PDU-Descriptions.asn index 57f9c5d4c2a7dbce9c35f398e20dce40f7b8554b..aa4570d95da7fa4e003ddf1e556c0917c63b27bc 100755 --- a/SREM-PDU-Descriptions.asn +++ b/SREM-PDU-Descriptions.asn @@ -1,23 +1,39 @@ --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: Signal request extended message --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- @brief Specification of the Signal request extended Message ETSI TS 103 301 +-- Latest version available at @url https://forge.etsi.org/rep/ITS/asn1/is_ts103301.git SREM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (103301) srem (3) version2 (2) + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts103301 (103301) srem (3) version2 (2) } -DEFINITIONS AUTOMATIC TAGS ::= +DEFINITIONS AUTOMATIC TAGS ::= BEGIN IMPORTS -SignalRequestMessage FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2) } -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)}; +-- @brief Include ISO 19091 +-- Include references from @url https://standards.iso.org/iso/ts/19091/ed-2/en/ISO-TS-19091-addgrp-C-2018.asn +SignalRequestMessage +FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2) } + +-- @brief Include ETSI TS 102 894-2 +-- Include references from @url https://forge.etsi.org/rep/ITS/ITS_ASN1/blob/master/CDD_TS102894-2/ITS-Container.asn +ItsPduHeader +FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)}; + +-- Signal request extended Message Message + +-- @brief Signal request extended Message Root +-- This DF includes DEs for the SREM: protocolVersion, the SREM message type identifier _messageID_, +-- the station identifier _stationID_ of the originating ITS-S and the signal request data ISO TS 19091. SREM ::= SEQUENCE { + -- @details header + -- The DE _protocolVersion_ is used to select the appropriate protocol decoder at the receiving ITS-S. + -- It shall be set to 2. + -- The DE _messageID_ shall be srem(9). header ItsPduHeader, + -- @details srm + -- The DE _srm_ contains the Signal request data as defined in ISO TS 19091. srm SignalRequestMessage } diff --git a/SSEM-PDU-Descriptions.asn b/SSEM-PDU-Descriptions.asn index 10962bb952642eccc49ef36b37e5f0ba6f893f63..f70cb18cb8d940641db28ae02f83bfff0e396c7c 100755 --- a/SSEM-PDU-Descriptions.asn +++ b/SSEM-PDU-Descriptions.asn @@ -1,24 +1,39 @@ --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: Signal status extended message --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- @brief Specification of the Signal status extended Message ETSI TS 103 301 +-- Latest version available at @url https://forge.etsi.org/rep/ITS/asn1/is_ts103301.git SSEM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (103301) ssem (4) version2 (2) + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts103301 (103301) ssem (4) version2 (2) } -DEFINITIONS AUTOMATIC TAGS ::= +DEFINITIONS AUTOMATIC TAGS ::= BEGIN IMPORTS -SignalStatusMessage FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2) } -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)}; +-- @brief Include ISO 19091 +-- Include references from @url https://standards.iso.org/iso/ts/19091/ed-2/en/ISO-TS-19091-addgrp-C-2018.asn +SignalStatusMessage +FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2) } +-- @brief Include ETSI TS 102 894-2 +-- Include references from @url https://forge.etsi.org/rep/ITS/ITS_ASN1/blob/master/CDD_TS102894-2/ITS-Container.asn +ItsPduHeader +FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)}; + +-- Signal status extended Message + +-- @brief Signal status extended Message Root +-- This DF includes DEs for the SSEM: protocolVersion, the SSEM message type identifier _messageID_ and +-- the station identifier _stationID_ of the originating ITS-S and the signal status data ISO TS 19091. SSEM ::= SEQUENCE { + -- @details header + -- The DE _protocolVersion_ is used to select the appropriate protocol decoder at the receiving ITS-S. + -- It shall be set to 2. + -- The DE _messageID_ shall be ssem(10). header ItsPduHeader, + -- @details ssm + -- The DE _ssm_ contains the Signal status data as defined in ISO TS 19091. ssm SignalStatusMessage } diff --git a/iso-patched/ISO14823-missing.asn b/iso-patched/ISO14823-missing.asn new file mode 100644 index 0000000000000000000000000000000000000000..60db2d4911722ce8916a876459fdbda9c50c7178 --- /dev/null +++ b/iso-patched/ISO14823-missing.asn @@ -0,0 +1,232 @@ +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- ISO TS 14823 +-- +-- This ASN.1 was generated: 30.08.2016 +-- +-- This document contains only the data element needed for the encoding of an IVI message +-- as defined in ISO TS 19321(2020) +-- +-- Published version location (yet missing there): +-- https://standards.iso.org/iso/ts/14823/ +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +GDD {iso (1) standard (0) gdd(14823) version1 (0)} + +DEFINITIONS AUTOMATIC TAGS::= +BEGIN + +--Definition of GDD Structure + +GddStructure::= SEQUENCE{ + pictogramCode SEQUENCE { + countryCode OCTET STRING (SIZE (2)) OPTIONAL, + serviceCategoryCode CHOICE { + trafficSignPictogram ENUMERATED {dangerWarning, regulatory, informative,...}, + publicFacilitiesPictogram ENUMERATED {publicFacilities, ...}, + ambientOrRoadConditionPictogram ENUMERATED {ambientCondition, roadCondition,...}, + ...}, + pictogramCategoryCode SEQUENCE { + nature INTEGER (1..9), + serialNumber INTEGER (0..99) +}}, + attributes GddAttributes OPTIONAL +} + +-- Definition of the single ISO 14823 Attributes +GddAttributes::= SEQUENCE (SIZE(1..8),...) OF GddAttribute + +GddAttribute::= CHOICE{ + dtm InternationalSign-applicablePeriod, -- Date/Time/Period + edt InternationalSign-exemptedApplicablePeriod,-- Exemption status of Date/Time/Period + dfl InternationalSign-directionalFlowOfLane,-- Directional Flow of Lane + ved InternationalSign-applicableVehicleDimensions,-- Vehicle Dimensions + spe InternationalSign-speedLimits,-- Speed + roi InternationalSign-rateOfIncline,-- Rate of Incline + dbv InternationalSign-distanceBetweenVehicles,-- Distance Between Vehicles + ddd InternationalSign-destinationInformation,-- Destination/Direction/Distance + set InternationalSign-section, -- Section + nol InternationalSign-numberOfLane -- Number of Lanes + } + +InternationalSign-applicablePeriod::= SEQUENCE { + year SEQUENCE { -- contains yearRangeStartYear and yearRangeEndYear + yearRangeStartYear INTEGER(2000..2127,...), + yearRangeEndYear INTEGER(2000..2127,...) + } OPTIONAL, + month-day SEQUENCE { -- contains dateRangeStartMonth&Date and dateRangeEndMonth&Date + dateRangeStartMonthDay MonthDay, + dateRangeEndMonthDay MonthDay + } OPTIONAL, + repeatingPeriodDayTypes RepeatingPeriodDayTypes OPTIONAL, + hourMinutes SEQUENCE { -- contains timeRangeStartTime and timeRangeEndTime + timeRangeStartTime HoursMinutes, + timeRangeEndTime HoursMinutes + } OPTIONAL, + dateRangeOfWeek DayOfWeek OPTIONAL, + durationHourMinute HoursMinutes OPTIONAL +} + +InternationalSign-exemptedApplicablePeriod::= InternationalSign-applicablePeriod + +InternationalSign-directionalFlowOfLane::= INTEGER { + sDL (1),-- Straight Direction Only + sLT (2),-- Straight and Left Turn Only + sRT (3),-- Straight and Right Turn Only + lTO (4),-- Left Turn Only + rTO (5),-- Right Turn Only + cLL (6),-- Convergence from the Left Lane + cRI (7),-- Convergence from the Right Lane + oVL (8) -- Oncoming Vehicles Lane + } (1..8) + +InternationalSign-applicableVehicleDimensions::= SEQUENCE{ + vehicleHeight Distance OPTIONAL, + vehicleWidth Distance OPTIONAL, + vehicleLength Distance OPTIONAL, + vehicleWeight Weight OPTIONAL + } + +InternationalSign-speedLimits::= SEQUENCE{ + speedLimitMax INTEGER(0..250) OPTIONAL, + speedLimitMin INTEGER(0..250) OPTIONAL, + unit Code-Units (0..1) + } + +InternationalSign-rateOfIncline::= INTEGER(1..32) + +InternationalSign-distanceBetweenVehicles::= Distance + +InternationalSign-destinationInformation::= SEQUENCE{ + junctionDirection INTEGER(1..128) OPTIONAL, + roundaboutCwDirection INTEGER(1..128)OPTIONAL, + roundaboutCcwDirection INTEGER(1..128)OPTIONAL, + ioList DDD-IO-LIST + } + +InternationalSign-section::= SEQUENCE{ + startingPointLength Distance OPTIONAL, + continuityLength Distance OPTIONAL + } + +InternationalSign-numberOfLane::= INTEGER(0..99) + +-- Definition of data elements used in ISO 14823 attributes + +Code-Units::= INTEGER { + kmperh (0), + milesperh (1), + kilometre (2), + metre (3), + decimetre (4), + centimetre (5), + mile (6), + yard (7), + foot (8), + minutesOfTime (9), + tonnes (10),--1000 kg, not Ton! + hundredkg (11), + pound (12),--lbs + rateOfIncline (13), + durationinminutes (14) + -- value 15 reserved for future use + } (0..15) + +DayOfWeek::= BIT STRING {unused(0), monday(1), tuesday(2), wednesday(3), thursday(4), friday(5), saturday(6), sunday(7)} (SIZE (8)) + +DDD-IO-LIST ::= SEQUENCE (SIZE (1..8,...)) OF DDD-IO + +DDD-IO::= SEQUENCE{ + arrowDirection INTEGER(0..7), + destPlace DestinationPlaces OPTIONAL, + destRoad DestinationRoads OPTIONAL, + roadNumberIdentifier INTEGER(1..999) OPTIONAL, + streetName INTEGER(1..999) OPTIONAL, + streetNameText UTF8String OPTIONAL, + distanceToDivergingPoint DistanceOrDuration OPTIONAL, + distanceToDestinationPlace DistanceOrDuration OPTIONAL + } + +DestinationPlace::= SEQUENCE{ + destType DestinationType, + destRSCode GddStructure (WITH COMPONENTS {..., attributes ABSENT}) OPTIONAL, + destBlob OCTET STRING OPTIONAL, + placeNameIdentification INTEGER(1..999) OPTIONAL, + placeNameText UTF8String OPTIONAL + } + +DestinationPlaces ::= SEQUENCE (SIZE (1..4,...)) OF DestinationPlace + +DestinationRoad::= SEQUENCE{ + derType DestinationRoadType, + roadNumberIdentifier INTEGER(1..999) OPTIONAL, + roadNumberText UTF8String OPTIONAL + } + +DestinationRoads ::= SEQUENCE (SIZE (1..4,...)) OF DestinationRoad + +DestinationRoadType::= INTEGER { + none (0), + nationalHighway (1), + localHighway (2), + tollExpresswayMotorway (3), + internationalHighway (4), + highway (5), + expressway (6), + nationalRoad (7), + regionalProvincialRoad (8), + localRoad (9), + motorwayJunction (10), + diversion (11), + rfu1 (12), + rfu2 (13), + rfu3 (14), + rfu4 (15) + } (0..15, ...) + +DestinationType::= INTEGER { + none (0), + importantArea (1), + principalArea (2), + generalArea (3), + wellKnownPoint (4), + country (5), + city (6), + street (7), + industrialArea (8), + historicArea (9), + touristicArea (10), + culturalArea (11), + touristicRoute (12), + recommendedRoute (13), + touristicAttraction (14), + geographicArea (15) + } (0..15, ...) + +Distance::= SEQUENCE{ + value INTEGER(1..16384), + unit Code-Units(2..4|6..8) + } + +DistanceOrDuration::= SEQUENCE { + value INTEGER(1..16384), + unit Code-Units (2..9) + } + +HoursMinutes::= SEQUENCE { + hours INTEGER (0..23),-- number of hours after midnight + mins INTEGER (0..59) -- number of minutes after the hour + } + +MonthDay::= SEQUENCE { + month INTEGER (1..12), + day INTEGER (1..31) + } + +RepeatingPeriodDayTypes::= BIT STRING {national-holiday (0), even-days(1), odd-days(2), market-day(3) } (SIZE (4)) + +Weight::= SEQUENCE { + value INTEGER(1..16384), + unit Code-Units (10..12) + } + +END diff --git a/iso-patched/ISO14906(2018)EfcDsrcApplicationv6-patched.asn b/iso-patched/ISO14906(2018)EfcDsrcApplicationv6-patched.asn new file mode 100644 index 0000000000000000000000000000000000000000..49049c58ed67f44fc33075678bf931a4256fb1fa --- /dev/null +++ b/iso-patched/ISO14906(2018)EfcDsrcApplicationv6-patched.asn @@ -0,0 +1,630 @@ +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- ISO TS 14906 App +-- +-- This ASN.1 was generated: 30.08.2016 +-- +-- This document contains a compile clean version of EfcDsrcApplication module +-- +-- Published version location: +-- https://standards.iso.org/iso/14906/ed-3/en/ISO14906(2018)EfcDsrcApplicationv6.asn +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +EfcDsrcApplication {iso(1) standard(0) 14906 application(0) version6(6)} +DEFINITIONS AUTOMATIC TAGS ::= BEGIN +EXPORTS ALL; +IMPORTS +CountryCode, CS5, IssuerIdentifier +FROM AVIAEINumberingAndDataStructures {iso(1) standard(0) iso14816(14816) asnm1(1) version1(1) } +-- defined in ISO 14816 -- +AttributeIdList, Attributes{}, AttributeList{} +FROM EfcDsrcGeneric {iso(1) standard(0) 14906 generic(1) version7(7)}; +-- NOTE: The following are the definitions of the action and response +-- parameters +ActualNumberOfPassengers ::= Int1 +AxleWeightLimits ::= SEQUENCE{ +maxLadenweightOnAxle1 Int2, +maxLadenweightOnAxle2 Int2, +maxLadenweightOnAxle3 Int2, +maxLadenweightOnAxle4 Int2, +maxLadenweightOnAxle5 Int2 +} +AddRq::= SEQUENCE { +attributeId INTEGER(0..127,...), +value INTEGER +} +ChannelId::= INTEGER { +obu (0), +sam1 (1), -- secure application module +sam2 (2), +icc (3), -- integrated circuit(s) card +display (4), +buzzer (5), +printer (6), +serialInterface (7), -- serial interface: eg. RS232 and RS485 +parallelInterface (8), +gPS (9), +tachograph (10), +privateUse1 (11), -- free for proprietary use +privateUse2 (12), -- free for proprietary use +privateUse3 (13), -- free for proprietary use +privateUse4 (14), -- free for proprietary use +privateUse5 (15), -- free for proprietary use +bluetooth (16) +-- (17-255) are reserved for future CEN use +} (0..255) +ChannelRq::= SEQUENCE{ +channelId ChannelId, +apdu OCTET STRING +-- format according to the interface +-- of the channelId +} +ChannelRs::= SEQUENCE{ +channelId ChannelId, +apdu OCTET STRING +-- format according to the interface +-- of the channelId +} +CopyRq::= SEQUENCE { +destinationEID INTEGER(0..127,...), +attributeIdList AttributeIdList +} +CreditRq::= SEQUENCE { +refund PaymentFee, +nonce OCTET STRING, +key INTEGER(0..255) +} +CreditRs ::= SEQUENCE { +creditResult ResultFin, +creditAuthenticator OCTET STRING +} +DebitRq::= SEQUENCE { +debitPaymentFee PaymentFee, +nonce OCTET STRING, +keyRef INTEGER(0..255) +} +DebitRs ::= SEQUENCE { +debitResult ResultFin, +debitAuthenticator OCTET STRING +} +GetInstanceRq ::= SEQUENCE { +posOfFirstInstance INTEGER(0..255), -- position of first instance to be retrieved +posOfLastInstance INTEGER(0..255), -- position last instance to be retrieved +attributeIdList AttributeIdList -- Ids of attributes to be retrieved +} +GetInstanceRs{Container}::= SEQUENCE (SIZE (0..127,...)) OF SEQUENCE { +attributeId INTEGER(0..127,...), +-- number of instances retrieved +attributeValues Container (WITH COMPONENTS {octetstring PRESENT}) +-- The octetstring shall contain the contatenation of +-- the unaligned PER encodings of the values of the +-- instances, with each encoding padded to an integral +-- of octets as specified for a top-level type in +-- ISO/IEC 8825-2 +} +GetStampedRq::= SEQUENCE { +attributeIdList AttributeIdList, +nonce OCTET STRING, -- e.g. a random number +keyRef INTEGER(0..255) +} +GetStampedRs{Container}::= SEQUENCE { +attributeList AttributeList{Container}, +authenticator OCTET STRING +} +SetInstanceRq{Container} ::= SEQUENCE { +posOfInstance INTEGER(0..255), +attribute Attributes{Container} +} +SetMMIRq::= INTEGER { +ok (0), -- operation / transaction successfully completed +nok (1), -- operation / transaction not successfully completed +contactOperator (2), -- e.g. due to low balance or battery +noSignalling (255) -- no signalling +-- (3-127) are reserved for future CEN use +-- (128-254) are reserved for private use +} (0..255) +SetStampedRq{Container}::= SEQUENCE { +attributeList AttributeList{Container}, +nonce OCTET STRING, +keyRef INTEGER(0..255) +} +SubRq::= SEQUENCE { +attributeId INTEGER(0..127,...), +value INTEGER +} +-- NOTE: The following are the definitions of EFC attributes +CO2EmissionValue ::= Int2 +ContractSerialNumber ::= Int4 +ContractAuthenticator ::= OCTET STRING +ContractValidity ::= SEQUENCE { +contractRestrictions OCTET STRING (SIZE(4)), +contractExpiryDate DateCompact +} -- intended to support ISO/TR 1998 implemented systems +ContractVehicle ::= LPN +DateCompact::= SEQUENCE { +year INTEGER (1990..2117), +month INTEGER (0..12), -- Value zero shall not be used +-- except with 1990 - see below. +day INTEGER (0..31) -- Value zero shall not be used +-- except with 1990 � see below. +} +-- The value "{year 1990, month 0, day 0}" is a 16-bit all-zero +-- encoding, and is used to represent "no date". +DescriptiveCharacteristics ::= INTEGER { +noEntry (0), +vehicleShape1 (1), +vehicleShape2 (2), +vehicleShape3 (3), +vehicleShape4 (4), +vehicleShape5 (5), +vehicleShape6 (6), +vehicleShape7 (7), +vehicleShape8 (8), +vehicleShape9 (9), +vehicleShape10 (10), +vehicleShape11 (11), +vehicleShape12 (12), +vehicleShape13 (13), +vehicleShape14 (14), +vehicleShape15 (15), +vehicleShape16 (16), +vehicleShape17 (17), +vehicleShape18 (18), +vehicleShape19 (19), +vehicleShape20 (20), +vehicleShape21 (21), +vehicleShape22 (22), +vehicleShape23 (23), +vehicleShape24 (24), +vehicleShape25 (25), +vehicleShape26 (26), +vehicleShape27 (27), +vehicleShape28 (28), +vehicleShape29 (29), +vehicleShape30 (30), +vehicleShape31 (31), +vehicleShape32 (32), +vehicleShape33 (33), +vehicleShape34 (34), +vehicleShape35 (35), +vehicleShape36 (36), +vehicleShape37 (37), +vehicleShape38 (38), +vehicleShape39 (39), +vehicleShape40 (40), +vehicleShape41 (41), +vehicleShape42 (42), +vehicleShape43 (43), +vehicleShape44 (44), +vehicleShape45 (45), +vehicleShape46 (46), +vehicleShape47 (47), +vehicleShape48 (48), +vehicleShape49 (49), +vehicleShape50 (50) +-- (1..50) are reserved for future CEN use +-- (51..255) are reserved for private use +} (0..255) +DieselEmissionValues::= SEQUENCE { +particulate SEQUENCE { +unitType UnitType, +value INTEGER (0..32767) +}, +absorptionCoeff Int2 } +DriverCharacteristics ::= SEQUENCE { +driverClass Int1, +tripPurpose Int1 +} +EFC-ContextMark ::= SEQUENCE { +contractProvider Provider, +typeOfContract OCTET STRING (SIZE(2)), +contextVersion INTEGER(0..127,...) +} +EnvironmentalCharacteristics::= SEQUENCE { +euroValue EuroValue, +copValue CopValue +} +EuroValue::= ENUMERATED { +noEntry (0), +euro-1 (1), +euro-2 (2), +euro-3 (3), +euro-4 (4), +euro-5 (5), +euro-6 (6), +reservedForUse1 (7), +reservedForUse2 (8), +reservedForUse3 (9), +reservedForUse4 (10), +reservedForUse5 (11), +reservedForUse6 (12), +reservedForUse7 (13), +reservedForUse8 (14), +eev (15) +} -- 4 bits, EURO-Classes as defined in EC directive 88/77/EEC, annex 1 +-- and in 91/542/EEC, 96/1/EC, 1999/96/EC, 2001/27/EC, regulation No 595/2009 +-- and for EEV in Section 6.2.1 of Annex I in EC directive 2005/55/EC +-- EUR-Class VI as defined in Regulation (EC) No 595/2009 +CopValue::= ENUMERATED { +noEntry (0), +co2class1 (1), -- below 101 g/km +co2class2 (2), -- 101 to 120 g/km +co2class3 (3), -- 121 to 140 g/km +co2class4 (4), -- 141 to 160 g/km +co2class5 (5), -- 161 to 200 g/km +co2class6 (6), -- 201 to 250 g/km +co2class7 (7), -- above 250 g/km +reservedforUse (8) -- reserved for future CEN and ISO use +} -- 4 bits, reserved for carbon dioxide pollution values as defined in +-- EC directive 2003/127/EC' +EngineCharacteristics::= INTEGER { +noEntry (0), +noEngine (1), +petrolUnleaded (2), +petrolLeaded (3), +diesel (4), +lPG (5), +battery (6), +solar (7), +hybrid (8), +hydrogen (9) +-- (10-255) are reserved for future CEN use +} (0..255) +Engine ::= SEQUENCE{ +engineCapacity Int2, +enginePower Int2 +} +EquipmentOBUId ::= OCTET STRING +EquipmentStatus ::= BIT STRING (SIZE(16)) +ExhaustEmissionValues ::= SEQUENCE { +unitType UnitType, +emissionCO INTEGER (0..32767), +emissionHC Int2, +emissionNOX Int2, +emissionHCNOX Int2 +} +FutureCharacteristics ::= INTEGER { +noEntry (0), +airSuspension (1) +-- (2..255) are reserved for future CEN use +} (0..255) +ICC-Id ::= OCTET STRING +Int1 ::= INTEGER(0..255) +Int2 ::= INTEGER(0..65535) +Int3 ::= INTEGER(0..16777215) +Int4 ::= INTEGER(0..4294967295) +LPN::= SEQUENCE { +countryCode CountryCode, +alphabetIndicator ENUMERATED { +latinAlphabetNo1 (1), -- encoded as 00 00 00'B +latinAlphabetNo2 (2), -- encoded as 00 00 01'B etc +latinAlphabetNo3 (3), +latinAlphabetNo4 (4), +latinCyrillicAlphabet (5), +latinArabicAlphabet (6), +latinGreekAlphabet (7), +latinHebrewAlphabet (8), +latinAlphabetNo5 (9), +latinAlphabetNo6 (10), +twoOctetBMP (11), +fourOctetCanonical (12), +reservedForUse1 (13), +reservedForUse2 (14), +reservedForUse3 (15), +reservedForUse4 (16), +reservedForUse5 (17), +reservedForUse6 (18), +reservedForUse7 (19), +reservedForUse8 (20), +reservedForUse9 (21), +reservedForUse10 (22), +reservedForUse11 (23), +reservedForUse12 (24), +reservedForUse13 (25), +reservedForUse14 (26), +reservedForUse15 (27), +reservedForUse16 (28), +reservedForUse17 (29), +reservedForUse18 (30), +reservedForUse19 (31), +reservedForUse20 (32), +reservedForUse21 (33) +} -- 6 bits, latinAlphabetNo1 recommended -- , +-- refer to Annex E for conversion from LatinAlphabetNo 2 +-- and 5 to Latin AlphabetNo1 +licencePlateNumber OCTET STRING +} +PassengerCapacity ::= SEQUENCE{ +numberOfSeats Int1, +numberOfStandingPlaces Int1 +} +PaymentFee ::= SEQUENCE { +-- The fee (toll, charge or fare) which is requested by the +-- service provider for the service provided or to be provided. +paymentFeeAmount Int2, +-- paymentFeeAmount is the value of the fee being charged for the +-- service. If no unit (payment fee unit) is specified, then +-- it is known by default. +paymentFeeUnit PayUnit +-- paymentFeeUnit is the unit in which the fee is expressed. +} +PaymentMeans ::= SEQUENCE { +personalAccountNumber PersonalAccountNumber, +paymentMeansExpiryDate DateCompact, +pamentMeansUsageControl OCTET STRING(SIZE(2)) +-- issuer's specified restrictions, on the geographic usage +-- and services allowed for the applications +} +PaymentMeansBalance ::= SignedValue +SignedValue ::= CHOICE { +positive INTEGER (0..8388607), +negative INTEGER (-8388608..-1) +} +-- corresponds to a �3 octets Signed Integer�, associated with the following +-- examples of line codes: +-- -8'388'608 : 80 00 00'H +-- -1 : FF FF FF'H +-- 0 : 00 00 00'H +-- 1 : 00 00 01�H +-- 8'388'607 : 7F FF FF'H +PaymentMeansUnit ::= PayUnit +PaymentSecurityData ::= OCTET STRING +PayUnit ::= OCTET STRING (SIZE(2)) +-- The unique designation of a Currency as defined in ISO 4217 +-- using the ISO numeric binary coded decimal representation. +-- The code can also express a company specific token or a +-- "charging unit code" as used in the freight.unit in which +-- the fee is expressed. +-- Value Assignment : +-- '0xxx'H Currency in main units +-- '1xxx'H Currency in minor units of 10 :1 ('dime') +-- '2xxx'H Currency in minor units of 100 :1 ('cents') +-- '3xxx'H Currency in minor units of 1000 :1 +-- '4xxx'H Currency in 'major' units / 10 +-- (e.g. 10 Belgian Francs) +-- '5xxx'H Currency in 'major' units / 100 +-- (e.g. 100 Italian Lire) +-- '6xxx'H Currency in 'major' units / 1000 +-- '7xxx'H Currency in 'major' units / 10000 +-- '8xxx'H Currency in 'major' units / 100000 +-- where xxx is the BCD representation of "Currency" +-- as defined in ISO 4217 +-- '9xxx'H Tokens +-- where xxx is Purse Provider specific coding. +-- 'Axxx'H Charging Unit Codes, +-- denoting quantification of the service provided +-- (e.g. man-hours) +PersonalAccountNumber ::= OCTET STRING (SIZE(10)) +-- Personal account number structure � according to ISO/IEC 7812-1 +-- Issuer identifier number (�BIN�) +-- Major industry identifier (MII, 1 binary coded decimal, BCD) +-- 0 : reserved for future use by ISO/TC68 +-- 1 : airline sector +-- 2 : extended airline sector +-- 3 : travel and tourism sector +-- 4 : financial banking sector +-- 5 : financial banking sector +-- 6 : commerce and banking sector +-- 7 : petrol industry sector +-- 8 : telecommunication sector +-- 9 : reserved for national use +-- Issuer identifier (5 BCD in the second edition of ISO/IEC 7812-1) +-- Account number (max 12 BCD) +-- Control digit (1 BCD) +-- Padding bits, set to 1'B, in order to accomplish a +-- total length of 10 octets. + +Provider ::= SEQUENCE { +countryCode CountryCode, +providerIdentifier IssuerIdentifier +} +PurseBalance ::= SEQUENCE { +-- The balance on the (electronic) purse, consisting of +-- the value and the unit in which it is expressed. +purseValue SignedValue, +-- The size of a balance expressed in a currency. +-- This may be positive or negative. +purseUnit PayUnit +} +ReceiptContract ::= SEQUENCE { +sessionContractProvider Provider, +sessionTypeOfContract OCTET STRING(SIZE(2)), +sessionContractSerialNumber Int4 +} +ReceiptData1 ::= ReceiptData +ReceiptData2 ::= ReceiptData +ReceiptData ::= SEQUENCE { +sessionTime DateAndTime, +sessionServiceProvider Provider, +locationOfStation Int2, +sessionLocation SessionLocation, +sessionType Int1, +sessionResult ResultOp, +sessionTariffClass Int1, +sessionClaimedClass Int1, +sessionFee PaymentFee, +sessionContractProvider Provider, +sessionTypeOfContract OCTET STRING (SIZE(2)), +sessionContextVersion INTEGER (0..127,...), +receiptDataAuthenticator OCTET STRING(SIZE(4)) +} +ReceiptDistance ::= Int3 +ReceiptFinancialPart ::= SEQUENCE { +personalAccountNumber PersonalAccountNumber, +sessionPaymentFee PaymentFee, +sessionCurrentBalance PurseBalance, +receiptFinancialSerialNumber Int4 +} +ReceiptICC-Id ::= ICC-Id +ReceiptOBUId ::= OCTET STRING +ReceiptServicePart ::= SEQUENCE { +sessionTime DateAndTime, +sessionServiceProvider Provider, +stationLocation INTEGER(0..1048575), +sessionLocation BIT STRING (SIZE(8)), +typeOfSession StationType, +sessionResultOperational ResultOp, +sessionResultFinancial ResultFin +} +ReceiptServiceSerialNumber ::= Int3 +ReceiptAuthenticator ::= OCTET STRING +ReceiptText ::= OCTET STRING +ResultFin ::= OCTET STRING (SIZE(1)) +-- A code designating whether a card transaction was completed successfully +-- or not. Value Assignment : Hexadecimal +-- Most significant 4 bits: 0 OK : +-- '0x'H OK +-- Most significant 4 bits > 0 Not OK : +-- '1x'H Not OK, not specified further +-- '2x'H Not OK, Abnormal (First or Previous) Event +-- '3x'H Not OK, Contract not accepted +-- '4x'H Not OK, Account or Purse not accepted +-- 'x0'H not specified further +-- 'x1'H Balance close to zero +-- 'x2'H Balance now negative +-- 'x3'H Balance Overflow +-- 'x4'H Provider not accepted +-- 'x5'H Authentication failure +-- x6'H Vehicle Class incorrect +ResultOp ::= INTEGER { +correctTransaction (0), -- transaction correct +obeStatusNotAccepted (1), +equipmentStatusNotAccepted (2), +contractNotInWhiteList (3), +-- VST contract data not in white list +contractIdentifierInBlackList (4), +contractIdentifierNotCorrect (5), +-- Luhn algorithm verification failure +expiredContract (6), -- contract expired +contractRestrictionsNotFulfilled (7), +claimedVehicleCharacteristicsNotValid (8), +vehicleClassAuthenticationFailed (9), +entryVehicleClassDifferentFromExitVehicleClass (10), +entryReceiptMissing (11), +entryReceiptNotValid (12), +entryTollStationNotValid (13), +equipmentNotCertified (14), +-- manufacturer or EquipClass not recognised +timeDifference (15), +-- problem with the time diff of the two latest receipts +accessCredentialsNotAccepted (16), +contractAuthenticatorNotAccepted (17), +receiptAuthenticatorNotAccepted (18), +claimedVehicleCharacteristicsMissing (19), +paymentMeansNotAccepted (20), +paymentAuthenticatorNotAccepted (21), +paymentMeansInBlackList (22), +paymentMeansNotCorrect (23), +-- Luhn algorithm verification failure +expiredPaymentMeans (24), +-- PaymentMeans expired +paymentMeansRestrictionsNotFulfilled (25) +-- (26-255) are reserved for future CEN use +} (0..255) +SessionClass ::= SEQUENCE { +sessionTariffClass Int1, +sessionClaimedClass Int1 +} +SessionLocation ::= SEQUENCE { +ascendingKilometrage BOOLEAN, -- travel direction indicator +laneCodeNumber INTEGER(0..127) -- lane code number +} +StationType ::= ENUMERATED { +unspecified (0), +closedEntryWithPayment (1), +closedEntryWithoutPayment (2), +closedTransit (3), +closedExit (4), +closedCredit (5), +mixed (6), +passage (7), -- open exit +checkpoint (8), +reload (9), +reservedForFutureCENUse1 (10), +reservedForFutureCENUse2 (11), +reservedForFutureCENUse3 (12), +reservedForFutureCENUse4 (13), +privateUse5 (14), +privateUse6 (15) +} +DateAndTime ::= SEQUENCE { +timeDate DateCompact, +timeCompact SEQUENCE { -- expresses time of the day in hours, min, and sec +hours INTEGER (0..23), -- number of hours after midnight +mins INTEGER (0..59), -- number of minutes after the hour +double-secs INTEGER (0..30) -- number of two-seconds after the minute +} +-- Midnight at the start of a day cannot be represented. +-- Midnight at the end of a day is represented by +-- {hours 23, mins 59, double-secs 30} +-- The 16 bit zero value {hours 0, mins 0, double-secs 0} +-- denotes "no time" +} +SoundLevel ::= SEQUENCE{ +soundstationary Int1, +sounddriveby Int1 +} +TrailerCharacteristics ::= SEQUENCE { +trailerDetails TrailerDetails, +trailerMaxLadenWeight Int2, +trailerWeightUnladen Int2 +} +TrailerDetails::= SEQUENCE { +trailerType INTEGER{ +notPresent (0), -- trailer not attached or only one trailer attached, see +-- VehicleAxlesNumber for more information +trailer (1), -- also known as pull-bar trailer +semitrailer (2) -- also known as articulate trailer +-- (3..31) reserved for future CEN/ISO use +} (0..31), +trailerAxles TrailerAxles +} +TrailerLicencePlateNumber ::= LPN +UnitType::= ENUMERATED { +mg-km (0), +mg-kWh (1) +} +ValidityOfContract ::= SEQUENCE { +issuerRestrictions OCTET STRING (SIZE(2)), +contractExpiryDate DateCompact +} +VehicleAuthenticator ::= OCTET STRING +VehicleAxles ::= SEQUENCE { +vehicleFirstAxleHeight Int1, +vehicleAxlesNumber SEQUENCE { +tyreType ENUMERATED{ +notSpecified (0), +singleTyre (1), -- single tyre on all axles +dualTyres (2), -- dual tyres on at least one axle +reservedForUse (3) -- reserved for future CEN use +}, +numberOfAxles SEQUENCE { +trailerAxles TrailerAxles, +tractorAxles TractorAxles +} +} +} +TrailerAxles ::= INTEGER (0..7) -- number of axles of the trailer when available +TractorAxles ::= INTEGER (0..7) -- number of axles of the tractor +VehicleClass ::= Int1 +VehicleDimensions ::= SEQUENCE { +vehicleLengthOverall Int1, +vehicleHeigthOverall Int1, +vehicleWidthOverall Int1 +} +VehicleLicencePlateNumber ::= LPN +VehicleIdentificationNumber ::= CS5 +VehicleSpecificCharacteristics ::= SEQUENCE { +environmentalCharacteristics EnvironmentalCharacteristics, +engineCharacteristics EngineCharacteristics, +descriptiveCharacteristics DescriptiveCharacteristics, +futureCharacteristics FutureCharacteristics +} +VehicleTotalDistance ::= Int4 +VehicleWeightLaden ::= Int2 +VehicleCurrentMaxTrainWeight ::= Int2 +VehicleWeightLimits ::= SEQUENCE { +vehicleMaxLadenWeight Int2, +vehicleTrainMaximumWeight Int2, +vehicleWeightUnladen Int2 +} +END diff --git a/iso-patched/ISO14906(2018)EfcDsrcGenericv7-patched.asn b/iso-patched/ISO14906(2018)EfcDsrcGenericv7-patched.asn new file mode 100644 index 0000000000000000000000000000000000000000..1415d25deb750922878757f836b34803fae72610 --- /dev/null +++ b/iso-patched/ISO14906(2018)EfcDsrcGenericv7-patched.asn @@ -0,0 +1,37 @@ +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- ISO TS 14906 Generic +-- +-- This ASN.1 was generated: 30.08.2016 +-- +-- This document contains only the data element needed for the encoding of an IVI message +-- as defined in ISO TS 19321(2020) +-- +-- Published version location: +-- https://standards.iso.org/iso/14906/ed-3/en/ISO14906(2018)EfcDsrcGenericv7.asn +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +EfcDsrcGeneric {iso(1) standard(0) 14906 generic(1) version7(7)} +DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +AttributeIdList ::= SEQUENCE (SIZE(0.. 127,...)) OF INTEGER(0..127,...) + +AttributeList{Container} ::= SEQUENCE (SIZE(0..127,...)) OF Attributes{Container} + +Attributes{Container} ::= SEQUENCE { + attributeId INTEGER (0..127,...), + attributeValue Container +} + +END +-- Below imported data from ISO 14816's ASN.1 module +-- AVIAEINumberingAndDataStructures {iso(1) standard(0) 14816 } +-- DEFINITIONS AUTOMATIC TAGS ::= BEGIN +-- EXPORTS ALL; +-- CS5 ::= VisibleString +-- CountryCode ::= BIT STRING(SIZE(10)) +-- Value assignment is done in accordance with ISO 3166-1 and by +-- using the ITA.2 alphabet. +-- IssuerIdentifier ::= INTEGER(0 .. 16383) +-- See Annex A of ISO 14816 for registration +-- END \ No newline at end of file diff --git a/iso-patched/ISO24534-3_ElectronicRegistrationIdentificationVehicleDataModule-patched.asn b/iso-patched/ISO24534-3_ElectronicRegistrationIdentificationVehicleDataModule-patched.asn new file mode 100644 index 0000000000000000000000000000000000000000..3f93794fb23ab4ad8dfa5db3eb16dafc2dd092a5 --- /dev/null +++ b/iso-patched/ISO24534-3_ElectronicRegistrationIdentificationVehicleDataModule-patched.asn @@ -0,0 +1,85 @@ +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- ISO TS 24534-3:2015 +-- +-- This ASN.1 was generateds: 30.08.2016 +-- +-- This document contains only the data element needed for the encoding of an IVI message +-- as defined in ISO TS 19321(2020) +-- +-- Published version location: +-- https://standards.iso.org/iso/24534/-3/ISO%2024534-3%20ASN.1%20repository/ +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-- ISO 24534-3:2015 +-- Version 29.4.2015 + + +ElectronicRegistrationIdentificationVehicleDataModule {iso(1) standard(0) iso24534 (24534) vehicleData (1) version1 (1)} + + +DEFINITIONS AUTOMATIC TAGS ::= BEGIN + +-- Electronic Registration Identification (ERI)- Vehicle Data + +EuVehicleCategoryCode ::= CHOICE { + euVehicleCategoryL EuVehicleCategoryL, -- conforms to EU 2002/24 and UNECE 1999 + euVehicleCategoryM EuVehicleCategoryM, -- conforms to EU 2001/116 and UNECE 1999 + euVehicleCategoryN EuVehicleCategoryN, -- conforms to EU 2001/116 and UNECE 1999 + euVehicleCategoryO EuVehicleCategoryO, -- conforms to EU 2001/116 and UNECE 1999 + euVehilcleCategoryT NULL, -- conforms to UNECE 1999 + euVehilcleCategoryG NULL -- conforms to EU 2001/116 and UNECE 1999 +} + +EuVehicleCategoryL ::= ENUMERATED { l1, l2, l3, l4, l5, l6, l7 } + +EuVehicleCategoryM ::= ENUMERATED {m1, m2, m3} + +EuVehicleCategoryN ::= ENUMERATED {n1, n2, n3} + +EuVehicleCategoryO ::= ENUMERATED {o1, o2, o3, o4} + +Iso3833VehicleType ::= INTEGER { + passengerCar (0), -- term No 3.1.1 + saloon (1), -- term No 3.1.1.1 (sedan) + convertibleSaloon (2), -- term No 3.1.1.2 + pullmanSaloon (3), -- term No 3.1.1.3 + stationWagon (4), -- term No 3.1.1.4 + truckStationWagon (5), -- term No 3.1.1.4.1 + coupe (6), -- term No 3.1.1.5 (coup�) + convertible (7), -- term No 3.1.1.6 (open tourer, roadstar, spider) + multipurposePassengerCar (8), -- term No 3.1.1.7 + forwardControlPassengerCar (9), -- term No 3.1.1.8 + specialPassengerCar (10), -- term No 3.1.1.9 + bus (11), -- term No 3.1.2 + minibus (12), -- term No 3.1.2.1 + urbanBus (13), -- term No 3.1.2.2 + interurbanCoach (14), -- term No 3.1.2.3 + longDistanceCoach (15), -- term No 3.1.2.4 + articulatedBus (16), -- term No 3.1.2.5 + trolleyBus (17), -- term No 3.1.2.6 + specialBus (18), -- term No 3.1.2.7 + commercialVehicle (19), -- term No 3.1.3 + specialCommercialVehicle (20), -- term No 3.1.3.1 + specialVehicle (21), -- term No 3.1.4 + trailingTowingVehicle (22), -- term No 3.1.5 (draw-bar tractor) + semiTrailerTowingVehicle (23), -- term No 3.1.6 (fifth wheel tractor) + trailer (24), -- term No 3.2.1 + busTrailer (25), -- term No 3.2.1.1 + generalPurposeTrailer (26), -- term No 3.2.1.2 + caravan (27), -- term No 3.2.1.3 + specialTrailer (28), -- term No 3.2.1.4 + semiTrailer (29), -- term No 3.2.2 + busSemiTrailer (30), -- term No 3.2.2.1 + generalPurposeSemiTrailer (31), -- term No 3.2.2.2 + specialSemiTrailer (32), -- term No 3.2.2.3 + roadTrain (33), -- term No 3.3.1 + passengerRoadTrain (34), -- term No 3.3.2 + articulatedRoadTrain (35), -- term No 3.3.3 + doubleRoadTrain (36), -- term No 3.3.4 + compositeRoadTrain (37), -- term No 3.3.5 + specialRoadTrain (38), -- term No 3.3.6 + moped (39), -- term No 3.4 + motorCycle (40) -- term No 3.5 + } (0..255) + +END diff --git a/syntax_check.bash b/syntax_check.bash new file mode 100755 index 0000000000000000000000000000000000000000..3361c80b7c21eba90d4db6fa29e85a18226700e5 --- /dev/null +++ b/syntax_check.bash @@ -0,0 +1,106 @@ +#!/bin/bash -e +# ---------------------------------------------------- +# This script uses the Open Source asn1c to check all used ASN.1 modules +# are compile clean (no guarantee the generated code is valid). +# +# The used compile binary was built from here: +# https://github.com/brchiu/asn1c/commits/velichkov_s1ap_plus_option_group_plus_adding_trailing_ull +# +# The referenced ISO ASN.1 modules are pulled from the ISO Standards Maintenance Portal +# Yet not all are compile clean, thus minor fixed need to be done. +# All these changes are irrelevant for the resulting encoding. +# - Fixing duplicate DE tags +# - Fixing OID typo +# - Removing unused types (which bloat the IMPORTS) +# ---------------------------------------------------- + +# set -x + +install -d build/asn1 build/spatem build/ivim + +if [ ! -f build/asn1/ISO-TS-19091-addgrp-C-2018.asn ]; then + wget -P build/asn1 https://standards.iso.org/iso/ts/19091/ed-2/en/ISO-TS-19091-addgrp-C-2018.asn + sed -e 's/\bHeadingConfidence\b/HeadingConfidenceDSRC/g' \ + -e 's/\bSpeedConfidence\b/SpeedConfidenceDSRC/g' \ + -e 's/\bHeading\b/HeadingDSRC/g' \ + build/asn1/ISO-TS-19091-addgrp-C-2018.asn > build/asn1/ISO-TS-19091-addgrp-C-2018-patched.asn +fi +if [ ! -f 'build/asn1/ISO19321(2019)IVIv2.asn' ]; then + wget -P build/asn1 'https://standards.iso.org/iso/ts/19321/ed-2/en/ISO19321IVIv2.asn' +fi +if [ ! -f build/asn1/ISO24534-3_ElectronicRegistrationIdentificationVehicleDataModule_ForBallot.asn ]; then + wget -P build/asn1 'https://standards.iso.org/iso/24534/-3/ISO%2024534-3%20ASN.1%20repository/ISO24534-3_ElectronicRegistrationIdentificationVehicleDataModule_ForBallot.asn' +fi +if [ ! -f build/asn1/ISO14816_AVIAEINumberingAndDataStructures.asn ]; then + wget -P build/asn1 https://standards.iso.org/iso/14816/ISO14816%20ASN.1%20repository/ISO14816_AVIAEINumberingAndDataStructures.asn +fi +if [ ! -f 'build/asn1/ISO14906(2018)EfcDsrcApplicationv6.asn' ]; then + wget -P build/asn1 'https://standards.iso.org/iso/14906/ed-3/en/ISO14906(2018)EfcDsrcApplicationv6.asn' +fi +if [ ! -f 'build/asn1/ISO14906(2018)EfcDsrcGenericv7.asn' ]; then + wget -P build/asn1 'https://standards.iso.org/iso/14906/ed-3/en/ISO14906(2018)EfcDsrcGenericv7.asn' +fi +if [ ! -f 'build/asn1/TS17419_2014_CITSapplMgmtIDs.asn' ]; then + wget -P build/asn1 'https://standards.iso.org/iso/ts/17419/TS%2017419%20ASN.1%20repository/TS17419_2014_CITSapplMgmtIDs.asn' +fi +if [ ! -f 'build/asn1/ISO14906(2018)EfcDsrcGenericv7.asn' ]; then + wget -P build/asn1 'https://standards.iso.org/iso/14906/ed-3/en/ISO14906(2018)EfcDsrcGenericv7.asn' +fi + +install -d build/ivim +asn1c -D build/ivim -R -no-gen-example -fcompound-names \ + 'IVIM-PDU-Descriptions.asn' \ + 'cdd/ITS-Container.asn' \ + 'iso-patched/ISO24534-3_ElectronicRegistrationIdentificationVehicleDataModule-patched.asn' \ + 'iso-patched/ISO14823-missing.asn' \ + 'build/asn1/TS17419_2014_CITSapplMgmtIDs.asn' \ + 'iso-patched/ISO14906(2018)EfcDsrcGenericv7-patched.asn' \ + 'iso-patched/ISO14906(2018)EfcDsrcApplicationv6-patched.asn' \ + 'build/asn1/ISO-TS-19091-addgrp-C-2018-patched.asn' \ + 'build/asn1/ISO14816_AVIAEINumberingAndDataStructures.asn' \ + 'build/asn1/ISO19321IVIv2.asn' \ + +install -d build/spatem +asn1c -D build/spatem -R -no-gen-example -fcompound-names \ + SPATEM-PDU-Descriptions.asn \ + cdd/ITS-Container.asn \ + iso-patched/ISO24534-3_ElectronicRegistrationIdentificationVehicleDataModule-patched.asn \ + build/asn1/ISO-TS-19091-addgrp-C-2018-patched.asn \ + build/asn1/ISO14816_AVIAEINumberingAndDataStructures.asn \ + +install -d build/mapem +asn1c -D build/mapem -R -no-gen-example -fcompound-names \ + MAPEM-PDU-Descriptions.asn \ + cdd/ITS-Container.asn \ + iso-patched/ISO24534-3_ElectronicRegistrationIdentificationVehicleDataModule-patched.asn \ + build/asn1/ISO-TS-19091-addgrp-C-2018-patched.asn \ + build/asn1/ISO14816_AVIAEINumberingAndDataStructures.asn \ + +install -d build/srem +asn1c -D build/srem -R -no-gen-example -fcompound-names \ + SREM-PDU-Descriptions.asn \ + cdd/ITS-Container.asn \ + iso-patched/ISO24534-3_ElectronicRegistrationIdentificationVehicleDataModule-patched.asn \ + build/asn1/ISO-TS-19091-addgrp-C-2018-patched.asn \ + build/asn1/ISO14816_AVIAEINumberingAndDataStructures.asn \ + +install -d build/ssem +asn1c -D build/ssem -R -no-gen-example -fcompound-names \ + SSEM-PDU-Descriptions.asn \ + cdd/ITS-Container.asn \ + iso-patched/ISO24534-3_ElectronicRegistrationIdentificationVehicleDataModule-patched.asn \ + build/asn1/ISO-TS-19091-addgrp-C-2018-patched.asn \ + build/asn1/ISO14816_AVIAEINumberingAndDataStructures.asn \ + +install -d build/rtcmem +asn1c -D build/rtcmem -R -no-gen-example -fcompound-names \ + RTCMEM-PDU-Descriptions.asn \ + cdd/ITS-Container.asn \ + iso-patched/ISO24534-3_ElectronicRegistrationIdentificationVehicleDataModule-patched.asn \ + build/asn1/ISO-TS-19091-addgrp-C-2018-patched.asn \ + build/asn1/ISO14816_AVIAEINumberingAndDataStructures.asn \ + +echo "++++++++++++++++++++++++" +echo "+++ SUCCESS" +echo "+++ All modules compiled" +echo "++++++++++++++++++++++++"