diff --git a/.gitlab-ci.mk b/.gitlab-ci.mk index b67f882e42c9edfa62aefad929e00e54520b37cf..762b6e862b059ba8317bcb434f34eee7f4a7093a 100644 --- a/.gitlab-ci.mk +++ b/.gitlab-ci.mk @@ -1,4 +1,4 @@ -ASN1_SRC := $(wildcard asn/*.asn asn/cam/*.asn asn/cdd/*.asn) +ASN1_SRC := $(wildcard asn/*.asn asn/cam/*.asn asn/cdd/*.asn asn/vam/VAM-PDU-Descriptions.asn asn/vam/VAM-Temp-Imports.asn) ASN1_SRC_VALIDATE := \ iso/iso19091_2018.asn \ diff --git a/.gitmodules b/.gitmodules index 0c4fb143eaf7abc5eee3190f731aa3a138a7d9d0..75fd289a1df0955aa500ee4ae044862fab8e4f7a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "asn/cam"] path = asn/cam url = https://forge.etsi.org/rep/ITS/asn1/cam_en302637_2.git +[submodule "asn/vam"] + path = asn/vam + url = https://forge.etsi.org/rep/ITS/asn1/vam-ts103300_3.git diff --git a/asn/CPM_CommonDataTypes.asn b/asn/CPM_CommonDataTypes.asn index 8b87735cda233504a4fad198485781590698f37d..b562728756024d04cc09a98f7cb699adcaeee533 100644 --- a/asn/CPM_CommonDataTypes.asn +++ b/asn/CPM_CommonDataTypes.asn @@ -17,7 +17,15 @@ FROM ITS-Container {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) Include references from @url https://standards.iso.org/iso/ts/19091/ed-2/en/ISO-TS-19091-addgrp-C-2018.asn */ LaneID, NodeOffsetPointXY, Offset-B10, Offset-B11, Offset-B12, Offset-B13, Offset-B14, Offset-B16 -FROM DSRC {iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2)}; +FROM DSRC {iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2)} + + +/** @brief Include ETSI TS 103 300-3 V2.1.1 +Include references from https://forge.etsi.org/rep/ITS/asn1/vam-ts103300_3/tree/v2.1.1/ +*/ +VruProfileAndSubprofile, ClusterId, ClusterProfiles, ClusterCardinalitySize +FROM VAM-PDU-Descriptions {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) + wg1(1) ts(103300) vam(1) version1(1)}; /** @brief Area Circular Describes a circular area. The circle is centred about the reference point of the ITS-S or about @@ -380,8 +388,7 @@ A list of object classes. ObjectClassDescription ::= SEQUENCE (SIZE(1..8)) OF ObjectClassWithConfidence /** @brief 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 +Describes the classification of a detected object. The classification is provided with a confidence indication. */ ObjectClassWithConfidence ::= SEQUENCE { @@ -390,16 +397,44 @@ ObjectClassWithConfidence ::= SEQUENCE { } /** @brief Object Class -The class that best describes the detected object. Each class provides optional subclasses. +The class that best describes the detected object. The object can be classified into one of three +categories: vehicle, VRU and other. Each class provides optional subclasses. */ ObjectClass ::= CHOICE { - vehicleSubclass VehicleSubclassType, - personSubclass PersonSubclassType, - animalSubclass AnimalSubclassType, - otherSubclass OtherSubclassType, + vehicleSubclass VehicleSubclassType, + vruSubclass VruSubclassType, + otherSubclass OtherSubclassType, ... } +/** @brief VRU Subclass Type +Describes if a detected object is a single VRU or a group of VRUs. +*/ +VruSubclassType ::= CHOICE { + singleVru VruProfileAndSubprofile, + vruGroupSubclass VruGroupSubClassType +} + +/** @brief VruGroup Subclass Type +Describes the composition of a group of VRUs. +*/ +VruGroupSubClassType ::= SEQUENCE { + /** @details groupType + Indicates the profiles of the VRUs detected in the group. + A group of VRUs may be composed of VRUs of several different profiles. + */ + groupType ClusterProfiles, + /** @details groupSize + Indicates an estimation of the number of VRUs in the group. + */ + groupSize ClusterCardinalitySize, + /** @details clusterID + If the group is associated to a VRU cluster, this element indicates the ID of the associated cluster. + The ClusterId can only be assigned if a VRU cluster which is transmitting VAMs has been detected. + */ + clusterID ClusterId OPTIONAL +} + /** @brief 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. @@ -422,63 +457,30 @@ NodeOffsetPointZ ::= CHOICE { node-Z6 Offset-B16 --< node is within 327.67m of last node } -/** @brief Animal Subclass Type -Describes the subclass of a detected object for class animal. -@unit n/a -*/ -AnimalSubclassType ::= INTEGER { - unknown (0) --< the kind of animal is not known -} (0..255) - -/** @brief 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 -*/ -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 -} (0..255) - /** @brief Vehicle Subclass Type 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 + passengerCar (1), --< 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 + bus (2), --< 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 + lightTruck (3), --< 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 + heavyTruck (4), --< 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 + trailer (5), --< 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 + specialVehicles (6), --< 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 + tram (7), --< 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 + emergencyVehicle (8), --< 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 + agricultural (9) --< the detected object is a vehicle used for agricultural purposes } (0..255) /** @brief Other Subclass Type diff --git a/asn/vam b/asn/vam new file mode 160000 index 0000000000000000000000000000000000000000..aa7e1dfaf471fa9f464baa26f525f54866e0acd2 --- /dev/null +++ b/asn/vam @@ -0,0 +1 @@ +Subproject commit aa7e1dfaf471fa9f464baa26f525f54866e0acd2 diff --git a/docs/CPM-CommonDataTypes-Descriptions.md b/docs/CPM-CommonDataTypes-Descriptions.md index 794f15ea1043096736a7aa616aadee3c8872d446..54fc643018fc55cb1651ea137d04ddcbea60103b 100644 --- a/docs/CPM-CommonDataTypes-Descriptions.md +++ b/docs/CPM-CommonDataTypes-Descriptions.md @@ -10,6 +10,10 @@ Include ISO 19091 Include references from https://standards.iso.org/iso/ts/19091/ed-2/en/ISO-TS-19091-addgrp-C-2018.asn + * **[VAM-PDU-Descriptions](VAM-PDU-Descriptions.md)** *{itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1) ts(103300) vam(1) version1(1)}*
+ Include ETSI TS 103 300-3 V2.1.1 + Include references from https://forge.etsi.org/rep/ITS/asn1/vam-ts103300_3/tree/v2.1.1/ + ## Data Elements: ### Area Circular @@ -542,8 +546,7 @@ 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 +Describes the classification of a detected object. The classification is provided with a confidence indication. @@ -559,24 +562,66 @@ ObjectClassWithConfidence ::= SEQUENCE { ### Object Class -The class that best describes the detected object. Each class provides optional subclasses. +The class that best describes the detected object. The object can be classified into one of three +categories: vehicle, VRU and other. Each class provides optional subclasses. Fields: * vehicleSubclass [**VehicleSubclassType**](#VehicleSubclassType)
-* personSubclass [**PersonSubclassType**](#PersonSubclassType)
-* animalSubclass [**AnimalSubclassType**](#AnimalSubclassType)
+* vruSubclass [**VruSubclassType**](#VruSubclassType)
* otherSubclass [**OtherSubclassType**](#OtherSubclassType)
```asn1 ObjectClass ::= CHOICE { - vehicleSubclass VehicleSubclassType, - personSubclass PersonSubclassType, - animalSubclass AnimalSubclassType, - otherSubclass OtherSubclassType, + vehicleSubclass VehicleSubclassType, + vruSubclass VruSubclassType, + otherSubclass OtherSubclassType, ... } ``` +### VRU Subclass Type + +Describes if a detected object is a single VRU or a group of VRUs. + + +Fields: +* singleVru [**VruProfileAndSubprofile**](VAM-PDU-Descriptions.md#VruProfileAndSubprofile)
+* vruGroupSubclass [**VruGroupSubClassType**](#VruGroupSubClassType)
+```asn1 +VruSubclassType ::= CHOICE { + singleVru VruProfileAndSubprofile, + vruGroupSubclass VruGroupSubClassType +} +``` + +### VruGroup Subclass Type + +Describes the composition of a group of VRUs. + + +Fields: +* groupType [**ClusterProfiles**](VAM-PDU-Descriptions.md#ClusterProfiles)
+ + Indicates the profiles of the VRUs detected in the group. + A group of VRUs may be composed of VRUs of several different profiles. + +* groupSize [**ClusterCardinalitySize**](VAM-PDU-Descriptions.md#ClusterCardinalitySize)
+ + Indicates an estimation of the number of VRUs in the group. + +* clusterID [**ClusterId**](VAM-PDU-Descriptions.md#ClusterId) OPTIONAL
+ + If the group is associated to a VRU cluster, this element indicates the ID of the associated cluster. + The ClusterId can only be assigned if a VRU cluster which is transmitting VAMs has been detected. + +```asn1 +VruGroupSubClassType ::= SEQUENCE { + groupType ClusterProfiles, + groupSize ClusterCardinalitySize, + clusterID ClusterId OPTIONAL +} +``` + ### Offset Point Describes an offset position in a two- or three-dimensional plane as imported from @@ -623,63 +668,6 @@ NodeOffsetPointZ ::= CHOICE { } ``` -### 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. @@ -690,53 +678,45 @@ Describes the subclass of a detected object for class vehicle. 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)
+* **passengerCar** (1)
the detected object is a small passenger car as defined in UNECE/TRANS/WP.29/78/Rev.4 class M1 -* **bus** (4)
+* **bus** (2)
the detected object is a large passenger vehicle as defined in UNECE/TRANS/WP.29/78/Rev.4 class M2, M3 -* **lightTruck** (5)
+* **lightTruck** (3)
the detected object is a light goods vehicle as defined in UNECE/TRANS/WP.29/78/Rev.4 class N1 -* **heavyTruck** (6)
+* **heavyTruck** (4)
the detected object is a heavy goods vehicle as defined in UNECE/TRANS/WP.29/78/Rev.4 class N2, N3 -* **trailer** (7)
+* **trailer** (5)
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)
+* **specialVehicles** (6)
the detected object is a vehicle which has a special purpose other than the above (e.g. moving road works vehicle) -* **tram** (9)
+* **tram** (7)
the detected object is a vehicle running on tracks along public streets -* **emergencyVehicle** (10)
+* **emergencyVehicle** (8)
the detected object is a vehicle used in an emergency situation such as an ambulance, police car or fire engine -* **agricultural** (11)
+* **agricultural** (9)
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) + passengerCar (1), + bus (2), + lightTruck (3), + heavyTruck (4), + trailer (5), + specialVehicles (6), + tram (7), + emergencyVehicle (8), + agricultural (9) } (0..255) ``` diff --git a/docs/VAM-PDU-Descriptions.md b/docs/VAM-PDU-Descriptions.md new file mode 100644 index 0000000000000000000000000000000000000000..28a33dacc6f951c1382bc26f426dbb81862cb6fe --- /dev/null +++ b/docs/VAM-PDU-Descriptions.md @@ -0,0 +1,536 @@ +# ASN.1 module VAM-PDU-Descriptions + OID: _{itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1) ts(103300) vam(1) 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)}*
+ + * **[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)}*
+ + * **[VAM-Temp-Imports](VAM-Temp-Imports.md)** *{itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1) ts(103300) temp-imports(255) version1(1)} WITH SUCCESSORS*
+ + * **[DSRC](DSRC.md)** *{iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (2)}*
+ +## Data Elements: + + +```asn1 +VAM ::= SEQUENCE { + header ItsPduHeaderVam, + vam VruAwareness + } +``` + + + +```asn1 +ItsPduHeaderVam ::= ItsPduHeader(WITH COMPONENTS { + ..., + messageID(vam) + }) +``` + + + +```asn1 +VruAwareness ::= SEQUENCE { + generationDeltaTime GenerationDeltaTime, + vamParameters VamParameters + } +``` + + + +```asn1 +VamParameters ::= SEQUENCE { + basicContainer BasicContainer, + vruHighFrequencyContainer VruHighFrequencyContainer OPTIONAL, + vruLowFrequencyContainer VruLowFrequencyContainer OPTIONAL, + vruClusterInformationContainer VruClusterInformationContainer OPTIONAL, + vruClusterOperationContainer VruClusterOperationContainer OPTIONAL, + vruMotionPredictionContainer VruMotionPredictionContainer OPTIONAL, + ... + } +``` + + + +```asn1 +VruProfile ::= ENUMERATED { + unavailable(0), pedestrian(1), cyclist(2), motorcyclist(3), animal(4), + max(15) + } +``` + + + +```asn1 +VruHighFrequencyContainer ::= SEQUENCE { + heading Heading, + speed Speed, + longitudinalAcceleration LongitudinalAcceleration, + curvature Curvature OPTIONAL, + curvatureCalculationMode CurvatureCalculationMode OPTIONAL, + yawRate YawRate OPTIONAL, + lateralAcceleration LateralAcceleration OPTIONAL, + verticalAcceleration VerticalAcceleration OPTIONAL, + vruLanePosition VruLanePosition OPTIONAL, + environment VruEnvironment OPTIONAL, + movementControl VruMovementControl OPTIONAL, + orientation VruOrientation OPTIONAL, + rollAngle VruRollAngle OPTIONAL, + deviceUsage VruDeviceUsage OPTIONAL, + ... + } +``` + + + +```asn1 +VruLanePosition ::= CHOICE { + offRoadLanePosition OffRoadLanePosition, + vehicularLanePosition LanePosition, + trafficIslandPosition TrafficIslandPosition, + mapPosition MapPosition, + ... + } +``` + + + +```asn1 +OffRoadLanePosition ::= ENUMERATED { + unavailable(0), sidewalk(1), parkingLane(2), bikeLane(3), + max(15) + } +``` + + + +```asn1 +TrafficIslandPosition ::= SEQUENCE { + oneSide NonIslandLanePosition, + otherSide NonIslandLanePosition, + ... + } +``` + + + +```asn1 +NonIslandLanePosition ::= CHOICE { + offRoadLanePosition OffRoadLanePosition, + vehicularLanePosition LanePosition, + mapPosition MapPosition, + ... + } +``` + + + +```asn1 +MapPosition ::= SEQUENCE { + intersectionId IntersectionReferenceID, + lane LaneID + } +``` + + + +```asn1 +VruEnvironment ::= ENUMERATED { + unavailable (0), intersectionCrossing(1), zebraCrossing(2), sidewalk (3), + onVehicleRoad(4), protectedGeographicArea(5), max (255) + } +``` + + + +```asn1 +VruMovementControl ::= ENUMERATED { + unavailable (0), braking(1), hardBraking(2), stopPedaling (3), + brakingAndStopPedaling(4), hardBrakingAndStopPedaling (5), + noReaction(6), max (255) + } +``` + + + +```asn1 +VruOrientation ::= Heading +``` + + + +```asn1 +VruRollAngle ::= Heading +``` + + + +```asn1 +VruDeviceUsage ::= ENUMERATED { + unavailable(0), other(1), idle(2), listeningToAudio(3), typing(4), + calling(5), playingGames(6), reading(7), viewing(8), max(255) + } +``` + + + +```asn1 +VruLowFrequencyContainer ::= SEQUENCE { + profileAndSubprofile VruProfileAndSubprofile OPTIONAL, + exteriorLights VruExteriorLights OPTIONAL, + sizeClass VruSizeClass OPTIONAL, + ... + } +``` + + + +```asn1 +VruProfileAndSubprofile ::= CHOICE { + pedestrian VruSubProfilePedestrian, + bicyclist VruSubProfileBicyclist, + motorcylist VruSubProfileMotorcyclist, + animal VruSubProfileAnimal, + ... + } +``` + + + +```asn1 +VruSubProfilePedestrian ::= ENUMERATED { + unavailable(0), ordinary-pedestrian(1), + road-worker(2), first-responder(3), + max(15) + } +``` + + + +```asn1 +VruSubProfileBicyclist ::= ENUMERATED { + unavailable(0), bicyclist(1), wheelchair-user(2), horse-and-rider(3), + rollerskater(4), e-scooter(5), personal-transporter(6), + pedelec(7), speed-pedelec(8), + max(15) + } +``` + + + +```asn1 +VruSubProfileMotorcyclist ::= ENUMERATED { + unavailable(0), moped(1), motorcycle(2), motorcycle-and-sidecar-right(3), + motorcycle-and-sidecar-left(4), max(15) + } +``` + + + +```asn1 +VruSubProfileAnimal ::= ENUMERATED { + unavailable(0), wild-animal(1), farm-animal(2), service-animal(3), max(15) + } +``` + + + +```asn1 +VruExteriorLights ::= SEQUENCE { + vruSpecific VruSpecificExteriorLights, + vehicular ExteriorLights + } +``` + + + +```asn1 +VruSpecificExteriorLights ::= BIT STRING { + unavailable (0), + backFlashLight (1), + helmetLight (2), + armLight (3), + legLight (4), + wheelLight (5) + } (SIZE(8)) +``` + + + +```asn1 +VruSizeClass ::= ENUMERATED { + unavailable (0), low(1), medium(2), high (3), max(15) + } +``` + + + +```asn1 +VruClusterInformationContainer ::= SEQUENCE { + clusterId ClusterId, + clusterBoundingBoxShape ClusterBoundingBoxShape, + clusterCardinalitySize ClusterCardinalitySize, + clusterProfiles ClusterProfiles, + ... + } +``` + + + +```asn1 +ClusterId ::= INTEGER(0..255) +``` + + + +```asn1 +ClusterBoundingBoxShape::= CHOICE { + clusterRectangle AreaRectangle, + clusterCircle AreaCircular, + clusterPolygon AreaPolygon, + ... + } +``` + + + +```asn1 +ClusterCardinalitySize ::= INTEGER {unavailable(0), onlyLeader(1)} (0..255) +``` + + + +```asn1 +ClusterProfiles ::= BIT STRING { + pedestrian(0), + bicyclist(1), + motorcyclist(2), + animal(3) + } (SIZE(4)) +``` + + + +```asn1 +VruClusterOperationContainer ::= SEQUENCE { + clusterJoinInfo ClusterJoinInfo OPTIONAL, + clusterLeaveInfo ClusterLeaveInfo OPTIONAL, + clusterBreakupInfo ClusterBreakupInfo OPTIONAL, + clusterIdChangeTimeInfo VruClusterOpTimestamp OPTIONAL, + ... + } +``` + + + +```asn1 +VruClusterOpTimestamp ::= INTEGER (1..255) +``` + + + +```asn1 +ClusterJoinInfo ::= SEQUENCE { + clusterId ClusterId, + joinTime VruClusterOpTimestamp, + ... + } +``` + + + +```asn1 +ClusterLeaveInfo ::= SEQUENCE { + clusterId ClusterId, + clusterLeaveReason ClusterLeaveReason, + ... + } +``` + + + +```asn1 +ClusterBreakupInfo ::= SEQUENCE { + clusterBreakupReason ClusterBreakupReason, + breakupTime VruClusterOpTimestamp, + ... + } +``` + + + +```asn1 +ClusterLeaveReason ::= ENUMERATED { + notProvided (0), + clusterLeaderLost (1), + clusterDisbandedByLeader (2), + outOfClusterBoundingBox (3), + outOfClusterSpeedRange (4), + joiningAnotherCluster (5), + cancelledJoin (6), + failedJoin (7), + safetyCondition (8), + max(15) + } +``` + + + +```asn1 +ClusterBreakupReason ::= ENUMERATED { + notProvided (0), + clusteringPurposeCompleted (1), + leaderMovedOutOfClusterBoundingBox (2), + joiningAnotherCluster (3), + enteringLowRiskAreaBasedOnMaps (4), + receptionOfCpmContainingCluster (5), + max(15) + } +``` + + + +```asn1 +VruMotionPredictionContainer ::= SEQUENCE { + pathHistory PathHistory OPTIONAL, + pathPrediction SequenceOfVruPathPoint OPTIONAL, + safeDistance SequenceOfVruSafeDistanceIndication OPTIONAL, + trajectoryInterceptionIndication SequenceOfTrajectoryInterceptionIndication OPTIONAL, + accelerationChangeIndication AccelerationChangeIndication OPTIONAL, + headingChangeIndication HeadingChangeIndication OPTIONAL, + stabilityChangeIndication StabilityChangeIndication OPTIONAL, + ... + } +``` + + + +```asn1 +SequenceOfVruPathPoint ::= SEQUENCE OF VruPathPoint +``` + + + +```asn1 +VruPathPoint ::= SEQUENCE { + pathPosition ReferencePosition, + pathDeltaTime PathDeltaTime OPTIONAL + } +``` + + + +```asn1 +SequenceOfVruSafeDistanceIndication ::= + SEQUENCE(SIZE(1..8)) OF VruSafeDistanceIndication +``` + + + +```asn1 +VruSafeDistanceIndication ::= SEQUENCE { + subjectStation StationID OPTIONAL, + stationSafeDistanceIndication StationSafeDistanceIndication, + timeToCollision ActionDeltaTime OPTIONAL, + ... + } +``` + + + +```asn1 +StationSafeDistanceIndication ::= BOOLEAN +``` + + + +```asn1 +SequenceOfTrajectoryInterceptionIndication ::= + SEQUENCE (SIZE(1..8)) OF TrajectoryInterceptionIndication +``` + + + +```asn1 +TrajectoryInterceptionIndication ::= SEQUENCE { + subjectStation StationID OPTIONAL, + trajectoryInterceptionProbability TrajectoryInterceptionProbability, + trajectoryInterceptionConfidence TrajectoryInterceptionConfidence OPTIONAL, + ... + } +``` + + + +```asn1 +TrajectoryInterceptionProbability ::= INTEGER { zero(0), twoPercent(1), + fourPercent(2), oneHundredPercent(50), unavailable (63) } (0..63) +``` + + + +```asn1 +TrajectoryInterceptionConfidence ::= INTEGER { lessthan50percent(0), + between50and70Percent(1), between70and90Percent(2), above90Percent(3) } (0..3) +``` + + + +```asn1 +HeadingChangeIndication ::= SEQUENCE { + direction LeftOrRight, + actionDeltaTime ActionDeltaTime, + ... + } +``` + + + +```asn1 +LeftOrRight ::= ENUMERATED { left, right } +``` + + + +```asn1 +ActionDeltaTime ::= INTEGER {zero(0), hundredMs(1), twoHundredMs(2), + unavailable (127) } (0..127) +``` + + + +```asn1 +AccelerationChangeIndication ::= SEQUENCE { + accelOrDecel AccelOrDecel, + actionDeltaTime ActionDeltaTime, + ... + } +``` + + + +```asn1 +AccelOrDecel ::= ENUMERATED { accelerate, decelerate } +``` + + + +```asn1 +StabilityChangeIndication ::= SEQUENCE { + lossProbability StabilityLossProbability, + actionDeltaTime ActionDeltaTime, + ... + } +``` + + + +```asn1 +StabilityLossProbability ::= INTEGER { zero(0), twoPercent (1), + fourPercent(2), unavailable (63) } (0..63) +``` + + + diff --git a/docs/VAM-Temp-Imports.md b/docs/VAM-Temp-Imports.md new file mode 100644 index 0000000000000000000000000000000000000000..65de4698814eac8088070f9dfefdc0ee52225ef1 --- /dev/null +++ b/docs/VAM-Temp-Imports.md @@ -0,0 +1,172 @@ +# ASN.1 module VAM-Temp-Imports + OID: _{itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1) ts(103300) temp-imports(255) version1(1)}_ + +## Imports: + * **[ITS-Container](ITS-Container.md)** *{itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)}*
+ + * **[DSRC](DSRC.md)** *{iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (2)}*
+ +## Data Elements: +### BasicContainer + + + +Fields: +* stationType [**StationType**](ITS-Container.md#StationType)
+* referencePosition [**ReferencePosition**](ITS-Container.md#ReferencePosition)
+```asn1 +BasicContainer ::= SEQUENCE { + stationType StationType, + referencePosition ReferencePosition, + ... +} +``` + +### ItsPduHeader + +Fields: +* protocolVersion **INTEGER** (0..255)
+* messageID **INTEGER** { denm(1), cam(2), poi(3), spatem(4), mapem(5), ivim(6), ev-rsr(7), tistpgtransaction(8), srem(9), ssem(10), evcsn(11), saem(12), rtcmem(13), vam(14) } (0..255)
+* stationID [**StationID**](ITS-Container.md#StationID)
+```asn1 +ItsPduHeader ::= SEQUENCE { + protocolVersion INTEGER (0..255), + messageID INTEGER{ denm(1), cam(2), poi(3), spatem(4), mapem(5), ivim(6), ev-rsr(7), tistpgtransaction(8), srem(9), ssem(10), evcsn(11), saem(12), rtcmem(13), vam(14) } (0..255), + stationID StationID +} +``` + +### AreaCircular + +Fields: +* nodeCenterPoint [**OffsetPoint**](#OffsetPoint) OPTIONAL
+* radius [**Radius**](#Radius)
+```asn1 +AreaCircular ::= SEQUENCE { + nodeCenterPoint OffsetPoint OPTIONAL, + radius Radius +} +``` + +### AreaPolygon + +Fields: +* polyPointList [**PolyPointList**](#PolyPointList)
+```asn1 +AreaPolygon ::= SEQUENCE { + polyPointList PolyPointList +} +``` + +### AreaRectangle + +Fields: +* nodeCenterPoint [**OffsetPoint**](#OffsetPoint) OPTIONAL
+* semiMajorRangeLength [**SemiRangeLength**](#SemiRangeLength)
+* semiMinorRangeLength [**SemiRangeLength**](#SemiRangeLength)
+* semiMajorRangeOrientation [**WGS84AngleValue**](#WGS84AngleValue)
+* semiHeight [**SemiRangeLength**](#SemiRangeLength) OPTIONAL
+```asn1 +AreaRectangle ::= SEQUENCE { + nodeCenterPoint OffsetPoint OPTIONAL, + semiMajorRangeLength SemiRangeLength, + semiMinorRangeLength SemiRangeLength, + semiMajorRangeOrientation WGS84AngleValue, + semiHeight SemiRangeLength OPTIONAL +} +``` + +### OffsetPoint + +Fields: +* nodeOffsetPointXY [**NodeOffsetPointXY**](DSRC.md#NodeOffsetPointXY) (WITH COMPONENTS {..., node-LatLon ABSENT, regional ABSENT})
+* nodeOffsetPointZ [**NodeOffsetPointZ**](#NodeOffsetPointZ) OPTIONAL
+```asn1 +OffsetPoint ::= SEQUENCE{ + nodeOffsetPointXY NodeOffsetPointXY (WITH COMPONENTS {..., node-LatLon ABSENT, regional ABSENT}), + nodeOffsetPointZ NodeOffsetPointZ OPTIONAL +} +``` + +### NodeOffsetPointZ + +Fields: +* node-Z1 [**Offset-B10**](DSRC.md#Offset-B10)
+* node-Z2 [**Offset-B11**](DSRC.md#Offset-B11)
+* node-Z3 [**Offset-B12**](DSRC.md#Offset-B12)
+* node-Z4 [**Offset-B13**](DSRC.md#Offset-B13)
+* node-Z5 [**Offset-B14**](DSRC.md#Offset-B14)
+* node-Z6 [**Offset-B16**](DSRC.md#Offset-B16)
+```asn1 +NodeOffsetPointZ ::= CHOICE { + node-Z1 Offset-B10, + node-Z2 Offset-B11, + node-Z3 Offset-B12, + node-Z4 Offset-B13, + node-Z5 Offset-B14, + node-Z6 Offset-B16 +} +``` + +### Radius + +Values: +* **zeroPointOneMeter** (1)
+* **oneMeter** (10)
+```asn1 +Radius ::= INTEGER { + zeroPointOneMeter (1), + oneMeter (10) +} (0..10000) +``` + +### PolyPointList + +```asn1 +PolyPointList ::= SEQUENCE (SIZE(3..16, ...)) OF OffsetPoint +``` + +### SemiRangeLength + +Values: +* **zeroPointOneMeter** (1)
+* **oneMeter** (10)
+```asn1 +SemiRangeLength ::= INTEGER { + zeroPointOneMeter (1), + oneMeter (10) +} (0..10000) +``` + +### WGS84AngleValue + +Values: +* **wgs84North** (0)
+* **wgs84East** (900)
+* **wgs84South** (1800)
+* **wgs84West** (2700)
+* **unavailable** (3601)
+```asn1 +WGS84AngleValue ::= INTEGER { + wgs84North (0), + wgs84East (900), + wgs84South (1800), + wgs84West (2700), + unavailable (3601) +} (0..3601) +``` + +### StationType + +```asn1 +StationType ::= INTEGER { + unknown(0), pedestrian(1), cyclist(2), moped(3), motorcycle(4), + passengerCar(5), bus(6), lightTruck(7), heavyTruck(8), trailer(9), + specialVehicles(10), tram(11), lightVruVehicle(12), animal(13), + roadSideUnit(15) +} +(0..255) +``` + + +