diff --git a/.gitlab-ci.mk b/.gitlab-ci.mk
new file mode 100644
index 0000000000000000000000000000000000000000..b67f882e42c9edfa62aefad929e00e54520b37cf
--- /dev/null
+++ b/.gitlab-ci.mk
@@ -0,0 +1,42 @@
+ASN1_SRC := $(wildcard asn/*.asn asn/cam/*.asn asn/cdd/*.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 := CPM
+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 docs $(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'
\ No newline at end of file
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..386810375da154a9cab1b3fbfd4e7df0fd8e821d
--- /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
+ cache:
+ paths:
+ - iso/*
+ only:
+ changes:
+ - "asn/*.asn"
+
+documentation:
+ stage: deploy
+ script:
+ - curl --header "PRIVATE-TOKEN:$CI_DOC_TOKEN" https://forge.etsi.org/rep/api/v4/projects/592/repository/files/asn2md.py?ref=master | python3 -c "import sys, json, base64; open('asn2md.py', 'wb').write(base64.b64decode(json.load(sys.stdin)['content']))"
+ - make -f .gitlab-ci.mk doc
+ - >
+ if [ -z "$(git status --untracked-files=no --porcelain)" ]; then
+ echo "No changes found";
+ else
+ git add docs/*.md &&
+ 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/*.asn"
diff --git a/asn/CPM.asn b/asn/CPM.asn
index c68bfc6355bfeece8bb9a4465eecafae675ac0a6..7e0d29b5a75cafb8df27123729bbade1115f90b2 100644
--- a/asn/CPM.asn
+++ b/asn/CPM.asn
@@ -1,5 +1,5 @@
--- @brief Specification of the Collective Perception Message ETSI TS 103 324
--- Latest version available at @url https://forge.etsi.org/rep/ITS/CPM_TS103324
+--! @brief Specification of the Collective Perception Message ETSI TS 103 324
+--! Latest version available at @url https://forge.etsi.org/rep/ITS/CPM_TS103324
CPM-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) cpm (1) version1 (1)
@@ -25,11 +25,11 @@ FROM CAM-PDU-Descriptions {itu-t(0) identified-organization(4) etsi(0) itsDomain
MessageSegmentInfo
FROM CPM-CommonDataTypes-Descriptions {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) commonDataTypes (2) version1 (1)}
--- @brief Import Originating Vehicle Container
+--! @brief Import Originating Vehicle Container
OriginatingVehicleContainer, OriginatingRSUContainer
FROM CPM-OriginatingStationData-Descriptions {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) originatingStationData (3) version1 (1)}
--- @brief Import Sensor Information Container
+--! @brief Import Sensor Information Container
SensorInformationContainer
FROM CPM-SensorInformation-Descriptions {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) sensorInformation (4) version1 (1)}
@@ -39,7 +39,7 @@ FROM CPM-PerceivedObject-Descriptions {itu-t (0) identified-organization (4) ets
FreeSpaceAddendumContainer
FROM CPM-FreeSpaceAddendum-Descriptions {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) freeSpaceAddendum (6) version1 (1)};
--- Information Object Class Definitions
+--! Information Object Class Definitions
CPM-STATIONDATA-ID-AND-TYPE ::= CLASS {
&id CpmStationDataId UNIQUE,
&Type
@@ -77,17 +77,17 @@ PerceptionData CPM-CONTAINER-ID-AND-TYPE ::= {
...
}
--- ID Assignments for Information Object Classes
--- Assignment for Originating Station Container
+--! ID Assignments for Information Object Classes
+--! Assignment for Originating Station Container
originatingStationVehicleContainer CpmStationDataId ::= 1
originatingStationRSUContainer CpmStationDataId ::= 2
--- Assignment for Perception Data Container
+--! Assignment for Perception Data Container
sensorInformationCpmContainer CpmContainerId ::= 1
perceivedObjectCpmContainer CpmContainerId ::= 2
freeSpaceAdddendumCpmContainer CpmContainerId ::= 3
--- Collective Perception Message
+--! Collective Perception Message
/** @brief Collective Perception Message Root
This DF includes DEs for the CPM protocolVersion, the CP message type identifier _messageID_ and
@@ -117,16 +117,16 @@ CollectivePerceptionMessage ::= SEQUENCE {
The sequence of mandatory and optional containers. Other containers may be added in the future.
*/
CpmParameters ::= SEQUENCE {
- /** managementContainer
+ /** @brief managementContainer
The managementContainer comprises basic information about the originating ITS-S, which are
not specific to vehicles or RSUs.
*/
managementContainer CpmManagementContainer,
- /** stationDataContainer
+ /** @brief stationDataContainer
The stationDataContainer comprises ITS-S type specific information about the sending station.
*/
stationDataContainer CpmStationDataContainer {{OriginatingStationData}} OPTIONAL,
- /** perceptionData
+ /** @brief perceptionData
The perceptionData comprises different container types for describing the sensory properties
of the transmitting ITS-S, its detected objects and free space estimates.
*/
@@ -134,7 +134,7 @@ CpmParameters ::= SEQUENCE {
...
}
-/** CPM Management Container
+/** @brief CPM Management Container
The managementContainer comprises basic information about the originating ITS-S, which are not
specific to vehicles or RSUs.
*/
diff --git a/asn/CPM_CommonDataTypes.asn b/asn/CPM_CommonDataTypes.asn
index 57515e6e3d96dc9813608855b1953958cb29be6a..8b87735cda233504a4fad198485781590698f37d 100644
--- a/asn/CPM_CommonDataTypes.asn
+++ b/asn/CPM_CommonDataTypes.asn
@@ -368,10 +368,10 @@ Scaled by 100.
@unit: None
*/
CorrelationRowValue ::= INTEGER {
- full-negative-correlation (-100), -- Full negative correlation
- no-correlation (0), -- If not correlated or unavailable
+ full-negative-correlation (-100), --< Full negative correlation
+ no-correlation (0), --< If not correlated or unavailable
point-one (10),
- full-positive-correlation (100) -- Full positive correlation
+ full-positive-correlation (100) --< Full positive correlation
} (-100..100)
/** @brief Object Class Description
@@ -393,7 +393,6 @@ ObjectClassWithConfidence ::= SEQUENCE {
The class that best describes the detected object. Each class provides optional subclasses.
*/
ObjectClass ::= CHOICE {
-
vehicleSubclass VehicleSubclassType,
personSubclass PersonSubclassType,
animalSubclass AnimalSubclassType,
@@ -415,12 +414,12 @@ Describes the vertical offset from another point. This is specified in close res
to SAE J2735 _NodeOffsetPointXY_.
*/
NodeOffsetPointZ ::= CHOICE {
- node-Z1 Offset-B10, -- node is within 5.11m of last node
- node-Z2 Offset-B11, -- node is within 10.23m of last node
- node-Z3 Offset-B12, -- node is within 20.47m of last node
- node-Z4 Offset-B13, -- node is within 40.96m of last node
- node-Z5 Offset-B14, -- node is within 81.91m of last node
- node-Z6 Offset-B16 -- node is within 327.67m of last node
+ node-Z1 Offset-B10, --< node is within 5.11m of last node
+ node-Z2 Offset-B11, --< node is within 10.23m of last node
+ node-Z3 Offset-B12, --< node is within 20.47m of last node
+ node-Z4 Offset-B13, --< node is within 40.96m of last node
+ node-Z5 Offset-B14, --< node is within 81.91m of last node
+ node-Z6 Offset-B16 --< node is within 327.67m of last node
}
/** @brief Animal Subclass Type
@@ -428,7 +427,7 @@ Describes the subclass of a detected object for class animal.
@unit n/a
*/
AnimalSubclassType ::= INTEGER {
- unknown (0) -- the kind of animal is not known
+ unknown (0) --< the kind of animal is not known
} (0..255)
/** @brief Person Subclass Type
@@ -438,18 +437,18 @@ classification provided in Annex 1 of Regulation EU 168/2013.
@unit n/a
*/
PersonSubclassType ::= INTEGER {
- unknown (0), -- the vru type for the detected object is unknown
- pedestrian (1), -- the detected object is a pedestrian travelling on foot
- personInWheelchair (2), -- the detected object is a person travelling in a wheelchair
- cyclist (3), -- the detected object is one or multiple persons travelling on
- -- non-motorized unicycles, bicycles, tricycles or quadricycle
- personWithStroller (4), -- the detected object is a person travelling on foot pushing or
- -- pulling a stroller potentially carrying by one or
- -- multiple other persons
- personOnSkates (5), -- the detected object is a person travelling on skates, skateboards
- -- or a small electric or foot operated scooter
- personGroup (6) -- the detected object is a group of persons with similar
- -- movement characteristics
+ unknown (0), --< the vru type for the detected object is unknown
+ pedestrian (1), --< the detected object is a pedestrian travelling on foot
+ personInWheelchair (2), --< the detected object is a person travelling in a wheelchair
+ cyclist (3), --< the detected object is one or multiple persons travelling on
+ --< non-motorized unicycles, bicycles, tricycles or quadricycle
+ personWithStroller (4), --< the detected object is a person travelling on foot pushing or
+ --< pulling a stroller potentially carrying by one or
+ --< multiple other persons
+ personOnSkates (5), --< the detected object is a person travelling on skates, skateboards
+ --< or a small electric or foot operated scooter
+ personGroup (6) --< the detected object is a group of persons with similar
+ --< movement characteristics
} (0..255)
/** @brief Vehicle Subclass Type
@@ -457,29 +456,29 @@ Describes the subclass of a detected object for class vehicle.
@unit n/a
*/
VehicleSubclassType ::= INTEGER {
- unknown (0), -- the type of vehicle is unknown
- moped (1), -- the detected object is a light motor vehicle with less than four
- -- wheels as defined in UNECE/TRANS/WP.29/78/Rev.4 class L1, L2
- motorcycle (2), -- the detected object is a light motor vehicle with less than four
- -- wheels as defined in UNECE/TRANS/WP.29/78/Rev.4 class L3, L4, L5, L6, L7
- passengerCar (3), -- the detected object is a small passenger car as defined in
- -- UNECE/TRANS/WP.29/78/Rev.4 class M1
- bus (4), -- the detected object is a large passenger vehicle as defined
- -- in UNECE/TRANS/WP.29/78/Rev.4 class M2, M3
- lightTruck (5), -- the detected object is a light goods vehicle as defined
- -- in UNECE/TRANS/WP.29/78/Rev.4 class N1
- heavyTruck (6), -- the detected object is a heavy goods vehicle as defined
- -- in UNECE/TRANS/WP.29/78/Rev.4 class N2, N3
- trailer (7), -- the detected object is an unpowered vehicle that is intended
- -- to be towed by a powered vehicle as defined in
- -- UNECE/TRANS/WP.29/78/Rev.4 class O
- specialVehicles (8), -- the detected object is a vehicle which has a special purpose
- -- other than the above (e.g. moving road works vehicle)
- tram (9), -- the detected object is a vehicle running on tracks along
- -- public streets
- emergencyVehicle (10), -- the detected object is a vehicle used in an emergency situation
- -- such as an ambulance, police car or fire engine
- agricultural (11) -- the detected object is a vehicle used for agricultural purposes
+ unknown (0), --< the type of vehicle is unknown
+ moped (1), --< the detected object is a light motor vehicle with less than four
+ --< wheels as defined in UNECE/TRANS/WP.29/78/Rev.4 class L1, L2
+ motorcycle (2), --< the detected object is a light motor vehicle with less than four
+ --< wheels as defined in UNECE/TRANS/WP.29/78/Rev.4 class L3, L4, L5, L6, L7
+ passengerCar (3), --< the detected object is a small passenger car as defined in
+ --< UNECE/TRANS/WP.29/78/Rev.4 class M1
+ bus (4), --< the detected object is a large passenger vehicle as defined
+ --< in UNECE/TRANS/WP.29/78/Rev.4 class M2, M3
+ lightTruck (5), --< the detected object is a light goods vehicle as defined
+ --< in UNECE/TRANS/WP.29/78/Rev.4 class N1
+ heavyTruck (6), --< the detected object is a heavy goods vehicle as defined
+ --< in UNECE/TRANS/WP.29/78/Rev.4 class N2, N3
+ trailer (7), --< the detected object is an unpowered vehicle that is intended
+ --< to be towed by a powered vehicle as defined in
+ --< UNECE/TRANS/WP.29/78/Rev.4 class O
+ specialVehicles (8), --< the detected object is a vehicle which has a special purpose
+ --< other than the above (e.g. moving road works vehicle)
+ tram (9), --< the detected object is a vehicle running on tracks along
+ --< public streets
+ emergencyVehicle (10), --< the detected object is a vehicle used in an emergency situation
+ --< such as an ambulance, police car or fire engine
+ agricultural (11) --< the detected object is a vehicle used for agricultural purposes
} (0..255)
/** @brief Other Subclass Type
@@ -496,12 +495,12 @@ Describes the confidence value for the type of a detected object.
@unit Percent
*/
ClassConfidence ::= INTEGER {
- unknown (0), -- in case the confidence value is unknown but the reported
- -- classification is still valid.
+ unknown (0), --< in case the confidence value is unknown but the reported
+ --< classification is still valid.
onePercent (1),
oneHundredPercent (100),
- unavailable (101) -- In case the class confidence value computation is not available
- -- for this object. Indicates that the class assignment is invalid.
+ unavailable (101) --< In case the class confidence value computation is not available
+ --< for this object. Indicates that the class assignment is invalid.
} (0..101)
/** @brief WGS 84 Angle Value
@@ -558,10 +557,10 @@ The required confidence level is defined by the corresponding standards applying
AngleConfidence ::= INTEGER {
zeroPointOneDegree (1),
oneDegree (10),
- outOfRange (126), -- if the accuracy is out of range, i.e. greater than
- -- 12,5 degrees. A corresponding reported angle value shall be
- -- considered invalid and cannot be trusted.
- unavailable (127) -- if the accuracy information is not available
+ outOfRange (126), --< if the accuracy is out of range, i.e. greater than
+ --< 12,5 degrees. A corresponding reported angle value shall be
+ --< considered invalid and cannot be trusted.
+ unavailable (127) --< if the accuracy information is not available
} (1..127)
/** @brief Angular Speed Confidence
@@ -571,15 +570,15 @@ For correlation computation, maximum interval levels shall be assumed.
@ n/a
*/
AngularSpeedConfidence ::= ENUMERATED {
- degSec-000-01 (0), -- if the accuracy is equal to or less than 0,01 degree/second
- degSec-000-05 (1), -- 1 if the accuracy is equal to or less than 0,05 degrees/second
- degSec-000-10 (2), -- if the accuracy is equal to or less than 0,1 degree/second
- degSec-001-00 (3), -- 3 if the accuracy is equal to or less than 1 degree/second
- degSec-005-00 (4), -- if the accuracy is equal to or less than 5 degrees/second
- degSec-010-00 (5), -- if the accuracy is equal to or less than 10 degrees/second
- degSec-100-00 (6), -- if the accuracy is equal to or less than 100 degrees/second
- outOfRange (7), -- if the accuracy is out of range, i.e. greater than 100 degrees/second
- unavailable (8) -- if the accuracy information is unavailable
+ degSec-000-01 (0), --< if the accuracy is equal to or less than 0,01 degree/second
+ degSec-000-05 (1), --< 1 if the accuracy is equal to or less than 0,05 degrees/second
+ degSec-000-10 (2), --< if the accuracy is equal to or less than 0,1 degree/second
+ degSec-001-00 (3), --< 3 if the accuracy is equal to or less than 1 degree/second
+ degSec-005-00 (4), --< if the accuracy is equal to or less than 5 degrees/second
+ degSec-010-00 (5), --< if the accuracy is equal to or less than 10 degrees/second
+ degSec-100-00 (6), --< if the accuracy is equal to or less than 100 degrees/second
+ outOfRange (7), --< if the accuracy is out of range, i.e. greater than 100 degrees/second
+ unavailable (8) --< if the accuracy information is unavailable
}
/** @brief Angular Acceleration Confidence
@@ -589,15 +588,15 @@ For correlation computation, maximum interval levels shall be assumed.
@ n/a
*/
AngularAccelerationConfidence ::= ENUMERATED {
- degSecSquared-000-01 (0), -- if the accuracy is equal to or less than 0,01 degree/second^2
- degSecSquared-000-05 (1), -- 1 if the accuracy is equal to or less than 0,05 degrees/second^2
- degSecSquared-000-10 (2), -- if the accuracy is equal to or less than 0,1 degree/second^2
- degSecSquared-001-00 (3), -- 3 if the accuracy is equal to or less than 1 degree/second^2
- degSecSquared-005-00 (4), -- if the accuracy is equal to or less than 5 degrees/second^2
- degSecSquared-010-00 (5), -- if the accuracy is equal to or less than 10 degrees/second^2
- degSecSquared-100-00 (6), -- if the accuracy is equal to or less than 100 degrees/second^2
- outOfRange (7), -- if the accuracy is out of range, i.e. greater than 100 degrees/second^2
- unavailable (8) -- if the accuracy information is unavailable
+ degSecSquared-000-01 (0), --< if the accuracy is equal to or less than 0,01 degree/second^2
+ degSecSquared-000-05 (1), --< 1 if the accuracy is equal to or less than 0,05 degrees/second^2
+ degSecSquared-000-10 (2), --< if the accuracy is equal to or less than 0,1 degree/second^2
+ degSecSquared-001-00 (3), --< 3 if the accuracy is equal to or less than 1 degree/second^2
+ degSecSquared-005-00 (4), --< if the accuracy is equal to or less than 5 degrees/second^2
+ degSecSquared-010-00 (5), --< if the accuracy is equal to or less than 10 degrees/second^2
+ degSecSquared-100-00 (6), --< if the accuracy is equal to or less than 100 degrees/second^2
+ outOfRange (7), --< if the accuracy is out of range, i.e. greater than 100 degrees/second^2
+ unavailable (8) --< if the accuracy information is unavailable
}
@@ -627,8 +626,8 @@ Absolute accuracy of measurement to a confidence level of 95%.
DistanceConfidence ::= INTEGER {
zeroPointZeroOneMeter (1),
oneMeter (100),
- outOfRange (4094), -- shall be set if the accuracy is out of range
- unavailable (4095) -- shall be set if the accuracy data is unavailable
+ outOfRange (4094), --< shall be set if the accuracy is out of range
+ unavailable (4095) --< shall be set if the accuracy data is unavailable
} (0..4095)
/** @brief Dynamic Status
@@ -638,11 +637,11 @@ position.
@unit n/a
*/
DynamicStatus ::= INTEGER {
- dynamic (0), -- the object is moving
- hasBeenDynamic (1), -- indicates whether an object has been dynamic before, e.g., a car
- -- stopping at a traffic light
- static (2) -- shall be used in case an object is identified to be not moving
- -- throughout any previous observation
+ dynamic (0), --< the object is moving
+ hasBeenDynamic (1), --< indicates whether an object has been dynamic before, e.g., a car
+ --< stopping at a traffic light
+ static (2) --< shall be used in case an object is identified to be not moving
+ --< throughout any previous observation
} (0..2)
/** @brief Hitch Point Offset
@@ -664,8 +663,8 @@ is not overhanging to the front with respect to the trailer reference point.
@unit 0,1 m
*/
FrontOverhang ::= INTEGER {
- noOverhang (0), -- trailer is not overhanging to the front with respect to the
- -- trailer reference point
+ noOverhang (0), --< trailer is not overhanging to the front with respect to the
+ --< trailer reference point
zeroPointOneMeter (1),
oneMeter (10)
} (0..50)
@@ -675,10 +674,10 @@ Confidence indicating that an area is not occupied by a traffic participant or o
@unit n/a
*/
FreeSpaceConfidence ::= INTEGER {
- unknown (0), -- if the free space confidence is unknown for the described area
+ unknown (0), --< if the free space confidence is unknown for the described area
onePercent (1),
oneHundredPercent (100),
- unavailable (101) -- if the confidence could not be computed and does not apply.
+ unavailable (101) --< if the confidence could not be computed and does not apply.
} (0..101)
/** @brief Longitudinal Lane Position Value
@@ -697,8 +696,8 @@ Absolute accuracy of longitudinal lane position measurement to a confidence leve
LongitudinalLanePositionConfidence ::= INTEGER {
zeroPointZeroOneMeter (1),
oneMeter (100),
- outOfRange (101), -- shall be set if the accuracy is out of range
- unavailable (102) -- shall be set if the accuracy data is unavailable
+ outOfRange (101), --< shall be set if the accuracy is out of range
+ unavailable (102) --< shall be set if the accuracy data is unavailable
} (0..102)
/** @brief Object Age
@@ -708,7 +707,7 @@ disseminating station.
*/
ObjectAge ::= INTEGER {
oneMiliSec (1),
- moreThan1Point5Second (1500) -- indicates that the object has been observed for more than 1.5s.
+ moreThan1Point5Second (1500) --< indicates that the object has been observed for more than 1.5s.
} (0..1500)
/** @brief Object Confidence
@@ -718,9 +717,9 @@ on the computation.
@unit n/a
*/
ObjectConfidence ::= INTEGER {
- noConfidence (0), -- No confidence in detected object, e.g. for "ghost"-objects or
- -- if confidence could not be computed
- fullConfidence (15) -- Full confidence in detected object
+ noConfidence (0), --< No confidence in detected object, e.g. for "ghost"-objects or
+ --< if confidence could not be computed
+ fullConfidence (15) --< Full confidence in detected object
} (0..15)
/** @brief Object Dimension Value
@@ -846,10 +845,10 @@ SensorType ::= INTEGER {
nightvision (5),
ultrasonic (6),
pmd (7),
- fusion (8), -- object information provided from sensor data fusion system
+ fusion (8), --< object information provided from sensor data fusion system
inductionloop (9),
sphericalCamera (10),
- itssaggregation (11) -- object information gathered from other received ITS messages
+ itssaggregation (11) --< object information gathered from other received ITS messages
} (0..15)
/** @brief Segment Count
@@ -864,11 +863,11 @@ Value of a speed component.
@unit 0,01 m/s
*/
SpeedValueExtended ::= INTEGER {
- negativeSpeedMaximum (-16383), -- shall be set for values equal to or smaller than -163,83 m/s
+ negativeSpeedMaximum (-16383), --< shall be set for values equal to or smaller than -163,83 m/s
standstill (0),
oneCentimeterPerSec (1),
- speedMaximum (16382), -- shall be set for values equal to or greater than 163,82 m/s
- unavailable (16383) -- shall be set if information is not available
+ speedMaximum (16382), --< shall be set for values equal to or greater than 163,82 m/s
+ unavailable (16383) --< shall be set if information is not available
} (-16383..16383)
/** @brief Acceleration Value
@@ -878,7 +877,7 @@ Value of an acceleration component.
AccelerationValue ::= INTEGER {
pointOneMeterPerSecSquared (1),
minusPointOneMeterPerSecSquared (-1),
- unavailable (161) -- shall be set if information is not available
+ unavailable (161) --< shall be set if information is not available
} (-160 .. 161)
/** @brief Time of Measurement
diff --git a/asn/SensorInformation.asn b/asn/SensorInformation.asn
index 11e5f9d8a6af58e5dca760439b0b7e00c0600815..81c5a387036f8b476fade7aca30bff6e1c234668 100644
--- a/asn/SensorInformation.asn
+++ b/asn/SensorInformation.asn
@@ -100,7 +100,7 @@ VehicleSensor ::= SEQUENCE {
...
}
--- @brief Vehicle Sensor Property List
+--! @brief Vehicle Sensor Property List
VehicleSensorPropertyList ::= SEQUENCE SIZE(1..10) OF VehicleSensorProperties
/** @brief Vehicle Sensor Properties
diff --git a/docs/CAM-PDU-Descriptions.md b/docs/CAM-PDU-Descriptions.md
new file mode 100644
index 0000000000000000000000000000000000000000..c72d3d04221fc368c31c0e621a1b2948b0cfd27e
--- /dev/null
+++ b/docs/CAM-PDU-Descriptions.md
@@ -0,0 +1,258 @@
+# 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:
+
+
+```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**](#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,
+ ...
+}
+```
+
+
+
+```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
+}
+```
+
+
+
+```asn1
+DangerousGoodsContainer ::= SEQUENCE {
+ dangerousGoodsBasic DangerousGoodsBasic
+ }
+```
+
+
+
+```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/CPM-CommonDataTypes-Descriptions.md b/docs/CPM-CommonDataTypes-Descriptions.md
new file mode 100644
index 0000000000000000000000000000000000000000..794f15ea1043096736a7aa616aadee3c8872d446
--- /dev/null
+++ b/docs/CPM-CommonDataTypes-Descriptions.md
@@ -0,0 +1,1582 @@
+# ASN.1 module CPM-CommonDataTypes-Descriptions
+ OID: _{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) commonDataTypes (2) 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)}*
+ Include ETSI TS 102 894-2 v1.3.1
+ Include references from https://forge.etsi.org/rep/ITS/asn1/cdd_ts102894_2/blob/v1.3.1/ITS-Container.asn
+
+ * **[DSRC](DSRC.md)** *{iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2)}*
+ Include ISO 19091
+ Include references from https://standards.iso.org/iso/ts/19091/ed-2/en/ISO-TS-19091-addgrp-C-2018.asn
+
+## Data Elements:
+### Area Circular
+
+Describes a circular area. The circle is centred about the reference point of the ITS-S or about
+the nodeCenterPoint (if provided). The DF shall include the following information:
+
+
+Fields:
+* nodeCenterPoint [**OffsetPoint**](#OffsetPoint) OPTIONAL
+
+ Optional offset point about which the circle is centred with respect to the reference
+ position of the ITS-S.
+
+* radius [**Radius**](#Radius)
+
+ The radius of the circular area
+
+```asn1
+AreaCircular ::= SEQUENCE {
+ nodeCenterPoint OffsetPoint OPTIONAL,
+ radius Radius
+}
+```
+
+### Area Ellipse
+
+Describes an elliptical area. The ellipse is centred about the reference point of the ITS-S or
+about the nodeCenterPoint (if provided).
+
+
+Fields:
+* nodeCenterPoint [**OffsetPoint**](#OffsetPoint) OPTIONAL
+
+ Optional offset point about which the ellipse is centred with respect to the reference
+ position of the ITS-S.
+
+* semiMinorRangeLength [**SemiRangeLength**](#SemiRangeLength)
+
+ Major radius of the ellipse.
+
+* semiMajorRangeLength [**SemiRangeLength**](#SemiRangeLength)
+
+ Minor radius of the ellipse.
+
+* semiMajorRangeOrientation [**WGS84AngleValue**](#WGS84AngleValue)
+
+ Orientation of the semiMajorRangeLength of the ellipse in the WGS84 coordinate system.
+
+* semiHeight [**SemiRangeLength**](#SemiRangeLength) OPTIONAL
+```asn1
+AreaEllipse ::= SEQUENCE {
+ nodeCenterPoint OffsetPoint OPTIONAL,
+ semiMinorRangeLength SemiRangeLength,
+ semiMajorRangeLength SemiRangeLength,
+ semiMajorRangeOrientation WGS84AngleValue,
+ semiHeight SemiRangeLength OPTIONAL
+}
+```
+
+### Area Rectangle
+
+Describes a rectangular area. The rectangle is centred about the reference point of the ITS-S or
+about the nodeCenterPoint (if provided).
+
+
+Fields:
+* nodeCenterPoint [**OffsetPoint**](#OffsetPoint) OPTIONAL
+
+ Optional offset point about which the rectangle is centred with respect to the reference
+ position of the ITS-S.
+
+* semiMajorRangeLength [**SemiRangeLength**](#SemiRangeLength)
+
+ Half length of the rectangle.
+
+* semiMinorRangeLength [**SemiRangeLength**](#SemiRangeLength)
+
+ Half width of the rectangle.
+
+* semiMajorRangeOrientation [**WGS84AngleValue**](#WGS84AngleValue)
+
+ Orientation of the semiMajorRangeLength of the rectangle in the WGS84 coordinate system.
+
+* semiHeight [**SemiRangeLength**](#SemiRangeLength) OPTIONAL
+```asn1
+AreaRectangle ::= SEQUENCE {
+ nodeCenterPoint OffsetPoint OPTIONAL,
+ semiMajorRangeLength SemiRangeLength,
+ semiMinorRangeLength SemiRangeLength,
+ semiMajorRangeOrientation WGS84AngleValue,
+ semiHeight SemiRangeLength OPTIONAL
+}
+```
+
+### Area Polygon
+
+Describes a polygonal area constructed by connecting the offset points in the sequence
+provided. The last point shall be connected with the first point to close the polygon.
+
+
+Fields:
+* polyPointList [**PolyPointList**](#PolyPointList)
+```asn1
+AreaPolygon ::= SEQUENCE {
+ polyPointList PolyPointList
+}
+```
+
+### Poly Point List
+
+Describes a list of points representing a polygon. The last point shall be connected with the
+first point to close the polygon.
+
+
+```asn1
+PolyPointList ::= SEQUENCE (SIZE(3..16, ...)) OF OffsetPoint
+```
+
+### Area Radial
+
+Describes a radial area scanned by a stationary sensor. The triangular or cone-shaped area is
+constructed by sweeping the provided range about the reference point of the ITS-S or about the
+point described by the sensor offset point (if provided) with respect to the reference point
+between a horizontal start and a horizontal end angle in positive angular direction of the WGS84
+coordinate system. A vertical opening angle may be provided in a Cartesian coordinate system with
+the x-axis located in the North-East plane of the WGS84 coordinate system. The sensor height may
+be provided to reflect characteristics of sensors mounted at an altitude (e.g. sensors mounted
+above intersections).
+
+
+Fields:
+* range [**Range**](#Range)
+
+ The radial range of the sensor from the reference point or sensor point offset.
+
+* stationaryHorizontalOpeningAngleStart [**WGS84AngleValue**](#WGS84AngleValue)
+
+ The orientation indicating the beginning of the stationary sensor’s horizontal opening angle
+ in positive angular direction with respect to the WGS84 coordinate system.
+
+* stationaryHorizontalOpeningAngleEnd [**WGS84AngleValue**](#WGS84AngleValue)
+
+ The orientation indicating the end of the stationary sensor’s horizontal opening angle in
+ positive angular direction with respect to the WGS84 coordinate system.
+
+* verticalOpeningAngleStart [**CartesianAngleValue**](#CartesianAngleValue) OPTIONAL
+
+ The orientation indicating the beginning of the stationary sensor’s vertical opening angle in
+ positive angular direction of a Cartesian coordinate system with its x-axis located in the
+ north-east plane of the WGS84 coordinate system.
+
+* verticalOpeningAngleEnd [**CartesianAngleValue**](#CartesianAngleValue) OPTIONAL
+
+ The orientation indicating the end of the stationary sensor’s vertical opening angle in
+ positive angular direction of a Cartesian coordinate system with its x-axis located in the
+ north-east plane of the WGS84 coordinate system.
+
+* sensorPositionOffset [**OffsetPoint**](#OffsetPoint) OPTIONAL
+
+ The offset of the mounting poinf of this sensor from the station's @see ReferencePosition.
+
+* sensorHeight [**SensorHeight**](#SensorHeight) OPTIONAL
+
+ The height of the sensor mounting point.
+
+```asn1
+AreaRadial ::= SEQUENCE {
+ range Range,
+ stationaryHorizontalOpeningAngleStart WGS84AngleValue,
+ stationaryHorizontalOpeningAngleEnd WGS84AngleValue,
+ verticalOpeningAngleStart CartesianAngleValue OPTIONAL,
+ verticalOpeningAngleEnd CartesianAngleValue OPTIONAL,
+ sensorPositionOffset OffsetPoint OPTIONAL,
+ sensorHeight SensorHeight OPTIONAL,
+ ...
+}
+```
+
+### Object Distance With Confidence
+
+A general Data Frame to describe a distance component along with a confidence with a
+predefined confidence level of 95% for the component.
+
+
+Fields:
+* value [**DistanceValue**](#DistanceValue)
+
+ The distance value which can be estimated as the mean of the current distribution.
+
+* confidence [**DistanceConfidence**](#DistanceConfidence)
+
+ The distance accuracy associated to the provided value at a predefined confidence level
+ of 95% for the component.
+
+```asn1
+ObjectDistance ::= SEQUENCE {
+ value DistanceValue,
+ confidence DistanceConfidence
+}
+```
+
+### Object Dimension
+
+A general Data Frame to describe a dimension of an object along with a confidence with a
+predefined confidence level of 95% for the component.
+
+
+Fields:
+* value [**ObjectDimensionValue**](#ObjectDimensionValue)
+
+ The object dimension value which can be estimated as the mean of the current distribution.
+
+* confidence [**ObjectDimensionConfidence**](#ObjectDimensionConfidence)
+
+ The dimension accuracy associated to the provided value at a predefined confidence level
+ of 95% for the component.
+
+```asn1
+ObjectDimension ::= SEQUENCE {
+ value ObjectDimensionValue,
+ confidence ObjectDimensionConfidence
+}
+```
+
+### Cartesian Angle
+
+A general Data Frame to describe an angle component along with a confidence with a predefined
+confidence level of 95% for the component in a Cartesian coordinate system.
+
+
+Fields:
+* value [**CartesianAngleValue**](#CartesianAngleValue)
+
+ The angle value which can be estimated as the mean of the current distribution.
+
+* confidence [**AngleConfidence**](#AngleConfidence)
+
+ The accuracy associated to the provided value at a predefined confidence level
+ of 95% for the component.
+
+```asn1
+CartesianAngle ::= SEQUENCE {
+ value CartesianAngleValue,
+ confidence AngleConfidence
+}
+```
+
+### CartesianAngularSpeed
+
+A general Data Frame to describe an angular speed component along with a confidence with a predefined
+confidence level of 95% for the component in a Cartesian coordinate system.
+
+
+Fields:
+* value [**CartesianAngularSpeedValue**](#CartesianAngularSpeedValue)
+
+ The angular speed (rate) value which can be estimated as the mean of the current distribution.
+
+* confidence [**AngularSpeedConfidence**](#AngularSpeedConfidence)
+
+ The accuracy associated to the provided value at a predefined confidence level
+ of 95% for the component.
+
+```asn1
+CartesianAngularSpeed ::= SEQUENCE {
+ value CartesianAngularSpeedValue,
+ confidence AngularSpeedConfidence
+}
+```
+
+### CartesianAngularAcceleration
+
+A general Data Frame to describe an angular acceleration component along with a confidence with a predefined
+confidence level of 95% for the component in a Cartesian coordinate system.
+
+
+Fields:
+* value [**CartesianAngularAccelerationValue**](#CartesianAngularAccelerationValue)
+
+ The angular acceleration value which can be estimated as the mean of the current distribution.
+
+* confidence [**AngularAccelerationConfidence**](#AngularAccelerationConfidence)
+
+ The accuracy associated to the provided value at a predefined confidence level
+ of 95% for the component.
+
+```asn1
+CartesianAngularAcceleration ::= SEQUENCE {
+ value CartesianAngularAccelerationValue,
+ confidence AngularAccelerationConfidence
+}
+```
+
+### WGS 84 Angle
+
+A general Data Frame to describe an angular component along with a confidence with a predefined
+confidence level of 95% for the component in the WGS84 coordinate system.
+
+
+Fields:
+* value [**WGS84AngleValue**](#WGS84AngleValue)
+
+ The angle value which can be estimated as the mean of the current distribution.
+
+* confidence [**AngleConfidence**](#AngleConfidence)
+
+ The accuracy associated to the provided value at a predefined confidence level
+ of 95% for the component.
+
+```asn1
+WGS84Angle ::= SEQUENCE {
+ value WGS84AngleValue,
+ confidence AngleConfidence
+}
+```
+
+### Speed Extended
+
+A general Data Frame to describe a speed component along with a confidence with a predefined
+confidence level of 95% for the component.
+
+
+Fields:
+* value [**SpeedValueExtended**](#SpeedValueExtended)
+
+ The speed value which can be estimated as the mean of the current distribution.
+
+* confidence [**SpeedConfidence**](ITS-Container.md#SpeedConfidence)
+
+ The accuracy associated to the provided value at a predefined confidence level
+ of 95% for the component.
+
+```asn1
+SpeedExtended ::= SEQUENCE {
+ value SpeedValueExtended,
+ confidence SpeedConfidence
+}
+```
+
+### Acceleration
+
+A general Data Frame to describe an acceleration component along with a confidence with a predefined
+confidence level of 95% for the component.
+
+
+Fields:
+* value [**AccelerationValue**](#AccelerationValue)
+
+ The acceleration value which can be estimated as the mean of the current distribution.
+
+* confidence [**AccelerationConfidence**](ITS-Container.md#AccelerationConfidence)
+
+ The accuracy associated to the provided value at a predefined confidence level
+ of 95% for the component.
+
+```asn1
+Acceleration ::= SEQUENCE {
+ value AccelerationValue,
+ confidence AccelerationConfidence
+}
+```
+
+### Sensor ID List
+
+List of sensor IDs.
+
+
+```asn1
+SensorIdList ::= SEQUENCE SIZE(1..128, ...) OF Identifier
+```
+
+### Trailer Data Container
+
+List of information about attached trailers.
+
+
+```asn1
+TrailerDataContainer ::= SEQUENCE SIZE(1..2) OF TrailerData
+```
+
+### Trailer Data
+
+Provides detailed information about the dimensions and orientation of an attached trailer.
+
+
+Fields:
+* refPointId [**RefPointId**](#RefPointId)
+* hitchPointOffset [**HitchPointOffset**](#HitchPointOffset)
+* frontOverhang [**FrontOverhang**](#FrontOverhang)
+* rearOverhang [**RearOverhang**](#RearOverhang)
+* trailerWidth [**VehicleWidth**](ITS-Container.md#VehicleWidth) OPTIONAL
+* hitchAngle [**CartesianAngle**](#CartesianAngle) OPTIONAL
+```asn1
+TrailerData ::= SEQUENCE {
+ refPointId RefPointId,
+ hitchPointOffset HitchPointOffset,
+ frontOverhang FrontOverhang,
+ rearOverhang RearOverhang,
+ trailerWidth VehicleWidth OPTIONAL,
+ hitchAngle CartesianAngle OPTIONAL,
+ ...
+}
+```
+
+### Matched Position
+
+Indicates the position of the object mapped on the intersection topology description transmitted
+in MAP messages.
+
+
+Fields:
+* laneID [**LaneID**](DSRC.md#LaneID) OPTIONAL
+
+ Conveys an assigned index that is unique within the intersection with InterSectionReferenceId
+ of the OriginatingRSUContainer. It shall be presented as specified in
+ Clause 7.88 of SAE J2735.
+
+* longitudinalLanePosition [**LongitudinalLanePosition**](#LongitudinalLanePosition) OPTIONAL
+
+ Indicates the longitudinal offset of the map-matched position of the object along the lane.
+
+```asn1
+MatchedPosition ::= SEQUENCE {
+ laneID LaneID OPTIONAL,
+ longitudinalLanePosition LongitudinalLanePosition OPTIONAL,
+ ...
+}
+```
+
+### Longitudinal Lane Position
+
+Estimated position along the longitudinal length of a particular lane. A lane is provided by
+a corresponding MAP message.
+
+
+Fields:
+* longitudinalLanePositionValue [**LongitudinalLanePositionValue**](#LongitudinalLanePositionValue)
+
+ The mean value of the longitudinal position within a particular length.
+
+* longitudinalLanePositionConfidence [**LongitudinalLanePositionConfidence**](#LongitudinalLanePositionConfidence)
+
+ The confidence associated to the provided value.
+
+```asn1
+LongitudinalLanePosition ::= SEQUENCE {
+ longitudinalLanePositionValue LongitudinalLanePositionValue,
+ longitudinalLanePositionConfidence LongitudinalLanePositionConfidence
+}
+```
+
+### Message Segment Information
+
+Information about segmented CPM and the number of generated segments.
+
+
+Fields:
+* totalMsgSegments [**SegmentCount**](#SegmentCount)
+
+ The total number of messages required on the transmitter side to distribute the information
+ to several messages.
+
+* thisSegmentNum [**SegmentCount**](#SegmentCount)
+
+ Indicates the number of the received message out of the total number of messages
+ used to realize segmentation.
+
+```asn1
+MessageSegmentInfo ::= SEQUENCE {
+ totalMsgSegments SegmentCount,
+ thisSegmentNum SegmentCount
+}
+```
+
+### Lower Triangular Positive Semi-Definite Matrix
+
+A general data frame to express the elements of a lower triangular positive semi-definite matrix, not
+including the main diagonal elements of the matrix.
+Given a matrix "A" of size n x n, the number of columns to be included in the lower triangular matrix is k=n-1.
+
+
+```asn1
+LowerTriangularPositiveSemidefiniteMatrix ::= SEQUENCE SIZE (1..17) OF CorrelationColumn
+```
+
+### Correlation Column
+
+The column of the lower triangular positive semi-definite matrix consists of correlation row values.
+Given a matrix "A" of size n x n, the number of columns to be included in the lower triangular matrix is k=n-1.
+Each column "i" of the lower triangular then contains k-(i-1) values, where "i" refers to the column number count
+starting at 1 from the left.
+
+
+```asn1
+CorrelationColumn ::= SEQUENCE SIZE (1..17) OF CorrelationRowValue
+```
+
+### Correlation Row Value
+
+The Bravais-Pearson correlation value for each cell of the lower triangular correlation matrix.
+Scaled by 100.
+@unit: None
+
+
+Values:
+* **full-negative-correlation** (-100)
+Full negative correlation
+* **no-correlation** (0)
+If not correlated or unavailable
+* **point-one** (10)
+* **full-positive-correlation** (100)
+Full positive correlation
+```asn1
+CorrelationRowValue ::= INTEGER {
+ full-negative-correlation (-100),
+ no-correlation (0),
+ point-one (10),
+ full-positive-correlation (100)
+} (-100..100)
+```
+
+### Object Class Description
+
+A list of object classes.
+
+
+```asn1
+ObjectClassDescription ::= SEQUENCE (SIZE(1..8)) OF ObjectClassWithConfidence
+```
+
+### Object Class with Confidence
+
+Describes the classification of a detected object. The object can be classified into one of four
+categories: vehicle, person, animal and other. The classification is provided with a
+confidence indication.
+
+
+Fields:
+* objectClass [**ObjectClass**](#ObjectClass)
+* confidence [**ClassConfidence**](#ClassConfidence)
+```asn1
+ObjectClassWithConfidence ::= SEQUENCE {
+ objectClass ObjectClass,
+ confidence ClassConfidence
+}
+```
+
+### Object Class
+
+The class that best describes the detected object. Each class provides optional subclasses.
+
+
+Fields:
+* vehicleSubclass [**VehicleSubclassType**](#VehicleSubclassType)
+* personSubclass [**PersonSubclassType**](#PersonSubclassType)
+* animalSubclass [**AnimalSubclassType**](#AnimalSubclassType)
+* otherSubclass [**OtherSubclassType**](#OtherSubclassType)
+```asn1
+ObjectClass ::= CHOICE {
+ vehicleSubclass VehicleSubclassType,
+ personSubclass PersonSubclassType,
+ animalSubclass AnimalSubclassType,
+ otherSubclass OtherSubclassType,
+ ...
+}
+```
+
+### Offset Point
+
+Describes an offset position in a two- or three-dimensional plane as imported from
+CEN ISO/TS 19091. Excludes the node-LatLon DF and regional DF defined therein.
+
+
+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
+}
+```
+
+### Node Offset Point in Z-direction
+
+Describes the vertical offset from another point. This is specified in close resemblance
+to SAE J2735 _NodeOffsetPointXY_.
+
+
+Fields:
+* node-Z1 [**Offset-B10**](DSRC.md#Offset-B10)
+node is within 5.11m of last node
+* node-Z2 [**Offset-B11**](DSRC.md#Offset-B11)
+node is within 10.23m of last node
+* node-Z3 [**Offset-B12**](DSRC.md#Offset-B12)
+node is within 20.47m of last node
+* node-Z4 [**Offset-B13**](DSRC.md#Offset-B13)
+node is within 40.96m of last node
+* node-Z5 [**Offset-B14**](DSRC.md#Offset-B14)
+node is within 81.91m of last node
+* node-Z6 [**Offset-B16**](DSRC.md#Offset-B16)
+node is within 327.67m of last node
+```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
+}
+```
+
+### Animal Subclass Type
+
+Describes the subclass of a detected object for class animal.
+
+
+ **Unit**: _n/a_
+
+Values:
+* **unknown** (0)
+the kind of animal is not known
+```asn1
+AnimalSubclassType ::= INTEGER {
+ unknown (0)
+} (0..255)
+```
+
+### Person Subclass Type
+
+Describes the subclass of a detected object for class persons. Persons are a subset of the
+vulnerable road users as defined in Section 4.2 of ETSI TR 103 300-2 as well as in the
+classification provided in Annex 1 of Regulation EU 168/2013.
+
+
+ **Unit**: _n/a_
+
+Values:
+* **unknown** (0)
+the vru type for the detected object is unknown
+* **pedestrian** (1)
+the detected object is a pedestrian travelling on foot
+* **personInWheelchair** (2)
+the detected object is a person travelling in a wheelchair
+* **cyclist** (3)
+the detected object is one or multiple persons travelling on
+non-motorized unicycles, bicycles, tricycles or quadricycle
+* **personWithStroller** (4)
+the detected object is a person travelling on foot pushing or
+pulling a stroller potentially carrying by one or
+multiple other persons
+* **personOnSkates** (5)
+the detected object is a person travelling on skates, skateboards
+or a small electric or foot operated scooter
+* **personGroup** (6)
+the detected object is a group of persons with similar
+movement characteristics
+```asn1
+PersonSubclassType ::= INTEGER {
+ unknown (0),
+ pedestrian (1),
+ personInWheelchair (2),
+ cyclist (3),
+ personWithStroller (4),
+ personOnSkates (5),
+ personGroup (6)
+} (0..255)
+```
+
+### Vehicle Subclass Type
+
+Describes the subclass of a detected object for class vehicle.
+
+
+ **Unit**: _n/a_
+
+Values:
+* **unknown** (0)
+the type of vehicle is unknown
+* **moped** (1)
+the detected object is a light motor vehicle with less than four
+wheels as defined in UNECE/TRANS/WP.29/78/Rev.4 class L1, L2
+* **motorcycle** (2)
+the detected object is a light motor vehicle with less than four
+wheels as defined in UNECE/TRANS/WP.29/78/Rev.4 class L3, L4, L5, L6, L7
+* **passengerCar** (3)
+the detected object is a small passenger car as defined in
+UNECE/TRANS/WP.29/78/Rev.4 class M1
+* **bus** (4)
+the detected object is a large passenger vehicle as defined
+in UNECE/TRANS/WP.29/78/Rev.4 class M2, M3
+* **lightTruck** (5)
+the detected object is a light goods vehicle as defined
+in UNECE/TRANS/WP.29/78/Rev.4 class N1
+* **heavyTruck** (6)
+the detected object is a heavy goods vehicle as defined
+in UNECE/TRANS/WP.29/78/Rev.4 class N2, N3
+* **trailer** (7)
+the detected object is an unpowered vehicle that is intended
+to be towed by a powered vehicle as defined in
+UNECE/TRANS/WP.29/78/Rev.4 class O
+* **specialVehicles** (8)
+the detected object is a vehicle which has a special purpose
+other than the above (e.g. moving road works vehicle)
+* **tram** (9)
+the detected object is a vehicle running on tracks along
+public streets
+* **emergencyVehicle** (10)
+the detected object is a vehicle used in an emergency situation
+such as an ambulance, police car or fire engine
+* **agricultural** (11)
+the detected object is a vehicle used for agricultural purposes
+```asn1
+VehicleSubclassType ::= INTEGER {
+ unknown (0),
+ moped (1),
+ motorcycle (2),
+ passengerCar (3),
+ bus (4),
+ lightTruck (5),
+ heavyTruck (6),
+ trailer (7),
+ specialVehicles (8),
+ tram (9),
+ emergencyVehicle (10),
+ agricultural (11)
+} (0..255)
+```
+
+### Other Subclass Type
+
+Describes the subclass of a detected object for class other.
+
+
+ **Unit**: _n/a_
+
+Values:
+* **unknown** (0)
+* **roadSideUnit** (1)
+```asn1
+OtherSubclassType ::= INTEGER {
+ unknown (0),
+ roadSideUnit (1)
+} (0..255)
+```
+
+### Class Confidence
+
+Describes the confidence value for the type of a detected object.
+
+
+ **Unit**: _Percent_
+
+Values:
+* **unknown** (0)
+in case the confidence value is unknown but the reported
+classification is still valid.
+* **onePercent** (1)
+* **oneHundredPercent** (100)
+* **unavailable** (101)
+In case the class confidence value computation is not available
+for this object. Indicates that the class assignment is invalid.
+```asn1
+ClassConfidence ::= INTEGER {
+ unknown (0),
+ onePercent (1),
+ oneHundredPercent (100),
+ unavailable (101)
+} (0..101)
+```
+
+### WGS 84 Angle Value
+
+An angle value in degrees described in the WGS84 reference system with respect to the WGS84 north.
+
+
+ **Unit**: _0,1 degrees_
+
+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)
+```
+
+### Cartesian Angle Value
+
+An angle value described in a local Cartesian coordinate system, counted positive in
+a right-hand local coordinate system from the abscissa.
+
+
+ **Unit**: _0,1 degrees_
+
+Values:
+* **zeroPointOneDegree** (1)
+* **oneDegree** (10)
+* **unavailable** (3601)
+```asn1
+CartesianAngleValue ::= INTEGER {
+ zeroPointOneDegree (1),
+ oneDegree (10),
+ unavailable (3601)
+} (0..3601)
+```
+
+### Cartesian Angular Speed Value
+
+An angular speed value described in a local Cartesian coordinate system, counted positive in
+a right-hand local coordinate system from the abscissa.
+
+
+ **Unit**: _0,01 degrees/s_
+
+Values:
+* **noSpeed** (0)
+* **oneDegreePerSecondAntiClockwise** (100)
+* **oneDegreePerSecondClockwise** (-100)
+```asn1
+CartesianAngularSpeedValue ::= INTEGER {
+ noSpeed (0),
+ oneDegreePerSecondAntiClockwise (100),
+ oneDegreePerSecondClockwise (-100)
+} (-32766..32767)
+```
+
+### Cartesian Angular Acceleration Value
+
+An angular acceleration value described in a local Cartesian coordinate system, counted positive in
+a right-hand local coordinate system from the abscissa.
+
+
+ **Unit**: _0,01 degrees/s^2 (degrees per second squared)_
+
+Values:
+* **noAcceleration** (0)
+* **oneDegreePerSecondSquaredAntiClockwise** (100)
+* **oneDegreePerSecondSquaredClockwise** (-100)
+```asn1
+CartesianAngularAccelerationValue ::= INTEGER {
+ noAcceleration (0),
+ oneDegreePerSecondSquaredAntiClockwise (100),
+ oneDegreePerSecondSquaredClockwise (-100)
+} (-32766..32767)
+```
+
+### Angle Confidence
+
+The absolute accuracy of a reported angle value for a predefined confidence level (e.g. 95 %).
+The required confidence level is defined by the corresponding standards applying this DE.
+
+
+ **Unit**: _0,1 degrees_
+
+Values:
+* **zeroPointOneDegree** (1)
+* **oneDegree** (10)
+* **outOfRange** (126)
+if the accuracy is out of range, i.e. greater than
+12,5 degrees. A corresponding reported angle value shall be
+considered invalid and cannot be trusted.
+* **unavailable** (127)
+if the accuracy information is not available
+```asn1
+AngleConfidence ::= INTEGER {
+ zeroPointOneDegree (1),
+ oneDegree (10),
+ outOfRange (126),
+ unavailable (127)
+} (1..127)
+```
+
+### Angular Speed Confidence
+
+The absolute accuracy of a reported angular speed value for a predefined confidence level (e.g. 95 %).
+The required confidence level is defined by the corresponding standards applying this DE.
+For correlation computation, maximum interval levels shall be assumed.
+@ n/a
+
+
+Values:
+* **degSec-000-01** (0)
+if the accuracy is equal to or less than 0,01 degree/second
+* **degSec-000-05** (1)
+1 if the accuracy is equal to or less than 0,05 degrees/second
+* **degSec-000-10** (2)
+if the accuracy is equal to or less than 0,1 degree/second
+* **degSec-001-00** (3)
+3 if the accuracy is equal to or less than 1 degree/second
+* **degSec-005-00** (4)
+if the accuracy is equal to or less than 5 degrees/second
+* **degSec-010-00** (5)
+if the accuracy is equal to or less than 10 degrees/second
+* **degSec-100-00** (6)
+if the accuracy is equal to or less than 100 degrees/second
+* **outOfRange** (7)
+if the accuracy is out of range, i.e. greater than 100 degrees/second
+* **unavailable** (8)
+if the accuracy information is unavailable
+```asn1
+AngularSpeedConfidence ::= 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)
+}
+```
+
+### Angular Acceleration Confidence
+
+The absolute accuracy of a reported angular acceleration value for a predefined confidence level (e.g. 95 %).
+The required confidence level is defined by the corresponding standards applying this DE.
+For correlation computation, maximum interval levels shall be assumed.
+@ n/a
+
+
+Values:
+* **degSecSquared-000-01** (0)
+if the accuracy is equal to or less than 0,01 degree/second^2
+* **degSecSquared-000-05** (1)
+1 if the accuracy is equal to or less than 0,05 degrees/second^2
+* **degSecSquared-000-10** (2)
+if the accuracy is equal to or less than 0,1 degree/second^2
+* **degSecSquared-001-00** (3)
+3 if the accuracy is equal to or less than 1 degree/second^2
+* **degSecSquared-005-00** (4)
+if the accuracy is equal to or less than 5 degrees/second^2
+* **degSecSquared-010-00** (5)
+if the accuracy is equal to or less than 10 degrees/second^2
+* **degSecSquared-100-00** (6)
+if the accuracy is equal to or less than 100 degrees/second^2
+* **outOfRange** (7)
+if the accuracy is out of range, i.e. greater than 100 degrees/second^2
+* **unavailable** (8)
+if the accuracy information is unavailable
+```asn1
+AngularAccelerationConfidence ::= ENUMERATED {
+ degSecSquared-000-01 (0),
+ degSecSquared-000-05 (1),
+ degSecSquared-000-10 (2),
+ degSecSquared-001-00 (3),
+ degSecSquared-005-00 (4),
+ degSecSquared-010-00 (5),
+ degSecSquared-100-00 (6),
+ outOfRange (7),
+ unavailable (8)
+}
+```
+
+### Semi Range Length
+
+The length of an axis of an ellipsoid or rectangle, used to describe the extension in a
+particular direction.
+
+
+ **Unit**: _0,1 m_
+
+Values:
+* **zeroPointOneMeter** (1)
+* **oneMeter** (10)
+```asn1
+SemiRangeLength ::= INTEGER {
+ zeroPointOneMeter (1),
+ oneMeter (10)
+} (0..10000)
+```
+
+### Distance Value
+
+Distance from one point to another.
+
+
+ **Unit**: _0,01 m_
+
+Values:
+* **zeroPointZeroOneMeter** (1)
+* **oneMeter** (100)
+```asn1
+DistanceValue ::= INTEGER {
+ zeroPointZeroOneMeter (1),
+ oneMeter (100)
+} (-132768..132767)
+```
+
+### Distance Confidence
+
+Absolute accuracy of measurement to a confidence level of 95%.
+
+
+ **Unit**: _0,01 m_
+
+Values:
+* **zeroPointZeroOneMeter** (1)
+* **oneMeter** (100)
+* **outOfRange** (4094)
+shall be set if the accuracy is out of range
+* **unavailable** (4095)
+shall be set if the accuracy data is unavailable
+```asn1
+DistanceConfidence ::= INTEGER {
+ zeroPointZeroOneMeter (1),
+ oneMeter (100),
+ outOfRange (4094),
+ unavailable (4095)
+} (0..4095)
+```
+
+### Dynamic Status
+
+Indication whether the detected object is classified as a dynamic (i.e. moving) object.
+This value indicates whether an object has the general capability to move, i.e. change its
+position.
+
+
+ **Unit**: _n/a_
+
+Values:
+* **dynamic** (0)
+the object is moving
+* **hasBeenDynamic** (1)
+indicates whether an object has been dynamic before, e.g., a car
+stopping at a traffic light
+* **static** (2)
+shall be used in case an object is identified to be not moving
+throughout any previous observation
+```asn1
+DynamicStatus ::= INTEGER {
+ dynamic (0),
+ hasBeenDynamic (1),
+ static (2)
+} (0..2)
+```
+
+### Hitch Point Offset
+
+Position of the hitch point in negative x-direction (according to ISO 8855) from the
+vehicle Reference Point.
+
+
+ **Unit**: _0,1 m_
+
+Values:
+* **zeroPointOneMeter** (1)
+* **oneMeter** (10)
+* **outOfRange** (254)
+* **unavailable** (255)
+```asn1
+HitchPointOffset ::= INTEGER {
+ zeroPointOneMeter (1),
+ oneMeter (10),
+ outOfRange (254),
+ unavailable (255)
+} (0..255)
+```
+
+### Front Overhang
+
+Length of the trailer overhang in the positive x direction (according to ISO 8855) from the
+trailer Reference Point indicated by the refPointID. The value defaults to 0 in case the trailer
+is not overhanging to the front with respect to the trailer reference point.
+
+
+ **Unit**: _0,1 m_
+
+Values:
+* **noOverhang** (0)
+trailer is not overhanging to the front with respect to the
+trailer reference point
+* **zeroPointOneMeter** (1)
+* **oneMeter** (10)
+```asn1
+FrontOverhang ::= INTEGER {
+ noOverhang (0),
+ zeroPointOneMeter (1),
+ oneMeter (10)
+} (0..50)
+```
+
+### Free Space Confidence
+
+Confidence indicating that an area is not occupied by a traffic participant or obstacle.
+
+
+ **Unit**: _n/a_
+
+Values:
+* **unknown** (0)
+if the free space confidence is unknown for the described area
+* **onePercent** (1)
+* **oneHundredPercent** (100)
+* **unavailable** (101)
+if the confidence could not be computed and does not apply.
+```asn1
+FreeSpaceConfidence ::= INTEGER {
+ unknown (0),
+ onePercent (1),
+ oneHundredPercent (100),
+ unavailable (101)
+} (0..101)
+```
+
+### Longitudinal Lane Position Value
+
+Indicates the longitudinal offset of the map-matched position of a particular object along the
+matched lane, beginning from the lane’s starting point as defined in CEN ISO/TS 19091
+
+
+ **Unit**: _0,1 m_
+
+Values:
+* **zeroPointOneMeter** (1)
+```asn1
+LongitudinalLanePositionValue ::= INTEGER {
+ zeroPointOneMeter (1)
+} (0..32767)
+```
+
+### Longitudinal Lane Position Confidence
+
+Absolute accuracy of longitudinal lane position measurement to a confidence level of 95%.
+
+
+ **Unit**: _0,01 m_
+
+Values:
+* **zeroPointZeroOneMeter** (1)
+* **oneMeter** (100)
+* **outOfRange** (101)
+shall be set if the accuracy is out of range
+* **unavailable** (102)
+shall be set if the accuracy data is unavailable
+```asn1
+LongitudinalLanePositionConfidence ::= INTEGER {
+ zeroPointZeroOneMeter (1),
+ oneMeter (100),
+ outOfRange (101),
+ unavailable (102)
+} (0..102)
+```
+
+### Object Age
+
+Age of object in milliseconds, i.e. for how long the object has been observed by the
+disseminating station.
+
+
+ **Unit**: _1 ms_
+
+Values:
+* **oneMiliSec** (1)
+* **moreThan1Point5Second** (1500)
+indicates that the object has been observed for more than 1.5s.
+```asn1
+ObjectAge ::= INTEGER {
+ oneMiliSec (1),
+ moreThan1Point5Second (1500)
+} (0..1500)
+```
+
+### Object Confidence
+
+A single-value indication about the overall information quality of a perceived object. Its computation
+is based on several scaling factors and moving averages. See Clause 7.6.4 of ETSI TS 103 324 for details
+on the computation.
+
+
+ **Unit**: _n/a_
+
+Values:
+* **noConfidence** (0)
+No confidence in detected object, e.g. for "ghost"-objects or
+if confidence could not be computed
+* **fullConfidence** (15)
+Full confidence in detected object
+```asn1
+ObjectConfidence ::= INTEGER {
+ noConfidence (0),
+ fullConfidence (15)
+} (0..15)
+```
+
+### Object Dimension Value
+
+A dimension for an object.
+
+
+ **Unit**: _0,1 m_
+
+Values:
+* **zeroPointOneMeter** (1)
+* **oneMeter** (10)
+```asn1
+ObjectDimensionValue ::= INTEGER {
+ zeroPointOneMeter (1),
+ oneMeter (10)
+} (0..1023)
+```
+
+### Object Dimension Confidence
+
+Accuracy of provided dimension value with a predefined confidence level (e.g. 95%)
+
+
+ **Unit**: _0,01 m_
+
+Values:
+* **zeroPointZeroOneMeter** (1)
+* **oneMeter** (100)
+* **outOfRange** (101)
+* **unavailable** (102)
+```asn1
+ObjectDimensionConfidence ::= INTEGER {
+ zeroPointZeroOneMeter (1),
+ oneMeter (100),
+ outOfRange (101),
+ unavailable (102)
+} (0..102)
+```
+
+### Object Reference Point
+
+Reference point of measurement for the object dimensions. All provided state variables of this
+object are given relative to the reference point. The point is included in the plane
+perpendicular to the direction of the @see yawAngleValue.
+
+
+Values:
+* **mid** (0)
+* **bottomLeft** (1)
+* **midLeft** (2)
+* **topLeft** (3)
+* **bottomMid** (4)
+* **topMid** (5)
+* **bottomRight** (6)
+* **midRight** (7)
+* **topRight** (8)
+```asn1
+ObjectRefPoint ::= INTEGER {
+ mid (0),
+ bottomLeft (1),
+ midLeft (2),
+ topLeft (3),
+ bottomMid (4),
+ topMid (5),
+ bottomRight (6),
+ midRight (7),
+ topRight (8)
+} (0..8)
+```
+
+### Radius
+
+The dimension of a sensor area in the shape of a circle or a rectangle.
+
+
+ **Unit**: _0,1 m_
+
+Values:
+* **zeroPointOneMeter** (1)
+* **oneMeter** (10)
+```asn1
+Radius ::= INTEGER {
+ zeroPointOneMeter (1),
+ oneMeter (10)
+} (0..10000)
+```
+
+### Range
+
+Range of sensor within the indicated azimuth Angle defined by the start and end opening angle.
+
+
+ **Unit**: _0,1 m_
+
+Values:
+* **zeroPointOneMeter** (1)
+* **oneMeter** (10)
+```asn1
+Range ::= INTEGER {
+ zeroPointOneMeter (1),
+ oneMeter (10)
+} (0..10000)
+```
+
+### Rear Overhang
+
+Length of the trailer overhang in the negative x direction (according to ISO 8855) from the
+trailer Reference Point indicated by the @see refPointID
+
+
+ **Unit**: _0,1 m_
+
+Values:
+* **zeroPointOneMeter** (1)
+* **oneMeter** (10)
+```asn1
+RearOverhang ::= INTEGER {
+ zeroPointOneMeter (1),
+ oneMeter (10)
+ } (0..150)
+```
+
+### Reference Point ID
+
+Reference point counter for a trailer.
+
+
+ **Unit**: _n/a_
+
+```asn1
+RefPointId ::= INTEGER (0..255)
+```
+
+### Sensor Height
+
+Height of sensor position relative to altitude provided by the reference position.
+
+
+ **Unit**: _0,01 m_
+
+Values:
+* **zeroPointZeroOneMeter** (1)
+```asn1
+SensorHeight ::= INTEGER {
+ zeroPointZeroOneMeter (1)
+} (-5000..5000)
+```
+
+### Vehicle Height
+
+The height if the vehicle, measured from the ground to the highest point, excluding any antennas.
+In case vehicles are equipped with adjustable ride heights, camper shells, and any other
+equipment which may result in varying height, the largest possible height shall be used.
+
+
+ **Unit**: _5 cm (DE ranges to 6.35 m)_
+
+```asn1
+VehicleHeight ::= INTEGER (0..127)
+```
+
+### Shadowing Applies Indication
+
+Boolean indication if tracing approach shall be used to compute a shadowed area behind an object.
+If set to TRUE, the simple tracing approach shall be applied for each object intersecting or
+located within the area or volume described by the freeSpaceAddendum container. If set to FALSE,
+the simple tracing approach shall not be applied for each object intersecting or located within
+the area or volume described by the freeSpaceAddenum container.
+
+
+ **Unit**: _n/a_
+
+```asn1
+ShadowingApplies ::= BOOLEAN
+```
+
+### Identifier
+
+General identifier data element.
+
+
+ **Unit**: _n/a_
+
+```asn1
+Identifier ::= INTEGER (0..255)
+```
+
+### Number of Perceived Objects
+
+A data element for representing the total number of detected and shared objects of an ITS-S
+transmitting a CPM.
+
+
+ **Unit**: _n/a_
+
+```asn1
+NumberOfPerceivedObjects ::= INTEGER (0..255)
+```
+
+### Sensor Type
+
+Describes the type of attached sensor
+
+
+ **Unit**: _n/a_
+
+Values:
+* **undefined** (0)
+* **radar** (1)
+* **lidar** (2)
+* **monovideo** (3)
+* **stereovision** (4)
+* **nightvision** (5)
+* **ultrasonic** (6)
+* **pmd** (7)
+* **fusion** (8)
+object information provided from sensor data fusion system
+* **inductionloop** (9)
+* **sphericalCamera** (10)
+* **itssaggregation** (11)
+object information gathered from other received ITS messages
+```asn1
+SensorType ::= INTEGER {
+ undefined (0),
+ radar (1),
+ lidar (2),
+ monovideo (3),
+ stereovision (4),
+ nightvision (5),
+ ultrasonic (6),
+ pmd (7),
+ fusion (8),
+ inductionloop (9),
+ sphericalCamera (10),
+ itssaggregation (11)
+} (0..15)
+```
+
+### Segment Count
+
+A data element for representing either the total number of generated segments by the transmitter
+or the identification of the received message segment.
+
+
+ **Unit**: _n/a_
+
+```asn1
+SegmentCount ::= INTEGER( 1..127)
+```
+
+### Speed Value Extended
+
+Value of a speed component.
+
+
+ **Unit**: _0,01 m/s_
+
+Values:
+* **negativeSpeedMaximum** (-16383)
+shall be set for values equal to or smaller than -163,83 m/s
+* **standstill** (0)
+* **oneCentimeterPerSec** (1)
+* **speedMaximum** (16382)
+shall be set for values equal to or greater than 163,82 m/s
+* **unavailable** (16383)
+shall be set if information is not available
+```asn1
+SpeedValueExtended ::= INTEGER {
+ negativeSpeedMaximum (-16383),
+ standstill (0),
+ oneCentimeterPerSec (1),
+ speedMaximum (16382),
+ unavailable (16383)
+} (-16383..16383)
+```
+
+### Acceleration Value
+
+Value of an acceleration component.
+
+
+ **Unit**: _0,1 m/s2_
+
+Values:
+* **pointOneMeterPerSecSquared** (1)
+* **minusPointOneMeterPerSecSquared** (-1)
+* **unavailable** (161)
+shall be set if information is not available
+```asn1
+AccelerationValue ::= INTEGER {
+ pointOneMeterPerSecSquared (1),
+ minusPointOneMeterPerSecSquared (-1),
+ unavailable (161)
+} (-160 .. 161)
+```
+
+### Time of Measurement
+
+Time difference with respect to the @see generationDeltaTime for the provided measurement for the
+object. Negative values indicate that the provided object state refers to a point in time after
+the @see generationDeltaTime has been computed, i.e. after the latest disseminating ITS-S
+position update which is used to calculate the generationDeltaTime.
+
+
+ **Unit**: _1 ms_
+
+Values:
+* **oneMilliSecond** (1)
+```asn1
+TimeOfMeasurement ::= INTEGER {
+ oneMilliSecond (1)
+} (-1500..1500)
+```
+
+### X Sensor Offset
+
+Describes the mounting position of a sensor along the negative x-direction from Reference Point
+indicated by the @see refPointID
+
+
+ **Unit**: _0,01 m_
+
+Values:
+* **negativeZeroPointZeroOneMeter** (-1)
+* **negativeOneMeter** (-100)
+* **negativeOutOfRange** (-3094)
+* **positiveOneMeter** (100)
+* **positiveOutOfRange** (1001)
+```asn1
+XSensorOffset ::= INTEGER {
+ negativeZeroPointZeroOneMeter (-1),
+ negativeOneMeter (-100),
+ negativeOutOfRange (-3094),
+ positiveOneMeter (100),
+ positiveOutOfRange (1001)
+} (-3094..1001)
+```
+
+### Y Sensor Offset
+
+Described the mounting position of a sensor in y-direction from Reference Point
+indicated by the @see refPointID
+
+
+ **Unit**: _0,01 m_
+
+Values:
+* **zeroPointZeroOneMeter** (1)
+* **oneMeter** (100)
+```asn1
+YSensorOffset ::= INTEGER {
+ zeroPointZeroOneMeter (1),
+ oneMeter (100)
+} (-1000..1000)
+```
+
+### Z Sensor Offset
+
+Described the mounting position of a sensor in y-direction from Reference Point
+indicated by the @see refPointID
+
+
+ **Unit**: _0,01 m_
+
+Values:
+* **zeroPointZeroOneMeter** (1)
+* **oneMeter** (100)
+```asn1
+ZSensorOffset ::= INTEGER {
+ zeroPointZeroOneMeter (1),
+ oneMeter (100)
+} (0..1000)
+```
+
+
+
diff --git a/docs/CPM-FreeSpaceAddendum-Descriptions.md b/docs/CPM-FreeSpaceAddendum-Descriptions.md
new file mode 100644
index 0000000000000000000000000000000000000000..19f047ba8ceeef437ab2eef7503b02cfc42d73ea
--- /dev/null
+++ b/docs/CPM-FreeSpaceAddendum-Descriptions.md
@@ -0,0 +1,86 @@
+# ASN.1 module CPM-FreeSpaceAddendum-Descriptions
+ OID: _{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) freeSpaceAddendum (6) version1 (1) }_
+
+## Imports:
+ * **[CPM-CommonDataTypes-Descriptions](CPM-CommonDataTypes-Descriptions.md)** *{itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) commonDataTypes (2) version1 (1)}*
+
+## Data Elements:
+### FreeSpaceAddendumContainer
+
+Free Space Addendum Container
+A list of provided free space addendums. Each addendum shall be described asa provided by
+@see FreeSpaceAddendum.
+
+
+```asn1
+FreeSpaceAddendumContainer ::= SEQUENCE SIZE(1..128, ...) OF FreeSpaceAddendum
+```
+
+### FreeSpaceAddendum
+
+Free Space Addendum
+This container shall only be added if the confidence indication needs to be altered with respect
+to the isotropic @see FreeSpaceConfidence confidence level indication provided in the
+@see SensorInformation.
+
+
+Fields:
+* freeSpaceConfidence [**FreeSpaceConfidence**](CPM-CommonDataTypes-Descriptions.md#FreeSpaceConfidence)
+ @detailsfreeSpaceConfidence
+ Describes an isotropic free space confidence that applies to the entire area as defined in
+ the @see freeSpaceArea of a particular free space addendum container.
+
+* freeSpaceArea [**FreeSpaceArea**](#FreeSpaceArea)
+
+ Describes the free space area for which the free space confidence of this addendum
+ container is valid.
+
+* sensorIDList [**SensorIdList**](CPM-CommonDataTypes-Descriptions.md#SensorIdList) OPTIONAL
+
+ Provides a list of pseudonym sensor IDs which performed the measurement to indicate the
+ free space.
+
+* shadowingApplies [**ShadowingApplies**](CPM-CommonDataTypes-Descriptions.md#ShadowingApplies) DEFAULT TRUE
+```asn1
+FreeSpaceAddendum ::= SEQUENCE {
+ freeSpaceConfidence FreeSpaceConfidence,
+ freeSpaceArea FreeSpaceArea,
+ sensorIDList SensorIdList OPTIONAL,
+ shadowingApplies ShadowingApplies DEFAULT TRUE,
+ ...
+}
+```
+
+### FreeSpaceArea
+
+Free Space Area
+The described area that is considered as not occupied by any traffic participant or obstacle by
+the disseminating ITS-S.
+
+
+Fields:
+* freeSpacePolygon [**AreaPolygon**](CPM-CommonDataTypes-Descriptions.md#AreaPolygon)
+
+ A sequence of node points from a given offset point to describe an arbitrary area shape.
+
+* freeSpaceCircular [**AreaCircular**](CPM-CommonDataTypes-Descriptions.md#AreaCircular)
+* freeSpaceEllipse [**AreaEllipse**](CPM-CommonDataTypes-Descriptions.md#AreaEllipse)
+
+ A description of an elliptical area.
+
+* freeSpaceRectangle [**AreaRectangle**](CPM-CommonDataTypes-Descriptions.md#AreaRectangle)
+
+ A description of a rectangular area.
+
+```asn1
+FreeSpaceArea ::= CHOICE {
+ freeSpacePolygon AreaPolygon,
+ freeSpaceCircular AreaCircular,
+ freeSpaceEllipse AreaEllipse,
+ freeSpaceRectangle AreaRectangle,
+ ...
+}
+```
+
+
+
diff --git a/docs/CPM-OriginatingStationData-Descriptions.md b/docs/CPM-OriginatingStationData-Descriptions.md
new file mode 100644
index 0000000000000000000000000000000000000000..128037e3734b8782c804790e456bae287190a14f
--- /dev/null
+++ b/docs/CPM-OriginatingStationData-Descriptions.md
@@ -0,0 +1,72 @@
+# ASN.1 module CPM-OriginatingStationData-Descriptions
+ OID: _{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) originatingStationData (3) 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)}*
+ Include ETSI TS 102 894-2
+ Include references from https://forge.etsi.org/rep/ITS/ITS_ASN1/blob/master/CDD_TS102894-2/ITS-Container.asn
+
+ * **[DSRC](DSRC.md)** *{iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2)}*
+ Include ISO 19091
+ Include references from https://standards.iso.org/iso/ts/19091/ed-2/en/ISO-TS-19091-addgrp-C-2018.asn
+
+ * **[CPM-CommonDataTypes-Descriptions](CPM-CommonDataTypes-Descriptions.md)** *{itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) commonDataTypes (2) version1 (1)}*
+
+## Data Elements:
+### Originating Vehicle Container
+
+The _originatingVehicleContainer_ provides detailed information about the vehicle ITS-S
+disseminating the CPM.
+
+
+```asn1
+OriginatingVehicleContainer ::= SEQUENCE {
+ heading Heading,
+ speed Speed,
+ verticalSpeed SpeedExtended OPTIONAL,
+```
+
+### Originating RSU Container
+
+
+Angle and angle accuracy of the absolute orientation of the disseminating vehicle in the
+WGS84 coordinate system with respect to true North. This is opposed to the vehicle heading
+which is calculated taking into account the speed vector. The confidence denotes the accuracy
+of the measured angle value for a confidence level of 95 %.
+
+
+Angle and angle accuracy between the ground plane and the current orientation of a vehicle's
+x-axis with respect to the ground plane about the y-axis according to the ISO 8855.
+
+
+Angle and angle accuracy between the ground plane and the current orientation of a vehicle's
+y-axis with respect to the ground plane about the x-axis according to the ISO 8855
+
+
+Provides detailed information about the trailers dimensions and orientation in case a trailer is present.
+
+The _originatingRSUContainer_ provides information about the RSU type ITS-S disseminating the CPM.
+
+
+Fields:
+* intersectionReferenceId [**IntersectionReferenceID**](DSRC.md#IntersectionReferenceID)
+
+ Conveys the combination of an optional RoadRegulatorID and of an IntersectionID that is
+ unique within that region. When the RoadRegulatorID is present, the IntersectionReferenceID
+ is guaranteed to be globally unique.
+
+* roadSegmentReferenceId [**RoadSegmentReferenceID**](DSRC.md#RoadSegmentReferenceID)
+
+ Conveys the RoadSegmentReferenceID which is unique to a given road segment of interest, and
+ also the RoadRegulatorID assigned to the region in which it is operating
+
+```asn1
+OriginatingRSUContainer ::= CHOICE {
+ intersectionReferenceId IntersectionReferenceID,
+ roadSegmentReferenceId RoadSegmentReferenceID,
+ ...
+}
+```
+
+
+
diff --git a/docs/CPM-PDU-Descriptions.md b/docs/CPM-PDU-Descriptions.md
new file mode 100644
index 0000000000000000000000000000000000000000..748220d7697e4bb0a2a697281f369966b0d76d81
--- /dev/null
+++ b/docs/CPM-PDU-Descriptions.md
@@ -0,0 +1,213 @@
+# ASN.1 module CPM-PDU-Descriptions
+ OID: _{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) cpm (1) version1 (1) }_
+Specification of the Collective Perception Message ETSI TS 103 324
+Latest version available at https://forge.etsi.org/rep/ITS/CPM_TS103324
+
+## 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 v1.3.1
+ Include references from https://forge.etsi.org/rep/ITS/asn1/cdd_ts102894_2/blob/v1.3.1/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 v1.4.1
+ Include references from https://forge.etsi.org/rep/ITS/asn1/cam_en302637_2/blob/v1.4.1/CAM-PDU-Descriptions.asn
+
+ * **[CPM-CommonDataTypes-Descriptions](CPM-CommonDataTypes-Descriptions.md)** *{itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) commonDataTypes (2) version1 (1)}*
+
+ * **[CPM-OriginatingStationData-Descriptions](CPM-OriginatingStationData-Descriptions.md)** *{itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) originatingStationData (3) version1 (1)}*
+ Import Originating Vehicle Container
+
+ * **[CPM-SensorInformation-Descriptions](CPM-SensorInformation-Descriptions.md)** *{itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) sensorInformation (4) version1 (1)}*
+ Import Sensor Information Container
+
+ * **[CPM-PerceivedObject-Descriptions](CPM-PerceivedObject-Descriptions.md)** *{itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) perceivedObject (5) version1 (1)}*
+
+ * **[CPM-FreeSpaceAddendum-Descriptions](CPM-FreeSpaceAddendum-Descriptions.md)** *{itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) freeSpaceAddendum (6) version1 (1)}*
+
+## Data Elements:
+### CPM-STATIONDATA-ID-AND-TYPE
+
+Information Object Class Definitions
+
+
+```asn1
+CPM-STATIONDATA-ID-AND-TYPE ::= CLASS {
+ &id CpmStationDataId UNIQUE,
+ &Type
+} WITH SYNTAX {&Type IDENTIFIED BY &id}
+```
+
+### CpmStationDataContainer
+
+Fields:
+* containerId [**CPM-STATIONDATA-ID-AND-TYPE**](#CPM-STATIONDATA-ID-AND-TYPE) .&id( {Set} )
+* containerData [**CPM-STATIONDATA-ID-AND-TYPE**](#CPM-STATIONDATA-ID-AND-TYPE) .&Type( {Set}{@containerId} )
+```asn1
+CpmStationDataContainer {CPM-STATIONDATA-ID-AND-TYPE : Set} ::= SEQUENCE {
+ containerId CPM-STATIONDATA-ID-AND-TYPE.&id( {Set} ),
+ containerData CPM-STATIONDATA-ID-AND-TYPE.&Type( {Set}{@containerId} )
+}
+```
+
+### CPM-CONTAINER-ID-AND-TYPE
+
+```asn1
+CPM-CONTAINER-ID-AND-TYPE ::= CLASS {
+ &id CpmContainerId UNIQUE,
+ &Type
+} WITH SYNTAX {&Type IDENTIFIED BY &id}
+```
+
+### CpmPerceptionDataContainer
+
+Fields:
+* containerId [**CPM-CONTAINER-ID-AND-TYPE**](#CPM-CONTAINER-ID-AND-TYPE) .&id( {Set} )
+* containerData [**CPM-CONTAINER-ID-AND-TYPE**](#CPM-CONTAINER-ID-AND-TYPE) .&Type( {Set}{@containerId} )
+```asn1
+CpmPerceptionDataContainer {CPM-CONTAINER-ID-AND-TYPE : Set} ::= SEQUENCE {
+ containerId CPM-CONTAINER-ID-AND-TYPE.&id( {Set} ),
+ containerData CPM-CONTAINER-ID-AND-TYPE.&Type( {Set}{@containerId} )
+}
+```
+
+### CpmStationDataId
+
+```asn1
+CpmStationDataId ::= INTEGER (0..255)
+CpmContainerId ::= INTEGER (0..255)
+```
+
+### OriginatingStationData
+
+
+
+```asn1
+OriginatingStationData CPM-STATIONDATA-ID-AND-TYPE ::= {
+ {OriginatingVehicleContainer IDENTIFIED BY originatingStationVehicleContainer} |
+ {OriginatingRSUContainer IDENTIFIED BY originatingStationRSUContainer},
+ ...
+}
+```
+
+### PerceptionData
+
+```asn1
+PerceptionData CPM-CONTAINER-ID-AND-TYPE ::= {
+ {SensorInformationContainer IDENTIFIED BY sensorInformationCpmContainer} |
+ {PerceivedObjectContainer IDENTIFIED BY perceivedObjectCpmContainer} |
+ {FreeSpaceAddendumContainer IDENTIFIED BY freeSpaceAdddendumCpmContainer},
+ ...
+}
+```
+
+
+
+```asn1
+originatingStationVehicleContainer CpmStationDataId ::= 1
+originatingStationRSUContainer CpmStationDataId ::= 2
+```
+
+
+
+```asn1
+sensorInformationCpmContainer CpmContainerId ::= 1
+perceivedObjectCpmContainer CpmContainerId ::= 2
+freeSpaceAdddendumCpmContainer CpmContainerId ::= 3
+```
+
+### Collective Perception Message Root
+
+Collective Perception Message
+This DF includes DEs for the CPM protocolVersion, the CP message type identifier _messageID_ and
+the station identifier _stationID_ of the originating ITS-S.
+
+
+Fields:
+* header [**ItsPduHeader**](ITS-Container.md#ItsPduHeader)
+
+ The DE _protocolVersion_ is used to select the appropriate protocol decoder at the receiving
+ ITS-S. It shall be set to @todo cpm(15).
+ The DE _messageID_ shall be harmonized with other V2X message identifier definitions.
+
+* cpm [**CollectivePerceptionMessage**](#CollectivePerceptionMessage)
+```asn1
+CPM ::= SEQUENCE {
+ header ItsPduHeader,
+ cpm CollectivePerceptionMessage
+}
+```
+
+### CollectivePerceptionMessage
+
+Collective Perception Message
+This is the actual CPM Payload. It shall include the time stamp of the CPM and the applicable
+containers of type _PerceptionData_. The selection of the StationDataContainer type container
+depends on the _StationType_ as selected in the @see CpmManagementContainer
+
+
+Fields:
+* generationDeltaTime [**GenerationDeltaTime**](CAM-PDU-Descriptions.md#GenerationDeltaTime)
+* cpmParameters [**CpmParameters**](#CpmParameters)
+```asn1
+CollectivePerceptionMessage ::= SEQUENCE {
+ generationDeltaTime GenerationDeltaTime,
+ cpmParameters CpmParameters
+}
+```
+
+### CpmParameters
+
+CPM Parameters
+The sequence of mandatory and optional containers. Other containers may be added in the future.
+
+
+Fields:
+* managementContainer [**CpmManagementContainer**](#CpmManagementContainer)
+ managementContainer
+ The managementContainer comprises basic information about the originating ITS-S, which are
+ not specific to vehicles or RSUs.
+
+* stationDataContainer [**CpmStationDataContainer**](#CpmStationDataContainer) {{OriginatingStationData}} OPTIONAL
+ stationDataContainer
+ The stationDataContainer comprises ITS-S type specific information about the sending station.
+
+* perceptionData **SEQUENCE** SIZE(1..255) OF CpmPerceptionDataContainer {{PerceptionData}} OPTIONAL
+ perceptionData
+ The perceptionData comprises different container types for describing the sensory properties
+ of the transmitting ITS-S, its detected objects and free space estimates.
+
+```asn1
+CpmParameters ::= SEQUENCE {
+ managementContainer CpmManagementContainer,
+ stationDataContainer CpmStationDataContainer {{OriginatingStationData}} OPTIONAL,
+ perceptionData SEQUENCE SIZE(1..255) OF CpmPerceptionDataContainer {{PerceptionData}} OPTIONAL,
+ ...
+}
+```
+
+### CPM Management Container
+
+The managementContainer comprises basic information about the originating ITS-S, which are not
+specific to vehicles or RSUs.
+
+
+Fields:
+* stationType [**StationType**](ITS-Container.md#StationType)
+* messageSegmentInfo [**MessageSegmentInfo**](CPM-CommonDataTypes-Descriptions.md#MessageSegmentInfo) OPTIONAL
+ messageSegmentInfo
+ The perceived object container segment info describes the segmentation information in case
+ the data for CPM transmission needs to be split up into multiple messages due to
+ message size constraints.
+
+* referencePosition [**ReferencePosition**](ITS-Container.md#ReferencePosition)
+```asn1
+CpmManagementContainer ::= SEQUENCE {
+ stationType StationType,
+ messageSegmentInfo MessageSegmentInfo OPTIONAL,
+ referencePosition ReferencePosition,
+ ...
+}
+```
+
+
+
diff --git a/docs/CPM-PerceivedObject-Descriptions.md b/docs/CPM-PerceivedObject-Descriptions.md
new file mode 100644
index 0000000000000000000000000000000000000000..5e4a8224d96027c154ce123c67906804fc330747
--- /dev/null
+++ b/docs/CPM-PerceivedObject-Descriptions.md
@@ -0,0 +1,324 @@
+# ASN.1 module CPM-PerceivedObject-Descriptions
+ OID: _{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) perceivedObject (5) version1 (1) }_
+
+## Imports:
+ * **[CPM-CommonDataTypes-Descriptions](CPM-CommonDataTypes-Descriptions.md)** *{itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) commonDataTypes (2) version1 (1)}*
+
+## Data Elements:
+### Perceived Object Container
+
+A list of perceived objects. Each object shall be described as defined in @see PerceivedObject.
+
+
+Fields:
+* numberOfPerceivedObjects [**NumberOfPerceivedObjects**](CPM-CommonDataTypes-Descriptions.md#NumberOfPerceivedObjects) DEFAULT 0
+
+ The total number of detected objects by the station at the time of generating the message.
+ Due to the dynamic message generation rules, this number does not have to reflect the number
+ of objects included in this message but states the number of objects known to the sender at
+ the time of generating the message.
+
+* perceivedObjects **SEQUENCE** SIZE(1..128, ...) OF PerceivedObject
+```asn1
+PerceivedObjectContainer ::= SEQUENCE {
+ numberOfPerceivedObjects NumberOfPerceivedObjects DEFAULT 0,
+ perceivedObjects SEQUENCE SIZE(1..128, ...) OF PerceivedObject
+}
+```
+
+### Perceived Object
+
+An object in the context of the CP Service refers to the kinematic and attitude representation of
+a detected object within a sensor’s perception range. An object may be reported directly by a
+sensor or a sensor fusion system.
+
+
+Fields:
+* objectID [**Identifier**](CPM-CommonDataTypes-Descriptions.md#Identifier)
+
+ Identifier assigned to a detected object which remains constant as long as the object is
+ perceived by the disseminating ITS-S. Numbers are assigned in an increasing round-robin
+ fashion. When the last identifier in the allowed range has been used, the first counter for
+ the identifier starts from the beginning of the range again.
+
+* timeOfMeasurement [**TimeOfMeasurement**](CPM-CommonDataTypes-Descriptions.md#TimeOfMeasurement)
+
+ Provides the time difference from the message’s generation delta time to the time of the
+ measurement of the object.
+
+* xDistance [**ObjectDistance**](CPM-CommonDataTypes-Descriptions.md#ObjectDistance)
+
+ Distance to detected object from the ITS-S's reference point in x-direction for the time
+ of measurement. For a vehicle, the distance is reported in a body-fixed coordinate system
+ as provided by ISO 8855. For a RSU, the distance is reported in a coordinate system in which
+ the y-axis corresponds to the North direction, the x-axis to the East direction, and the z-
+ axis to the vertical direction.
+
+* yDistance [**ObjectDistance**](CPM-CommonDataTypes-Descriptions.md#ObjectDistance)
+
+ Distance to detected object from the ITS-S's reference point in y-direction for the time
+ of measurement. For a vehicle, the distance is reported in a body-fixed coordinate system
+ as provided by ISO 8855. For a RSU, the distance is reported in a coordinate system in which
+ the y-axis corresponds to the North direction, the x-axis to the East direction, and the z-
+ axis to the vertical direction
+
+* zDistance [**ObjectDistance**](CPM-CommonDataTypes-Descriptions.md#ObjectDistance) OPTIONAL
+
+ Distance to detected object from the ITS-S's reference point in z-direction for the time
+ of measurement. For a vehicle, the distance is reported in a body-fixed coordinate system
+ as provided by ISO 8855. For a RSU, the distance is reported in a coordinate system in which
+ the y-axis corresponds to the North direction, the x-axis to the East direction, and the z-
+ axis to the vertical direction
+
+* xSpeed [**SpeedExtended**](CPM-CommonDataTypes-Descriptions.md#SpeedExtended)
+
+ Speed of the detected object in the detecting ITS-S’s reference system in x-direction for the
+ time of measurement (i.e. speed of the object relative to the origin of the station’s reference
+ system). For a vehicle, the speed is reported in a body-fixed coordinate system as provided by
+ ISO 8855 originating at the ITS-station’s reference point. For a RSU, the speed is reported in
+ a coordinate system in which the y-axis corresponds to the North direction, the x-axis to the
+ East direction, and the z-axis to the vertical direction.
+
+* ySpeed [**SpeedExtended**](CPM-CommonDataTypes-Descriptions.md#SpeedExtended)
+
+ Speed of the detected object in the detecting ITS-S’s reference system in y-direction for the
+ time of measurement (i.e. speed of the object relative to the origin of the station’s reference
+ system). For a vehicle, the speed is reported in a body-fixed coordinate system as provided by
+ ISO 8855 originating at the ITS-station’s reference point. For a RSU, the speed is reported in
+ a coordinate system in which the y-axis corresponds to the North direction, the x-axis to the
+ East direction, and the z-axis to the vertical direction.
+
+* zSpeed [**SpeedExtended**](CPM-CommonDataTypes-Descriptions.md#SpeedExtended) OPTIONAL
+
+ Speed of the detected object in the detecting ITS-S’s reference system in z-direction for the
+ time of measurement (i.e. speed of the object relative to the origin of the station’s reference
+ system). For a vehicle, the speed is reported in a body-fixed coordinate system as provided by
+ ISO 8855 originating at the ITS-station’s reference point. For a RSU, the speed is reported in
+ a coordinate system in which the y-axis corresponds to the North direction, the x-axis to the
+ East direction, and the z-axis to the vertical direction.
+
+* xAcceleration [**Acceleration**](CPM-CommonDataTypes-Descriptions.md#Acceleration) OPTIONAL
+
+ Acceleration of the detected object from the ITS-S's reference point in x-direction
+ for the time of measurement. For a vehicle, the acceleration is reported in a body-fixed
+ coordinate system as provided by ISO 8855 originating at the ITS-station’s reference point.
+ For a RSU, the acceleration is reported in a coordinate system in which the y-axis corresponds
+ to the North direction, the x-axis to the East direction, and the z-axis to the vertical direction.
+
+* yAcceleration [**Acceleration**](CPM-CommonDataTypes-Descriptions.md#Acceleration) OPTIONAL
+
+ Acceleration of the detected object from the ITS-S's reference point in y-direction
+ for the time of measurement. For a vehicle, the acceleration is reported in a body-fixed
+ coordinate system as provided by ISO 8855 originating at the ITS-station’s reference point.
+ For a RSU, the acceleration is reported in a coordinate system in which the y-axis corresponds
+ to the North direction, the x-axis to the East direction, and the z-axis to the vertical direction.
+
+* zAcceleration [**Acceleration**](CPM-CommonDataTypes-Descriptions.md#Acceleration) OPTIONAL
+
+ Acceleration of the detected object from the ITS-S's reference point in z-direction
+ for the time of measurement. For a vehicle, the acceleration is reported in a body-fixed
+ coordinate system as provided by ISO 8855 originating at the ITS-station’s reference point.
+ For a RSU, the acceleration is reported in a coordinate system in which the y-axis corresponds
+ to the North direction, the x-axis to the East direction, and the z-axis to the vertical direction.
+
+* rollAngle [**CartesianAngle**](CPM-CommonDataTypes-Descriptions.md#CartesianAngle) OPTIONAL
+
+ Roll angle of object from the ITS-S's reference point. For a vehicle, the angle is
+ reported in a body-fixed coordinate system as provided by ISO 8855 originating at the ITS-station’s
+ reference point. For a RSU, the angle is reported in a coordinate system in which the y-axis
+ corresponds to the North direction, the x-axis to the East direction, and the z- axis to the vertical direction.
+ The angle is measured with positive values considering the object orientation turning
+ counter-clockwise around the x-axis.
+
+* pitchAngle [**CartesianAngle**](CPM-CommonDataTypes-Descriptions.md#CartesianAngle) OPTIONAL
+
+ Pitch angle of object from the ITS-S's reference point. For a vehicle, the angle is
+ reported in a body-fixed coordinate system as provided by ISO 8855 originating at the ITS-station’s
+ reference point. For a RSU, the angle is reported in a coordinate system in which the y-axis
+ corresponds to the North direction, the x-axis to the East direction, and the z- axis to the vertical direction.
+ The angle is measured with positive values considering the object orientation turning
+ counter-clockwise around the y-axis.
+
+* yawAngle [**CartesianAngle**](CPM-CommonDataTypes-Descriptions.md#CartesianAngle) OPTIONAL
+
+ Yaw angle of object from the ITS-S's reference point. For a vehicle, the angle is
+ reported in a body-fixed coordinate system as provided by ISO 8855 originating at the ITS-station’s
+ reference point. For a RSU, the angle is reported in a coordinate system in which the y-axis
+ corresponds to the North direction, the x-axis to the East direction, and the z- axis to the vertical direction.
+ The angle is measured with positive values considering the object orientation turning
+ counter-clockwise around the z-axis.
+
+* rollRate [**CartesianAngularSpeed**](CPM-CommonDataTypes-Descriptions.md#CartesianAngularSpeed) OPTIONAL
+
+ Roll rate of object from the ITS-S's reference point. For a vehicle, the angular rate is
+ reported in a body-fixed coordinate system as provided by ISO 8855 originating at the ITS-station’s
+ reference point. For a RSU, the angular rate is reported in a coordinate system in which the y-axis
+ corresponds to the North direction, the x-axis to the East direction, and the z- axis to the vertical direction.
+ The angular rate is measured with positive values considering the object orientation turning
+ counter-clockwise around the x-axis.
+
+* pitchRate [**CartesianAngularSpeed**](CPM-CommonDataTypes-Descriptions.md#CartesianAngularSpeed) OPTIONAL
+
+ Pitch rate of object from the ITS-S's reference point. For a vehicle, the angular rate is
+ reported in a body-fixed coordinate system as provided by ISO 8855 originating at the ITS-station’s
+ reference point. For a RSU, the angular rate is reported in a coordinate system in which the y-axis
+ corresponds to the North direction, the x-axis to the East direction, and the z- axis to the vertical direction.
+ The angular rate is measured with positive values considering the object orientation turning
+ counter-clockwise around the y-axis.
+
+* yawRate [**CartesianAngularSpeed**](CPM-CommonDataTypes-Descriptions.md#CartesianAngularSpeed) OPTIONAL
+
+ Yaw rate of object from the ITS-S's reference point. For a vehicle, the angular rate is
+ reported in a body-fixed coordinate system as provided by ISO 8855 originating at the ITS-station’s
+ reference point. For a RSU, the angular rate is reported in a coordinate system in which the y-axis
+ corresponds to the North direction, the x-axis to the East direction, and the z- axis to the vertical direction.
+ The angular rate is measured with positive values considering the object orientation turning
+ counter-clockwise around the z-axis.
+
+* rollAcceleration [**CartesianAngularAcceleration**](CPM-CommonDataTypes-Descriptions.md#CartesianAngularAcceleration) OPTIONAL
+
+ Roll acceleration of object from the ITS-S's reference point. For a vehicle, the angular acceleration is
+ reported in a body-fixed coordinate system as provided by ISO 8855 originating at the ITS-station’s
+ reference point. For a RSU, the angular acceleration is reported in a coordinate system in which the y-axis
+ corresponds to the North direction, the x-axis to the East direction, and the z- axis to the vertical direction.
+ The angular acceleration is measured with positive values considering the object orientation turning
+ counter-clockwise around the x-axis.
+
+* pitchAcceleration [**CartesianAngularAcceleration**](CPM-CommonDataTypes-Descriptions.md#CartesianAngularAcceleration) OPTIONAL
+
+ Pitch acceleration of object from the ITS-S's reference point. For a vehicle, the angular acceleration is
+ reported in a body-fixed coordinate system as provided by ISO 8855 originating at the ITS-station’s
+ reference point. For a RSU, the angular acceleration is reported in a coordinate system in which the y-axis
+ corresponds to the North direction, the x-axis to the East direction, and the z- axis to the vertical direction.
+ The angular acceleration is measured with positive values considering the object orientation turning
+ counter-clockwise around the y-axis.
+
+* yawAcceleration [**CartesianAngularAcceleration**](CPM-CommonDataTypes-Descriptions.md#CartesianAngularAcceleration) OPTIONAL
+
+ Yaw acceleration of object from the ITS-S's reference point. For a vehicle, the angular acceleration is
+ reported in a body-fixed coordinate system as provided by ISO 8855 originating at the ITS-station’s
+ reference point. For a RSU, the angular acceleration is reported in a coordinate system in which the y-axis
+ corresponds to the North direction, the x-axis to the East direction, and the z- axis to the vertical direction.
+ The angular acceleration is measured with positive values considering the object orientation turning
+ counter-clockwise around the z-axis.
+
+* lowerTriangularCorrelationMatrixColumns [**LowerTriangularPositiveSemidefiniteMatrix**](CPM-CommonDataTypes-Descriptions.md#LowerTriangularPositiveSemidefiniteMatrix) OPTIONAL
+
+ Provides the columns of a lower triangular positive semi definite correlation matrix for the
+ kinematic state and attitude space provided for this object.
+ The order of the columns and rows of the correlation matrix is as follows:
+ - xDistance
+ - yDistance
+ - zDistance
+ - xSpeed
+ - ySpeed
+ - zSpeed
+ - xAcceleration
+ - yAcceleration
+ - zAcceleration
+ - rollAngle
+ - pitchAngle
+ - yawAngle
+ - rollRate
+ - pitchRate
+ - yawRate
+ - rollAcceleration
+ - pitchAcceleration
+ - yawAcceleration
+ The number of lowerTriangularCorrelationMatrixColumns to be included "k" is thereby the number of provided
+ values "n" of the kinematic state and attitude space minus 1: k = n-1.
+ Each column "i" of the lowerTriangularCorrelationMatrixColumns contains k-(i-1) values.
+ In case certain values of the kinematic state and attitude space are not provided, they are omitted from
+ the lowerTriangularCorrelationMatrixColumns.
+
+* planarObjectDimension1 [**ObjectDimension**](CPM-CommonDataTypes-Descriptions.md#ObjectDimension) OPTIONAL
+
+ First dimension of object as provided by the sensor or environment model. This dimension is
+ always contained in the plane which is oriented perpendicular to the direction of the angle
+ indicated by the yawAngle and which contains the object's reference point.
+
+* planarObjectDimension2 [**ObjectDimension**](CPM-CommonDataTypes-Descriptions.md#ObjectDimension) OPTIONAL
+
+ Second dimension of the object as provided by the sensor environment model. This dimension is
+ contained in the plane oriented in the direction of the angle indicated by the yawAngle and
+ the object's reference point.
+
+* verticalObjectDimension [**ObjectDimension**](CPM-CommonDataTypes-Descriptions.md#ObjectDimension) OPTIONAL
+
+ Vertical dimension of object as provided by the sensor or object model.
+
+* objectRefPoint [**ObjectRefPoint**](CPM-CommonDataTypes-Descriptions.md#ObjectRefPoint) DEFAULT 0
+
+ The reference point on the perceived object. The kinematic attitude and state data provided
+ for this object are valid for this reference point of the object. In case no object reference
+ point can be determined, it is assumed to be the center point of the detected object.
+
+* objectAge [**ObjectAge**](CPM-CommonDataTypes-Descriptions.md#ObjectAge)
+
+ Provides the age of the detected and described object.
+
+* objectConfidence [**ObjectConfidence**](CPM-CommonDataTypes-Descriptions.md#ObjectConfidence) OPTIONAL
+
+ The confidence associated to the object. The computation of the object confidence is based on a sensor's or
+ fusion system's specific detection confidence, the binary detection success that is, if an object
+ has been successfully detected by the last measurement and the object age.
+
+* sensorIDList [**SensorIdList**](CPM-CommonDataTypes-Descriptions.md#SensorIdList) OPTIONAL
+
+ List of sensor-IDs which provided the measurement data. Refers to the sensorID in the
+ @see SensorInformationContainer.
+ If the @see SensorInformationContainer is never provided by the disseminating ITS-S, the list shall be
+ populated with random numbers, where each number is assigned to a sensor of the transmitting station.
+
+* dynamicStatus [**DynamicStatus**](CPM-CommonDataTypes-Descriptions.md#DynamicStatus) OPTIONAL
+
+ Indicated the dynamic capabilities of a detected object.
+
+* classification [**ObjectClassDescription**](CPM-CommonDataTypes-Descriptions.md#ObjectClassDescription) OPTIONAL
+
+ Provides the classification of the described object. Multi-dimensional classification may be
+ provided.
+
+* matchedPosition [**MatchedPosition**](CPM-CommonDataTypes-Descriptions.md#MatchedPosition) OPTIONAL
+
+ The optional map-matched position of an object. This requires that a MAP-message is provided.
+
+```asn1
+PerceivedObject ::= SEQUENCE {
+ objectID Identifier,
+ timeOfMeasurement TimeOfMeasurement,
+ xDistance ObjectDistance,
+ yDistance ObjectDistance,
+ zDistance ObjectDistance OPTIONAL,
+ xSpeed SpeedExtended,
+ ySpeed SpeedExtended,
+ zSpeed SpeedExtended OPTIONAL,
+ xAcceleration Acceleration OPTIONAL,
+ yAcceleration Acceleration OPTIONAL,
+ zAcceleration Acceleration OPTIONAL,
+ rollAngle CartesianAngle OPTIONAL,
+ pitchAngle CartesianAngle OPTIONAL,
+ yawAngle CartesianAngle OPTIONAL,
+ rollRate CartesianAngularSpeed OPTIONAL,
+ pitchRate CartesianAngularSpeed OPTIONAL,
+ yawRate CartesianAngularSpeed OPTIONAL,
+ rollAcceleration CartesianAngularAcceleration OPTIONAL,
+ pitchAcceleration CartesianAngularAcceleration OPTIONAL,
+ yawAcceleration CartesianAngularAcceleration OPTIONAL,
+ lowerTriangularCorrelationMatrixColumns LowerTriangularPositiveSemidefiniteMatrix OPTIONAL,
+ planarObjectDimension1 ObjectDimension OPTIONAL,
+ planarObjectDimension2 ObjectDimension OPTIONAL,
+ verticalObjectDimension ObjectDimension OPTIONAL,
+ objectRefPoint ObjectRefPoint DEFAULT 0,
+ objectAge ObjectAge,
+ objectConfidence ObjectConfidence OPTIONAL,
+ sensorIDList SensorIdList OPTIONAL,
+ dynamicStatus DynamicStatus OPTIONAL,
+ classification ObjectClassDescription OPTIONAL,
+ matchedPosition MatchedPosition OPTIONAL,
+ ...
+}
+```
+
+
+
diff --git a/docs/CPM-SensorInformation-Descriptions.md b/docs/CPM-SensorInformation-Descriptions.md
new file mode 100644
index 0000000000000000000000000000000000000000..5e0cf8b6011e2026c9313f86653ec50f2ffa31ed
--- /dev/null
+++ b/docs/CPM-SensorInformation-Descriptions.md
@@ -0,0 +1,164 @@
+# ASN.1 module CPM-SensorInformation-Descriptions
+ OID: _{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) sensorInformation (4) version1 (1) }_
+
+## Imports:
+ * **[CPM-CommonDataTypes-Descriptions](CPM-CommonDataTypes-Descriptions.md)** *{itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) commonDataTypes (2) version1 (1)}*
+
+## Data Elements:
+### Sensor Information Container
+
+This container contains a list of sensor-types or data fusion systems from which the station
+provides information about detected objects.
+
+
+```asn1
+SensorInformationContainer ::= SEQUENCE SIZE(1..128, ...) OF SensorInformation
+```
+
+### SensorInformation
+
+Fields:
+* sensorID [**Identifier**](CPM-CommonDataTypes-Descriptions.md#Identifier)
+
+ Sensor pseudonym ID used to relate which measurement has been received by which sensor.
+ This ID is referred to in the @see PerceivedObject.
+
+* type [**SensorType**](CPM-CommonDataTypes-Descriptions.md#SensorType)
+* detectionArea [**DetectionArea**](#DetectionArea)
+* freeSpaceConfidence [**FreeSpaceConfidence**](CPM-CommonDataTypes-Descriptions.md#FreeSpaceConfidence) OPTIONAL
+
+ Describes the isotropic free space confidence that can be assumed for the entire detection
+ area of this sensor. Shadowed areas can be derived from provided objects. Deviations from
+ this free space derivation can be expressed in the @see FreeSpaceAddendumContainer.
+
+```asn1
+SensorInformation ::= SEQUENCE {
+ sensorID Identifier,
+ type SensorType,
+ detectionArea DetectionArea,
+ freeSpaceConfidence FreeSpaceConfidence OPTIONAL,
+ ...
+}
+```
+
+### Detection Area
+
+Choice of DFs to detail the sensor information.
+
+
+Fields:
+* vehicleSensor [**VehicleSensor**](#VehicleSensor)
+
+ The _vehicleSensor_ shall be used for describing non-stationary sensors attached to vehicles.
+
+* stationarySensorRadial [**AreaRadial**](CPM-CommonDataTypes-Descriptions.md#AreaRadial)
+
+ The _stationarySensorRadial_ can be used to provide details for describing sensors mounted to
+ road-side units
+
+* stationarySensorPolygon [**AreaPolygon**](CPM-CommonDataTypes-Descriptions.md#AreaPolygon)
+
+ The _stationarySensorPolygon_ can be used to describe a polygonal detection area associated
+ to a single sensor or to describe the union of multiple polygonal areas expressed as one
+ combined polygon.
+
+* stationarySensorCircular [**AreaCircular**](CPM-CommonDataTypes-Descriptions.md#AreaCircular)
+
+ The _stationarySensorCircular_ describes a circular perception area for a stationary sensor.
+ The position offset refers to the center point of the circular area.
+
+* stationarySensorEllipse [**AreaEllipse**](CPM-CommonDataTypes-Descriptions.md#AreaEllipse)
+
+ The _stationarySensorEllipse_ describes an ellipse-shaped perception area for a stationary
+ sensor.The position offset refers to the center point of the ellipse.
+
+* stationarySensorRectangle [**AreaRectangle**](CPM-CommonDataTypes-Descriptions.md#AreaRectangle)
+
+ The _stationarySensorRectangle_ describes a rectangle as a perception area for a stationary
+ sensor. The position offset refers to the center point of the rectangle.
+
+```asn1
+DetectionArea ::= CHOICE {
+ vehicleSensor VehicleSensor,
+ stationarySensorRadial AreaRadial,
+ stationarySensorPolygon AreaPolygon,
+ stationarySensorCircular AreaCircular,
+ stationarySensorEllipse AreaEllipse,
+ stationarySensorRectangle AreaRectangle,
+ ...
+}
+```
+
+### Vehicle Sensor
+
+Describes the perception capabilities of mobile sensors mounted to vehicles.
+
+
+Fields:
+* refPointId [**RefPointId**](CPM-CommonDataTypes-Descriptions.md#RefPointId) DEFAULT 0
+
+ An identification of the reference point in case of a sensor mounted to trailer.
+ Defaults to ITS ReferencePoint (0).
+
+* xSensorOffset [**XSensorOffset**](CPM-CommonDataTypes-Descriptions.md#XSensorOffset)
+
+ Mounting position of sensor in negative x-direction from Reference Point indicated by the @see refPointId.
+
+* ySensorOffset [**YSensorOffset**](CPM-CommonDataTypes-Descriptions.md#YSensorOffset)
+
+ Mounting position of sensor in y-direction from Reference Point indicated by the @see refPointId.
+
+* zSensorOffset [**ZSensorOffset**](CPM-CommonDataTypes-Descriptions.md#ZSensorOffset) OPTIONAL
+
+ Mounting position of sensor in z-direction from Reference Point indicated by the @see refPointId.
+
+* vehicleSensorPropertyList [**VehicleSensorPropertyList**](#VehicleSensorPropertyList)
+
+ The actual extension of the area covered by the specific vehicle sensor. In case of multiple
+ perception areas for a sensor, a list of areas covered by this sensor can be added.
+
+```asn1
+VehicleSensor ::= SEQUENCE {
+ refPointId RefPointId DEFAULT 0,
+ xSensorOffset XSensorOffset,
+ ySensorOffset YSensorOffset,
+ zSensorOffset ZSensorOffset OPTIONAL,
+ vehicleSensorPropertyList VehicleSensorPropertyList,
+ ...
+}
+```
+
+### Vehicle Sensor Property List
+
+
+
+
+```asn1
+VehicleSensorPropertyList ::= SEQUENCE SIZE(1..10) OF VehicleSensorProperties
+```
+
+### Vehicle Sensor Properties
+
+The actual extension of the area covered by the specific vehicle sensor. In case of multiple
+perception areas for a sensor, a list of areas covered by this sensor can be added.
+
+
+Fields:
+* range [**Range**](CPM-CommonDataTypes-Descriptions.md#Range)
+* horizontalOpeningAngleStart [**CartesianAngleValue**](CPM-CommonDataTypes-Descriptions.md#CartesianAngleValue)
+* horizontalOpeningAngleEnd [**CartesianAngleValue**](CPM-CommonDataTypes-Descriptions.md#CartesianAngleValue)
+* verticalOpeningAngleStart [**CartesianAngleValue**](CPM-CommonDataTypes-Descriptions.md#CartesianAngleValue) OPTIONAL
+* verticalOpeningAngleEnd [**CartesianAngleValue**](CPM-CommonDataTypes-Descriptions.md#CartesianAngleValue) OPTIONAL
+```asn1
+VehicleSensorProperties ::= SEQUENCE {
+ range Range,
+ horizontalOpeningAngleStart CartesianAngleValue,
+ horizontalOpeningAngleEnd CartesianAngleValue,
+ verticalOpeningAngleStart CartesianAngleValue OPTIONAL,
+ verticalOpeningAngleEnd CartesianAngleValue OPTIONAL,
+ ...
+}
+```
+
+
+
diff --git a/docs/ITS-Container.md b/docs/ITS-Container.md
new file mode 100644
index 0000000000000000000000000000000000000000..ec361cfcce3f7a87787a21bc1bb12db1e9ce096e
--- /dev/null
+++ b/docs/ITS-Container.md
@@ -0,0 +1,1257 @@
+# 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:
+
+
+```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**](ITS-Container.md#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**](ITS-Container.md#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**](ITS-Container.md#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**](ITS-Container.md#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**](#TimestampIts) OPTIONAL
+* protectedZoneLatitude [**Latitude**](ITS-Container.md#Latitude)
+* protectedZoneLongitude [**Longitude**](ITS-Container.md#Longitude)
+* protectedZoneRadius [**ProtectedZoneRadius**](#ProtectedZoneRadius) OPTIONAL
+* protectedZoneID [**ProtectedZoneID**](#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))
+```
+
+
+