diff --git a/.gitlab-ci.mk b/.gitlab-ci.mk
new file mode 100755
index 0000000000000000000000000000000000000000..f85a3998962b55d1aeeb25a8e41069884a6d183c
--- /dev/null
+++ b/.gitlab-ci.mk
@@ -0,0 +1,45 @@
+ASN1_SRC := IMZM-PDU-Descriptions.asn \
+ cam/CAM-PDU-Descriptions.asn \
+ vam/VAM-Temp-Imports.asn \
+ cdd/ITS-Container.asn
+
+ASN1_SRC_VALIDATE := \
+ iso/iso19091_2018.asn \
+ iso/iso24534-3_1_2015.asn \
+ iso/iso24534-3_2_2015.asn \
+ iso/ISO14816_AVIAEINumberingAndDataStructures.asn
+
+ASN1_PDU := IMZM
+ASN1_KNOWN := DATE
+
+#ASN1CDIR ?= $(USERPROFILE)/Work/asn1c-fillabs
+ifneq (,$(ASN1CDIR))
+ ASN1C := $(ASN1CDIR)/asn1c/.libs/asn1c -S $(ASN1CDIR)/skeletons
+else
+ ASN1C := asn1c
+endif
+
+.PHONY: validate doc build
+
+validate: iso build
+
+doc: docs
+ python3 asn2md.py -o docs --brief-as-title $(ASN1_SRC)
+
+iso docs:
+ mkdir -p $@
+
+build: $(ASN1_SRC) $(ASN1_SRC_VALIDATE)
+ $(ASN1C) -E -F -fcompound-names $(addprefix -fknown-extern-type=,$(ASN1_KNOWN)) $(addprefix -pdu=,$(ASN1_PDU)) $^ >/dev/null
+
+iso/iso19091_2018.asn:
+ curl -o $@ 'https://standards.iso.org/iso/ts/19091/ed-2/en/ISO-TS-19091-addgrp-C-2018.asn'
+
+iso/iso24534-3_1_2015.asn:
+ curl -o $@ 'https://standards.iso.org/iso/24534/-3/ISO%2024534-3%20ASN.1%20repository/ISO24534-3_ElectronicRegistrationIdentificationVehicleDataModule_ForBallot.asn'
+
+iso/iso24534-3_2_2015.asn:
+ curl -o $@ 'https://standards.iso.org/iso/24534/-3/ISO%2024534-3%20ASN.1%20repository/ISO24534-3_ElectronicRegistrationIdentificationEfcVehicleDataModule_ForBallot.asn'
+
+iso/ISO14816_AVIAEINumberingAndDataStructures.asn:
+ curl -o $@ 'https://standards.iso.org/iso/14816/ISO14816%20ASN.1%20repository/ISO14816_AVIAEINumberingAndDataStructures.asn'
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c956871a9edf0bd3caacbe7c8a92a910e4a860ce
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,32 @@
+variables:
+ GIT_SUBMODULE_STRATEGY: normal
+
+image: danya25/asn1c:0.0.5
+
+validate:
+ stage: test
+ script: make -f .gitlab-ci.mk validate
+ only:
+ changes:
+ - "*.asn"
+
+documentation:
+ stage: deploy
+ script:
+ - >
+ if ! [ -f asn2md.py ]; then
+ curl -o asn2md.py --header "PRIVATE-TOKEN:$CI_JOB_TOKEN" "https://forge.etsi.org/rep/api/v4/projects/592/repository/files/asn2md.py/raw?ref=master"
+ fi
+ - make -f .gitlab-ci.mk doc
+ - git add docs/*.md
+ - >
+ if [ -z "$(git status --untracked-files=no --porcelain)" ]; then
+ echo "No changes found";
+ else
+ git commit -m "Documentation update" &&
+ git remote rm origin && git remote add origin "https://oauth2:${CI_DOC_TOKEN}@forge.etsi.org/rep/$CI_PROJECT_PATH.git" &&
+ git push origin "HEAD:$CI_COMMIT_REF_NAME";
+ fi
+ only:
+ changes:
+ - "*.asn"
diff --git a/IMZM-PDU-Descriptions.asn b/IMZM-PDU-Descriptions.asn
index 6e99718684324931538e3d00b52ece0f63721c94..279fd258fc0dd9ac0e385be8d05e45572b39ae67 100755
--- a/IMZM-PDU-Descriptions.asn
+++ b/IMZM-PDU-Descriptions.asn
@@ -1,270 +1,268 @@
---! @brief Specification of the Interference Management Zone Message ETSI TS 103 724
---! Latest version available at @url https://forge.etsi.org/rep/ITS/asn1/imzm_ts103724
-
-IMZM-PDU-Descriptions {
-itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103724) imzm (1) version (1)
-}
-
-DEFINITIONS AUTOMATIC TAGS ::=
-
-BEGIN
-
-IMPORTS
---! @brief Include ETSI TS 102 894-2
---! Include references from @url https://forge.etsi.org/rep/ITS/asn1/cdd_ts102894_2/blob/master/ITS-Container.asn
-ItsPduHeader, Latitude, Longitude, TimestampIts, ProtectedZoneRadius, ProtectedZoneID FROM ITS-Container {
-itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1)
-ts (102894) cdd (2) version (2)
-}
-
---! brief Include ETSI EN 302 637-2
---! Include references from @url https://forge.etsi.org/rep/ITS/asn1/cam_en302637_2/blob/master/CAM-PDU-Descriptions.asn
-BasicContainer, GenerationDeltaTime FROM CAM-PDU-Descriptions {
-itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1)
-en (302637) cam (2) version (2)
-}
-
---! @brief Include ETSI TS 103 300-3
---! This is temporary
---! Import from VAM-Temp-Imports will be changed to CDD ETSI TS 102 894-2 Release 2 when available
---! Include references from @url https://forge.etsi.org/rep/ITS/asn1/vam-ts103300_3/blob/master/VAM-Temp-Imports.asn
-AreaCircular, AreaRectangle, AreaPolygon, OffsetPoint, SemiRangeLength, WGS84AngleValue FROM VAM-Temp-Imports {
-itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1)
-ts(103300) temp-imports(255) version1(1)
-}
-;
-
---! @defgroup IMZM Interference Management Zone Message
---! @{
-
---! @brief DF- Interference Management Zone Message Root
---! This DF includes DEs for the IMZM protocolVersion, the IMZ message type identifier _messageID_
---! and the station identifier _stationID_ of the originating ITS-S.
-IMZM ::= SEQUENCE {
- --! @details header
- --! The DE _protocolVersion_ is used to select the appropriate protocol decoder at the receiving
- --! ITS-S. For TS 103 724 V2.1.1, the value of the DE _protocolVersion_ shall be set to 1.
- --! The DE _messageID_ shall be harmonized with other V2X message identifier definitions.
- --! For IMZM, the DE messageID shall be set to @todo imzm(15).
- header ItsPduHeader,
- imzm InterferenceManagementZoneMessage
-}
-
---! @brief DF- Interference Management Zone Message
---! This is the actual IMZM Payload. It shall include the time stamp of the IMZM and the applicable
---! containers of type _BasicContainer_ and _ImzmContainer_.
-InterferenceManagementZoneMessage ::= SEQUENCE {
- generationDeltaTime GenerationDeltaTime, -- from CAM-PDU-Descriptions
- imzmParameters ImzmParameters
-}
-
---! @brief DF- IMZM Parameters
---! The sequence of containers in the IMZM. Other containers may be added in the future.
-ImzmParameters ::= SEQUENCE {
- --! @details basicContainer
- --! imported from CAM-PDU-Descriptions
- basicContainer BasicContainer,
- --! @details imzmContainer
- --! container specific to the IMZM
- imzmContainer ImzmContainer,
- ...
-}
-
---! @brief DF- IMZM Container
---! The IMZM container includes a sequence of up to 16 interference management communication zones.
---! For each interference management communication zones, it contains a sequence of interference
---! management zones per channel together with their characteristics.
-ImzmContainer ::= SEQUENCE {
- --! @details interferenceManagementZones
- --! mapped to the DF_ProtectedCommunicationZone in ETSI TS 102 894-2
- interferenceManagementZones InterferenceManagementZones,
- ...
-}
-
---! @brief DF- InterferenceManagementZones
---! A list of up to 16 interference management communication zones.
---! EXAMPLE: An interference management communication zone may be defined around a
---! CEN DSRC road side equipment or an urban rail operational area.
---! @category: Infrastructure information, Communication information
-InterferenceManagementZones ::= SEQUENCE (SIZE(1..16)) OF InterferenceManagementZone
-
---! @brief DF- InterferenceManagementZone
---! describes a zone of interferenceManagement inside which the ITS communication should
---! be restricted.
---! @category: Infrastructure information, Communication information
-InterferenceManagementZone ::= SEQUENCE {
- zoneDefinition ZoneDefinition,
- interferenceManagementInfo InterferenceManagementInfo
-}
-
---! @brief DF- ZoneDefinition
---! describes the zone where band sharing occurs. When reusing CDD Rel.1 types, names are unchanged.
---! @category: Infrastructure information, Communication information
-ZoneDefinition::= SEQUENCE{
- --! @details interferenceManagementZoneLatitude
- --! Latitude of the centre point of the interference management zone.
- interferenceManagementZoneLatitude Latitude, --! from ITS-Container
- --! @details interferenceManagementZoneLongitude
- --! Longitude of the centre point of the interference management zone.
- interferenceManagementZoneLongitude Longitude, --! from ITS-Container
- --! @details interferenceManagementZoneRadius
- --! Radius of the interference management zone in metres.
- --! This DE is present if the data is available
- interferenceManagementZoneRadius ProtectedZoneRadius OPTIONAL, --! from ITS-Container
- --! @details interferenceManagementZoneID
- --! Identification of the interference management zone.
- --! This DE is present if the data is available.
- interferenceManagementZoneID ProtectedZoneID OPTIONAL, --! from ITS-Container
- --! @details interferenceManagementZoneShape
- --! Shape of the interference management zone.
- --! This DF is present if the data is available.
- interferenceManagementZoneShape InterferenceManagementZoneShape OPTIONAL,
- ...
-}
-
---! @brief DF- Interference Management Info
---! A list of up to 16 definitions of which interference management may be applied in the zone,
---! per affected frequency channels.
---! Note: in the case where no mitigation should be applied by the ITS-S, this is indicated
---! by the value of interferenceManagementMitigationType set to unavailable.
---! @category: Infrastructure information, Communication information
-InterferenceManagementInfo::= SEQUENCE (SIZE(1..16,...)) OF InterferenceManagementInfoPerChannel
-
---! @brief DF- InterferenceManagementInfoPerChannel
---! A break up of the interference management information per affected frequency channels.
---! @category: Infrastructure information, Communication information
-InterferenceManagementInfoPerChannel ::= SEQUENCE {
- --! @details interferenceManagementChannel
- --! Characteritics of the frequency channel for which the zone
- --! should be applied interference management
- interferenceManagementChannel InterferenceManagementChannel,
- --! @details interferenceManagementZoneType
- --! Type of the interference management zone.
- interferenceManagementZoneType InterferenceManagementZoneType,
- --! @details interferenceManagementMitigationType
- --! Type of the mitigation to be used in the interference management zone.
- interferenceManagementMitigationType InterferenceManagementMitigationType OPTIONAL,
- --! @details expiryTime
- --! Time at which the validity of the interference management communication zone will expire.
- --! This DE is present when the interference management is temporarily valid
- expiryTime TimestampIts OPTIONAL, --! from ITS-Container
- ...
-}
-
---! @brief DF- InterferenceManagementChannel
---! indicates which shared frequency channel should be applied interference management in the zone.
---! @category: Communication information
-InterferenceManagementChannel ::= SEQUENCE {
- --! @details centre frequency of the channel
- --! @unit: 10exp+2 Hz (where exp is exponent)
- centreFrequency INTEGER (1 .. 99999),
- --! @details width of the channel
- --! @unit: 10exp Hz (where exp is exponent)
- channelWidth INTEGER (0 .. 9999),
- --! @details exponent of the power of 10
- --! @unit: MHz
- exponent INTEGER (0 .. 15)
-}
-
---! @brief DE- InterferenceManagementZoneType
---! DE that defines the type of an interference management zone, so that an ITS-S can
---! assert the actions to do while passing by such zone (e.g. reduce the transmit
---! power in case of a DSRC tolling station).
---! @unit: N/A
---! @category: Communication information
-InterferenceManagementZoneType ::= ENUMERATED {
- permanentCenDsrcTolling(0), --! as specified in ETSI TS 102 792
- temporaryCenDsrcTolling(1), --! as specified in ETSI TS 102 792
- unavailable(2), --! default value. Set to 2 for backwards compatibility with DSRC tolling
- urbanRail(3), --! as specified in ETSI TS 103 724, clause 7
- satelliteStation(4), --! as specified in ETSI TS 103 724, clause 7
- fixedLinks(5), --! as specified in ETSI TS 103 724, clause 7
- ...
-}
-
---! @brief DF- Mitigation type in the interference management zone
---! Information and commands defining the required mitigation type the
---! receiving ITS-S has to use in the defined interference management zone.
---! It indicates the type of mitigation and the parameters to be used to protect the
---! potential victim in the interference management zone per channel access technology class.
---! @category: Communication information
-InterferenceManagementMitigationType ::= SEQUENCE {
- --! @details Default value to be used when data is not available.
- unavailable BOOLEAN OPTIONAL,
- mitigationForTechnologies MitigationForTechnologies
-}
-
---! @brief DF- Mitigation type container for the different channel access technology classes
---! Class of parameters for the relevant channel access technology classes,
---! as specified in ETSI TS 103 724, clause 7.
---! @category: Communication information
-MitigationForTechnologies ::= SEQUENCE (SIZE(1..8)) OF MitigationPerTechnologyClass
-
---! @brief DF- Mitigation type container per channel access technology class
---! Class of parameters for the specific technology indicated in the container.
---! All parameters are optional, as they may not apply to some of the technologies or
---! interference management zone types. Specification details are in ETSI TS 103 724, clause 7.
---! @category: Communication information
-MitigationPerTechnologyClass ::= SEQUENCE {
- --! @details channel access technology in which this mitigation is applied.
- --! @unit: N/A
- accessTechnologyClass AccessTechnologyClass,
- --! @details duty cycle limit.
- --! @unit: 0.01% steps
- lowDutyCycle INTEGER (0 .. 10000) OPTIONAL,
- --! @details power reduction.
- --! @unit: dB
- powerReduction INTEGER (0 .. 30) OPTIONAL,
- --! @details Idle time limit as defined in ETSI TS 103 175.
- --! @unit: ms
- dmcToffLimit INTEGER (0 .. 1200) OPTIONAL,
- --! @details Transmission duration limit, as defined in ETSI EN 302 571.
- --! @unit: ms
- dmcTonLimit INTEGER (0 .. 20) OPTIONAL,
- ...
-}
-
---! @brief DE- channel access technology class
---! Access technology to which the mitigation type applies.
---! @category: Communication information
-AccessTechnologyClass ::= ENUMERATED {
- unavailable(0), --! default value.
- itsg5Class(1), --! ITS-G5 access technology class.
- ltev2xClass(2), --! LTE-V2X access technology class.
- nrv2xClass(3), --! NR-V2X access technology class.
- ...
-}
-
---! @brief DF- Shape of the interference management zone
---! Bounding box of an interference management zone
---! @category: GeoReference information
-InterferenceManagementZoneShape::= CHOICE {
- rectangle AreaRectangle, --! imported from VAM-Temp-Imports
- circle AreaCircular, --! imported from VAM-Temp-Imports
- polygon AreaPolygon, --! imported from VAM-Temp-Imports
- ellipse AreaEllipse, --! could not be imported from another specification yet
- ...
-}
-
---! @brief DF- Area Ellipse
---! Area Ellipse copied from CPM TR 103 562. Will be removed when CDD Release 2 is available.
---! Describes an elliptical area. The ellipse is centred about the reference point
---! of the ITS-S or about the nodeCenterPoint (if provided).
---! @category: GeoReference information
-AreaEllipse ::= SEQUENCE {
- --! @details nodeCenterPoint
- --! Optional offset point about which the ellipse is centred with respect to the reference
- --! position of the ITS-S.
- nodeCenterPoint OffsetPoint OPTIONAL,
- --! @details semiMajorRangeLength
- --! Minor radius of the ellipse.
- semiMajorRangeLength SemiRangeLength,
- --! @details semiMinorRangeLength
- --! Major radius of the ellipse.
- semiMinorRangeLength SemiRangeLength,
- --! @details semiMajorRangeOrientation
- --! Orientation of the semiMajorRangeLength of the ellipse in the WGS84 coordinate system.
- semiMajorRangeOrientation WGS84AngleValue
-}
---! @}
-END
+--! @brief Specification of the Interference Management Zone Message ETSI TS 103 724
+--! Latest version available at @url https://forge.etsi.org/rep/ITS/asn1/imzm_ts103724
+
+IMZM-PDU-Descriptions {
+itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts103724 (103724) imzm (1) version1 (1)
+}
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+--! @brief Include ETSI TS 102 894-2
+--! Include references from @url https://forge.etsi.org/rep/ITS/asn1/cdd_ts102894_2/blob/master/ITS-Container.asn
+ItsPduHeader, Latitude, Longitude, TimestampIts, ProtectedZoneRadius, ProtectedZoneID FROM ITS-Container {
+itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1)
+ts (102894) cdd (2) version (2)
+}
+
+--! @brief Include ETSI EN 302 637-2
+--! Include references from @url https://forge.etsi.org/rep/ITS/asn1/cam_en302637_2/blob/master/CAM-PDU-Descriptions.asn
+BasicContainer, GenerationDeltaTime FROM CAM-PDU-Descriptions {
+itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1)
+en (302637) cam (2) version (2)
+}
+
+--! @brief Include ETSI TS 103 300-3
+--! All data types, imported from `VAM-Temp-Imports` will be imported from the CDD ETSI TS 102 894-2 Release 2 when available
+--! Include references from @url https://forge.etsi.org/rep/ITS/asn1/vam-ts103300_3/blob/master/VAM-Temp-Imports.asn
+AreaCircular, AreaRectangle, AreaPolygon, OffsetPoint, SemiRangeLength, WGS84AngleValue FROM VAM-Temp-Imports {
+itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1)
+ts(103300) temp-imports(255) version1(1)
+}
+;
+
+--! @brief DF: Interference Management Zone Message Root
+--! This DF includes DEs for the IMZM `protocolVersion`, the IMZ message type identifier `messageID`
+--! and the station identifier `stationID` of the originating ITS-S.
+IMZM ::= SEQUENCE {
+ --! @details header
+ --! - The DE `protocolVersion` is used to select the appropriate protocol decoder at the receiving
+ --! ITS-S. For TS 103 724 V2.1.1, the value of the DE `protocolVersion` shall be set to 1.
+ --! - The DE `messageID` shall be harmonized with other V2X message identifier definitions.
+ --! For IMZM, the DE messageID shall be set to `imzm(15)`.
+ header ItsPduHeader,
+ imzm InterferenceManagementZoneMessage
+}
+
+--! @brief DF: Interference Management Zone Message
+--! This is the actual IMZM Payload. It shall include the time stamp of the IMZM and the applicable
+--! containers of type `BasicContainer` and `ImzmContainer`.
+InterferenceManagementZoneMessage ::= SEQUENCE {
+ generationDeltaTime GenerationDeltaTime, -- from CAM-PDU-Descriptions
+ imzmParameters ImzmParameters
+}
+
+--! @brief DF: IMZM Parameters
+--! The sequence of containers in the IMZM. Other containers may be added in the future.
+ImzmParameters ::= SEQUENCE {
+ --! @details basicContainer
+ --! imported from CAM-PDU-Descriptions
+ basicContainer BasicContainer,
+ --! @details imzmContainer
+ --! container specific to the IMZM
+ imzmContainer ImzmContainer,
+ ...
+}
+
+--! @brief DF: IMZM Container
+--! The IMZM container includes a sequence of up to 16 interference management zones.
+--! For each interference management zones, it contains a sequence of interference
+--! management zones per channel together with their characteristics.
+ImzmContainer ::= SEQUENCE {
+ --! @details interferenceManagementZones
+ --! mapped to the DF_ProtectedCommunicationZone in ETSI TS 102 894-2
+ interferenceManagementZones InterferenceManagementZones,
+ ...
+}
+
+--! @brief DF: List of Interference Management Zones
+--! A list of up to 16 interference management zones.
+--!
+--! **EXAMPLE**: An interference management communication zone may be defined around a
+--! CEN DSRC road side equipment or an urban rail operational area.
+--! @category: Infrastructure information, Communication information
+InterferenceManagementZones ::= SEQUENCE (SIZE(1..16), ...) OF InterferenceManagementZone
+
+--! @brief DF: Interference Management Zone
+--! Describes a zone of interferenceManagement inside which the ITS communication should
+--! be restricted.
+--! @category: Infrastructure information, Communication information
+InterferenceManagementZone ::= SEQUENCE {
+ zoneDefinition ZoneDefinition,
+ interferenceManagementInfo InterferenceManagementInfo
+}
+
+--! @brief DF: Zone Definition
+--! Describes the zone where band sharing occurs. When reusing CDD Rel.1 types, names are unchanged.
+--! @category: Infrastructure information, Communication information
+ZoneDefinition::= SEQUENCE{
+ --! @details interferenceManagementZoneLatitude
+ --! Latitude of the centre point of the interference management zone.
+ interferenceManagementZoneLatitude Latitude, -- from ITS-Container
+ --! @details interferenceManagementZoneLongitude
+ --! Longitude of the centre point of the interference management zone.
+ interferenceManagementZoneLongitude Longitude, -- from ITS-Container
+ --! @details interferenceManagementZoneRadius
+ --! Radius of the interference management zone in metres.
+ --! This DE is present if the data is available
+ interferenceManagementZoneRadius ProtectedZoneRadius OPTIONAL, -- from ITS-Container
+ --! @details interferenceManagementZoneID
+ --! Identification of the interference management zone.
+ --! This DE is present if the data is available.
+ interferenceManagementZoneID ProtectedZoneID OPTIONAL, -- from ITS-Container
+ --! @details interferenceManagementZoneShape
+ --! Shape of the interference management zone.
+ --! This DF is present if the data is available.
+ interferenceManagementZoneShape InterferenceManagementZoneShape OPTIONAL,
+ ...
+}
+
+--! @brief DF: Interference Management Information
+--! A list of up to 16 definitions containing which interference management may be applied in the zone,
+--! per affected frequency channels.
+--!
+--! **Note**: in the case where no mitigation should be applied by the ITS-S, this is indicated
+--! by the value of interferenceManagementMitigationType set to unavailable.
+--! @category: Infrastructure information, Communication information
+InterferenceManagementInfo::= SEQUENCE (SIZE(1..16,...)) OF InterferenceManagementInfoPerChannel
+
+--! @brief DF: Interference Management Information Per Channel
+--! A break up of the interference management information per affected frequency channels.
+--! @category: Infrastructure information, Communication information
+InterferenceManagementInfoPerChannel ::= SEQUENCE {
+ --! @details interferenceManagementChannel
+ --! Characteritics of the frequency channel for which the zone
+ --! should be applied interference management
+ interferenceManagementChannel InterferenceManagementChannel,
+ --! @details interferenceManagementZoneType
+ --! Type of the interference management zone.
+ interferenceManagementZoneType InterferenceManagementZoneType,
+ --! @details interferenceManagementMitigationType
+ --! Type of the mitigation to be used in the interference management zone.
+ interferenceManagementMitigationType InterferenceManagementMitigationType OPTIONAL,
+ --! @details expiryTime
+ --! Time at which the validity of the interference management communication zone will expire.
+ --! This DE is present when the interference management is temporarily valid
+ expiryTime TimestampIts OPTIONAL, -- from ITS-Container
+ ...
+}
+
+--! @brief DF: InterferenceManagementChannel
+--! Indicates which shared frequency channel should be applied interference management in the zone.
+--! @category: Communication information
+InterferenceManagementChannel ::= SEQUENCE {
+ --! @details centre frequency of the channel
+ --! @unit: 10exp+2 Hz (where exp is exponent)
+ centreFrequency INTEGER (1 .. 99999),
+ --! @details width of the channel
+ --! @unit: 10exp Hz (where exp is exponent)
+ channelWidth INTEGER (0 .. 9999),
+ --! @details exponent of the power of 10
+ --! @unit: N/A
+ exponent INTEGER (0 .. 15)
+}
+
+--! @brief DE: InterferenceManagementZoneType
+--! defines the type of an interference management zone, so that an ITS-S can
+--! assert the actions to do while passing by such zone (e.g. reduce the transmit
+--! power in case of a DSRC tolling station).
+--! @unit: N/A
+--! @category: Communication information
+InterferenceManagementZoneType ::= ENUMERATED {
+ permanentCenDsrcTolling(0), --!< as specified in ETSI TS 102 792
+ temporaryCenDsrcTolling(1), --!< as specified in ETSI TS 102 792
+ unavailable(2), --!< default value. Set to 2 for backwards compatibility with DSRC tolling
+ urbanRail(3), --!< as specified in ETSI TS 103 724, clause 7
+ satelliteStation(4), --!< as specified in ETSI TS 103 724, clause 7
+ fixedLinks(5), --!< as specified in ETSI TS 103 724, clause 7
+ ...
+}
+
+--! @brief DF: Mitigation type in the interference management zone
+--! Information and commands defining the required mitigation type the
+--! receiving ITS-S has to use in the defined interference management zone.
+--! It indicates the type of mitigation and the parameters to be used to protect the
+--! potential victim in the interference management zone per channel access technology class.
+--! @category: Communication information
+InterferenceManagementMitigationType ::= CHOICE {
+ --! @details unavailable is the default value to be used when data is not available.
+ unavailable NULL,
+ mitigationForTechnologies MitigationForTechnologies
+}
+
+--! @brief DF: Mitigation type container for the different channel access technology classes
+--! Class of parameters for the relevant channel access technology classes,
+--! as specified in ETSI TS 103 724, clause 7.
+--! @category: Communication information
+MitigationForTechnologies ::= SEQUENCE (SIZE(1..8)) OF MitigationPerTechnologyClass
+
+--! @brief DF: Mitigation type container per channel access technology class
+--! Class of parameters for the specific technology indicated in the container.
+--! All parameters are optional, as they may not apply to some of the technologies or
+--! interference management zone types. Specification details are in ETSI TS 103 724, clause 7.
+--! @category: Communication information
+MitigationPerTechnologyClass ::= SEQUENCE {
+ --! @details channel access technology in which this mitigation is applied.
+ --! @unit: N/A
+ accessTechnologyClass AccessTechnologyClass,
+ --! @details duty cycle limit.
+ --! @unit: 0.01% steps
+ lowDutyCycle INTEGER (0 .. 10000) OPTIONAL,
+ --! @details power reduction.
+ --! @unit: dB
+ powerReduction INTEGER (0 .. 30) OPTIONAL,
+ --! @details Idle time limit as defined in ETSI TS 103 175.
+ --! @unit: ms
+ dmcToffLimit INTEGER (0 .. 1200) OPTIONAL,
+ --! @details Transmission duration limit, as defined in ETSI EN 302 571.
+ --! @unit: ms
+ dmcTonLimit INTEGER (0 .. 20) OPTIONAL,
+ ...
+}
+
+--! @brief DE: channel access technology class
+--! Access technology to which the mitigation type applies.
+--! @category: Communication information
+AccessTechnologyClass ::= ENUMERATED {
+ any(0), --!< any access technology class (see clause 7 of TS 103 724).
+ itsg5Class(1), --!< ITS-G5 access technology class.
+ ltev2xClass(2), --!< LTE-V2X access technology class.
+ nrv2xClass(3), --!< NR-V2X access technology class.
+ ...
+}
+
+--! @brief DF: Shape of the interference management zone
+--! Bounding box of an interference management zone
+--! @category: GeoReference information
+InterferenceManagementZoneShape::= CHOICE {
+ rectangle AreaRectangle, -- imported from VAM-Temp-Imports
+ circle AreaCircular, -- imported from VAM-Temp-Imports
+ polygon AreaPolygon, -- imported from VAM-Temp-Imports
+ ellipse AreaEllipse, -- could not be imported from another specification yet
+ ...
+}
+
+--! @brief DF: Area Ellipse
+--! Area Ellipse copied from CPM TR 103 562. Will be removed when CDD Release 2 is available.
+--! Describes an elliptical area. The ellipse is centred about the reference point
+--! of the ITS-S or about the nodeCenterPoint (if provided).
+--! @category: GeoReference information
+AreaEllipse ::= SEQUENCE {
+ --! @details nodeCenterPoint
+ --! Optional offset point about which the ellipse is centred with respect to the reference
+ --! position of the ITS-S.
+ nodeCenterPoint OffsetPoint OPTIONAL,
+ --! @details semiMajorRangeLength
+ --! Minor radius of the ellipse.
+ semiMajorRangeLength SemiRangeLength,
+ --! @details semiMinorRangeLength
+ --! Major radius of the ellipse.
+ semiMinorRangeLength SemiRangeLength,
+ --! @details semiMajorRangeOrientation
+ --! Orientation of the semiMajorRangeLength of the ellipse in the WGS84 coordinate system.
+ semiMajorRangeOrientation WGS84AngleValue
+}
+
+END
diff --git a/README.md b/README.md
index 3ebdd7e556d07aa3cb59514903a51824b99d1975..4ab0af7af5bac1d6da05d4083b35d16b1190f8f8 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
# ASN.1 module for PZM [ETSI TS 103 724]
-This repository will contain the ASN.1 module for ETSI TS 103 724 - Protected Zone beacon message
+This repository will contain the ASN.1 module for ETSI Interference Management Zone Service in the file **IMZM-PDU-Descriptions.asn**
+* The module is published with the **[ETSI TS 103 724 v2.1.1](http://www.etsi.org/deliver/etsi_ts/103700_103799/103724/02.01.01_60/ts_103274v020101p.pdf)**.
-* Note: The base specification is in the draft state
## License
diff --git a/docs/CAM-PDU-Descriptions.md b/docs/CAM-PDU-Descriptions.md
new file mode 100755
index 0000000000000000000000000000000000000000..5831bd432403cf2805d329a04185478334fecfb7
--- /dev/null
+++ b/docs/CAM-PDU-Descriptions.md
@@ -0,0 +1,269 @@
+# ASN.1 module CAM-PDU-Descriptions
+ OID: _{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (302637) cam (2) version (2) }_
+
+## Imports:
+ * **[ITS-Container](ITS-Container.md)** *{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2) }*
+
+## Data Elements:
+### CAM
+
+Fields:
+* header [**ItsPduHeader**](ITS-Container.md#ItsPduHeader)
+* cam [**CoopAwareness**](#CoopAwareness)
+```asn1
+CAM ::= SEQUENCE {
+ header ItsPduHeader,
+ cam CoopAwareness
+}
+```
+
+### CoopAwareness
+
+Fields:
+* generationDeltaTime [**GenerationDeltaTime**](CAM-PDU-Descriptions.md#GenerationDeltaTime)
+* camParameters [**CamParameters**](#CamParameters)
+```asn1
+CoopAwareness ::= SEQUENCE {
+ generationDeltaTime GenerationDeltaTime,
+ camParameters CamParameters
+}
+```
+
+### CamParameters
+
+Fields:
+* basicContainer [**BasicContainer**](CAM-PDU-Descriptions.md#BasicContainer)
+* highFrequencyContainer [**HighFrequencyContainer**](#HighFrequencyContainer)
+* lowFrequencyContainer [**LowFrequencyContainer**](#LowFrequencyContainer) OPTIONAL
+* specialVehicleContainer [**SpecialVehicleContainer**](#SpecialVehicleContainer) OPTIONAL
+```asn1
+CamParameters ::= SEQUENCE {
+ basicContainer BasicContainer,
+ highFrequencyContainer HighFrequencyContainer,
+ lowFrequencyContainer LowFrequencyContainer OPTIONAL,
+ specialVehicleContainer SpecialVehicleContainer OPTIONAL,
+ ...
+}
+```
+
+### HighFrequencyContainer
+
+Fields:
+* basicVehicleContainerHighFrequency [**BasicVehicleContainerHighFrequency**](#BasicVehicleContainerHighFrequency)
+* rsuContainerHighFrequency [**RSUContainerHighFrequency**](#RSUContainerHighFrequency)
+```asn1
+HighFrequencyContainer ::= CHOICE {
+ basicVehicleContainerHighFrequency BasicVehicleContainerHighFrequency,
+ rsuContainerHighFrequency RSUContainerHighFrequency,
+ ...
+}
+```
+
+### LowFrequencyContainer
+
+Fields:
+* basicVehicleContainerLowFrequency [**BasicVehicleContainerLowFrequency**](#BasicVehicleContainerLowFrequency)
+```asn1
+LowFrequencyContainer ::= CHOICE {
+ basicVehicleContainerLowFrequency BasicVehicleContainerLowFrequency,
+ ...
+}
+```
+
+### SpecialVehicleContainer
+
+Fields:
+* publicTransportContainer [**PublicTransportContainer**](#PublicTransportContainer)
+* specialTransportContainer [**SpecialTransportContainer**](#SpecialTransportContainer)
+* dangerousGoodsContainer [**DangerousGoodsContainer**](#DangerousGoodsContainer)
+* roadWorksContainerBasic [**RoadWorksContainerBasic**](#RoadWorksContainerBasic)
+* rescueContainer [**RescueContainer**](#RescueContainer)
+* emergencyContainer [**EmergencyContainer**](#EmergencyContainer)
+* safetyCarContainer [**SafetyCarContainer**](#SafetyCarContainer)
+```asn1
+SpecialVehicleContainer ::= CHOICE {
+ publicTransportContainer PublicTransportContainer,
+ specialTransportContainer SpecialTransportContainer,
+ dangerousGoodsContainer DangerousGoodsContainer,
+ roadWorksContainerBasic RoadWorksContainerBasic,
+ rescueContainer RescueContainer,
+ emergencyContainer EmergencyContainer,
+ safetyCarContainer SafetyCarContainer,
+ ...
+}
+```
+
+### BasicContainer
+
+Fields:
+* stationType [**StationType**](ITS-Container.md#StationType)
+* referencePosition [**ReferencePosition**](ITS-Container.md#ReferencePosition)
+```asn1
+BasicContainer ::= SEQUENCE {
+ stationType StationType,
+ referencePosition ReferencePosition,
+ ...
+}
+```
+
+### BasicVehicleContainerHighFrequency
+
+Fields:
+* heading [**Heading**](ITS-Container.md#Heading)
+* speed [**Speed**](ITS-Container.md#Speed)
+* driveDirection [**DriveDirection**](ITS-Container.md#DriveDirection)
+* vehicleLength [**VehicleLength**](ITS-Container.md#VehicleLength)
+* vehicleWidth [**VehicleWidth**](ITS-Container.md#VehicleWidth)
+* longitudinalAcceleration [**LongitudinalAcceleration**](ITS-Container.md#LongitudinalAcceleration)
+* curvature [**Curvature**](ITS-Container.md#Curvature)
+* curvatureCalculationMode [**CurvatureCalculationMode**](ITS-Container.md#CurvatureCalculationMode)
+* yawRate [**YawRate**](ITS-Container.md#YawRate)
+* accelerationControl [**AccelerationControl**](ITS-Container.md#AccelerationControl) OPTIONAL
+* lanePosition [**LanePosition**](ITS-Container.md#LanePosition) OPTIONAL
+* steeringWheelAngle [**SteeringWheelAngle**](ITS-Container.md#SteeringWheelAngle) OPTIONAL
+* lateralAcceleration [**LateralAcceleration**](ITS-Container.md#LateralAcceleration) OPTIONAL
+* verticalAcceleration [**VerticalAcceleration**](ITS-Container.md#VerticalAcceleration) OPTIONAL
+* performanceClass [**PerformanceClass**](ITS-Container.md#PerformanceClass) OPTIONAL
+* cenDsrcTollingZone [**CenDsrcTollingZone**](ITS-Container.md#CenDsrcTollingZone) OPTIONAL
+```asn1
+BasicVehicleContainerHighFrequency ::= SEQUENCE {
+ heading Heading,
+ speed Speed,
+ driveDirection DriveDirection,
+ vehicleLength VehicleLength,
+ vehicleWidth VehicleWidth,
+ longitudinalAcceleration LongitudinalAcceleration,
+ curvature Curvature,
+ curvatureCalculationMode CurvatureCalculationMode,
+ yawRate YawRate,
+ accelerationControl AccelerationControl OPTIONAL,
+ lanePosition LanePosition OPTIONAL,
+ steeringWheelAngle SteeringWheelAngle OPTIONAL,
+ lateralAcceleration LateralAcceleration OPTIONAL,
+ verticalAcceleration VerticalAcceleration OPTIONAL,
+ performanceClass PerformanceClass OPTIONAL,
+ cenDsrcTollingZone CenDsrcTollingZone OPTIONAL
+}
+```
+
+### BasicVehicleContainerLowFrequency
+
+Fields:
+* vehicleRole [**VehicleRole**](ITS-Container.md#VehicleRole)
+* exteriorLights [**ExteriorLights**](ITS-Container.md#ExteriorLights)
+* pathHistory [**PathHistory**](ITS-Container.md#PathHistory)
+```asn1
+BasicVehicleContainerLowFrequency ::= SEQUENCE {
+ vehicleRole VehicleRole,
+ exteriorLights ExteriorLights,
+ pathHistory PathHistory
+}
+```
+
+### PublicTransportContainer
+
+Fields:
+* embarkationStatus [**EmbarkationStatus**](ITS-Container.md#EmbarkationStatus)
+* ptActivation [**PtActivation**](ITS-Container.md#PtActivation) OPTIONAL
+```asn1
+PublicTransportContainer ::= SEQUENCE {
+ embarkationStatus EmbarkationStatus,
+ ptActivation PtActivation OPTIONAL
+}
+```
+
+### SpecialTransportContainer
+
+Fields:
+* specialTransportType [**SpecialTransportType**](ITS-Container.md#SpecialTransportType)
+* lightBarSirenInUse [**LightBarSirenInUse**](ITS-Container.md#LightBarSirenInUse)
+```asn1
+SpecialTransportContainer ::= SEQUENCE {
+ specialTransportType SpecialTransportType,
+ lightBarSirenInUse LightBarSirenInUse
+}
+```
+
+### DangerousGoodsContainer
+
+Fields:
+* dangerousGoodsBasic [**DangerousGoodsBasic**](ITS-Container.md#DangerousGoodsBasic)
+```asn1
+DangerousGoodsContainer ::= SEQUENCE {
+ dangerousGoodsBasic DangerousGoodsBasic
+ }
+```
+
+### RoadWorksContainerBasic
+
+Fields:
+* roadworksSubCauseCode [**RoadworksSubCauseCode**](ITS-Container.md#RoadworksSubCauseCode) OPTIONAL
+* lightBarSirenInUse [**LightBarSirenInUse**](ITS-Container.md#LightBarSirenInUse)
+* closedLanes [**ClosedLanes**](ITS-Container.md#ClosedLanes) OPTIONAL
+```asn1
+RoadWorksContainerBasic ::= SEQUENCE {
+ roadworksSubCauseCode RoadworksSubCauseCode OPTIONAL,
+ lightBarSirenInUse LightBarSirenInUse,
+ closedLanes ClosedLanes OPTIONAL
+ }
+```
+
+### RescueContainer
+
+Fields:
+* lightBarSirenInUse [**LightBarSirenInUse**](ITS-Container.md#LightBarSirenInUse)
+```asn1
+RescueContainer ::= SEQUENCE {
+ lightBarSirenInUse LightBarSirenInUse
+}
+```
+
+### EmergencyContainer
+
+Fields:
+* lightBarSirenInUse [**LightBarSirenInUse**](ITS-Container.md#LightBarSirenInUse)
+* incidentIndication [**CauseCode**](ITS-Container.md#CauseCode) OPTIONAL
+* emergencyPriority [**EmergencyPriority**](ITS-Container.md#EmergencyPriority) OPTIONAL
+```asn1
+EmergencyContainer ::= SEQUENCE {
+ lightBarSirenInUse LightBarSirenInUse,
+ incidentIndication CauseCode OPTIONAL,
+ emergencyPriority EmergencyPriority OPTIONAL
+}
+```
+
+### SafetyCarContainer
+
+Fields:
+* lightBarSirenInUse [**LightBarSirenInUse**](ITS-Container.md#LightBarSirenInUse)
+* incidentIndication [**CauseCode**](ITS-Container.md#CauseCode) OPTIONAL
+* trafficRule [**TrafficRule**](ITS-Container.md#TrafficRule) OPTIONAL
+* speedLimit [**SpeedLimit**](ITS-Container.md#SpeedLimit) OPTIONAL
+```asn1
+SafetyCarContainer ::= SEQUENCE {
+ lightBarSirenInUse LightBarSirenInUse,
+ incidentIndication CauseCode OPTIONAL,
+ trafficRule TrafficRule OPTIONAL,
+ speedLimit SpeedLimit OPTIONAL
+}
+```
+
+### RSUContainerHighFrequency
+
+Fields:
+* protectedCommunicationZonesRSU [**ProtectedCommunicationZonesRSU**](ITS-Container.md#ProtectedCommunicationZonesRSU) OPTIONAL
+```asn1
+RSUContainerHighFrequency ::= SEQUENCE {
+ protectedCommunicationZonesRSU ProtectedCommunicationZonesRSU OPTIONAL,
+ ...
+}
+```
+
+### GenerationDeltaTime
+
+```asn1
+GenerationDeltaTime ::= INTEGER { oneMilliSec(1) } (0..65535)
+```
+
+
+
diff --git a/docs/IMZM-PDU-Descriptions.md b/docs/IMZM-PDU-Descriptions.md
new file mode 100644
index 0000000000000000000000000000000000000000..2a52aaa8494824a485fd08fd1740ce1465a1ee1b
--- /dev/null
+++ b/docs/IMZM-PDU-Descriptions.md
@@ -0,0 +1,419 @@
+# ASN.1 module IMZM-PDU-Descriptions
+ OID: _{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103724) imzm (1) version (1) }_
+ Specification of the Interference Management Zone Message ETSI TS 103 724
+ Latest version available at https://forge.etsi.org/rep/ITS/asn1/imzm_ts103724
+
+## Imports:
+ * **[ITS-Container](ITS-Container.md)** *{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2) }*
+ Include ETSI TS 102 894-2
+ Include references from https://forge.etsi.org/rep/ITS/asn1/cdd_ts102894_2/blob/master/ITS-Container.asn
+
+ * **[CAM-PDU-Descriptions](CAM-PDU-Descriptions.md)** *{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (302637) cam (2) version (2) }*
+ Include ETSI EN 302 637-2
+ Include references from https://forge.etsi.org/rep/ITS/asn1/cam_en302637_2/blob/master/CAM-PDU-Descriptions.asn
+
+ * **[VAM-Temp-Imports](VAM-Temp-Imports.md)** *{ itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1) ts(103300) temp-imports(255) version1(1) }*
+ Include ETSI TS 103 300-3
+ All data types, imported from `VAM-Temp-Imports` will be imported from the CDD ETSI TS 102 894-2 Release 2 when available
+ Include references from https://forge.etsi.org/rep/ITS/asn1/vam-ts103300_3/blob/master/VAM-Temp-Imports.asn
+
+## Data Elements:
+### IMZM
+
+ DF: Interference Management Zone Message Root
+ This DF includes DEs for the IMZM `protocolVersion`, the IMZ message type identifier `messageID`
+ and the station identifier `stationID` of the originating ITS-S.
+
+Fields:
+* header [**ItsPduHeader**](ITS-Container.md#ItsPduHeader)
+ header
+ - The DE `protocolVersion` is used to select the appropriate protocol decoder at the receiving
+ ITS-S. For TS 103 724 V2.1.1, the value of the DE `protocolVersion` shall be set to 1.
+ - The DE `messageID` shall be harmonized with other V2X message identifier definitions.
+ For IMZM, the DE messageID shall be set to `imzm(15)`.
+* imzm [**InterferenceManagementZoneMessage**](#InterferenceManagementZoneMessage)
+```asn1
+IMZM ::= SEQUENCE {
+ header ItsPduHeader,
+ imzm InterferenceManagementZoneMessage
+}
+```
+
+### InterferenceManagementZoneMessage
+
+ DF: Interference Management Zone Message
+ This is the actual IMZM Payload. It shall include the time stamp of the IMZM and the applicable
+ containers of type `BasicContainer` and `ImzmContainer`.
+
+Fields:
+* generationDeltaTime [**GenerationDeltaTime**](CAM-PDU-Descriptions.md#GenerationDeltaTime)
+* imzmParameters [**ImzmParameters**](#ImzmParameters)
+```asn1
+InterferenceManagementZoneMessage ::= SEQUENCE {
+ generationDeltaTime GenerationDeltaTime,
+ imzmParameters ImzmParameters
+}
+```
+
+### ImzmParameters
+
+ DF: IMZM Parameters
+ The sequence of containers in the IMZM. Other containers may be added in the future.
+
+Fields:
+* basicContainer [**BasicContainer**](CAM-PDU-Descriptions.md#BasicContainer)
+ basicContainer
+ imported from CAM-PDU-Descriptions
+* imzmContainer [**ImzmContainer**](#ImzmContainer)
+ imzmContainer
+ container specific to the IMZM
+```asn1
+ImzmParameters ::= SEQUENCE {
+ basicContainer BasicContainer,
+ imzmContainer ImzmContainer,
+ ...
+}
+```
+
+### ImzmContainer
+
+ DF: IMZM Container
+ The IMZM container includes a sequence of up to 16 interference management zones.
+ For each interference management zones, it contains a sequence of interference
+ management zones per channel together with their characteristics.
+
+Fields:
+* interferenceManagementZones [**InterferenceManagementZones**](#InterferenceManagementZones)
+ interferenceManagementZones
+ mapped to the DF_ProtectedCommunicationZone in ETSI TS 102 894-2
+```asn1
+ImzmContainer ::= SEQUENCE {
+ interferenceManagementZones InterferenceManagementZones,
+ ...
+}
+```
+
+### InterferenceManagementZones
+
+ DF: List of Interference Management Zones
+ A list of up to 16 interference management zones.
+
+ **EXAMPLE**: An interference management communication zone may be defined around a
+ CEN DSRC road side equipment or an urban rail operational area.
+
+ **Categories**: [Infrastructure information](#Infrastructure+information) [Communication information](#Communication+information)
+
+
+
+```asn1
+InterferenceManagementZones ::= SEQUENCE (SIZE(1..16), ...) OF InterferenceManagementZone
+```
+
+### InterferenceManagementZone
+
+ DF: Interference Management Zone
+ Describes a zone of interferenceManagement inside which the ITS communication should
+ be restricted.
+
+ **Categories**: [Infrastructure information](#Infrastructure+information) [Communication information](#Communication+information)
+
+Fields:
+* zoneDefinition [**ZoneDefinition**](#ZoneDefinition)
+* interferenceManagementInfo [**InterferenceManagementInfo**](#InterferenceManagementInfo)
+```asn1
+InterferenceManagementZone ::= SEQUENCE {
+ zoneDefinition ZoneDefinition,
+ interferenceManagementInfo InterferenceManagementInfo
+}
+```
+
+### ZoneDefinition
+
+ DF: Zone Definition
+ Describes the zone where band sharing occurs. When reusing CDD Rel.1 types, names are unchanged.
+
+ **Categories**: [Infrastructure information](#Infrastructure+information) [Communication information](#Communication+information)
+
+Fields:
+* interferenceManagementZoneLatitude [**Latitude**](ITS-Container.md#Latitude)
+ interferenceManagementZoneLatitude
+ Latitude of the centre point of the interference management zone.
+* interferenceManagementZoneLongitude [**Longitude**](ITS-Container.md#Longitude)
+ interferenceManagementZoneLongitude
+ Longitude of the centre point of the interference management zone.
+* interferenceManagementZoneRadius [**ProtectedZoneRadius**](ITS-Container.md#ProtectedZoneRadius) OPTIONAL
+ interferenceManagementZoneRadius
+ Radius of the interference management zone in metres.
+ This DE is present if the data is available
+* interferenceManagementZoneID [**ProtectedZoneID**](ITS-Container.md#ProtectedZoneID) OPTIONAL
+ interferenceManagementZoneID
+ Identification of the interference management zone.
+ This DE is present if the data is available.
+* interferenceManagementZoneShape [**InterferenceManagementZoneShape**](#InterferenceManagementZoneShape) OPTIONAL
+ interferenceManagementZoneShape
+ Shape of the interference management zone.
+ This DF is present if the data is available.
+```asn1
+ZoneDefinition::= SEQUENCE{
+ interferenceManagementZoneLatitude Latitude,
+ interferenceManagementZoneLongitude Longitude,
+ interferenceManagementZoneRadius ProtectedZoneRadius OPTIONAL,
+ interferenceManagementZoneID ProtectedZoneID OPTIONAL,
+ interferenceManagementZoneShape InterferenceManagementZoneShape OPTIONAL,
+ ...
+}
+```
+
+### InterferenceManagementInfo
+
+ DF: Interference Management Information
+ A list of up to 16 definitions containing which interference management may be applied in the zone,
+ per affected frequency channels.
+
+ **Note**: in the case where no mitigation should be applied by the ITS-S, this is indicated
+ by the value of interferenceManagementMitigationType set to unavailable.
+
+ **Categories**: [Infrastructure information](#Infrastructure+information) [Communication information](#Communication+information)
+
+
+
+```asn1
+InterferenceManagementInfo::= SEQUENCE (SIZE(1..16,...)) OF InterferenceManagementInfoPerChannel
+```
+
+### InterferenceManagementInfoPerChannel
+
+ DF: Interference Management Information Per Channel
+ A break up of the interference management information per affected frequency channels.
+
+ **Categories**: [Infrastructure information](#Infrastructure+information) [Communication information](#Communication+information)
+
+Fields:
+* interferenceManagementChannel [**InterferenceManagementChannel**](#InterferenceManagementChannel)
+ interferenceManagementChannel
+ Characteritics of the frequency channel for which the zone
+ should be applied interference management
+* interferenceManagementZoneType [**InterferenceManagementZoneType**](#InterferenceManagementZoneType)
+ interferenceManagementZoneType
+ Type of the interference management zone.
+* interferenceManagementMitigationType [**InterferenceManagementMitigationType**](#InterferenceManagementMitigationType) OPTIONAL
+ interferenceManagementMitigationType
+ Type of the mitigation to be used in the interference management zone.
+* expiryTime [**TimestampIts**](ITS-Container.md#TimestampIts) OPTIONAL
+ expiryTime
+ Time at which the validity of the interference management communication zone will expire.
+ This DE is present when the interference management is temporarily valid
+```asn1
+InterferenceManagementInfoPerChannel ::= SEQUENCE {
+ interferenceManagementChannel InterferenceManagementChannel,
+ interferenceManagementZoneType InterferenceManagementZoneType,
+ interferenceManagementMitigationType InterferenceManagementMitigationType OPTIONAL,
+ expiryTime TimestampIts OPTIONAL,
+ ...
+}
+```
+
+### InterferenceManagementChannel
+
+ DF: InterferenceManagementChannel
+ Indicates which shared frequency channel should be applied interference management in the zone.
+
+ **Categories**: [Communication information](#Communication+information)
+
+Fields:
+* centreFrequency **INTEGER** (1 .. 99999)
+ centre frequency of the channel
+
**Unit**: _10exp+2 Hz (where exp is exponent)_
+
+* channelWidth **INTEGER** (0 .. 9999)
+ width of the channel
+
**Unit**: _10exp Hz (where exp is exponent)_
+
+* exponent **INTEGER** (0 .. 15)
+ exponent of the power of 10
+
**Unit**: _N/A_
+
+```asn1
+InterferenceManagementChannel ::= SEQUENCE {
+ centreFrequency INTEGER (1 .. 99999),
+ channelWidth INTEGER (0 .. 9999),
+ exponent INTEGER (0 .. 15)
+}
+```
+
+### InterferenceManagementZoneType
+
+ DE: InterferenceManagementZoneType
+ defines the type of an interference management zone, so that an ITS-S can
+ assert the actions to do while passing by such zone (e.g. reduce the transmit
+ power in case of a DSRC tolling station).
+
+ **Categories**: [Communication information](#Communication+information)
+
+
**Unit**: _N/A_
+
+
+
+```asn1
+InterferenceManagementZoneType ::= ENUMERATED {
+ permanentCenDsrcTolling(0),
+ temporaryCenDsrcTolling(1),
+ unavailable(2),
+ urbanRail(3),
+ satelliteStation(4),
+ fixedLinks(5),
+ ...
+}
+```
+
+### InterferenceManagementMitigationType
+
+ DF: Mitigation type in the interference management zone
+ Information and commands defining the required mitigation type the
+ receiving ITS-S has to use in the defined interference management zone.
+ It indicates the type of mitigation and the parameters to be used to protect the
+ potential victim in the interference management zone per channel access technology class.
+
+ **Categories**: [Communication information](#Communication+information)
+
+Fields:
+* unavailable **NULL**
+ unavailable is the default value to be used when data is not available.
+* mitigationForTechnologies [**MitigationForTechnologies**](#MitigationForTechnologies)
+```asn1
+InterferenceManagementMitigationType ::= CHOICE {
+ unavailable NULL,
+ mitigationForTechnologies MitigationForTechnologies
+}
+```
+
+### MitigationForTechnologies
+
+ DF: Mitigation type container for the different channel access technology classes
+ Class of parameters for the relevant channel access technology classes,
+ as specified in ETSI TS 103 724, clause 7.
+
+ **Categories**: [Communication information](#Communication+information)
+
+
+
+```asn1
+MitigationForTechnologies ::= SEQUENCE (SIZE(1..8)) OF MitigationPerTechnologyClass
+```
+
+### MitigationPerTechnologyClass
+
+ DF: Mitigation type container per channel access technology class
+ Class of parameters for the specific technology indicated in the container.
+ All parameters are optional, as they may not apply to some of the technologies or
+ interference management zone types. Specification details are in ETSI TS 103 724, clause 7.
+
+ **Categories**: [Communication information](#Communication+information)
+
+Fields:
+* accessTechnologyClass [**AccessTechnologyClass**](#AccessTechnologyClass)
+ channel access technology in which this mitigation is applied.
+
**Unit**: _N/A_
+
+* lowDutyCycle **INTEGER** (0 .. 10000) OPTIONAL
+ duty cycle limit.
+
**Unit**: _0.01% steps_
+
+* powerReduction **INTEGER** (0 .. 30) OPTIONAL
+ power reduction.
+
**Unit**: _dB_
+
+* dmcToffLimit **INTEGER** (0 .. 1200) OPTIONAL
+ Idle time limit as defined in ETSI TS 103 175.
+
**Unit**: _ms_
+
+* dmcTonLimit **INTEGER** (0 .. 20) OPTIONAL
+ Transmission duration limit, as defined in ETSI EN 302 571.
+
**Unit**: _ms_
+
+```asn1
+MitigationPerTechnologyClass ::= SEQUENCE {
+ accessTechnologyClass AccessTechnologyClass,
+ lowDutyCycle INTEGER (0 .. 10000) OPTIONAL,
+ powerReduction INTEGER (0 .. 30) OPTIONAL,
+ dmcToffLimit INTEGER (0 .. 1200) OPTIONAL,
+ dmcTonLimit INTEGER (0 .. 20) OPTIONAL,
+ ...
+}
+```
+
+### AccessTechnologyClass
+
+ DE: channel access technology class
+ Access technology to which the mitigation type applies.
+
+ **Categories**: [Communication information](#Communication+information)
+
+
+
+```asn1
+AccessTechnologyClass ::= ENUMERATED {
+ any(0),
+ itsg5Class(1),
+ ltev2xClass(2),
+ nrv2xClass(3),
+ ...
+}
+```
+
+### InterferenceManagementZoneShape
+
+ DF: Shape of the interference management zone
+ Bounding box of an interference management zone
+
+ **Categories**: [GeoReference information](#GeoReference+information)
+
+Fields:
+* rectangle [**AreaRectangle**](VAM-Temp-Imports.md#AreaRectangle)
+* circle [**AreaCircular**](VAM-Temp-Imports.md#AreaCircular)
+* polygon [**AreaPolygon**](VAM-Temp-Imports.md#AreaPolygon)
+* ellipse [**AreaEllipse**](#AreaEllipse)
+```asn1
+InterferenceManagementZoneShape::= CHOICE {
+ rectangle AreaRectangle,
+ circle AreaCircular,
+ polygon AreaPolygon,
+ ellipse AreaEllipse,
+ ...
+}
+```
+
+### AreaEllipse
+
+ DF: Area Ellipse
+ Area Ellipse copied from CPM TR 103 562. Will be removed when CDD Release 2 is available.
+ Describes an elliptical area. The ellipse is centred about the reference point
+ of the ITS-S or about the nodeCenterPoint (if provided).
+
+ **Categories**: [GeoReference information](#GeoReference+information)
+
+Fields:
+* nodeCenterPoint [**OffsetPoint**](VAM-Temp-Imports.md#OffsetPoint) OPTIONAL
+ nodeCenterPoint
+ Optional offset point about which the ellipse is centred with respect to the reference
+ position of the ITS-S.
+* semiMajorRangeLength [**SemiRangeLength**](VAM-Temp-Imports.md#SemiRangeLength)
+ semiMajorRangeLength
+ Minor radius of the ellipse.
+* semiMinorRangeLength [**SemiRangeLength**](VAM-Temp-Imports.md#SemiRangeLength)
+ semiMinorRangeLength
+ Major radius of the ellipse.
+* semiMajorRangeOrientation [**WGS84AngleValue**](VAM-Temp-Imports.md#WGS84AngleValue)
+ semiMajorRangeOrientation
+ Orientation of the semiMajorRangeLength of the ellipse in the WGS84 coordinate system.
+```asn1
+AreaEllipse ::= SEQUENCE {
+ nodeCenterPoint OffsetPoint OPTIONAL,
+ semiMajorRangeLength SemiRangeLength,
+ semiMinorRangeLength SemiRangeLength,
+ semiMajorRangeOrientation WGS84AngleValue
+}
+```
+
+
+
diff --git a/docs/ITS-Container.md b/docs/ITS-Container.md
new file mode 100755
index 0000000000000000000000000000000000000000..853a9ba15bce6a51db93c92b9b5f7eef23e80f57
--- /dev/null
+++ b/docs/ITS-Container.md
@@ -0,0 +1,1261 @@
+# ASN.1 module ITS-Container
+ OID: _{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2) }_
+
+## Data Elements:
+### ItsPduHeader
+
+Fields:
+* protocolVersion **INTEGER** (0..255)
+* messageID **INTEGER** { denm(1), cam(2), poi(3), spatem(4), mapem(5), ivim(6), ev-rsr(7), tistpgtransaction(8), srem(9), ssem(10), evcsn(11), saem(12), rtcmem(13) } (0..255)
+* stationID [**StationID**](#StationID)
+```asn1
+ItsPduHeader ::= SEQUENCE {
+ protocolVersion INTEGER (0..255),
+ messageID INTEGER{ denm(1), cam(2), poi(3), spatem(4), mapem(5), ivim(6), ev-rsr(7), tistpgtransaction(8), srem(9), ssem(10), evcsn(11), saem(12), rtcmem(13) } (0..255),
+ stationID StationID
+}
+```
+
+### StationID
+
+```asn1
+StationID ::= INTEGER(0..4294967295)
+```
+
+### ReferencePosition
+
+Fields:
+* latitude [**Latitude**](ITS-Container.md#Latitude)
+* longitude [**Longitude**](ITS-Container.md#Longitude)
+* positionConfidenceEllipse [**PosConfidenceEllipse**](#PosConfidenceEllipse)
+* altitude [**Altitude**](#Altitude)
+```asn1
+ReferencePosition ::= SEQUENCE {
+ latitude Latitude,
+ longitude Longitude,
+ positionConfidenceEllipse PosConfidenceEllipse ,
+ altitude Altitude
+}
+```
+
+### DeltaReferencePosition
+
+Fields:
+* deltaLatitude [**DeltaLatitude**](#DeltaLatitude)
+* deltaLongitude [**DeltaLongitude**](#DeltaLongitude)
+* deltaAltitude [**DeltaAltitude**](#DeltaAltitude)
+```asn1
+DeltaReferencePosition ::= SEQUENCE {
+ deltaLatitude DeltaLatitude,
+ deltaLongitude DeltaLongitude,
+ deltaAltitude DeltaAltitude
+}
+```
+
+### Longitude
+
+Values:
+* **oneMicrodegreeEast** (10)
+```asn1
+Longitude ::= INTEGER {oneMicrodegreeEast (10), oneMicrodegreeWest (-10), unavailable(1800000001)} (-1800000000..1800000001)
+```
+
+### Latitude
+
+Values:
+* **oneMicrodegreeNorth** (10)
+```asn1
+Latitude ::= INTEGER {oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10), unavailable(900000001)} (-900000000..900000001)
+```
+
+### Altitude
+
+Fields:
+* altitudeValue [**AltitudeValue**](#AltitudeValue)
+* altitudeConfidence [**AltitudeConfidence**](#AltitudeConfidence)
+```asn1
+Altitude ::= SEQUENCE {
+ altitudeValue AltitudeValue,
+ altitudeConfidence AltitudeConfidence
+}
+```
+
+### AltitudeValue
+
+```asn1
+AltitudeValue ::= INTEGER {referenceEllipsoidSurface(0), oneCentimeter(1), unavailable(800001)} (-100000..800001)
+```
+
+### AltitudeConfidence
+
+Values:
+* **alt-000-01** (0)
+* **alt-000-02** (1)
+* **alt-000-05** (2)
+* **alt-000-10** (3)
+* **alt-000-20** (4)
+* **alt-000-50** (5)
+* **alt-001-00** (6)
+* **alt-002-00** (7)
+* **alt-005-00** (8)
+* **alt-010-00** (9)
+* **alt-020-00** (10)
+* **alt-050-00** (11)
+* **alt-100-00** (12)
+* **alt-200-00** (13)
+* **outOfRange** (14)
+* **unavailable** (15)
+```asn1
+AltitudeConfidence ::= ENUMERATED {
+ alt-000-01 (0),
+ alt-000-02 (1),
+ alt-000-05 (2),
+ alt-000-10 (3),
+ alt-000-20 (4),
+ alt-000-50 (5),
+ alt-001-00 (6),
+ alt-002-00 (7),
+ alt-005-00 (8),
+ alt-010-00 (9),
+ alt-020-00 (10),
+ alt-050-00 (11),
+ alt-100-00 (12),
+ alt-200-00 (13),
+ outOfRange (14),
+ unavailable (15)
+}
+```
+
+### DeltaLongitude
+
+Values:
+* **oneMicrodegreeEast** (10)
+```asn1
+DeltaLongitude ::= INTEGER {oneMicrodegreeEast (10), oneMicrodegreeWest (-10), unavailable(131072)} (-131071..131072)
+```
+
+### DeltaLatitude
+
+Values:
+* **oneMicrodegreeNorth** (10)
+```asn1
+DeltaLatitude ::= INTEGER {oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10) , unavailable(131072)} (-131071..131072)
+```
+
+### DeltaAltitude
+
+Values:
+* **oneCentimeterUp** (1)
+```asn1
+DeltaAltitude ::= INTEGER {oneCentimeterUp (1), oneCentimeterDown (-1), unavailable(12800)} (-12700..12800)
+```
+
+### PosConfidenceEllipse
+
+Fields:
+* semiMajorConfidence [**SemiAxisLength**](#SemiAxisLength)
+* semiMinorConfidence [**SemiAxisLength**](#SemiAxisLength)
+* semiMajorOrientation [**HeadingValue**](#HeadingValue)
+```asn1
+PosConfidenceEllipse ::= SEQUENCE {
+ semiMajorConfidence SemiAxisLength,
+ semiMinorConfidence SemiAxisLength,
+ semiMajorOrientation HeadingValue
+}
+```
+
+### PathPoint
+
+Fields:
+* pathPosition [**DeltaReferencePosition**](#DeltaReferencePosition)
+* pathDeltaTime [**PathDeltaTime**](#PathDeltaTime) OPTIONAL
+```asn1
+PathPoint ::= SEQUENCE {
+ pathPosition DeltaReferencePosition,
+ pathDeltaTime PathDeltaTime OPTIONAL
+}
+```
+
+### PathDeltaTime
+
+```asn1
+PathDeltaTime ::= INTEGER {tenMilliSecondsInPast(1)} (1..65535, ...)
+```
+
+### PtActivation
+
+Fields:
+* ptActivationType [**PtActivationType**](#PtActivationType)
+* ptActivationData [**PtActivationData**](#PtActivationData)
+```asn1
+PtActivation ::= SEQUENCE {
+ ptActivationType PtActivationType,
+ ptActivationData PtActivationData
+}
+```
+
+### PtActivationType
+
+```asn1
+PtActivationType ::= INTEGER {undefinedCodingType(0), r09-16CodingType(1), vdv-50149CodingType(2)} (0..255)
+```
+
+### PtActivationData
+
+```asn1
+PtActivationData ::= OCTET STRING (SIZE(1..20))
+```
+
+### AccelerationControl
+
+Values:
+* **brakePedalEngaged** (0)
+* **gasPedalEngaged** (1)
+* **emergencyBrakeEngaged** (2)
+* **collisionWarningEngaged** (3)
+* **accEngaged** (4)
+* **cruiseControlEngaged** (5)
+* **speedLimiterEngaged** (6)
+```asn1
+AccelerationControl ::= BIT STRING {
+ brakePedalEngaged (0),
+ gasPedalEngaged (1),
+ emergencyBrakeEngaged (2),
+ collisionWarningEngaged (3),
+ accEngaged (4),
+ cruiseControlEngaged (5),
+ speedLimiterEngaged (6)
+} (SIZE(7))
+```
+
+### SemiAxisLength
+
+```asn1
+SemiAxisLength ::= INTEGER{oneCentimeter(1), outOfRange(4094), unavailable(4095)} (0..4095)
+```
+
+### CauseCode
+
+Fields:
+* causeCode [**CauseCodeType**](#CauseCodeType)
+* subCauseCode [**SubCauseCodeType**](#SubCauseCodeType)
+```asn1
+CauseCode ::= SEQUENCE {
+ causeCode CauseCodeType,
+ subCauseCode SubCauseCodeType,
+ ...
+}
+```
+
+### CauseCodeType
+
+Values:
+* **reserved** (0)
+* **trafficCondition** (1)
+* **accident** (2)
+* **roadworks** (3)
+* **impassability** (5)
+* **adverseWeatherCondition-Adhesion** (6)
+* **aquaplannning** (7)
+* **hazardousLocation-SurfaceCondition** (9)
+* **hazardousLocation-ObstacleOnTheRoad** (10)
+* **hazardousLocation-AnimalOnTheRoad** (11)
+* **humanPresenceOnTheRoad** (12)
+* **wrongWayDriving** (14)
+* **rescueAndRecoveryWorkInProgress** (15)
+* **adverseWeatherCondition-ExtremeWeatherCondition** (17)
+* **adverseWeatherCondition-Visibility** (18)
+* **adverseWeatherCondition-Precipitation** (19)
+* **slowVehicle** (26)
+* **dangerousEndOfQueue** (27)
+* **vehicleBreakdown** (91)
+* **postCrash** (92)
+* **humanProblem** (93)
+* **stationaryVehicle** (94)
+* **emergencyVehicleApproaching** (95)
+* **hazardousLocation-DangerousCurve** (96)
+* **collisionRisk** (97)
+* **signalViolation** (98)
+* **dangerousSituation** (99)
+```asn1
+CauseCodeType ::= INTEGER {
+ reserved (0),
+ trafficCondition (1),
+ accident (2),
+ roadworks (3),
+ impassability (5),
+ adverseWeatherCondition-Adhesion (6),
+ aquaplannning (7),
+ hazardousLocation-SurfaceCondition (9),
+ hazardousLocation-ObstacleOnTheRoad (10),
+ hazardousLocation-AnimalOnTheRoad (11),
+ humanPresenceOnTheRoad (12),
+ wrongWayDriving (14),
+ rescueAndRecoveryWorkInProgress (15),
+ adverseWeatherCondition-ExtremeWeatherCondition (17),
+ adverseWeatherCondition-Visibility (18),
+ adverseWeatherCondition-Precipitation (19),
+ slowVehicle (26),
+ dangerousEndOfQueue (27),
+ vehicleBreakdown (91),
+ postCrash (92),
+ humanProblem (93),
+ stationaryVehicle (94),
+ emergencyVehicleApproaching (95),
+ hazardousLocation-DangerousCurve (96),
+ collisionRisk (97),
+ signalViolation (98),
+ dangerousSituation (99)
+} (0..255)
+```
+
+### SubCauseCodeType
+
+```asn1
+SubCauseCodeType ::= INTEGER (0..255)
+```
+
+### TrafficConditionSubCauseCode
+
+```asn1
+TrafficConditionSubCauseCode ::= INTEGER {unavailable(0), increasedVolumeOfTraffic(1), trafficJamSlowlyIncreasing(2), trafficJamIncreasing(3), trafficJamStronglyIncreasing(4), trafficStationary(5), trafficJamSlightlyDecreasing(6), trafficJamDecreasing(7), trafficJamStronglyDecreasing(8)} (0..255)
+```
+
+### AccidentSubCauseCode
+
+```asn1
+AccidentSubCauseCode ::= INTEGER {unavailable(0), multiVehicleAccident(1), heavyAccident(2), accidentInvolvingLorry(3), accidentInvolvingBus(4), accidentInvolvingHazardousMaterials(5), accidentOnOppositeLane(6), unsecuredAccident(7), assistanceRequested(8)} (0..255)
+```
+
+### RoadworksSubCauseCode
+
+```asn1
+RoadworksSubCauseCode ::= INTEGER {unavailable(0), majorRoadworks(1), roadMarkingWork(2), slowMovingRoadMaintenance(3), shortTermStationaryRoadworks(4), streetCleaning(5), winterService(6)} (0..255)
+```
+
+### HumanPresenceOnTheRoadSubCauseCode
+
+```asn1
+HumanPresenceOnTheRoadSubCauseCode ::= INTEGER {unavailable(0), childrenOnRoadway(1), cyclistOnRoadway(2), motorcyclistOnRoadway(3)} (0..255)
+```
+
+### WrongWayDrivingSubCauseCode
+
+```asn1
+WrongWayDrivingSubCauseCode ::= INTEGER {unavailable(0), wrongLane(1), wrongDirection(2)} (0..255)
+```
+
+### AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode
+
+```asn1
+AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode ::= INTEGER {unavailable(0), strongWinds(1), damagingHail(2), hurricane(3), thunderstorm(4), tornado(5), blizzard(6)} (0..255)
+```
+
+### AdverseWeatherCondition-AdhesionSubCauseCode
+
+```asn1
+AdverseWeatherCondition-AdhesionSubCauseCode ::= INTEGER {unavailable(0), heavyFrostOnRoad(1), fuelOnRoad(2), mudOnRoad(3), snowOnRoad(4), iceOnRoad(5), blackIceOnRoad(6), oilOnRoad(7), looseChippings(8), instantBlackIce(9), roadsSalted(10)} (0..255)
+```
+
+### AdverseWeatherCondition-VisibilitySubCauseCode
+
+```asn1
+AdverseWeatherCondition-VisibilitySubCauseCode ::= INTEGER {unavailable(0), fog(1), smoke(2), heavySnowfall(3), heavyRain(4), heavyHail(5), lowSunGlare(6), sandstorms(7), swarmsOfInsects(8)} (0..255)
+```
+
+### AdverseWeatherCondition-PrecipitationSubCauseCode
+
+```asn1
+AdverseWeatherCondition-PrecipitationSubCauseCode ::= INTEGER {unavailable(0), heavyRain(1), heavySnowfall(2), softHail(3)} (0..255)
+```
+
+### SlowVehicleSubCauseCode
+
+```asn1
+SlowVehicleSubCauseCode ::= INTEGER {unavailable(0), maintenanceVehicle(1), vehiclesSlowingToLookAtAccident(2), abnormalLoad(3), abnormalWideLoad(4), convoy(5), snowplough(6), deicing(7), saltingVehicles(8)} (0..255)
+```
+
+### StationaryVehicleSubCauseCode
+
+```asn1
+StationaryVehicleSubCauseCode ::= INTEGER {unavailable(0), humanProblem(1), vehicleBreakdown(2), postCrash(3), publicTransportStop(4), carryingDangerousGoods(5)} (0..255)
+```
+
+### HumanProblemSubCauseCode
+
+```asn1
+HumanProblemSubCauseCode ::= INTEGER {unavailable(0), glycemiaProblem(1), heartProblem(2)} (0..255)
+```
+
+### EmergencyVehicleApproachingSubCauseCode
+
+```asn1
+EmergencyVehicleApproachingSubCauseCode ::= INTEGER {unavailable(0), emergencyVehicleApproaching(1), prioritizedVehicleApproaching(2)} (0..255)
+```
+
+### HazardousLocation-DangerousCurveSubCauseCode
+
+```asn1
+HazardousLocation-DangerousCurveSubCauseCode ::= INTEGER {unavailable(0), dangerousLeftTurnCurve(1), dangerousRightTurnCurve(2), multipleCurvesStartingWithUnknownTurningDirection(3), multipleCurvesStartingWithLeftTurn(4), multipleCurvesStartingWithRightTurn(5)} (0..255)
+```
+
+### HazardousLocation-SurfaceConditionSubCauseCode
+
+```asn1
+HazardousLocation-SurfaceConditionSubCauseCode ::= INTEGER {unavailable(0), rockfalls(1), earthquakeDamage(2), sewerCollapse(3), subsidence(4), snowDrifts(5), stormDamage(6), burstPipe(7), volcanoEruption(8), fallingIce(9)} (0..255)
+```
+
+### HazardousLocation-ObstacleOnTheRoadSubCauseCode
+
+```asn1
+HazardousLocation-ObstacleOnTheRoadSubCauseCode ::= INTEGER {unavailable(0), shedLoad(1), partsOfVehicles(2), partsOfTyres(3), bigObjects(4), fallenTrees(5), hubCaps(6), waitingVehicles(7)} (0..255)
+```
+
+### HazardousLocation-AnimalOnTheRoadSubCauseCode
+
+```asn1
+HazardousLocation-AnimalOnTheRoadSubCauseCode ::= INTEGER {unavailable(0), wildAnimals(1), herdOfAnimals(2), smallAnimals(3), largeAnimals(4)} (0..255)
+```
+
+### CollisionRiskSubCauseCode
+
+```asn1
+CollisionRiskSubCauseCode ::= INTEGER {unavailable(0), longitudinalCollisionRisk(1), crossingCollisionRisk(2), lateralCollisionRisk(3), vulnerableRoadUser(4)} (0..255)
+```
+
+### SignalViolationSubCauseCode
+
+```asn1
+SignalViolationSubCauseCode ::= INTEGER {unavailable(0), stopSignViolation(1), trafficLightViolation(2), turningRegulationViolation(3)} (0..255)
+```
+
+### RescueAndRecoveryWorkInProgressSubCauseCode
+
+```asn1
+RescueAndRecoveryWorkInProgressSubCauseCode ::= INTEGER {unavailable(0), emergencyVehicles(1), rescueHelicopterLanding(2), policeActivityOngoing(3), medicalEmergencyOngoing(4), childAbductionInProgress(5)} (0..255)
+```
+
+### DangerousEndOfQueueSubCauseCode
+
+```asn1
+DangerousEndOfQueueSubCauseCode ::= INTEGER {unavailable(0), suddenEndOfQueue(1), queueOverHill(2), queueAroundBend(3), queueInTunnel(4)} (0..255)
+```
+
+### DangerousSituationSubCauseCode
+
+```asn1
+DangerousSituationSubCauseCode ::= INTEGER {unavailable(0), emergencyElectronicBrakeEngaged(1), preCrashSystemEngaged(2), espEngaged(3), absEngaged(4), aebEngaged(5), brakeWarningEngaged(6), collisionRiskWarningEngaged(7)} (0..255)
+```
+
+### VehicleBreakdownSubCauseCode
+
+```asn1
+VehicleBreakdownSubCauseCode ::= INTEGER {unavailable(0), lackOfFuel (1), lackOfBatteryPower (2), engineProblem(3), transmissionProblem(4), engineCoolingProblem(5), brakingSystemProblem(6), steeringProblem(7), tyrePuncture(8), tyrePressureProblem(9)} (0..255)
+```
+
+### PostCrashSubCauseCode
+
+```asn1
+PostCrashSubCauseCode ::= INTEGER {unavailable(0), accidentWithoutECallTriggered (1), accidentWithECallManuallyTriggered (2), accidentWithECallAutomaticallyTriggered (3), accidentWithECallTriggeredWithoutAccessToCellularNetwork(4)} (0..255)
+```
+
+### Curvature
+
+Fields:
+* curvatureValue [**CurvatureValue**](#CurvatureValue)
+* curvatureConfidence [**CurvatureConfidence**](#CurvatureConfidence)
+```asn1
+Curvature ::= SEQUENCE {
+ curvatureValue CurvatureValue,
+ curvatureConfidence CurvatureConfidence
+}
+```
+
+### CurvatureValue
+
+```asn1
+CurvatureValue ::= INTEGER {straight(0), unavailable(1023)} (-1023..1023)
+```
+
+### CurvatureConfidence
+
+Values:
+* **onePerMeter-0-00002** (0)
+* **onePerMeter-0-0001** (1)
+* **onePerMeter-0-0005** (2)
+* **onePerMeter-0-002** (3)
+* **onePerMeter-0-01** (4)
+* **onePerMeter-0-1** (5)
+* **outOfRange** (6)
+* **unavailable** (7)
+```asn1
+CurvatureConfidence ::= ENUMERATED {
+ onePerMeter-0-00002 (0),
+ onePerMeter-0-0001 (1),
+ onePerMeter-0-0005 (2),
+ onePerMeter-0-002 (3),
+ onePerMeter-0-01 (4),
+ onePerMeter-0-1 (5),
+ outOfRange (6),
+ unavailable (7)
+}
+```
+
+### CurvatureCalculationMode
+
+```asn1
+CurvatureCalculationMode ::= ENUMERATED {yawRateUsed(0), yawRateNotUsed(1), unavailable(2), ...}
+```
+
+### Heading
+
+Fields:
+* headingValue [**HeadingValue**](#HeadingValue)
+* headingConfidence [**HeadingConfidence**](#HeadingConfidence)
+```asn1
+Heading ::= SEQUENCE {
+ headingValue HeadingValue,
+ headingConfidence HeadingConfidence
+}
+```
+
+### HeadingValue
+
+```asn1
+HeadingValue ::= INTEGER {wgs84North(0), wgs84East(900), wgs84South(1800), wgs84West(2700), unavailable(3601)} (0..3601)
+```
+
+### HeadingConfidence
+
+Values:
+* **equalOrWithinZeroPointOneDegree** (1)
+```asn1
+HeadingConfidence ::= INTEGER {equalOrWithinZeroPointOneDegree (1), equalOrWithinOneDegree (10), outOfRange(126), unavailable(127)} (1..127)
+```
+
+### LanePosition
+
+```asn1
+LanePosition::= INTEGER {offTheRoad(-1), hardShoulder(0),
+outermostDrivingLane(1), secondLaneFromOutside(2)} (-1..14)
+```
+
+### ClosedLanes
+
+Fields:
+* innerhardShoulderStatus [**HardShoulderStatus**](#HardShoulderStatus) OPTIONAL
+* outerhardShoulderStatus [**HardShoulderStatus**](#HardShoulderStatus) OPTIONAL
+* drivingLaneStatus [**DrivingLaneStatus**](#DrivingLaneStatus) OPTIONAL
+```asn1
+ClosedLanes ::= SEQUENCE {
+ innerhardShoulderStatus HardShoulderStatus OPTIONAL,
+ outerhardShoulderStatus HardShoulderStatus OPTIONAL,
+ drivingLaneStatus DrivingLaneStatus OPTIONAL,
+ ...
+}
+```
+
+### HardShoulderStatus
+
+```asn1
+HardShoulderStatus ::= ENUMERATED {availableForStopping(0), closed(1), availableForDriving(2)}
+```
+
+### DrivingLaneStatus
+
+```asn1
+DrivingLaneStatus ::= BIT STRING (SIZE (1..13))
+```
+
+### PerformanceClass
+
+```asn1
+PerformanceClass ::= INTEGER {unavailable(0), performanceClassA(1), performanceClassB(2)} (0..7)
+```
+
+### SpeedValue
+
+```asn1
+SpeedValue ::= INTEGER {standstill(0), oneCentimeterPerSec(1), unavailable(16383)} (0..16383)
+```
+
+### SpeedConfidence
+
+```asn1
+SpeedConfidence ::= INTEGER {equalOrWithinOneCentimeterPerSec(1), equalOrWithinOneMeterPerSec(100), outOfRange(126), unavailable(127)} (1..127)
+```
+
+### VehicleMass
+
+```asn1
+VehicleMass ::= INTEGER {hundredKg(1), unavailable(1024)} (1..1024)
+```
+
+### Speed
+
+Fields:
+* speedValue [**SpeedValue**](#SpeedValue)
+* speedConfidence [**SpeedConfidence**](#SpeedConfidence)
+```asn1
+Speed ::= SEQUENCE {
+ speedValue SpeedValue,
+ speedConfidence SpeedConfidence
+}
+```
+
+### DriveDirection
+
+Values:
+* **forward** (0)
+```asn1
+DriveDirection ::= ENUMERATED {forward (0), backward (1), unavailable (2)}
+```
+
+### EmbarkationStatus
+
+```asn1
+EmbarkationStatus ::= BOOLEAN
+```
+
+### LongitudinalAcceleration
+
+Fields:
+* longitudinalAccelerationValue [**LongitudinalAccelerationValue**](#LongitudinalAccelerationValue)
+* longitudinalAccelerationConfidence [**AccelerationConfidence**](#AccelerationConfidence)
+```asn1
+LongitudinalAcceleration ::= SEQUENCE {
+ longitudinalAccelerationValue LongitudinalAccelerationValue,
+ longitudinalAccelerationConfidence AccelerationConfidence
+}
+```
+
+### LongitudinalAccelerationValue
+
+```asn1
+LongitudinalAccelerationValue ::= INTEGER {pointOneMeterPerSecSquaredForward(1), pointOneMeterPerSecSquaredBackward(-1), unavailable(161)} (-160 .. 161)
+```
+
+### AccelerationConfidence
+
+```asn1
+AccelerationConfidence ::= INTEGER {pointOneMeterPerSecSquared(1), outOfRange(101), unavailable(102)} (0 .. 102)
+```
+
+### LateralAcceleration
+
+Fields:
+* lateralAccelerationValue [**LateralAccelerationValue**](#LateralAccelerationValue)
+* lateralAccelerationConfidence [**AccelerationConfidence**](#AccelerationConfidence)
+```asn1
+LateralAcceleration ::= SEQUENCE {
+ lateralAccelerationValue LateralAccelerationValue,
+ lateralAccelerationConfidence AccelerationConfidence
+}
+```
+
+### LateralAccelerationValue
+
+```asn1
+LateralAccelerationValue ::= INTEGER {pointOneMeterPerSecSquaredToRight(-1), pointOneMeterPerSecSquaredToLeft(1), unavailable(161)} (-160 .. 161)
+```
+
+### VerticalAcceleration
+
+Fields:
+* verticalAccelerationValue [**VerticalAccelerationValue**](#VerticalAccelerationValue)
+* verticalAccelerationConfidence [**AccelerationConfidence**](#AccelerationConfidence)
+```asn1
+VerticalAcceleration ::= SEQUENCE {
+ verticalAccelerationValue VerticalAccelerationValue,
+ verticalAccelerationConfidence AccelerationConfidence
+}
+```
+
+### VerticalAccelerationValue
+
+```asn1
+VerticalAccelerationValue ::= INTEGER {pointOneMeterPerSecSquaredUp(1), pointOneMeterPerSecSquaredDown(-1), unavailable(161)} (-160 .. 161)
+```
+
+### StationType
+
+```asn1
+StationType ::= INTEGER {unknown(0), pedestrian(1), cyclist(2), moped(3), motorcycle(4), passengerCar(5), bus(6),
+lightTruck(7), heavyTruck(8), trailer(9), specialVehicles(10), tram(11), roadSideUnit(15)} (0..255)
+```
+
+### ExteriorLights
+
+Values:
+* **lowBeamHeadlightsOn** (0)
+* **highBeamHeadlightsOn** (1)
+* **leftTurnSignalOn** (2)
+* **rightTurnSignalOn** (3)
+* **daytimeRunningLightsOn** (4)
+* **reverseLightOn** (5)
+* **fogLightOn** (6)
+* **parkingLightsOn** (7)
+```asn1
+ExteriorLights ::= BIT STRING {
+ lowBeamHeadlightsOn (0),
+ highBeamHeadlightsOn (1),
+ leftTurnSignalOn (2),
+ rightTurnSignalOn (3),
+ daytimeRunningLightsOn (4),
+ reverseLightOn (5),
+ fogLightOn (6),
+ parkingLightsOn (7)
+} (SIZE(8))
+```
+
+### DangerousGoodsBasic
+
+```asn1
+DangerousGoodsBasic::= ENUMERATED {
+ explosives1(0),
+ explosives2(1),
+ explosives3(2),
+ explosives4(3),
+ explosives5(4),
+ explosives6(5),
+ flammableGases(6),
+ nonFlammableGases(7),
+ toxicGases(8),
+ flammableLiquids(9),
+ flammableSolids(10),
+ substancesLiableToSpontaneousCombustion(11),
+ substancesEmittingFlammableGasesUponContactWithWater(12),
+ oxidizingSubstances(13),
+ organicPeroxides(14),
+ toxicSubstances(15),
+ infectiousSubstances(16),
+ radioactiveMaterial(17),
+ corrosiveSubstances(18),
+ miscellaneousDangerousSubstances(19)
+}
+```
+
+### DangerousGoodsExtended
+
+Fields:
+* dangerousGoodsType [**DangerousGoodsBasic**](ITS-Container.md#DangerousGoodsBasic)
+* unNumber **INTEGER** (0..9999)
+* elevatedTemperature **BOOLEAN**
+* tunnelsRestricted **BOOLEAN**
+* limitedQuantity **BOOLEAN**
+* emergencyActionCode [**IA5String**](#IA5String) (SIZE (1..24)) OPTIONAL
+* phoneNumber [**PhoneNumber**](#PhoneNumber) OPTIONAL
+* companyName [**UTF8String**](#UTF8String) (SIZE (1..24)) OPTIONAL
+```asn1
+DangerousGoodsExtended ::= SEQUENCE {
+ dangerousGoodsType DangerousGoodsBasic,
+ unNumber INTEGER (0..9999),
+ elevatedTemperature BOOLEAN,
+ tunnelsRestricted BOOLEAN,
+ limitedQuantity BOOLEAN,
+ emergencyActionCode IA5String (SIZE (1..24)) OPTIONAL,
+ phoneNumber PhoneNumber OPTIONAL,
+ companyName UTF8String (SIZE (1..24)) OPTIONAL,
+ ...
+}
+```
+
+### SpecialTransportType
+
+```asn1
+SpecialTransportType ::= BIT STRING {heavyLoad(0), excessWidth(1), excessLength(2), excessHeight(3)} (SIZE(4))
+```
+
+### LightBarSirenInUse
+
+Values:
+* **lightBarActivated** (0)
+* **sirenActivated** (1)
+```asn1
+LightBarSirenInUse ::= BIT STRING {
+ lightBarActivated (0),
+ sirenActivated (1)
+} (SIZE(2))
+```
+
+### HeightLonCarr
+
+```asn1
+HeightLonCarr ::= INTEGER {oneCentimeter(1), unavailable(100)} (1..100)
+```
+
+### PosLonCarr
+
+```asn1
+PosLonCarr ::= INTEGER {oneCentimeter(1), unavailable(127)} (1..127)
+```
+
+### PosPillar
+
+```asn1
+PosPillar ::= INTEGER {tenCentimeters(1), unavailable(30)} (1..30)
+```
+
+### PosCentMass
+
+```asn1
+PosCentMass ::= INTEGER {tenCentimeters(1), unavailable(63)} (1..63)
+```
+
+### RequestResponseIndication
+
+```asn1
+RequestResponseIndication ::= ENUMERATED {request(0), response(1)}
+```
+
+### SpeedLimit
+
+```asn1
+SpeedLimit ::= INTEGER {oneKmPerHour(1)} (1..255)
+```
+
+### StationarySince
+
+```asn1
+StationarySince ::= ENUMERATED {lessThan1Minute(0), lessThan2Minutes(1), lessThan15Minutes(2), equalOrGreater15Minutes(3)}
+```
+
+### Temperature
+
+Values:
+* **equalOrSmallerThanMinus60Deg** (-60)
+```asn1
+Temperature ::= INTEGER {equalOrSmallerThanMinus60Deg (-60), oneDegreeCelsius(1), equalOrGreaterThan67Deg(67)} (-60..67)
+```
+
+### TrafficRule
+
+```asn1
+TrafficRule ::= ENUMERATED {noPassing(0), noPassingForTrucks(1), passToRight(2), passToLeft(3), ...
+}
+```
+
+### WheelBaseVehicle
+
+```asn1
+WheelBaseVehicle ::= INTEGER {tenCentimeters(1), unavailable(127)} (1..127)
+```
+
+### TurningRadius
+
+```asn1
+TurningRadius ::= INTEGER {point4Meters(1), unavailable(255)} (1..255)
+```
+
+### PosFrontAx
+
+```asn1
+PosFrontAx ::= INTEGER {tenCentimeters(1), unavailable(20)} (1..20)
+```
+
+### PositionOfOccupants
+
+Values:
+* **row1LeftOccupied** (0)
+* **row1RightOccupied** (1)
+* **row1MidOccupied** (2)
+* **row1NotDetectable** (3)
+* **row1NotPresent** (4)
+* **row2LeftOccupied** (5)
+* **row2RightOccupied** (6)
+* **row2MidOccupied** (7)
+* **row2NotDetectable** (8)
+* **row2NotPresent** (9)
+* **row3LeftOccupied** (10)
+* **row3RightOccupied** (11)
+* **row3MidOccupied** (12)
+* **row3NotDetectable** (13)
+* **row3NotPresent** (14)
+* **row4LeftOccupied** (15)
+* **row4RightOccupied** (16)
+* **row4MidOccupied** (17)
+* **row4NotDetectable** (18)
+* **row4NotPresent** (19)
+```asn1
+PositionOfOccupants ::= BIT STRING {
+ row1LeftOccupied (0),
+ row1RightOccupied (1),
+ row1MidOccupied (2),
+ row1NotDetectable (3),
+ row1NotPresent (4),
+ row2LeftOccupied (5),
+ row2RightOccupied (6),
+ row2MidOccupied (7),
+ row2NotDetectable (8),
+ row2NotPresent (9),
+ row3LeftOccupied (10),
+ row3RightOccupied (11),
+ row3MidOccupied (12),
+ row3NotDetectable (13),
+ row3NotPresent (14),
+ row4LeftOccupied (15),
+ row4RightOccupied (16),
+ row4MidOccupied (17),
+ row4NotDetectable (18),
+ row4NotPresent (19)} (SIZE(20))
+```
+
+### PositioningSolutionType
+
+```asn1
+PositioningSolutionType ::= ENUMERATED {noPositioningSolution(0), sGNSS(1), dGNSS(2), sGNSSplusDR(3), dGNSSplusDR(4), dR(5), ...}
+```
+
+### VehicleIdentification
+
+Fields:
+* wMInumber [**WMInumber**](#WMInumber) OPTIONAL
+* vDS [**VDS**](#VDS) OPTIONAL
+```asn1
+VehicleIdentification ::= SEQUENCE {
+ wMInumber WMInumber OPTIONAL,
+ vDS VDS OPTIONAL,
+ ...
+}
+```
+
+### WMInumber
+
+```asn1
+WMInumber ::= IA5String (SIZE(1..3))
+```
+
+### VDS
+
+```asn1
+VDS ::= IA5String (SIZE(6))
+```
+
+### EnergyStorageType
+
+```asn1
+EnergyStorageType ::= BIT STRING {hydrogenStorage(0), electricEnergyStorage(1), liquidPropaneGas(2), compressedNaturalGas(3), diesel(4), gasoline(5), ammonia(6)} (SIZE(7))
+```
+
+### VehicleLength
+
+Fields:
+* vehicleLengthValue [**VehicleLengthValue**](#VehicleLengthValue)
+* vehicleLengthConfidenceIndication [**VehicleLengthConfidenceIndication**](#VehicleLengthConfidenceIndication)
+```asn1
+VehicleLength ::= SEQUENCE {
+ vehicleLengthValue VehicleLengthValue,
+ vehicleLengthConfidenceIndication VehicleLengthConfidenceIndication
+}
+```
+
+### VehicleLengthValue
+
+```asn1
+VehicleLengthValue ::= INTEGER {tenCentimeters(1), outOfRange(1022), unavailable(1023)} (1..1023)
+```
+
+### VehicleLengthConfidenceIndication
+
+```asn1
+VehicleLengthConfidenceIndication ::= ENUMERATED {noTrailerPresent(0), trailerPresentWithKnownLength(1), trailerPresentWithUnknownLength(2), trailerPresenceIsUnknown(3), unavailable(4)}
+```
+
+### VehicleWidth
+
+```asn1
+VehicleWidth ::= INTEGER {tenCentimeters(1), outOfRange(61), unavailable(62)} (1..62)
+```
+
+### PathHistory
+
+```asn1
+PathHistory::= SEQUENCE (SIZE(0..40)) OF PathPoint
+```
+
+### EmergencyPriority
+
+```asn1
+EmergencyPriority ::= BIT STRING {requestForRightOfWay(0), requestForFreeCrossingAtATrafficLight(1)} (SIZE(2))
+```
+
+### InformationQuality
+
+```asn1
+InformationQuality ::= INTEGER {unavailable(0), lowest(1), highest(7)} (0..7)
+```
+
+### RoadType
+
+```asn1
+RoadType ::= ENUMERATED {
+ urban-NoStructuralSeparationToOppositeLanes(0),
+ urban-WithStructuralSeparationToOppositeLanes(1),
+ nonUrban-NoStructuralSeparationToOppositeLanes(2),
+ nonUrban-WithStructuralSeparationToOppositeLanes(3)}
+```
+
+### SteeringWheelAngle
+
+Fields:
+* steeringWheelAngleValue [**SteeringWheelAngleValue**](#SteeringWheelAngleValue)
+* steeringWheelAngleConfidence [**SteeringWheelAngleConfidence**](#SteeringWheelAngleConfidence)
+```asn1
+SteeringWheelAngle ::= SEQUENCE {
+ steeringWheelAngleValue SteeringWheelAngleValue,
+ steeringWheelAngleConfidence SteeringWheelAngleConfidence
+}
+```
+
+### SteeringWheelAngleValue
+
+```asn1
+SteeringWheelAngleValue ::= INTEGER {straight(0), onePointFiveDegreesToRight(-1), onePointFiveDegreesToLeft(1), unavailable(512)} (-511..512)
+```
+
+### SteeringWheelAngleConfidence
+
+Values:
+* **equalOrWithinOnePointFiveDegree** (1)
+```asn1
+SteeringWheelAngleConfidence ::= INTEGER {equalOrWithinOnePointFiveDegree (1), outOfRange(126), unavailable(127)} (1..127)
+```
+
+### TimestampIts
+
+```asn1
+TimestampIts ::= INTEGER {utcStartOf2004(0), oneMillisecAfterUTCStartOf2004(1)} (0..4398046511103)
+```
+
+### VehicleRole
+
+```asn1
+VehicleRole ::= ENUMERATED {default(0), publicTransport(1), specialTransport(2), dangerousGoods(3), roadWork(4), rescue(5), emergency(6), safetyCar(7), agriculture(8), commercial(9), military(10), roadOperator(11), taxi(12), reserved1(13), reserved2(14), reserved3(15)}
+```
+
+### YawRate
+
+Fields:
+* yawRateValue [**YawRateValue**](#YawRateValue)
+* yawRateConfidence [**YawRateConfidence**](#YawRateConfidence)
+```asn1
+YawRate::= SEQUENCE {
+ yawRateValue YawRateValue,
+ yawRateConfidence YawRateConfidence
+}
+```
+
+### YawRateValue
+
+```asn1
+YawRateValue ::= INTEGER {straight(0), degSec-000-01ToRight(-1), degSec-000-01ToLeft(1), unavailable(32767)} (-32766..32767)
+```
+
+### YawRateConfidence
+
+Values:
+* **degSec-000-01** (0)
+* **degSec-000-05** (1)
+* **degSec-000-10** (2)
+* **degSec-001-00** (3)
+* **degSec-005-00** (4)
+* **degSec-010-00** (5)
+* **degSec-100-00** (6)
+* **outOfRange** (7)
+* **unavailable** (8)
+```asn1
+YawRateConfidence ::= ENUMERATED {
+ degSec-000-01 (0),
+ degSec-000-05 (1),
+ degSec-000-10 (2),
+ degSec-001-00 (3),
+ degSec-005-00 (4),
+ degSec-010-00 (5),
+ degSec-100-00 (6),
+ outOfRange (7),
+ unavailable (8)
+}
+```
+
+### ProtectedZoneType
+
+Values:
+* **permanentCenDsrcTolling** (0)
+```asn1
+ProtectedZoneType::= ENUMERATED { permanentCenDsrcTolling (0), ..., temporaryCenDsrcTolling (1) }
+```
+
+### RelevanceDistance
+
+```asn1
+RelevanceDistance ::= ENUMERATED {lessThan50m(0), lessThan100m(1), lessThan200m(2), lessThan500m(3), lessThan1000m(4), lessThan5km(5), lessThan10km(6), over10km(7)}
+```
+
+### RelevanceTrafficDirection
+
+```asn1
+RelevanceTrafficDirection ::= ENUMERATED {allTrafficDirections(0), upstreamTraffic(1), downstreamTraffic(2), oppositeTraffic(3)}
+```
+
+### TransmissionInterval
+
+```asn1
+TransmissionInterval ::= INTEGER {oneMilliSecond(1), tenSeconds(10000)} (1..10000)
+```
+
+### ValidityDuration
+
+```asn1
+ValidityDuration ::= INTEGER {timeOfDetection(0), oneSecondAfterDetection(1)} (0..86400)
+```
+
+### ActionID
+
+Fields:
+* originatingStationID [**StationID**](#StationID)
+* sequenceNumber [**SequenceNumber**](#SequenceNumber)
+```asn1
+ActionID ::= SEQUENCE {
+ originatingStationID StationID,
+ sequenceNumber SequenceNumber
+}
+```
+
+### ItineraryPath
+
+```asn1
+ItineraryPath ::= SEQUENCE SIZE(1..40) OF ReferencePosition
+```
+
+### ProtectedCommunicationZone
+
+Fields:
+* protectedZoneType [**ProtectedZoneType**](#ProtectedZoneType)
+* expiryTime [**TimestampIts**](ITS-Container.md#TimestampIts) OPTIONAL
+* protectedZoneLatitude [**Latitude**](ITS-Container.md#Latitude)
+* protectedZoneLongitude [**Longitude**](ITS-Container.md#Longitude)
+* protectedZoneRadius [**ProtectedZoneRadius**](ITS-Container.md#ProtectedZoneRadius) OPTIONAL
+* protectedZoneID [**ProtectedZoneID**](ITS-Container.md#ProtectedZoneID) OPTIONAL
+```asn1
+ProtectedCommunicationZone ::= SEQUENCE {
+ protectedZoneType ProtectedZoneType,
+ expiryTime TimestampIts OPTIONAL,
+ protectedZoneLatitude Latitude,
+ protectedZoneLongitude Longitude,
+ protectedZoneRadius ProtectedZoneRadius OPTIONAL,
+ protectedZoneID ProtectedZoneID OPTIONAL,
+ ...
+}
+```
+
+### Traces
+
+```asn1
+Traces ::= SEQUENCE SIZE(1..7) OF PathHistory
+```
+
+### NumberOfOccupants
+
+Values:
+* **oneOccupant** (1)
+```asn1
+NumberOfOccupants ::= INTEGER {oneOccupant (1), unavailable(127)} (0 .. 127)
+```
+
+### SequenceNumber
+
+```asn1
+SequenceNumber ::= INTEGER (0..65535)
+```
+
+### PositionOfPillars
+
+```asn1
+PositionOfPillars ::= SEQUENCE (SIZE(1..3, ...)) OF PosPillar
+```
+
+### RestrictedTypes
+
+```asn1
+RestrictedTypes ::= SEQUENCE (SIZE(1..3, ...)) OF StationType
+```
+
+### EventHistory
+
+```asn1
+EventHistory::= SEQUENCE (SIZE(1..23)) OF EventPoint
+```
+
+### EventPoint
+
+Fields:
+* eventPosition [**DeltaReferencePosition**](#DeltaReferencePosition)
+* eventDeltaTime [**PathDeltaTime**](#PathDeltaTime) OPTIONAL
+* informationQuality [**InformationQuality**](#InformationQuality)
+```asn1
+EventPoint ::= SEQUENCE {
+ eventPosition DeltaReferencePosition,
+ eventDeltaTime PathDeltaTime OPTIONAL,
+ informationQuality InformationQuality
+}
+```
+
+### ProtectedCommunicationZonesRSU
+
+```asn1
+ProtectedCommunicationZonesRSU ::= SEQUENCE (SIZE(1..16)) OF ProtectedCommunicationZone
+```
+
+### CenDsrcTollingZone
+
+Fields:
+* protectedZoneLatitude [**Latitude**](ITS-Container.md#Latitude)
+* protectedZoneLongitude [**Longitude**](ITS-Container.md#Longitude)
+* cenDsrcTollingZoneID [**CenDsrcTollingZoneID**](#CenDsrcTollingZoneID) OPTIONAL
+```asn1
+CenDsrcTollingZone ::= SEQUENCE {
+ protectedZoneLatitude Latitude,
+ protectedZoneLongitude Longitude,
+ cenDsrcTollingZoneID CenDsrcTollingZoneID OPTIONAL,
+ ...
+}
+```
+
+### ProtectedZoneRadius
+
+```asn1
+ProtectedZoneRadius ::= INTEGER {oneMeter(1)} (1..255,...)
+```
+
+### ProtectedZoneID
+
+```asn1
+ProtectedZoneID ::= INTEGER (0.. 134217727)
+```
+
+### CenDsrcTollingZoneID
+
+```asn1
+CenDsrcTollingZoneID ::= ProtectedZoneID
+```
+
+### DigitalMap
+
+```asn1
+DigitalMap ::= SEQUENCE (SIZE(1..256)) OF ReferencePosition
+```
+
+### OpeningDaysHours
+
+```asn1
+OpeningDaysHours ::= UTF8String
+```
+
+### PhoneNumber
+
+```asn1
+PhoneNumber ::= NumericString (SIZE(1..16))
+```
+
+
+
diff --git a/docs/VAM-Temp-Imports.md b/docs/VAM-Temp-Imports.md
new file mode 100755
index 0000000000000000000000000000000000000000..540031eca50e0a1d453658617f636819e3f49346
--- /dev/null
+++ b/docs/VAM-Temp-Imports.md
@@ -0,0 +1,170 @@
+# ASN.1 module VAM-Temp-Imports
+ OID: _{itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1) ts(103300) temp-imports(255) version1(1)}_
+
+## Imports:
+ * **[ITS-Container](ITS-Container.md)** *{itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)}*
+
+ * **[DSRC](DSRC.md)** *{iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (2)}*
+
+## Data Elements:
+### BasicContainer
+
+Fields:
+* stationType [**StationType**](ITS-Container.md#StationType)
+* referencePosition [**ReferencePosition**](ITS-Container.md#ReferencePosition)
+```asn1
+BasicContainer ::= SEQUENCE {
+ stationType StationType,
+ referencePosition ReferencePosition,
+ ...
+}
+```
+
+### ItsPduHeader
+
+Fields:
+* protocolVersion **INTEGER** (0..255)
+* messageID **INTEGER** { denm(1), cam(2), poi(3), spatem(4), mapem(5), ivim(6), ev-rsr(7), tistpgtransaction(8), srem(9), ssem(10), evcsn(11), saem(12), rtcmem(13), vam(14) } (0..255)
+* stationID [**StationID**](ITS-Container.md#StationID)
+```asn1
+ItsPduHeader ::= SEQUENCE {
+ protocolVersion INTEGER (0..255),
+ messageID INTEGER{ denm(1), cam(2), poi(3), spatem(4), mapem(5), ivim(6), ev-rsr(7), tistpgtransaction(8), srem(9), ssem(10), evcsn(11), saem(12), rtcmem(13), vam(14) } (0..255),
+ stationID StationID
+}
+```
+
+### AreaCircular
+
+Fields:
+* nodeCenterPoint [**OffsetPoint**](VAM-Temp-Imports.md#OffsetPoint) OPTIONAL
+* radius [**Radius**](#Radius)
+```asn1
+AreaCircular ::= SEQUENCE {
+ nodeCenterPoint OffsetPoint OPTIONAL,
+ radius Radius
+}
+```
+
+### AreaPolygon
+
+Fields:
+* polyPointList [**PolyPointList**](#PolyPointList)
+```asn1
+AreaPolygon ::= SEQUENCE {
+ polyPointList PolyPointList
+}
+```
+
+### AreaRectangle
+
+Fields:
+* nodeCenterPoint [**OffsetPoint**](VAM-Temp-Imports.md#OffsetPoint) OPTIONAL
+* semiMajorRangeLength [**SemiRangeLength**](VAM-Temp-Imports.md#SemiRangeLength)
+* semiMinorRangeLength [**SemiRangeLength**](VAM-Temp-Imports.md#SemiRangeLength)
+* semiMajorRangeOrientation [**WGS84AngleValue**](VAM-Temp-Imports.md#WGS84AngleValue)
+* semiHeight [**SemiRangeLength**](VAM-Temp-Imports.md#SemiRangeLength) OPTIONAL
+```asn1
+AreaRectangle ::= SEQUENCE {
+ nodeCenterPoint OffsetPoint OPTIONAL,
+ semiMajorRangeLength SemiRangeLength,
+ semiMinorRangeLength SemiRangeLength,
+ semiMajorRangeOrientation WGS84AngleValue,
+ semiHeight SemiRangeLength OPTIONAL
+}
+```
+
+### OffsetPoint
+
+Fields:
+* nodeOffsetPointXY [**NodeOffsetPointXY**](DSRC.md#NodeOffsetPointXY) (WITH COMPONENTS {..., node-LatLon ABSENT, regional ABSENT})
+* nodeOffsetPointZ [**NodeOffsetPointZ**](#NodeOffsetPointZ) OPTIONAL
+```asn1
+OffsetPoint ::= SEQUENCE{
+ nodeOffsetPointXY NodeOffsetPointXY (WITH COMPONENTS {..., node-LatLon ABSENT, regional ABSENT}),
+ nodeOffsetPointZ NodeOffsetPointZ OPTIONAL
+}
+```
+
+### NodeOffsetPointZ
+
+Fields:
+* node-Z1 [**Offset-B10**](DSRC.md#Offset-B10)
+* node-Z2 [**Offset-B11**](DSRC.md#Offset-B11)
+* node-Z3 [**Offset-B12**](DSRC.md#Offset-B12)
+* node-Z4 [**Offset-B13**](DSRC.md#Offset-B13)
+* node-Z5 [**Offset-B14**](DSRC.md#Offset-B14)
+* node-Z6 [**Offset-B16**](DSRC.md#Offset-B16)
+```asn1
+NodeOffsetPointZ ::= CHOICE {
+ node-Z1 Offset-B10,
+ node-Z2 Offset-B11,
+ node-Z3 Offset-B12,
+ node-Z4 Offset-B13,
+ node-Z5 Offset-B14,
+ node-Z6 Offset-B16
+}
+```
+
+### Radius
+
+Values:
+* **zeroPointOneMeter** (1)
+* **oneMeter** (10)
+```asn1
+Radius ::= INTEGER {
+ zeroPointOneMeter (1),
+ oneMeter (10)
+} (0..10000)
+```
+
+### PolyPointList
+
+```asn1
+PolyPointList ::= SEQUENCE (SIZE(3..16, ...)) OF OffsetPoint
+```
+
+### SemiRangeLength
+
+Values:
+* **zeroPointOneMeter** (1)
+* **oneMeter** (10)
+```asn1
+SemiRangeLength ::= INTEGER {
+ zeroPointOneMeter (1),
+ oneMeter (10)
+} (0..10000)
+```
+
+### WGS84AngleValue
+
+Values:
+* **wgs84North** (0)
+* **wgs84East** (900)
+* **wgs84South** (1800)
+* **wgs84West** (2700)
+* **unavailable** (3601)
+```asn1
+WGS84AngleValue ::= INTEGER {
+ wgs84North (0),
+ wgs84East (900),
+ wgs84South (1800),
+ wgs84West (2700),
+ unavailable (3601)
+} (0..3601)
+```
+
+### StationType
+
+```asn1
+StationType ::= INTEGER {
+ unknown(0), pedestrian(1), cyclist(2), moped(3), motorcycle(4),
+ passengerCar(5), bus(6), lightTruck(7), heavyTruck(8), trailer(9),
+ specialVehicles(10), tram(11), lightVruVehicle(12), animal(13),
+ roadSideUnit(15)
+}
+(0..255)
+```
+
+
+