Commits (73)
[submodule "cdd"]
path = cdd
url = https://forge.etsi.org/rep/ITS/asn1/cdd_ts102894_2.git
AVM-Commons {
itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103882) avmCommons (5) major-version-1 (1) minor-version-1(1)
}
DEFINITIONS AUTOMATIC TAGS ::= BEGIN -- AVM-specific common data elements
/**
* This DE represents with an unsigned interger value.
* Size: 8 bit, 1 Byte
*
*/
UInt8 ::= INTEGER (0..255)
/**
* This DE represents with a signed interger value.
* Size: 16 bit, 2 Bytes
*
*/
Int16 ::= INTEGER (-32768..32767)
/**
* This DE represents with an unsigned interger value.
* Size: 16 bit, 2 Bytes
*
*/
UInt16 ::= INTEGER (0..65535)
/**
* This DE represents with an unsigned interger value.
* Size: 32 bit, 4 Bytes
*
*/
UInt32 ::= INTEGER (0..4294967295)
/**
* This DE represents with an unsigned interger value.
* Size: 64 bit, 8 Bytes
*
*/
UInt64 ::= INTEGER(0..18446744073709551615)
/**
* This DE represents a rolling counter
* The value shall be set to 0 when starting an application:
* This DE is incremented by 1 for each consecutive message. In case of overflow due to the size limit it restarts at 0.
*
*/
RollingCounter ::= UInt16
/**
* This DE represents a waypoint index
* The value shall be set according to the sequence of a path snippet or a complete driving trajectory.
* In case of overflow due to the size limit it restarts at 0.
*
*/
WaypointIndex ::= UInt16
/**
* This DE represents a 2 byte unspecified
* The value shall be set due to specific requirements between a RO sytem and vehicles of a dedicated OEM.
*
*/
ProprietaryExtensionField ::= UInt16
/**
* This type represents the container of data elements to indicate the vehicle's overall position in a cartesian coordinate system.
* The location is projected to the ground, elevation is not considered .
*
* It includes the following components:
*
* @field x: The position in x direction
*
* @field y: The position in x direction
*
* @field psi: The orientation of the vehicle's driving direction. x (North) axis of the reference coordinate system.
*
*/
Pose ::= SEQUENCE {
x Centimetre,
y Centimetre,
psi Psi
}
/**
* This DE represents the vehicle's Counter-clockwise orientation in a cartesian coordinate system
*
* The value shall be set to:
* - `n` (`n >= 0` and `n <= 62831`) to indicate positive orientation equal to or less than n, and greater than (n-1),
* - `62832` if the radian is out of range, i.e. greater than 524287 cm,
* - `-62833` when the data is unavailable. Remark: 2* Pi = 6.28318
*
* @unit: 0.0001 radian
*/
Psi ::= INTEGER {
xDirection (0),
outOfRange (62832),
unavailable (62833)
}
(0..62833)
/**
* This DE represents a distance in cm
*
* The value shall be set to:
* - `n` (`n > -524287` and `n <= 0`) to indicate negative distance equal to or less than n x 1 cm, and greater than (n-1) x 1 cm,
* - `n` (`n > 0` and `n < 524287`) to indicate positive distance equal to or less than n x 1 cm, and greater than (n-1) x 1 cm,
* - `-524287` if the distance is out of negative range
* - `524287` if the distance is out of positive range
* - `-524288` when the data is unavailable.
*
* @unit: 1 centimeter
*/
Centimetre ::= INTEGER {
negativeOutOfRange (-524287),
positiveOutOfRange (524287),
unavailable (-524288)
}
(-524288..524287)
/**
* This DE describes vehicle turning curve with the following information:
* ```
* Value = 1 / Radius * 100000
* ```
* wherein radius is the vehicle turning curve radius in metres.
*
* Positive values indicate a turning curve to the left hand side of the driver.
* It corresponds to the vehicle coordinate system as defined in ISO 8855 [21].
*
* The value shall be set to:
* - `-32767` for values smaller than -32767,
* - `n` (`n > -32767` and `n < 0`) for negative values equal to or less than `n`, and greater than `(n-1)`,
* - `0` when the vehicle is moving straight,
* - `n` (`n > 0` and `n < 32767`) for positive values equal to or less than `n`, and greater than `(n-1)`,
* - `32767`, for values greater than 1021,
* - `-32768`, if the information is not available.
*
* @note: The present DE is limited to vehicle types as defined in ISO 8855 [21].
*
* @unit: 1 over 100 000 metres
*/
HighResCurvature ::= INTEGER {
outOfRangeNegative (-32767),
straight (0),
outOfRangePositive (32767),
unavailable (-32768)
}
(-32768..32767)
/**
* This DE represents the rotational speed of a steering wheel movement
*
* The value shall be set to:
* - `-32 766` to indicate that the rotational speed is equal to or greater than 3.2766 [rad/s] to the right,
* - `n` (`n > -32 766` and `n <= 0`) to indicate that the rotation is clockwise (i.e. to the right) and is equal to or less than n x 0,01 rad/s, and greater than (n-1) x 0,01 rad/s,
* - `n` (`n > 0` and `n < 32 766`) to indicate that the rotation is anti-clockwise (i.e. to the left) and is equal to or less than n x 0,01 rad/s, and greater than (n-1) x 0,01 rad/s,
* - `32 766` to indicate that the rotational speed is greater than 3.2765 rad/second to the left,
* - `32 767` to indicate that the information is not available.
*
* @unit: 0.0001 [rad/s].
*/
RadPerSecond ::= INTEGER {
negativeOutOfRange (-32766),
positiveOutOfRange (32766),
unavailable (-32767)
}
(-32767..32766)
/**
* This DE represents a signed time value, size 2 Bytes.
*
* @unit: 0,001 s (1 ms)
*/
Millisecond16 ::= Int16
/**
* Data element GearEnum optionally describes the desired or actual driving direction of the vehicle in alignment with the signed value of the vehicle speed .
* It offers the following signal values:
*
* - 0 - `park` - P: Vehicle engages P ,
* - 1 - `backwards` - R: Vehicle drives backwards ,
* - 2 - `neutral` - N: Vehicle engages neutral gear,
* - 3 - `forwards` - D: Vehicle drives forwards,
* - 4 - `unknown` - unknown gear status. Not used for commanding a vehicle gear position.
*
*/
GearEnum ::= ENUMERATED {
park(0),
backwards(1),
neutral(2),
forwards(3),
unknown (4)
}
/**
* Data element directionIndicatorEnum describes the use of vehicle direction indicator system during VMC .
* It offers the following signal values:
*
* - 0 - `off` - The vehicle does not flash indicator lights at this stage. ,
* - 1 - `right` - Flash right indicator lights. ,
* - 2 - `left` - Flash left indicator lights. ,
* - 3 - `both` - Flash right and left indicator lights. ,
* - 4 - `unknown` - Direction indicator request is unknown. (Do not use for drive command).
*/
DirectionIndicatorEnum ::= ENUMERATED {
off(0),
right(1),
left(2),
both(3),
unknown(4)
}
/**
* Data element MotorSystemEnum optionally describes the desired or system stae of the vehicle's propulsion motor (engine).
* It offers the following signal values:
*
* - 0 - `off` - Propulsion motor off
* - 1 - `on` - Propulsion motor on
* - 2 - `unknown` - The propulsion motor state is unknown.
*
*/
MotorSystemEnum ::= ENUMERATED {
off(0),
on(1),
unknown(2)
}
/**
* Data element VidVehicleStateEnum describes the current state in the vehicle identification process .
* It offers the following signal values:
*
* - 0 - `undefined` - Default value ,
* - 1 - `ready` - Vehicle is ready to get flashing code ,
* - 2 - `lightFlashingInProgress` - Vehicle flashing is in progress,
* - 3 - `lightFlashingCompleted` - Flashing is finished,
* - 4 - `lightFlashingFailed` - This indicates that the vehicle can't flash because of vehicle error,
* - 5 - `authorized` - Vehicle identification was successful and vehicle has switched its state.
*
*/
VidVehicleStateEnum ::= ENUMERATED {
undefined(0),
ready(1),
lightFlashingInProgress(2),
lightFlashingCompleted(3),
lightFlashingFailed(4),
authorized(5)
}
/**
* Data element SafetyViolationsEnum reports the outcome of a specific safety cycle.
* As a result a violation leads to stopping the vehicle.
*
* It offers the following signal values:
*
* - 0 - `noViolation` - Default value ,
* - 1 - `noDrivingPermissionReceived` - Vehicle has not received a driving permission ,
* - 2 - `lastDrivingPermissionTooOld` - The driving permission is outdated,
* - 3 - `crcViolationClockSyncRequest` - The time synchronization request has an invalid checksum,
* - 4 - `crcViolationDrivingPermission` - The driving permission has an invalid checksum,
* - 5 - `expirationTimeViolation` - the allowed time is expired.
* - 6 - `drivingDirectionMismatch` - wrong driving direction is indcated, plausibility error with speed signal,
* - 7 - `velocityViolation` - The speed value is out of the allowed range ,
* - 8 - `curvatureMinViolation` - The allowed minimal curvature is out of range ,
* - 9 - `curvatureMaxViolation` - The allowed maximal curvature is out of range ,
* - 10 - `expirationTimeTooHigh` - The experiation time is out of the allowed range,
* - 11 - `monitoring` - Violation monitoring is ongoing.
*/
SafetyViolationsEnum ::= ENUMERATED {
noViolation(0),
noDrivingPermissionReceived(1),
lastDrivingPermissionTooOld(2),
crcViolationClockSyncRequest(3),
crcViolationDrivingPermission(4),
expirationTimeViolation(5),
drivingDirectionMismatch(6),
velocityViolation(7),
curvatureMinViolation(8),
curvatureMaxViolation(9),
expirationTimeTooHigh(10),
monitoring(11),
...
}
/**
* This type represents a container of system management data, i.e. identification labels.
*
* It shall include the following components:
*
* @field sessionID: It is a unique identifier that is known by the infrastructure and
* the vehicle side at the same time. It is valid for a complete parking/marshalling task.
*
* @field missionID: It is a unique identifier that is known by the infrastructure and
* the vehicle side at the same time. It identifies a subtask within a sessionID.
*
* @field vehicleID: It is a unique identifier that is known by the infrastructure and vehicle The vehicle needs to know its own vehicleID.
* This can serve as a safety check for the RO regarding vehicle parameters, as it receives them from the vehicle backend,
* and it can then verify that it is communicating to the right vehicle through MVM (as the vehicle sends its vehicleID there).
*
* @field facilityID: It is a unique identifier that describes the infrastructure in which the vehicle operates.
* It is used for documentation purposes. The vehicle does not respond to this data element
*
*/
SystemManagementData ::= SEQUENCE {
sessionID SessionMissionID OPTIONAL,
missionID SessionMissionID OPTIONAL,
vehicleID VehicleID OPTIONAL,
facilityID FacilityID OPTIONAL
}
/**
* This DE represents a the identification of an driving session or mission
* The value be freely selected as a string of 17 to 32 characters.
*
*/
SessionMissionID ::= IA5String (SIZE(17..32))
/**
* This DE serves for the identification of the specified vehicle
* The value be freely selected as a string of 1 to 17 characters.
*
*/
VehicleID ::= IA5String (SIZE(1..17))
/**
* This DE serves for the identification of infrastructure facility
* The value be freely selected as a string of 1 to 32 characters.
*
*/
FacilityID ::= IA5String (SIZE(1..32))
/**
* This DE represents a detailed description.
* It can serve to generate a more extensive, user-friendly description e.g. of an error.
* The value be freely selected as a string of 1 to 200 characters.
*
*/
Description ::= IA5String (SIZE(1..200))
/**
* This type represents the container of data elements supporting E2E protection mechanisms for the Parking Control messages
* It complies with AUTOSAR Profile 4 e2e protection. It protects the body of the message and starts in a byte aligned position in the BTP stream.
*
* It includes the following components:
*
* @field length: represents the overall payload of the body container in the Park Control message. Starting point is this data element.
*
* @field rollingCounter: This is a recurring identifier of a Park control message. This identifier is incremented by 1 for the consecutive message.
* In case of overflow due to the size limit it restarts at 0.
*
* @field dataID: The data element is usable to identify the originating system (RO or vehicle). It is to the best effort unique within the network ;
* It is negotiated between the RO and the vehicle OEM in case they want to identify each other with this signal
*
* @field crc32: The CRC is calculated in byte limits of the body container, considering the data element length. The signal crc32 itself is excluded from the payload.
*
*/
AvmE2EProtection ::= SEQUENCE {
length UInt16,
rollingCounter UInt16,
dataID UInt32,
crc32 UInt32
}
END
Copyright 2022 ETSI
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
MIM-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103882) mim (6) major-version-1 (1) minor-version-1 (1)
}
DEFINITIONS AUTOMATIC TAGS ::= BEGIN -- Marshalling Infrastucture Message
IMPORTS
RollingCounter, Centimetre, HighResCurvature, GearEnum, DirectionIndicatorEnum, MotorSystemEnum, WaypointIndex, Pose, AvmE2EProtection, ProprietaryExtensionField, SystemManagementData, UInt8, UInt16, UInt32, UInt64
FROM AVM-Commons {
itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103882) avpCommons (5) major-version-1 (1) minor-version-1(1)
} -- WITH SUCCESSORS
ItsPduHeader, TimestampIts, LongitudinalAccelerationValue, VelocityComponentValue, CartesianAngleValue
FROM ETSI-ITS-CDD {
itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) 102894 cdd (2) major-version-4 (4) minor-version-1 (1)
} -- WITH SUCCESSORS
;
/**
* This type represents the MIM PDU.
*
* It shall include the following components:
*
* @field header: the header of the MIM PDU.
*
* @field e2eProtection: A mandatory container for E2E Protection by Autosar Profile 4
*
* @field mims: a sequence of Mim containers which addresses min 1 and max. 32 vehicles .
*/
MIM ::= SEQUENCE {
header ItsPduHeader,
e2eProtection AvmE2EProtection,
mims SEQUENCE (SIZE(1..32)) OF Mim
}
/**
* This type represents the Mim Container.
*
* It shall include the following components:
*
* @field mimDataControlField: a container of specific Control Data for MIM.
*
* @field systemManagementData: a container of identification data
*
* @field vehicleIdentification: It allows the selection of the mechanism for visual vehicle identification.
*
* @field drivingPermission: The driving permission container offers a safety concept to allow or deny vehicle motion.
* It defines the bounds within which the vehicle is allowed to drive.
*
* @field safetyTimeSyncRequest: The Remote Vehicle Operation needs to be able to continuously
* determine the current time in which the Subject Vehicle operates.
* This container supports functional safety concepts.
*
* @field driveCommand: It addresses the specific vehicle and determines the actual state
* request to the vehicle, especially the active drive request for the overall VCM operation.
*
* @field detectedVehiclePose: The RO permanently senses the vehicle's position
* in a proprietary two-dimensional coordinate system (X and Y).
*
* @field controlInterface: This container offers different control methods for vehicle motion control VMC as a choice between .
*
*/
Mim ::= SEQUENCE {
mimDataControlField MIMDataControlField OPTIONAL,
systemManagementData SystemManagementData OPTIONAL,
vehicleIdentification VidRequest OPTIONAL,
drivingPermission DrivingPermission OPTIONAL,
safetyTimeSyncRequest SafetyTimeSyncRequest OPTIONAL,
driveCommand DriveCommand OPTIONAL,
detectedVehiclePose DetectedVehiclePose OPTIONAL,
controlInterface ControlInterface OPTIONAL,
...
}
/**
* This type represents a container of specific Control Data for MIM.
*
* It shall include the following components:
*
* @field checksum: the optional checksum of a single mim vehicle container.
*
* @field mimGenerationTime: the time at which the vehicle container was fully assembled.
*
* @field rollingCounterFromMvm: It serves as a mirror of the rolling counter that was
* received with the latest MVM of the corresponding vehicle.
*
* @field proprietaryExtensionField: This data element defines optionally 2 bytes are used to carry
* specific information or request from the RO system to a specific OEM vehicle.
*/
MIMDataControlField ::= SEQUENCE {
checksum UInt32 OPTIONAL,
mimGenerationTime TimestampIts OPTIONAL,
rollingCounterFromMvm SEQUENCE (SIZE(0..10)) OF RollingCounter,
proprietaryExtensionField ProprietaryExtensionField OPTIONAL,
...
}
/**
* This type represents a selection of methods for vehicle identification during standstill.
*
* It shall include the following components:
*
* @field blinking : At current stage only the "blinking lights" method is selectable for vehicle identification
*
*/
VidRequest ::= CHOICE {
blinking Blinking,
...
}
/**
* This type represents the container with data elements for the blinking vehicle identification method.
*
* It shall include the following components:
*
* @field vidRoPublicKey : A 64-bit public key is transmitted from the RO to the vehicle
* in order to derive the vehicle identification secret.
*
* @field codeLength : The codelength data element sends a value that indicates how many bits (8 - 20)
* from the seed shall be used for generating the blinking pattern.
*
* @field currentState : This data element mirrors the current authorization/identification
* request status from the perspective of the RO system.
*
*/
Blinking ::= SEQUENCE {
vidRoPublicKey UInt64,
codeLength UInt8,
blinkingCommand VidRequestCommandEnum
}
/**
* This type represents the container with data elements for the vehicle obtaining or denying a permission to drive.
*
* The driving permission concept offers an expiration time for driving permission and the boundary values of longitudinal and lateral movement of the subject vehicle.
*
* It shall include the following components:
*
* @field expirationTime : At this time the vehicle shall start braking, unless a new and updated expirationTime time stamp was sent.
*
* @field velocityMax : During the allowed expiration time the vehicle shall not exceed the velocityMax speed value in forward as well in reverse driving conditions.
*
* @field curvatureMin : During the allowed expiration time the vehicle steering system shall not exceed the limits of interval given by data element curvatureMin.
*
* @field curvatureMax : During the allowed expiration time the vehicle steering system shall not exceed the limits of interval given by data element curvatureMax.
*
* @field checksum : The driving permission needs to be protected by a dedicated safety checksum.
*
*/
DrivingPermission ::= SEQUENCE {
expirationTime TimestampIts,
velocityMax VelocityComponentValue,
curvatureMin HighResCurvature,
curvatureMax HighResCurvature,
checksum UInt32
}
/**
* This type represents the container with data elements for requesting a safety time synchronization.
*
* It shall include the following components:
*
* @field challenge : The Remote Vehicle Operation shall use this challenge to relate the response to this request. This challenge is chosen by the RO in accordance with the safety requirements.
*
* @field checksum : This safety time synchronization needs to be protected by a dedicated safety checksum.
*
*/
SafetyTimeSyncRequest ::= SEQUENCE {
challenge UInt16,
checksum UInt32
}
/**
* This type represents the container with data elements for general drive commands.
*
* It addresses the specific vehicle and determines the actual state request to the vehicle, especially the active drive request for the VCM operation.
*
* It shall include the following components:
*
* @field driveCommandAction : The main drive state request, inf the loop of initialize and terminate.
*
* @field terminateReason : If action equals terminate, indicates whether a terminate is requested because the vehicle reached the destination or because of an error.
*
* @field gearRequest : It describes the desired driving direction of the vehicle in alignment with the signed value of the vehicle speed requests.
*
* @field directionIndicatorRequest : It signalizes the currently requested direction indicator.
*
* @field parkingBrakeRequest : It signalizes the currently requested actuation of the vehicle's electric parking brake.
*
* @field motorSystemRequest : It signalizes the currently requested actuation of the vehicle's propulsion motor.
*
* @field emergencyStopRequest : This enables as part of an optional safety concept to apply a vehicle specific emergency stop manoeuvre at any time.
*
* @field interlockRequest : This data element enables an optional safety concept to apply a vehicle interlock.
*
* @field hornRequest : This data element enables an optional safety concept. It commands the vehicle to sound the horn in different formats in order to warn pedestrians or animals.
*
*/
DriveCommand ::= SEQUENCE {
driveCommandAction DriveCommandActionEnum,
terminateReason TerminateReasonEnum,
gearRequest GearEnum OPTIONAL,
directionIndicatorRequest DirectionIndicatorEnum OPTIONAL,
parkingBrakeRequest ParkingBrakeRequestEnum OPTIONAL,
motorSystemRequest MotorSystemEnum OPTIONAL,
emergencyStopRequest EmergencyStopEnum OPTIONAL,
interlockRequest InterlockEnum OPTIONAL,
hornRequest VehicleHornRequestEnum OPTIONAL
}
/**
* This type represents the container with a report of the vehicle's localization.
*
* The RO permanently senses the vehicle's position in a relative two-dimensional coordinate system (X and Y).
*
* It shall include the following components:
*
* @field detectedPose : This field implements the sequence of data elements for the vehicle' positioning. The field indicates an agreed reference point of the vehicle,
* e.g. the middle of the rear axle.
*
* @field poseMeasurementTime : The data element signals an absolute and synchronized time stamp when the measurement was taken.
*
*/
DetectedVehiclePose ::= SEQUENCE {
detectedPose Pose,
poseMeasurementTime TimestampIts
}
/**
* This type selects the container that is used for vehicle motion control.
*
* With an extension marker additional choices for further control methods are applicable in later versions of the protocol.
*
* It shall include the following components:
*
* @field pathControl : The pathSnippet control method transfers a sequence of wayPoint containers from the infrastructure into the vehicle.
*
* @field trajectoryControl : A vehicle trajectory consists of a vector of ControlTrajectory elements and StateTrajectory elements. It also contains a reference time stamp and an optional drive direction element.
*
*/
ControlInterface ::= CHOICE {
pathControl PathControl,
trajectoryControl TrajectoryControl,
...
}
/**
* The type PathControl sequeence represents the container with Path Snippet elements.
*
* It shall include the following components:
*
* @field pathSnippet: a sequence of up to 200 way points
*
* @field clearedDistanceOnPath: the RO can tell the vehicle to stop on the known PathSnippet without sending a new PathSnippet.
*
* @field situationalVelocityLimit: the RO can tell the vehicle to temporarily drive slower without sending a new PathSnippet.
*/
PathControl ::= SEQUENCE {
pathSnippet PathSnippet OPTIONAL,
clearedDistanceOnPath Centimetre,
situationalVelocityLimit VelocityComponentValue OPTIONAL
}
/**
* The type PathSnippet represents the container with Path Snippet elements.
*
* It shall contain up to 200 way points of type @ref WayPoint
*
*/
PathSnippet ::= SEQUENCE (SIZE(0..200)) OF WayPoint
/**
* This type represents the container with elements describing a way point,
*
* It shall include the following components:
*
* @field index: It is used to build an array of consecutive way points.
*
* @field wayPointPose: This field implements the positioning request to the vehicle. The waypoint indicates an agreed reference point of the vehicle,
* e.g. the middle of the rear axle.
*
* @field velocity: This data element represents the target speed of the vehicle in that specific way point.
* It is a signed velocity value compliant with the drive direction request. Positive: drive forwards / Negative: reverse.
*
* @field curvature: This data element represents the target curvature of the vehicle in that specific way point.
*
* @field pitchAngle: For better velocity control, it should be possible to specify the inclination (or vehicle pitch angle) at specific locations.
*
*/
WayPoint ::= SEQUENCE {
index WaypointIndex OPTIONAL,
wayPointPose Pose,
velocity VelocityComponentValue,
curvature HighResCurvature,
pitchAngle CartesianAngleValue OPTIONAL
}
/**
* The type TrajectoryControl represents the container with elements for the trajectory control method.
*
* It shall include the following components:
*
* @field timeReference: The reference time indicates the absolute time given in Vehicle Functional Clock
* at which the first element of the @ref ControlTrajectory vector and @ref StateTrajectory vector is expected to be executed.
*
* @field driveDirection: The data element describes the desired driving direction of the vehicle in alignment with the signed value of the vehicle acceleration requests.
*
* @field controlTrajectory: This consists of a sequence of @ref ControlPoint elements with a maximum size of 50.
*
* @field stateTrajectory: The elements in the optional field @ref StateTrajectory vector are considered as odometry target values.
* These consist of a sequence of @ref StatePoint elements with a maximum size of 50.
*
*/
TrajectoryControl ::= SEQUENCE {
timeReference TimestampIts,
driveDirection DriveDirectionEnum OPTIONAL,
controlTrajectory ControlTrajectory,
stateTrajectory StateTrajectory OPTIONAL
}
ControlTrajectory ::= SEQUENCE (SIZE(0..50)) OF ControlPoint
/**
* A ControlPoint container carries a set of ControlPoint elements,
*
* It shall include the following components:
*
* @field curvature: The data element contains the target curvature that is requested in the according control Poiint
*
* @field controlParameter: This field selects the method how to represent a @ref ControlPoint container .
*
*/
ControlPoint ::= SEQUENCE {
curvature HighResCurvature,
controlParameter ControlParameter
}
/**
* The ControlParameter container offers two options to represent the second parameter within a @ref ControlPoint,
*
* It shall include the following components:
*
* @field controlAcceleration: The data element represents the vehicles's target acceleration in the according control point.
*
* @field controlVelocity: Theis field is selected when the according @ref ControlPoint uses speed values instead of acceleration.
*
*/
ControlParameter ::= CHOICE {
controlAcceleration ControlAcceleration,
controlVelocity ControlVelocity
}
/**
* The @ref ControlAcceleration data element is a single data element when choosing the @ref ControlParameter controlAcceleration
* It deals with a signed acceleration value.
*
*/
ControlAcceleration ::= LongitudinalAccelerationValue
/**
* The ControlVelocity container consists of 2 data elements belonging to the according @ref ControlPoint,
*
* It includes the following components:
*
* @field velocity: The data element represents the target speed of the vehicle. It is a signed velocity value.
* It deals with a signed velocity value.
* - Positive: drive forwards
* - Negative: driving reverse.
*
* @field distanceToStop: The data element represents the unsigned maximum distance that the vehicle can drive before a standstill.
*
*/
ControlVelocity ::= SEQUENCE {
velocity VelocityComponentValue,
distanceToStop Centimetre OPTIONAL
}
/**
* @field StateTrajectory : a vector, considered as odometry target values. It consist of a sequence of statePoint containers with a maximum size of 50.
*
*/
StateTrajectory ::= SEQUENCE (SIZE(0..50)) OF StatePoint
/**
* A StatePoint container carries a set of SatePoint elements,
*
* It shall include the following components:
*
* @field statePose: This field implements the sequence of data elements for the vehicle's positioning in the according statePoint.
* A point indicates an agreed reference point of the vehicle,e.g. the middle of the rear axle.
*
* @field velocity: The data element represents the target speed of the vehicle in the according statePoint. It is a signed velocity value.
*
*/
StatePoint ::= SEQUENCE {
statePose Pose,
velocity VelocityComponentValue
}
-- *************** MIM-SPECIFIC DATA DICTONARY , enumerated signal values ************************************
/**
* Data element DriveCommandActionEnum describes the current state in the vehicle identification process .
* It offers the following signal values:
*
* - 0 - `sleep` - The vehicle is commanded to go into sleep mode for low power consumption
* - 1 - `initialize` - The vehicle is awake and remains in standstill. It shall initialize and prepare for a driving job, including a sequence of power-on the engine system and the lights,
* - 2 - `wait` - The vehicle shall wait in marshalling capable state,
* - 3 - `drive` - The vehicle is commanded to actively drive and follow the according control commands. Standstill and pause situations are potentially included in this stage,
* - 4 - `terminate` - The vehicle shall disable the according control interface. After brining the vehicle to a safe standstill state it shuts down as soon as possible.
*/
DriveCommandActionEnum ::= ENUMERATED {
sleep(0),
initialize(1),
wait(2),
drive(3),
terminate(4)
}
/**
* Data element TerminateReasonEnum describes verbally the rational why to terminate the VMC process .
* It offers the following signal values:
*
* - 0 - `proceed` - Everything is okay. Proceed, do not terminate,
* - 1 - `destinationReached` - Vehicle has reached its destinations,
* - 2 - `infrastructureError` - Error in infrastructure detected,
* - 3 - `vehicleError` - Vehicle has sent an error code,
* - 4 - `backend` - Error in backend,
* - 5 - `vehicleIdentificationError` - Either a wrong or no code was detected. Even with a crash of the camera, there is an error.
*/
TerminateReasonEnum ::= ENUMERATED {
proceed(0),
destinationReached(1),
infrastructureError(2),
vehicleError(3),
backend(4),
vehicleIdentificationError(5)
}
/**
* Data element ParkingBrakeRequestEnum describes the status of the EmergencyStop Request during VMC .
* It offers the following signal values:
*
* - 0 - `disengage` - The vehicle shall disengage the electric parking brake.
* - 1 - `engage` - The vehicle shall activate the electric parking brake.
*/
ParkingBrakeRequestEnum ::= ENUMERATED {
disengage(0),
engage(1)
}
/**
* Data element EmergencyStopEnum describes the status of the EmergencyStop Request during VMC .
* It offers the following signal values:
*
* - 0 - `inactive` - The vehicle shall not use EmergencyStop at this stage. ,
* - 1 - `precharge` - The vehicle brake system shall stay in standby (brake prefill) and wait for an active command. ,
* - 2 - `active` - The vehicle shall initiate an emergency stop using the maximum possible deceleration. ,
* - 3 - `tempError` - Maturing Failures - Vehicle shall decellerate and hold, it is waiting for the failure to clear or mature. ,
* - 4 - `suspend` - Command for critical failures (not recoverable) in RO system – The vehicle shall decelerate and secure.
*/
EmergencyStopEnum ::= ENUMERATED {
inactive(0),
precharge(1),
active(2),
tempError(3),
suspend(4)
}
/**
* Data element InterlockEnum describes the status of vehicle interlock system during VMC .
* It offers the following signal values:
*
* - 0 - `none` - The vehicle shall not use Interlock at this stage,
* - 1 - `zonalInterlock` - Zonal Interlock is specific to the factory use case,
* - 2 - `globalStop` - Command for global stop - external operator intervention is required.
*/
InterlockEnum ::= ENUMERATED {
none(0),
zonalInterlock(1),
globalStop(2)
}
/**
* Data element VehicleHornRequestEnum describes the use of vehicle alarm horn during VMC .
* It offers the following signal values:
*
* - 0 - `none` - The vehicle does not sound a horn at this stage. ,
* - 1 - `singleHorn` - The vehicle applies a single horn for alerting surroundings when marshalling of vehicle is starting. ,
* - 2 - `doubleHorn` - For notifying pedestrians who pose obstacles to the vehicle marshalling task. ,
* - 3 - `holdHorn` - In event of ground staff intervention is needed for the vehicle.
*/
VehicleHornRequestEnum ::= ENUMERATED {
none(0),
singleHorn(1),
doubleHorn(2),
holdHorn(3)
}
/**
* Data element VidRequestCommandEnum describes the vehicle identification request.
* It offers the following signal values:
*
* - 0 - `generateNewCode` - A new safe vehicle identification cycle was started. There is no intent for flashing in this cycle.
* - 1 - `generateNewCodeAndPrepareForFlashing` - A new safe vehicle identification cycle was started. Flashing will be required in this cycle.
* - 2 - `flashing` - The infrastructure is prepared and waiting for the Subject Vehicle to flash the code. ,
* - 3 - `successful` - The Subject Vehicle was recognized correctly and the identification is completed. ,
*/
VidRequestCommandEnum ::= ENUMERATED {
generateNewCode(0),
generateNewCodeAndPrepareForFlashing(1),
flashing(2),
successful(3)
}
/**
* Data element DriveDirectionEnum describes the request of the vehicle drive direction.
* This must be in line with the signed vehicle speed request .
* It offers the following signal values:
*
* - 0 - `forwards` - D: Vehicle shall drive forwards. ,
* - 1 - `backwards` - R: Vehicle shall drive backwards.
*/
DriveDirectionEnum ::= ENUMERATED {
forwards(0),
backwards(1)
}
END
\ No newline at end of file
MVM-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103882) mvm (4) major-version-1 (1) minor-version-1(1)
}
DEFINITIONS AUTOMATIC TAGS ::= BEGIN -- Marshalling Vehicle Message
IMPORTS
RollingCounter, ProprietaryExtensionField, GearEnum, DirectionIndicatorEnum, MotorSystemEnum, Centimetre, RadPerSecond, HighResCurvature, WaypointIndex, Pose, SystemManagementData, Description, AvmE2EProtection, VidVehicleStateEnum , UInt8, UInt16, UInt32, UInt64, Millisecond16, SafetyViolationsEnum
FROM AVM-Commons {
itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103882) avpCommons (5) major-version-1 (1) minor-version-1(1)
} -- WITH SUCCESSORS
ItsPduHeader, TimestampIts, VehicleMass, VelocityComponentValue
FROM ETSI-ITS-CDD {
itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) 102894 cdd (2) major-version-4 (4) minor-version-1 (1)
} -- WITH SUCCESSORS
;
/**
* This type represents the MVM PDU.
*
* It shall include the following components:
*
* @field header: The header of the MVM PDU.
*
* @field e2eProtection: A mandatory container for E2E Protection by Autosar Profile 4.
*
* @field mvm: The payload of the MVM PDU.
*/
MVM ::= SEQUENCE {
header ItsPduHeader,
e2eProtection AvmE2EProtection,
mvm Mvm
}
/**
* This type represents the optional container added to the MVM message mainly as a surrogate for missing static vehicle data that RO will possibly need.
*
* It includes the following components:
*
* @field mvmDataControlField: It contains specific Control Data for @ref MVM
*
* @field systemManagementData: It contains system management data, i.e. identification labels
*
* @field vehicleState: Relevant vehicle state information.
*
* @field vidResponse: Represents the current vehicle identification status.
*
* @field safetyTimeSyncResponse: Represents a functional safety time related container.
*
* @field safeVehicleTypeConfirmation: Represents a functional safety related container.
*
* @field vehicleError: Error information. Depending on the given error, the infrastructure either tries to resolve the issue or aborts the mission.
*
* @field vehicleSafetyFeedback: Represents relevant safety information from vehicle.
*
* @field vehicleProperties: Represents vehicle-specific data elements as feedback from vehicle to external system.
*
* @field oemSpecific: Represents an OEM specific 16 bit field for special purposes.
*/
Mvm ::= SEQUENCE {
mvmDataControlField MVMDataControlField OPTIONAL,
systemManagementData SystemManagementData OPTIONAL,
vehicleState VehicleState OPTIONAL,
vidResponse VidResponse OPTIONAL,
safetyTimeSyncResponse SafetyTimeSyncResponse OPTIONAL,
safeVehicleTypeConfirmation SafeVehicleTypeConfirmation OPTIONAL,
vehicleError VehicleError OPTIONAL,
vehicleSafetyFeedback VehicleSafetyFeedback OPTIONAL,
vehicleProperties VehicleProperties OPTIONAL,
...
}
/**
* This type represents a container of specific Control Data for @ref MVM.
*
* It shall include the following components:
*
* @field mvmGenerationTime: the time at which the mvm container was fully assembled.
*
* @field rollingCounterFromMim: It serves as a mirror of the rolling counter that was
* received with the latest MIM of the corresponding vehicle.
*
* @field proprietaryExtensionField: This data element defines optionally 2 bytes are used to carry
* specific information or request from a specific OEM vehicle to the RO system .
*/
MVMDataControlField ::= SEQUENCE {
mvmGenerationTime TimestampIts OPTIONAL,
rollingCounterFromMim SEQUENCE (SIZE(0..10)) OF RollingCounter,
proprietaryExtensionField ProprietaryExtensionField OPTIONAL,
...
}
/**
* This type represents the container theat carries signals about the actual status of the vehicle's condition with reference to the driving task. This return signals from the vehicle is usable in the RO system for correction and refinement of the vehicle motion control VMC.
*
* It includes the following components:
*
* @field vehicleStateGenerationTime: Checks on the data freshness on receive side.
*
* @field operationMode: The current operation mode or state of the vehicle.
*
* @field gearState: Direction in which the vehicle is currently driving or about to drive.
*
* @field directionIndicatorState: State of vehicle blinking and direction indication
*
* @field parkingBrakeState: Status of the vehicle's electric parking brake system.
*
* @field motorSystemState: State of vehicle's propulsion motor system
*
* @field currentVelocity: Current vehicle velocity. Negative when driving backwards.
*
* @field currentCurvature: Current vehicle curvature.
*
* @field secureStandstill: True if the vehicle is currently in secure standstill (i.e. standstill and secured against rolling, even when vehicle is powered down and even on ramps).
*
* @field idxLastWayPoint: Index of last WayPoint that has been received from infrastucture. 0 if not applicable.
*
* @field localizedPose: The current vehicle pose estimated by the vehicle. (Usually close to the pose estimated by the RO, prediction by the vehicle)
*/
VehicleState ::= SEQUENCE {
vehicleStateGenerationTime TimestampIts OPTIONAL,
operationMode OperationModeEnum,
gearState GearEnum,
directionIndicatorState DirectionIndicatorEnum,
parkingBrakeState ParkingBrakeStateEnum,
motorSystemState MotorSystemEnum,
currentVelocity VelocityComponentValue,
currentCurvature HighResCurvature,
secureStandstill BOOLEAN,
idxLastWayPoint WaypointIndex OPTIONAL,
localizedPose Pose OPTIONAL
}
/**
* This type represents the optional container supporting a key exchange process that allows the two participants to agree on a secret seed. Note: It is assumed that the communication between the participants is authenticated (payloads are signed). The proposed key exchange is for safety only. It does not contribute to security.
*
* It includes the following components:
*
* @field vidVehicleState: The current vehicle identification state.
*
* @field vidVehiclePublicKey: Public Key used by vehicle to derive vehicle identification secret.
*/
VidResponse ::= SEQUENCE {
vidVehicleState VidVehicleStateEnum,
vidVehiclePublicKey UInt64
}
/**
* This type represents the optional container supporting the calculation of the ITS timestamp given in the expirationTime data element from the DrivingPermission container in the MIM message.
*
* It includes the following components:
*
* @field challenge: Challenge received in the SafetyTimeSyncRequest message.
*
* @field vehicleSafetyClockReceiveTimestamp: Time of the Vehicle Safety Clock when SafetyTimeSyncRequest arrived in the vehicle.
*
* @field vehicleSafetyClockTransmitTimestamp: Time of the Vehicle Safety Clock when this response left for the RV.
*
* @field checksum: See safety checksum calculation.
*/
SafetyTimeSyncResponse ::= SEQUENCE {
challenge UInt16,
vehicleSafetyClockReceiveTimestamp TimestampIts,
vehicleSafetyClockTransmitTimestamp TimestampIts,
checksum UInt32
}
/**
* This type represents the optional container supporting a safe confirmation by the Subject Vehicle.
*
* It includes the following components:
*
* @field vehicleType: Vehicle type identifier.
*
* @field safetyProfile: VehicleBackend and OperatorBackend negotiate which version of an interface specification
* or which profile is to be used for the communication between RO and Vehicle.
*
* @field checksum: Safety checksum calculation.
*/
SafeVehicleTypeConfirmation ::= SEQUENCE {
vehicleType IA5String (SIZE(1..32)),
safetyProfile IA5String (SIZE(1..32)),
checksum UInt32
}
/**
* This type represents the optional container data carrier and is added to the MVM message in case an error appears during VMC of the vehicle.
*
* It includes the following components:
*
* @field time: Timestamp when the error occurred.
*
* @field vehCode: Depending on the given error, the infrastructure either tries to resolve the issue or aborts the mission, saves this message for logging and forwards its content to the backend.
*
* @field customCode: Customer specific error code. The infrastructure won't further interpret this value.
*
* @field description: optional description of the error with further details.
*/
VehicleError ::= SEQUENCE {
time TimestampIts,
vehCode VehCodeEnum,
customCode UInt8,
description Description OPTIONAL
}
/**
* Up to 20 elements of @ref VehicleSafetyFeedbackContainer for down to 5 ms monitoring, logging and debugging.
*/
VehicleSafetyFeedback ::= SEQUENCE (SIZE(1..20)) OF VehicleSafetyFeedbackContainer
/**
* This type represents the optional container added to the MVM message mainly as a surrogate for missing static vehicle data that RO will possibly need.
*
* It includes the following components:
*
* @field remainingTimeToStartBraking: Represents the time which the vehicle is allowed to keep driving until brakes must be engaged.
*
* @field safetyViolations: Represents a list of violations which currently lead to stopping the vehicle.
*
* @field currentVehicleSafetyClockTime: Represents the time when safety component created this container
*/
VehicleSafetyFeedbackContainer ::= SEQUENCE {
remainingTimeToStartBraking Millisecond16,
safetyViolations SafetyViolationsContainer,
currentVehicleSafetyClockTime TimestampIts
}
/**
* Up to 5 elements of @ref SafetyViolationsEnum can be reported per cycle.
*/
SafetyViolationsContainer ::= SEQUENCE (SIZE(0..5)) OF SafetyViolationsEnum
/**
* This type represents the optional container added to the MVM message mainly as a surrogate for missing static vehicle data that RO will possibly need.
*
* It includes the following components:
*
* @field basicVehicleClass: It shares the vehicle class information to the RO.
*
* @field vehicleLength: Represents the overall vehicle length in (cm).
*
* @field vehicleWheelbase: Represents the wheelbase value (cm).
*
* @field vehicleRearOverhang: Represents the rear overhang value (cm).
*
* @field vehicleWidth: Represents the overall vehicle width value (cm).
*
* @field vehicleTireWidth: Represents a rough vehicle mass value imported fom the CDD.
*
* @field vehicleTrackWidth: Represents the specified width of tires value (cm).
*
* @field vehicleMass: Represents a rough vehicle mass value imported fom the CDD.
*
* @field vehicleSpeedLimit: Represents the limit value of the vehicle speed according to the use case, unit in (cm/s).
*
* @field vehicleCuvatureLimit: Represents the maximum curvature for left and right turning (assumed symmetrical).
*
* @field vehicleMaxAngularSteeringRate: Represents maximum steering rate for automated operation (rate of road wheel angle).
*/
VehicleProperties ::= SEQUENCE {
basicVehicleClass BasicVehicleClassEnum,
vehicleLength Centimetre,
vehicleWheelbase Centimetre,
vehicleRearOverhang Centimetre,
vehicleWidth Centimetre,
vehicleTireWidth Centimetre,
vehicleTrackWidth Centimetre,
vehicleMass VehicleMass,
vehicleSpeedLimit VelocityComponentValue,
vehicleCuvatureLimit HighResCurvature,
vehicleMaxAngularSteeringRate RadPerSecond,
...
}
/**
* Data element ParkingBrakeStateEnum describes the status of the electric parking brake .
* It offers the following signal values:
*
* - 0 - `unknown` - The status of the electric parking brake is not known.
* - 1 - `engaging` - The parking brake is processing to become engaged .
* - 2 - `engaged` - The The parking brake is fully engaged .
* - 3 - `disengaging` - The parking brake is processing to become disengaged .
* - 4 - `disengaged` - The The parking brake is fully disengaged .
*/
ParkingBrakeStateEnum ::= ENUMERATED {
unknown(0),
engaging(1),
engaged(2),
disengaging(3),
disengaged(4)
}
/**
* The data element OperationModeEnum reports the vehicle' general state. It can also be used for logging purposes and forwarding its content to the backend.
*
* The value shall be set to:
* - 0 - `unknown(0)` - The vehicle operation mode is not defined,
* - 1 - `initializing(1)` - The vehicle is preparing for the mission, but hasn't entered automted mode yet,
* - 2 - `prepared(2)` - The vehicle is in automted mode, but currently doesn't follow one of the control interfaces (waypoints, direct control, ...),
* - 3 - `driving(3)` - The vehicle is in automted mode and actively follows one of the control interfaces (waypoints, direct control, ...). It hasn't reached the end of the given path yet. Also applies if the vehicle stopped temporarily,
* - 4 - `terminating(4)` - The vehicle left automated mode and is terminating related functions,
* - 5 - `suspend (5)` - The vehicle is in a critical error state and requires external operator intervention,
* - 6 - `tempError (6)` - The vehicle is in a non-critical error state and is initiating a deceleration into stop and hold, prior to suspend,
* - 7 - `humanInControl (7)` - Manual control of the vehicle has been taken over ,
* - 8 - `stationHold (8)` - The external mfg./customer environment interlocks have taken over and is holding the vehicle from marshalling.
*/
OperationModeEnum ::= ENUMERATED {
unknown (0),
initializing (1),
prepared (2),
driving (3),
terminating (4),
suspend (5),
tempError (6),
humanInControl (7),
stationHold (8),
...
}
/**
* This DE saves this state for logging purposes and forwards its content to the backend.
*
* The value shall be set to:
* - 0 - `unspecified` - Any kind of error that is not specified otherwise. Infrastructure aborts the mission,
* - 1 - `pathNotDriveable` - The vehicle can't follow the given waypoints, based on the given DetectedVehiclePose. Infrastructure tries to plan a different path or aborts the mission otherwise,
* - 2 - `onboardVehicleFault` - Failure during vehicle onboarding,
* - 3 - `communicationFault` - vehicle internal comms fault,
* - 4 - `vehicleEgressFault` - Failure during vehicle AVP egress or shutdown process.
*/
VehCodeEnum ::= ENUMERATED {
unspecified (0),
pathNotDriveable (1),
onboardVehicleFault (2),
communicationFault (3),
vehicleEgressFault (4),
...
}
/**
* This data element specified a generic vehicle class that the RO has to cope with.
*
* The value shall be set to:
* - 0 - `none` - Not known or unavailable category,
* - 1 - `unknown` - Does not fit any other category,
* - 2 - `special` - Special use,
* - 3 - `moto` - Motorcycle,
* - 4 - `car` - Passenger car,
* - 5 - `carOther` - Four tire single units,
* - 6 - `bus` - Buses,
* - 7 - `axleCnt2` - Two axle, six tire single units,
* - 8 - `axleCnt3` - Three axle, single units,
* - 9 - `axleCnt4` - Four or more axle, single unit,
* - 10 - `axleCnt4Trailer` - Four or less axle, single trailer,
* - 11 - `axleCnt5Trailer` - Five or less axle, single trailer,
* - 12 - `axleCnt6Trailer` - Six or more axle, single trailer,
* - 13 - `axleCnt5MultiTrailer` - Five or less axle, multi-trailer,
* - 14 - `axleCnt6MultiTrailer` - Six axle, multi-trailer,
* - 15 - `axleCnt7MultiTrailer` - Seven or more axle, multi-trailer.
*/
BasicVehicleClassEnum ::= ENUMERATED {
none (0),
unknown (1),
special (2),
moto (3),
car (4),
carOther (5),
bus (6),
axleCnt2 (7),
axleCnt3 (8),
axleCnt4 (9),
axleCnt4Trailer (10),
axleCnt5Trailer (11),
axleCnt6Trailer (12),
axleCnt5MultiTrailer (13),
axleCnt6MultiTrailer (14),
axleCnt7MultiTrailer (15),
...
}
END
# AVM TS 103 882
# ASN.1 module for Automated Vehicle Marshalling [ETSI TS 103 882]
The ASN.1 modules for Automated Vehicle Marshalling as defined in ETSI TS 103 882
This repository contains the ASN.1 and XML modules for ETSI ITS Automated Vehicle Marshalling (AVM).
- The modules are published as a part of the **[ETSI TS 103 882 v2.1.1](https://www.etsi.org/deliver/etsi_ts/103800_103899/103882/02.01.01_60/ts_103882v020101p.pdf)**.
## License
The content of this repository and the files contained are released under the BSD-3-Clause license.
See the attached LICENSE file or visit https://forge.etsi.org/legal-matters.
## Dependencies
- The **[ETSI-ITS-CDD](https://forge.etsi.org/rep/ITS/asn1/cdd_ts102894_2)** module from [ETSI TS 102 894-2 v2.2.1](https://www.etsi.org/deliver/etsi_ts/102800_102899/10289402/02.02.01_60/ts_10289402v020201p.pdf) - Common Data Dictionary
Subproject commit 607993448648f50b75312c8fca777f0de67b7ad7
# <a name="AVM-Commons"></a>ASN.1 module AVM-Commons
OID: _{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103882) avmCommons (5) major-version-1 (1) minor-version-1(1) }_
## Data Elements:
### <a name="UInt8"></a>UInt8
This DE represents with an unsigned interger value.
Size: 8 bit, 1 Byte
```asn1
UInt8 ::= INTEGER (0..255)
```
### <a name="Int16"></a>Int16
This DE represents with a signed interger value.
Size: 16 bit, 2 Bytes
```asn1
Int16 ::= INTEGER (-32768..32767)
```
### <a name="UInt16"></a>UInt16
This DE represents with an unsigned interger value.
Size: 16 bit, 2 Bytes
```asn1
UInt16 ::= INTEGER (0..65535)
```
### <a name="UInt32"></a>UInt32
This DE represents with an unsigned interger value.
Size: 32 bit, 4 Bytes
```asn1
UInt32 ::= INTEGER (0..4294967295)
```
### <a name="UInt64"></a>UInt64
This DE represents with an unsigned interger value.
Size: 64 bit, 8 Bytes
```asn1
UInt64 ::= INTEGER(0..18446744073709551615)
```
### <a name="RollingCounter"></a>RollingCounter
This DE represents a rolling counter
The value shall be set to 0 when starting an application:
This DE is incremented by 1 for each consecutive message. In case of overflow due to the size limit it restarts at 0.
```asn1
RollingCounter ::= UInt16
```
### <a name="WaypointIndex"></a>WaypointIndex
This DE represents a waypoint index
The value shall be set according to the sequence of a path snippet or a complete driving trajectory.
In case of overflow due to the size limit it restarts at 0.
```asn1
WaypointIndex ::= UInt16
```
### <a name="ProprietaryExtensionField"></a>ProprietaryExtensionField
This DE represents a 2 byte unspecified
The value shall be set due to specific requirements between a RO sytem and vehicles of a dedicated OEM.
```asn1
ProprietaryExtensionField ::= UInt16
```
### <a name="Pose"></a>Pose
This type represents the container of data elements to indicate the vehicle's overall position in a cartesian coordinate system.
The location is projected to the ground, elevation is not considered .
It includes the following components:
* x<br>
The position in x direction
* y<br>
The position in x direction
* psi<br>
The orientation of the vehicle's driving direction. x (North) axis of the reference coordinate system.
```asn1
Pose ::= SEQUENCE {
```
### <a name="Psi"></a>Psi
This DE represents the vehicle's Counter-clockwise orientation in a cartesian coordinate system
The value shall be set to:
- `n` (`n ≥ 0` and `n ≤ 62831`) to indicate positive orientation equal to or less than n, and greater than (n-1),
- `62832` if the radian is out of range, i.e. greater than 524287 cm,
- `-62833` when the data is unavailable. Remark: 2* Pi = 6.28318
Values:
* **xDirection** (0)<br>
* **outOfRange** (62832)<br>
* **unavailable** (62833)<br>
&nbsp;&nbsp;&nbsp;&nbsp;**Unit:** _0.0001 radian_
```asn1
Psi ::= INTEGER {
xDirection (0),
outOfRange (62832),
unavailable (62833)
}
(0..62833)
```
### <a name="Centimetre"></a>Centimetre
This DE represents a distance in cm
The value shall be set to:
- `n` (`n > -524287` and `n ≤ 0`) to indicate negative distance equal to or less than n x 1 cm, and greater than (n-1) x 1 cm,
- `n` (`n > 0` and `n < 524287`) to indicate positive distance equal to or less than n x 1 cm, and greater than (n-1) x 1 cm,
- `-524287` if the distance is out of negative range
- `524287` if the distance is out of positive range
- `-524288` when the data is unavailable.
Values:
* **negativeOutOfRange** (-524287)<br>
* **positiveOutOfRange** (524287)<br>
* **unavailable** (-524288)<br>
&nbsp;&nbsp;&nbsp;&nbsp;**Unit:** _1 centimeter_
```asn1
Centimetre ::= INTEGER {
negativeOutOfRange (-524287),
positiveOutOfRange (524287),
unavailable (-524288)
}
(-524288..524287)
```
### <a name="HighResCurvature"></a>HighResCurvature
This DE describes vehicle turning curve with the following information:
```
Value = 1 / Radius * 100000
```
wherein radius is the vehicle turning curve radius in metres.
Positive values indicate a turning curve to the left hand side of the driver.
It corresponds to the vehicle coordinate system as defined in ISO 8855 [[21]](#references).
The value shall be set to:
- `-32767` for values smaller than -32767,
- `n` (`n > -32767` and `n < 0`) for negative values equal to or less than `n`, and greater than `(n-1)`,
- `0` when the vehicle is moving straight,
- `n` (`n > 0` and `n < 32767`) for positive values equal to or less than `n`, and greater than `(n-1)`,
- `32767`, for values greater than 1021,
- `-32768`, if the information is not available.
Values:
* **outOfRangeNegative** (-32767)<br>
* **straight** (0)<br>
* **outOfRangePositive** (32767)<br>
* **unavailable** (-32768)<br>
&nbsp;&nbsp;&nbsp;&nbsp;**Unit:** _1 over 100 000 metres_
>>>
NOTE:&emsp;The present DE is limited to vehicle types as defined in ISO 8855 [[21]](#references).
>>>
```asn1
HighResCurvature ::= INTEGER {
outOfRangeNegative (-32767),
straight (0),
outOfRangePositive (32767),
unavailable (-32768)
}
(-32768..32767)
```
### <a name="RadPerSecond"></a>RadPerSecond
This DE represents the rotational speed of a steering wheel movement
The value shall be set to:
- `-32 766` to indicate that the rotational speed is equal to or greater than 3.2766 [rad/s] to the right,
- `n` (`n > -32 766` and `n ≤ 0`) to indicate that the rotation is clockwise (i.e. to the right) and is equal to or less than n x 0,01 rad/s, and greater than (n-1) x 0,01 rad/s,
- `n` (`n > 0` and `n < 32 766`) to indicate that the rotation is anti-clockwise (i.e. to the left) and is equal to or less than n x 0,01 rad/s, and greater than (n-1) x 0,01 rad/s,
- `32 766` to indicate that the rotational speed is greater than 3.2765 rad/second to the left,
- `32 767` to indicate that the information is not available.
Values:
* **negativeOutOfRange** (-32766)<br>
* **positiveOutOfRange** (32766)<br>
* **unavailable** (-32767)<br>
&nbsp;&nbsp;&nbsp;&nbsp;**Unit:** _0.0001 [rad/s]._
```asn1
RadPerSecond ::= INTEGER {
negativeOutOfRange (-32766),
positiveOutOfRange (32766),
unavailable (-32767)
}
(-32767..32766)
```
### <a name="Millisecond16"></a>Millisecond16
This DE represents a signed time value, size 2 Bytes.
&nbsp;&nbsp;&nbsp;&nbsp;**Unit:** _0,001 s (1 ms)_
```asn1
Millisecond16 ::= Int16
```
### <a name="GearEnum"></a>GearEnum
Data element GearEnum optionally describes the desired or actual driving direction of the vehicle in alignment with the signed value of the vehicle speed .
It offers the following signal values:
- 0 - `park` - P: Vehicle engages P ,
- 1 - `backwards` - R: Vehicle drives backwards ,
- 2 - `neutral` - N: Vehicle engages neutral gear,
- 3 - `forwards` - D: Vehicle drives forwards,
- 4 - `unknown` - unknown gear status. Not used for commanding a vehicle gear position.
Values:
* **unknown** (4)<br>
```asn1
GearEnum ::= ENUMERATED {
park(0),
backwards(1),
neutral(2),
forwards(3),
unknown (4)
}
```
### <a name="DirectionIndicatorEnum"></a>DirectionIndicatorEnum
Data element directionIndicatorEnum describes the use of vehicle direction indicator system during VMC .
It offers the following signal values:
- 0 - `off` - The vehicle does not flash indicator lights at this stage. ,
- 1 - `right` - Flash right indicator lights. ,
- 2 - `left` - Flash left indicator lights. ,
- 3 - `both` - Flash right and left indicator lights. ,
- 4 - `unknown` - Direction indicator request is unknown. (Do not use for drive command).
```asn1
DirectionIndicatorEnum ::= ENUMERATED {
off(0),
right(1),
left(2),
both(3),
unknown(4)
}
```
### <a name="MotorSystemEnum"></a>MotorSystemEnum
Data element MotorSystemEnum optionally describes the desired or system stae of the vehicle's propulsion motor (engine).
It offers the following signal values:
- 0 - `off` - Propulsion motor off
- 1 - `on` - Propulsion motor on
- 2 - `unknown` - The propulsion motor state is unknown.
```asn1
MotorSystemEnum ::= ENUMERATED {
off(0),
on(1),
unknown(2)
}
```
### <a name="VidVehicleStateEnum"></a>VidVehicleStateEnum
Data element VidVehicleStateEnum describes the current state in the vehicle identification process .
It offers the following signal values:
- 0 - `undefined` - Default value ,
- 1 - `ready` - Vehicle is ready to get flashing code ,
- 2 - `lightFlashingInProgress` - Vehicle flashing is in progress,
- 3 - `lightFlashingCompleted` - Flashing is finished,
- 4 - `lightFlashingFailed` - This indicates that the vehicle can't flash because of vehicle error,
- 5 - `authorized` - Vehicle identification was successful and vehicle has switched its state.
```asn1
VidVehicleStateEnum ::= ENUMERATED {
undefined(0),
ready(1),
lightFlashingInProgress(2),
lightFlashingCompleted(3),
lightFlashingFailed(4),
authorized(5)
}
```
### <a name="SafetyViolationsEnum"></a>SafetyViolationsEnum
Data element SafetyViolationsEnum reports the outcome of a specific safety cycle.
As a result a violation leads to stopping the vehicle.
It offers the following signal values:
- 0 - `noViolation` - Default value ,
- 1 - `noDrivingPermissionReceived` - Vehicle has not received a driving permission ,
- 2 - `lastDrivingPermissionTooOld` - The driving permission is outdated,
- 3 - `crcViolationClockSyncRequest` - The time synchronization request has an invalid checksum,
- 4 - `crcViolationDrivingPermission` - The driving permission has an invalid checksum,
- 5 - `expirationTimeViolation` - the allowed time is expired.
- 6 - `drivingDirectionMismatch` - wrong driving direction is indcated, plausibility error with speed signal,
- 7 - `velocityViolation` - The speed value is out of the allowed range ,
- 8 - `curvatureMinViolation` - The allowed minimal curvature is out of range ,
- 9 - `curvatureMaxViolation` - The allowed maximal curvature is out of range ,
- 10 - `expirationTimeTooHigh` - The experiation time is out of the allowed range,
- 11 - `monitoring` - Violation monitoring is ongoing.
```asn1
SafetyViolationsEnum ::= ENUMERATED {
noViolation(0),
noDrivingPermissionReceived(1),
lastDrivingPermissionTooOld(2),
crcViolationClockSyncRequest(3),
crcViolationDrivingPermission(4),
expirationTimeViolation(5),
drivingDirectionMismatch(6),
velocityViolation(7),
curvatureMinViolation(8),
curvatureMaxViolation(9),
expirationTimeTooHigh(10),
monitoring(11),
...
}
```
### <a name="SystemManagementData"></a>SystemManagementData
This type represents a container of system management data, i.e. identification labels.
It shall include the following components:
* _sessionID_ of type [**SessionMissionID**](#SessionMissionID) OPTIONAL<br>
It is a unique identifier that is known by the infrastructure and
the vehicle side at the same time. It is valid for a complete parking/marshalling task.
* _missionID_ of type [**SessionMissionID**](#SessionMissionID) OPTIONAL<br>
It is a unique identifier that is known by the infrastructure and
the vehicle side at the same time. It identifies a subtask within a sessionID.
* _vehicleID_ of type [**VehicleID**](#VehicleID) OPTIONAL<br>
It is a unique identifier that is known by the infrastructure and vehicle The vehicle needs to know its own vehicleID.
This can serve as a safety check for the RO regarding vehicle parameters, as it receives them from the vehicle backend,
and it can then verify that it is communicating to the right vehicle through MVM (as the vehicle sends its vehicleID there).
* _facilityID_ of type [**FacilityID**](#FacilityID) OPTIONAL<br>
It is a unique identifier that describes the infrastructure in which the vehicle operates.
It is used for documentation purposes. The vehicle does not respond to this data element
```asn1
SystemManagementData ::= SEQUENCE {
sessionID SessionMissionID OPTIONAL,
missionID SessionMissionID OPTIONAL,
vehicleID VehicleID OPTIONAL,
facilityID FacilityID OPTIONAL
}
```
### <a name="SessionMissionID"></a>SessionMissionID
This DE represents a the identification of an driving session or mission
The value be freely selected as a string of 17 to 32 characters.
```asn1
SessionMissionID ::= IA5String (SIZE(17..32))
```
### <a name="VehicleID"></a>VehicleID
This DE serves for the identification of the specified vehicle
The value be freely selected as a string of 1 to 17 characters.
```asn1
VehicleID ::= IA5String (SIZE(1..17))
```
### <a name="FacilityID"></a>FacilityID
This DE serves for the identification of infrastructure facility
The value be freely selected as a string of 1 to 32 characters.
```asn1
FacilityID ::= IA5String (SIZE(1..32))
```
### <a name="Description"></a>Description
This DE represents a detailed description.
It can serve to generate a more extensive, user-friendly description e.g. of an error.
The value be freely selected as a string of 1 to 200 characters.
```asn1
Description ::= IA5String (SIZE(1..200))
```
### <a name="AvmE2EProtection"></a>AvmE2EProtection
This type represents the container of data elements supporting E2E protection mechanisms for the Parking Control messages
It complies with AUTOSAR Profile 4 e2e protection. It protects the body of the message and starts in a byte aligned position in the BTP stream.
It includes the following components:
* _length_ of type [**UInt16**](#UInt16) <br>
represents the overall payload of the body container in the Park Control message. Starting point is this data element.
* _rollingCounter_ of type [**UInt16**](#UInt16) <br>
This is a recurring identifier of a Park control message. This identifier is incremented by 1 for the consecutive message.
In case of overflow due to the size limit it restarts at 0.
* _dataID_ of type [**UInt32**](#UInt32) <br>
The data element is usable to identify the originating system (RO or vehicle). It is to the best effort unique within the network ;
It is negotiated between the RO and the vehicle OEM in case they want to identify each other with this signal
* _crc32_ of type [**UInt32**](#UInt32) <br>
The CRC is calculated in byte limits of the body container, considering the data element length. The signal crc32 itself is excluded from the payload.
```asn1
AvmE2EProtection ::= SEQUENCE {
length UInt16,
rollingCounter UInt16,
dataID UInt32,
crc32 UInt32
}
```
This source diff could not be displayed because it is too large. You can view the blob instead.
# <a name="MIM-PDU-Descriptions"></a>ASN.1 module MIM-PDU-Descriptions
OID: _{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103882) mim (6) major-version-1 (1) minor-version-1 (1) }_
## Imports:
* **[AVM-Commons](AVM-Commons.md)** *{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103882) avpCommons (5) major-version-1 (1) minor-version-1(1) }*<br/>
* **[ETSI-ITS-CDD](ETSI-ITS-CDD.md)** *{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) 102894 cdd (2) major-version-4 (4) minor-version-1 (1) }*<br/>
## Data Elements:
### <a name="MIM"></a>MIM
This type represents the MIM PDU.
It shall include the following components:
* _header_ of type [**ItsPduHeader**](ETSI-ITS-CDD.md#ItsPduHeader) <br>
the header of the MIM PDU.
* _e2eProtection_ of type [**AvmE2EProtection**](AVM-Commons.md#AvmE2EProtection) <br>
A mandatory container for E2E Protection by Autosar Profile 4
* _mims_ of type **SEQUENCE** (SIZE(1..32)) OF Mim<br>
a sequence of Mim containers which addresses min 1 and max. 32 vehicles .
```asn1
MIM ::= SEQUENCE {
header ItsPduHeader,
e2eProtection AvmE2EProtection,
mims SEQUENCE (SIZE(1..32)) OF Mim
}
```
### <a name="Mim"></a>Mim
This type represents the Mim Container.
It shall include the following components:
* _mimDataControlField_ of type [**MIMDataControlField**](#MIMDataControlField) OPTIONAL<br>
a container of specific Control Data for MIM.
* _systemManagementData_ of type [**SystemManagementData**](AVM-Commons.md#SystemManagementData) OPTIONAL<br>
a container of identification data
* _vehicleIdentification_ of type [**VidRequest**](#VidRequest) OPTIONAL<br>
It allows the selection of the mechanism for visual vehicle identification.
* _drivingPermission_ of type [**DrivingPermission**](#DrivingPermission) OPTIONAL<br>
The driving permission container offers a safety concept to allow or deny vehicle motion.
It defines the bounds within which the vehicle is allowed to drive.
* _safetyTimeSyncRequest_ of type [**SafetyTimeSyncRequest**](#SafetyTimeSyncRequest) OPTIONAL<br>
The Remote Vehicle Operation needs to be able to continuously
determine the current time in which the Subject Vehicle operates.
This container supports functional safety concepts.
* _driveCommand_ of type [**DriveCommand**](#DriveCommand) OPTIONAL<br>
It addresses the specific vehicle and determines the actual state
request to the vehicle, especially the active drive request for the overall VCM operation.
* _detectedVehiclePose_ of type [**DetectedVehiclePose**](#DetectedVehiclePose) OPTIONAL<br>
The RO permanently senses the vehicle's position
in a proprietary two-dimensional coordinate system (X and Y).
* _controlInterface_ of type [**ControlInterface**](#ControlInterface) OPTIONAL<br>
This container offers different control methods for vehicle motion control VMC as a choice between .
```asn1
Mim ::= SEQUENCE {
mimDataControlField MIMDataControlField OPTIONAL,
systemManagementData SystemManagementData OPTIONAL,
vehicleIdentification VidRequest OPTIONAL,
drivingPermission DrivingPermission OPTIONAL,
safetyTimeSyncRequest SafetyTimeSyncRequest OPTIONAL,
driveCommand DriveCommand OPTIONAL,
detectedVehiclePose DetectedVehiclePose OPTIONAL,
controlInterface ControlInterface OPTIONAL,
...
}
```
### <a name="MIMDataControlField"></a>MIMDataControlField
This type represents a container of specific Control Data for MIM.
It shall include the following components:
* _checksum_ of type [**UInt32**](AVM-Commons.md#UInt32) OPTIONAL<br>
the optional checksum of a single mim vehicle container.
* _mimGenerationTime_ of type [**TimestampIts**](ETSI-ITS-CDD.md#TimestampIts) OPTIONAL<br>
the time at which the vehicle container was fully assembled.
* _rollingCounterFromMvm_ of type **SEQUENCE** (SIZE(0..10)) OF RollingCounter<br>
It serves as a mirror of the rolling counter that was
received with the latest MVM of the corresponding vehicle.
* _proprietaryExtensionField_ of type [**ProprietaryExtensionField**](AVM-Commons.md#ProprietaryExtensionField) OPTIONAL<br>
This data element defines optionally 2 bytes are used to carry
specific information or request from the RO system to a specific OEM vehicle.
```asn1
MIMDataControlField ::= SEQUENCE {
checksum UInt32 OPTIONAL,
mimGenerationTime TimestampIts OPTIONAL,
rollingCounterFromMvm SEQUENCE (SIZE(0..10)) OF RollingCounter,
proprietaryExtensionField ProprietaryExtensionField OPTIONAL,
...
}
```
### <a name="VidRequest"></a>VidRequest
This type represents a selection of methods for vehicle identification during standstill.
It shall include the following components:
* _blinking_ of type [**Blinking**](#Blinking) <br>
At current stage only the "blinking lights" method is selectable for vehicle identification
```asn1
VidRequest ::= CHOICE {
blinking Blinking,
...
}
```
### <a name="Blinking"></a>Blinking
This type represents the container with data elements for the blinking vehicle identification method.
It shall include the following components:
* _vidRoPublicKey_ of type [**UInt64**](AVM-Commons.md#UInt64) <br>
A 64-bit public key is transmitted from the RO to the vehicle
in order to derive the vehicle identification secret.
* _codeLength_ of type [**UInt8**](AVM-Commons.md#UInt8) <br>
The codelength data element sends a value that indicates how many bits (8 - 20)
from the seed shall be used for generating the blinking pattern.
* _blinkingCommand_ of type [**VidRequestCommandEnum**](#VidRequestCommandEnum) <br>
* currentState<br>
This data element mirrors the current authorization/identification
request status from the perspective of the RO system.
```asn1
Blinking ::= SEQUENCE {
vidRoPublicKey UInt64,
codeLength UInt8,
blinkingCommand VidRequestCommandEnum
}
```
### <a name="DrivingPermission"></a>DrivingPermission
This type represents the container with data elements for the vehicle obtaining or denying a permission to drive.
The driving permission concept offers an expiration time for driving permission and the boundary values of longitudinal and lateral movement of the subject vehicle.
It shall include the following components:
* _expirationTime_ of type [**TimestampIts**](ETSI-ITS-CDD.md#TimestampIts) <br>
At this time the vehicle shall start braking, unless a new and updated expirationTime time stamp was sent.
* _velocityMax_ of type [**VelocityComponentValue**](ETSI-ITS-CDD.md#VelocityComponentValue) <br>
During the allowed expiration time the vehicle shall not exceed the velocityMax speed value in forward as well in reverse driving conditions.
* _curvatureMin_ of type [**HighResCurvature**](AVM-Commons.md#HighResCurvature) <br>
During the allowed expiration time the vehicle steering system shall not exceed the limits of interval given by data element curvatureMin.
* _curvatureMax_ of type [**HighResCurvature**](AVM-Commons.md#HighResCurvature) <br>
During the allowed expiration time the vehicle steering system shall not exceed the limits of interval given by data element curvatureMax.
* _checksum_ of type [**UInt32**](AVM-Commons.md#UInt32) <br>
The driving permission needs to be protected by a dedicated safety checksum.
```asn1
DrivingPermission ::= SEQUENCE {
expirationTime TimestampIts,
velocityMax VelocityComponentValue,
curvatureMin HighResCurvature,
curvatureMax HighResCurvature,
checksum UInt32
}
```
### <a name="SafetyTimeSyncRequest"></a>SafetyTimeSyncRequest
This type represents the container with data elements for requesting a safety time synchronization.
It shall include the following components:
* _challenge_ of type [**UInt16**](AVM-Commons.md#UInt16) <br>
The Remote Vehicle Operation shall use this challenge to relate the response to this request. This challenge is chosen by the RO in accordance with the safety requirements.
* _checksum_ of type [**UInt32**](AVM-Commons.md#UInt32) <br>
This safety time synchronization needs to be protected by a dedicated safety checksum.
```asn1
SafetyTimeSyncRequest ::= SEQUENCE {
challenge UInt16,
checksum UInt32
}
```
### <a name="DriveCommand"></a>DriveCommand
This type represents the container with data elements for general drive commands.
It addresses the specific vehicle and determines the actual state request to the vehicle, especially the active drive request for the VCM operation.
It shall include the following components:
* _driveCommandAction_ of type [**DriveCommandActionEnum**](#DriveCommandActionEnum) <br>
The main drive state request, inf the loop of initialize and terminate.
* _terminateReason_ of type [**TerminateReasonEnum**](#TerminateReasonEnum) <br>
If action equals terminate, indicates whether a terminate is requested because the vehicle reached the destination or because of an error.
* _gearRequest_ of type [**GearEnum**](AVM-Commons.md#GearEnum) OPTIONAL<br>
It describes the desired driving direction of the vehicle in alignment with the signed value of the vehicle speed requests.
* _directionIndicatorRequest_ of type [**DirectionIndicatorEnum**](AVM-Commons.md#DirectionIndicatorEnum) OPTIONAL<br>
It signalizes the currently requested direction indicator.
* _parkingBrakeRequest_ of type [**ParkingBrakeRequestEnum**](#ParkingBrakeRequestEnum) OPTIONAL<br>
It signalizes the currently requested actuation of the vehicle's electric parking brake.
* _motorSystemRequest_ of type [**MotorSystemEnum**](AVM-Commons.md#MotorSystemEnum) OPTIONAL<br>
It signalizes the currently requested actuation of the vehicle's propulsion motor.
* _emergencyStopRequest_ of type [**EmergencyStopEnum**](#EmergencyStopEnum) OPTIONAL<br>
This enables as part of an optional safety concept to apply a vehicle specific emergency stop manoeuvre at any time.
* _interlockRequest_ of type [**InterlockEnum**](#InterlockEnum) OPTIONAL<br>
This data element enables an optional safety concept to apply a vehicle interlock.
* _hornRequest_ of type [**VehicleHornRequestEnum**](#VehicleHornRequestEnum) OPTIONAL<br>
This data element enables an optional safety concept. It commands the vehicle to sound the horn in different formats in order to warn pedestrians or animals.
```asn1
DriveCommand ::= SEQUENCE {
driveCommandAction DriveCommandActionEnum,
terminateReason TerminateReasonEnum,
gearRequest GearEnum OPTIONAL,
directionIndicatorRequest DirectionIndicatorEnum OPTIONAL,
parkingBrakeRequest ParkingBrakeRequestEnum OPTIONAL,
motorSystemRequest MotorSystemEnum OPTIONAL,
emergencyStopRequest EmergencyStopEnum OPTIONAL,
interlockRequest InterlockEnum OPTIONAL,
hornRequest VehicleHornRequestEnum OPTIONAL
}
```
### <a name="DetectedVehiclePose"></a>DetectedVehiclePose
This type represents the container with a report of the vehicle's localization.
The RO permanently senses the vehicle's position in a relative two-dimensional coordinate system (X and Y).
It shall include the following components:
* _detectedPose_ of type [**Pose**](AVM-Commons.md#Pose) <br>
This field implements the sequence of data elements for the vehicle' positioning. The field indicates an agreed reference point of the vehicle,
e.g. the middle of the rear axle.
* _poseMeasurementTime_ of type [**TimestampIts**](ETSI-ITS-CDD.md#TimestampIts) <br>
The data element signals an absolute and synchronized time stamp when the measurement was taken.
```asn1
DetectedVehiclePose ::= SEQUENCE {
detectedPose Pose,
poseMeasurementTime TimestampIts
}
```
### <a name="ControlInterface"></a>ControlInterface
This type selects the container that is used for vehicle motion control.
With an extension marker additional choices for further control methods are applicable in later versions of the protocol.
It shall include the following components:
* _pathControl_ of type [**PathControl**](#PathControl) <br>
The pathSnippet control method transfers a sequence of wayPoint containers from the infrastructure into the vehicle.
* _trajectoryControl_ of type [**TrajectoryControl**](#TrajectoryControl) <br>
A vehicle trajectory consists of a vector of ControlTrajectory elements and StateTrajectory elements. It also contains a reference time stamp and an optional drive direction element.
```asn1
ControlInterface ::= CHOICE {
pathControl PathControl,
trajectoryControl TrajectoryControl,
...
}
```
### <a name="PathControl"></a>PathControl
The type PathControl sequeence represents the container with Path Snippet elements.
It shall include the following components:
* _pathSnippet_ of type [**PathSnippet**](#PathSnippet) OPTIONAL<br>
a sequence of up to 200 way points
* _clearedDistanceOnPath_ of type [**Centimetre**](AVM-Commons.md#Centimetre) <br>
the RO can tell the vehicle to stop on the known PathSnippet without sending a new PathSnippet.
* _situationalVelocityLimit_ of type [**VelocityComponentValue**](ETSI-ITS-CDD.md#VelocityComponentValue) OPTIONAL<br>
the RO can tell the vehicle to temporarily drive slower without sending a new PathSnippet.
```asn1
PathControl ::= SEQUENCE {
pathSnippet PathSnippet OPTIONAL,
clearedDistanceOnPath Centimetre,
situationalVelocityLimit VelocityComponentValue OPTIONAL
}
```
### <a name="PathSnippet"></a>PathSnippet
The type PathSnippet represents the container with Path Snippet elements.
It shall contain up to 200 way points of type [**WayPoint**](#WayPoint)
```asn1
PathSnippet ::= SEQUENCE (SIZE(0..200)) OF WayPoint
```
### <a name="WayPoint"></a>WayPoint
This type represents the container with elements describing a way point,
It shall include the following components:
* _index_ of type [**WaypointIndex**](AVM-Commons.md#WaypointIndex) OPTIONAL<br>
It is used to build an array of consecutive way points.
* _wayPointPose_ of type [**Pose**](AVM-Commons.md#Pose) <br>
This field implements the positioning request to the vehicle. The waypoint indicates an agreed reference point of the vehicle,
e.g. the middle of the rear axle.
* _velocity_ of type [**VelocityComponentValue**](ETSI-ITS-CDD.md#VelocityComponentValue) <br>
This data element represents the target speed of the vehicle in that specific way point.
It is a signed velocity value compliant with the drive direction request. Positive: drive forwards / Negative: reverse.
* _curvature_ of type [**HighResCurvature**](AVM-Commons.md#HighResCurvature) <br>
This data element represents the target curvature of the vehicle in that specific way point.
* _pitchAngle_ of type [**CartesianAngleValue**](ETSI-ITS-CDD.md#CartesianAngleValue) OPTIONAL<br>
For better velocity control, it should be possible to specify the inclination (or vehicle pitch angle) at specific locations.
```asn1
WayPoint ::= SEQUENCE {
index WaypointIndex OPTIONAL,
wayPointPose Pose,
velocity VelocityComponentValue,
curvature HighResCurvature,
pitchAngle CartesianAngleValue OPTIONAL
}
```
### <a name="TrajectoryControl"></a>TrajectoryControl
The type TrajectoryControl represents the container with elements for the trajectory control method.
It shall include the following components:
* _timeReference_ of type [**TimestampIts**](ETSI-ITS-CDD.md#TimestampIts) <br>
The reference time indicates the absolute time given in Vehicle Functional Clock
at which the first element of the [**ControlTrajectory**](#ControlTrajectory) vector and [**StateTrajectory**](#StateTrajectory) vector is expected to be executed.
* _driveDirection_ of type [**DriveDirectionEnum**](#DriveDirectionEnum) OPTIONAL<br>
The data element describes the desired driving direction of the vehicle in alignment with the signed value of the vehicle acceleration requests.
* _controlTrajectory_ of type [**ControlTrajectory**](#ControlTrajectory) <br>
This consists of a sequence of [**ControlPoint**](#ControlPoint) elements with a maximum size of 50.
* _stateTrajectory_ of type [**StateTrajectory**](#StateTrajectory) OPTIONAL<br>
The elements in the optional field [**StateTrajectory**](#StateTrajectory) vector are considered as odometry target values.
These consist of a sequence of [**StatePoint**](#StatePoint) elements with a maximum size of 50.
```asn1
TrajectoryControl ::= SEQUENCE {
timeReference TimestampIts,
driveDirection DriveDirectionEnum OPTIONAL,
controlTrajectory ControlTrajectory,
stateTrajectory StateTrajectory OPTIONAL
}
```
### <a name="ControlTrajectory"></a>ControlTrajectory
```asn1
ControlTrajectory ::= SEQUENCE (SIZE(0..50)) OF ControlPoint
```
### <a name="ControlPoint"></a>ControlPoint
A ControlPoint container carries a set of ControlPoint elements,
It shall include the following components:
* _curvature_ of type [**HighResCurvature**](AVM-Commons.md#HighResCurvature) <br>
The data element contains the target curvature that is requested in the according control Poiint
* _controlParameter_ of type [**ControlParameter**](#ControlParameter) <br>
This field selects the method how to represent a [**ControlPoint**](#ControlPoint) container .
```asn1
ControlPoint ::= SEQUENCE {
curvature HighResCurvature,
controlParameter ControlParameter
}
```
### <a name="ControlParameter"></a>ControlParameter
The ControlParameter container offers two options to represent the second parameter within a [**ControlPoint**](#ControlPoint),
It shall include the following components:
* _controlAcceleration_ of type [**ControlAcceleration**](#ControlAcceleration) <br>
The data element represents the vehicles's target acceleration in the according control point.
* _controlVelocity_ of type [**ControlVelocity**](#ControlVelocity) <br>
Theis field is selected when the according [**ControlPoint**](#ControlPoint) uses speed values instead of acceleration.
```asn1
ControlParameter ::= CHOICE {
controlAcceleration ControlAcceleration,
controlVelocity ControlVelocity
}
```
### <a name="ControlAcceleration"></a>ControlAcceleration
The [**ControlAcceleration**](#ControlAcceleration) data element is a single data element when choosing the [**ControlParameter**](#ControlParameter) controlAcceleration
It deals with a signed acceleration value.
```asn1
ControlAcceleration ::= LongitudinalAccelerationValue
```
### <a name="ControlVelocity"></a>ControlVelocity
The ControlVelocity container consists of 2 data elements belonging to the according [**ControlPoint**](#ControlPoint),
It includes the following components:
* _velocity_ of type [**VelocityComponentValue**](ETSI-ITS-CDD.md#VelocityComponentValue) <br>
The data element represents the target speed of the vehicle. It is a signed velocity value.
It deals with a signed velocity value.
- Positive: drive forwards
- Negative: driving reverse.
* _distanceToStop_ of type [**Centimetre**](AVM-Commons.md#Centimetre) OPTIONAL<br>
The data element represents the unsigned maximum distance that the vehicle can drive before a standstill.
```asn1
ControlVelocity ::= SEQUENCE {
velocity VelocityComponentValue,
distanceToStop Centimetre OPTIONAL
}
```
### <a name="StateTrajectory"></a>StateTrajectory
a vector, considered as odometry target values. It consist of a sequence of statePoint containers with a maximum size of 50.
```asn1
StateTrajectory ::= SEQUENCE (SIZE(0..50)) OF StatePoint
```
### <a name="StatePoint"></a>StatePoint
A StatePoint container carries a set of SatePoint elements,
It shall include the following components:
* _statePose_ of type [**Pose**](AVM-Commons.md#Pose) <br>
This field implements the sequence of data elements for the vehicle's positioning in the according statePoint.
A point indicates an agreed reference point of the vehicle,e.g. the middle of the rear axle.
* _velocity_ of type [**VelocityComponentValue**](ETSI-ITS-CDD.md#VelocityComponentValue) <br>
The data element represents the target speed of the vehicle in the according statePoint. It is a signed velocity value.
```asn1
StatePoint ::= SEQUENCE {
statePose Pose,
velocity VelocityComponentValue
}
```
### <a name="DriveCommandActionEnum"></a>DriveCommandActionEnum
Data element DriveCommandActionEnum describes the current state in the vehicle identification process .
It offers the following signal values:
- 0 - `sleep` - The vehicle is commanded to go into sleep mode for low power consumption
- 1 - `initialize` - The vehicle is awake and remains in standstill. It shall initialize and prepare for a driving job, including a sequence of power-on the engine system and the lights,
- 2 - `wait` - The vehicle shall wait in marshalling capable state,
- 3 - `drive` - The vehicle is commanded to actively drive and follow the according control commands. Standstill and pause situations are potentially included in this stage,
- 4 - `terminate` - The vehicle shall disable the according control interface. After brining the vehicle to a safe standstill state it shuts down as soon as possible.
```asn1
DriveCommandActionEnum ::= ENUMERATED {
sleep(0),
initialize(1),
wait(2),
drive(3),
terminate(4)
}
```
### <a name="TerminateReasonEnum"></a>TerminateReasonEnum
Data element TerminateReasonEnum describes verbally the rational why to terminate the VMC process .
It offers the following signal values:
- 0 - `proceed` - Everything is okay. Proceed, do not terminate,
- 1 - `destinationReached` - Vehicle has reached its destinations,
- 2 - `infrastructureError` - Error in infrastructure detected,
- 3 - `vehicleError` - Vehicle has sent an error code,
- 4 - `backend` - Error in backend,
- 5 - `vehicleIdentificationError` - Either a wrong or no code was detected. Even with a crash of the camera, there is an error.
```asn1
TerminateReasonEnum ::= ENUMERATED {
proceed(0),
destinationReached(1),
infrastructureError(2),
vehicleError(3),
backend(4),
vehicleIdentificationError(5)
}
```
### <a name="ParkingBrakeRequestEnum"></a>ParkingBrakeRequestEnum
Data element ParkingBrakeRequestEnum describes the status of the EmergencyStop Request during VMC .
It offers the following signal values:
- 0 - `disengage` - The vehicle shall disengage the electric parking brake.
- 1 - `engage` - The vehicle shall activate the electric parking brake.
```asn1
ParkingBrakeRequestEnum ::= ENUMERATED {
disengage(0),
engage(1)
}
```
### <a name="EmergencyStopEnum"></a>EmergencyStopEnum
Data element EmergencyStopEnum describes the status of the EmergencyStop Request during VMC .
It offers the following signal values:
- 0 - `inactive` - The vehicle shall not use EmergencyStop at this stage. ,
- 1 - `precharge` - The vehicle brake system shall stay in standby (brake prefill) and wait for an active command. ,
- 2 - `active` - The vehicle shall initiate an emergency stop using the maximum possible deceleration. ,
- 3 - `tempError` - Maturing Failures - Vehicle shall decellerate and hold, it is waiting for the failure to clear or mature. ,
- 4 - `suspend` - Command for critical failures (not recoverable) in RO system – The vehicle shall decelerate and secure.
```asn1
EmergencyStopEnum ::= ENUMERATED {
inactive(0),
precharge(1),
active(2),
tempError(3),
suspend(4)
}
```
### <a name="InterlockEnum"></a>InterlockEnum
Data element InterlockEnum describes the status of vehicle interlock system during VMC .
It offers the following signal values:
- 0 - `none` - The vehicle shall not use Interlock at this stage,
- 1 - `zonalInterlock` - Zonal Interlock is specific to the factory use case,
- 2 - `globalStop` - Command for global stop - external operator intervention is required.
```asn1
InterlockEnum ::= ENUMERATED {
none(0),
zonalInterlock(1),
globalStop(2)
}
```
### <a name="VehicleHornRequestEnum"></a>VehicleHornRequestEnum
Data element VehicleHornRequestEnum describes the use of vehicle alarm horn during VMC .
It offers the following signal values:
- 0 - `none` - The vehicle does not sound a horn at this stage. ,
- 1 - `singleHorn` - The vehicle applies a single horn for alerting surroundings when marshalling of vehicle is starting. ,
- 2 - `doubleHorn` - For notifying pedestrians who pose obstacles to the vehicle marshalling task. ,
- 3 - `holdHorn` - In event of ground staff intervention is needed for the vehicle.
```asn1
VehicleHornRequestEnum ::= ENUMERATED {
none(0),
singleHorn(1),
doubleHorn(2),
holdHorn(3)
}
```
### <a name="VidRequestCommandEnum"></a>VidRequestCommandEnum
Data element VidRequestCommandEnum describes the vehicle identification request.
It offers the following signal values:
- 0 - `generateNewCode` - A new safe vehicle identification cycle was started. There is no intent for flashing in this cycle.
- 1 - `generateNewCodeAndPrepareForFlashing` - A new safe vehicle identification cycle was started. Flashing will be required in this cycle.
- 2 - `flashing` - The infrastructure is prepared and waiting for the Subject Vehicle to flash the code. ,
- 3 - `successful` - The Subject Vehicle was recognized correctly and the identification is completed. ,
```asn1
VidRequestCommandEnum ::= ENUMERATED {
generateNewCode(0),
generateNewCodeAndPrepareForFlashing(1),
flashing(2),
successful(3)
}
```
### <a name="DriveDirectionEnum"></a>DriveDirectionEnum
Data element DriveDirectionEnum describes the request of the vehicle drive direction.
This must be in line with the signed vehicle speed request .
It offers the following signal values:
- 0 - `forwards` - D: Vehicle shall drive forwards. ,
- 1 - `backwards` - R: Vehicle shall drive backwards.
```asn1
DriveDirectionEnum ::= ENUMERATED {
forwards(0),
backwards(1)
}
```
# <a name="MVM-PDU-Descriptions"></a>ASN.1 module MVM-PDU-Descriptions
OID: _{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103882) mvm (4) major-version-1 (1) minor-version-1(1) }_
## Imports:
* **[AVM-Commons](AVM-Commons.md)** *{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103882) avpCommons (5) major-version-1 (1) minor-version-1(1) }*<br/>
* **[ETSI-ITS-CDD](ETSI-ITS-CDD.md)** *{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) 102894 cdd (2) major-version-4 (4) minor-version-1 (1) }*<br/>
## Data Elements:
### <a name="MVM"></a>MVM
This type represents the MVM PDU.
It shall include the following components:
* _header_ of type [**ItsPduHeader**](ETSI-ITS-CDD.md#ItsPduHeader) <br>
The header of the MVM PDU.
* _e2eProtection_ of type [**AvmE2EProtection**](AVM-Commons.md#AvmE2EProtection) <br>
A mandatory container for E2E Protection by Autosar Profile 4.
* _mvm_ of type [**Mvm**](#Mvm) <br>
The payload of the MVM PDU.
```asn1
MVM ::= SEQUENCE {
header ItsPduHeader,
e2eProtection AvmE2EProtection,
mvm Mvm
}
```
### <a name="Mvm"></a>Mvm
This type represents the optional container added to the MVM message mainly as a surrogate for missing static vehicle data that RO will possibly need.
It includes the following components:
* _mvmDataControlField_ of type [**MVMDataControlField**](#MVMDataControlField) OPTIONAL<br>
It contains specific Control Data for [**MVM**](#MVM)
* _systemManagementData_ of type [**SystemManagementData**](AVM-Commons.md#SystemManagementData) OPTIONAL<br>
It contains system management data, i.e. identification labels
* _vehicleState_ of type [**VehicleState**](#VehicleState) OPTIONAL<br>
Relevant vehicle state information.
* _vidResponse_ of type [**VidResponse**](#VidResponse) OPTIONAL<br>
Represents the current vehicle identification status.
* _safetyTimeSyncResponse_ of type [**SafetyTimeSyncResponse**](#SafetyTimeSyncResponse) OPTIONAL<br>
Represents a functional safety time related container.
* _safeVehicleTypeConfirmation_ of type [**SafeVehicleTypeConfirmation**](#SafeVehicleTypeConfirmation) OPTIONAL<br>
Represents a functional safety related container.
* _vehicleError_ of type [**VehicleError**](#VehicleError) OPTIONAL<br>
Error information. Depending on the given error, the infrastructure either tries to resolve the issue or aborts the mission.
* _vehicleSafetyFeedback_ of type [**VehicleSafetyFeedback**](#VehicleSafetyFeedback) OPTIONAL<br>
Represents relevant safety information from vehicle.
* _vehicleProperties_ of type [**VehicleProperties**](#VehicleProperties) OPTIONAL<br>
Represents vehicle-specific data elements as feedback from vehicle to external system.
* oemSpecific<br>
Represents an OEM specific 16 bit field for special purposes.
```asn1
Mvm ::= SEQUENCE {
mvmDataControlField MVMDataControlField OPTIONAL,
systemManagementData SystemManagementData OPTIONAL,
vehicleState VehicleState OPTIONAL,
vidResponse VidResponse OPTIONAL,
safetyTimeSyncResponse SafetyTimeSyncResponse OPTIONAL,
safeVehicleTypeConfirmation SafeVehicleTypeConfirmation OPTIONAL,
vehicleError VehicleError OPTIONAL,
vehicleSafetyFeedback VehicleSafetyFeedback OPTIONAL,
vehicleProperties VehicleProperties OPTIONAL,
...
}
```
### <a name="MVMDataControlField"></a>MVMDataControlField
This type represents a container of specific Control Data for [**MVM**](#MVM).
It shall include the following components:
* _mvmGenerationTime_ of type [**TimestampIts**](ETSI-ITS-CDD.md#TimestampIts) OPTIONAL<br>
the time at which the mvm container was fully assembled.
* _rollingCounterFromMim_ of type **SEQUENCE** (SIZE(0..10)) OF RollingCounter<br>
It serves as a mirror of the rolling counter that was
received with the latest MIM of the corresponding vehicle.
* _proprietaryExtensionField_ of type [**ProprietaryExtensionField**](AVM-Commons.md#ProprietaryExtensionField) OPTIONAL<br>
This data element defines optionally 2 bytes are used to carry
specific information or request from a specific OEM vehicle to the RO system .
```asn1
MVMDataControlField ::= SEQUENCE {
mvmGenerationTime TimestampIts OPTIONAL,
rollingCounterFromMim SEQUENCE (SIZE(0..10)) OF RollingCounter,
proprietaryExtensionField ProprietaryExtensionField OPTIONAL,
...
}
```
### <a name="VehicleState"></a>VehicleState
This type represents the container theat carries signals about the actual status of the vehicle's condition with reference to the driving task. This return signals from the vehicle is usable in the RO system for correction and refinement of the vehicle motion control VMC.
It includes the following components:
* _vehicleStateGenerationTime_ of type [**TimestampIts**](ETSI-ITS-CDD.md#TimestampIts) OPTIONAL<br>
Checks on the data freshness on receive side.
* _operationMode_ of type [**OperationModeEnum**](#OperationModeEnum) <br>
The current operation mode or state of the vehicle.
* _gearState_ of type [**GearEnum**](AVM-Commons.md#GearEnum) <br>
Direction in which the vehicle is currently driving or about to drive.
* _directionIndicatorState_ of type [**DirectionIndicatorEnum**](AVM-Commons.md#DirectionIndicatorEnum) <br>
State of vehicle blinking and direction indication
* _parkingBrakeState_ of type [**ParkingBrakeStateEnum**](#ParkingBrakeStateEnum) <br>
Status of the vehicle's electric parking brake system.
* _motorSystemState_ of type [**MotorSystemEnum**](AVM-Commons.md#MotorSystemEnum) <br>
State of vehicle's propulsion motor system
* _currentVelocity_ of type [**VelocityComponentValue**](ETSI-ITS-CDD.md#VelocityComponentValue) <br>
Current vehicle velocity. Negative when driving backwards.
* _currentCurvature_ of type [**HighResCurvature**](AVM-Commons.md#HighResCurvature) <br>
Current vehicle curvature.
* _secureStandstill_ of type **BOOLEAN** <br>
True if the vehicle is currently in secure standstill (i.e. standstill and secured against rolling, even when vehicle is powered down and even on ramps).
* _idxLastWayPoint_ of type [**WaypointIndex**](AVM-Commons.md#WaypointIndex) OPTIONAL<br>
Index of last WayPoint that has been received from infrastucture. 0 if not applicable.
* _localizedPose_ of type [**Pose**](AVM-Commons.md#Pose) OPTIONAL<br>
The current vehicle pose estimated by the vehicle. (Usually close to the pose estimated by the RO, prediction by the vehicle)
```asn1
VehicleState ::= SEQUENCE {
vehicleStateGenerationTime TimestampIts OPTIONAL,
operationMode OperationModeEnum,
gearState GearEnum,
directionIndicatorState DirectionIndicatorEnum,
parkingBrakeState ParkingBrakeStateEnum,
motorSystemState MotorSystemEnum,
currentVelocity VelocityComponentValue,
currentCurvature HighResCurvature,
secureStandstill BOOLEAN,
idxLastWayPoint WaypointIndex OPTIONAL,
localizedPose Pose OPTIONAL
}
```
### <a name="VidResponse"></a>VidResponse
This type represents the optional container supporting a key exchange process that allows the two participants to agree on a secret seed. Note: It is assumed that the communication between the participants is authenticated (payloads are signed). The proposed key exchange is for safety only. It does not contribute to security.
It includes the following components:
* _vidVehicleState_ of type [**VidVehicleStateEnum**](AVM-Commons.md#VidVehicleStateEnum) <br>
The current vehicle identification state.
* _vidVehiclePublicKey_ of type [**UInt64**](AVM-Commons.md#UInt64) <br>
Public Key used by vehicle to derive vehicle identification secret.
```asn1
VidResponse ::= SEQUENCE {
vidVehicleState VidVehicleStateEnum,
vidVehiclePublicKey UInt64
}
```
### <a name="SafetyTimeSyncResponse"></a>SafetyTimeSyncResponse
This type represents the optional container supporting the calculation of the ITS timestamp given in the expirationTime data element from the DrivingPermission container in the MIM message.
It includes the following components:
* _challenge_ of type [**UInt16**](AVM-Commons.md#UInt16) <br>
Challenge received in the SafetyTimeSyncRequest message.
* _vehicleSafetyClockReceiveTimestamp_ of type [**TimestampIts**](ETSI-ITS-CDD.md#TimestampIts) <br>
Time of the Vehicle Safety Clock when SafetyTimeSyncRequest arrived in the vehicle.
* _vehicleSafetyClockTransmitTimestamp_ of type [**TimestampIts**](ETSI-ITS-CDD.md#TimestampIts) <br>
Time of the Vehicle Safety Clock when this response left for the RV.
* _checksum_ of type [**UInt32**](AVM-Commons.md#UInt32) <br>
See safety checksum calculation.
```asn1
SafetyTimeSyncResponse ::= SEQUENCE {
challenge UInt16,
vehicleSafetyClockReceiveTimestamp TimestampIts,
vehicleSafetyClockTransmitTimestamp TimestampIts,
checksum UInt32
}
```
### <a name="SafeVehicleTypeConfirmation"></a>SafeVehicleTypeConfirmation
This type represents the optional container supporting a safe confirmation by the Subject Vehicle.
It includes the following components:
* _vehicleType_ of type [**IA5String**](#IA5String) (SIZE(1..32))<br>
Vehicle type identifier.
* _safetyProfile_ of type [**IA5String**](#IA5String) (SIZE(1..32))<br>
VehicleBackend and OperatorBackend negotiate which version of an interface specification
or which profile is to be used for the communication between RO and Vehicle.
* _checksum_ of type [**UInt32**](AVM-Commons.md#UInt32) <br>
Safety checksum calculation.
```asn1
SafeVehicleTypeConfirmation ::= SEQUENCE {
vehicleType IA5String (SIZE(1..32)),
safetyProfile IA5String (SIZE(1..32)),
checksum UInt32
}
```
### <a name="VehicleError"></a>VehicleError
This type represents the optional container data carrier and is added to the MVM message in case an error appears during VMC of the vehicle.
It includes the following components:
* _time_ of type [**TimestampIts**](ETSI-ITS-CDD.md#TimestampIts) <br>
Timestamp when the error occurred.
* _vehCode_ of type [**VehCodeEnum**](#VehCodeEnum) <br>
Depending on the given error, the infrastructure either tries to resolve the issue or aborts the mission, saves this message for logging and forwards its content to the backend.
* _customCode_ of type [**UInt8**](AVM-Commons.md#UInt8) <br>
Customer specific error code. The infrastructure won't further interpret this value.
* _description_ of type [**Description**](AVM-Commons.md#Description) OPTIONAL<br>
optional description of the error with further details.
```asn1
VehicleError ::= SEQUENCE {
time TimestampIts,
vehCode VehCodeEnum,
customCode UInt8,
description Description OPTIONAL
}
```
### <a name="VehicleSafetyFeedback"></a>VehicleSafetyFeedback
Up to 20 elements of [**VehicleSafetyFeedbackContainer**](#VehicleSafetyFeedbackContainer) for down to 5 ms monitoring, logging and debugging.
```asn1
VehicleSafetyFeedback ::= SEQUENCE (SIZE(1..20)) OF VehicleSafetyFeedbackContainer
```
### <a name="VehicleSafetyFeedbackContainer"></a>VehicleSafetyFeedbackContainer
This type represents the optional container added to the MVM message mainly as a surrogate for missing static vehicle data that RO will possibly need.
It includes the following components:
* _remainingTimeToStartBraking_ of type [**Millisecond16**](AVM-Commons.md#Millisecond16) <br>
Represents the time which the vehicle is allowed to keep driving until brakes must be engaged.
* _safetyViolations_ of type [**SafetyViolationsContainer**](#SafetyViolationsContainer) <br>
Represents a list of violations which currently lead to stopping the vehicle.
* _currentVehicleSafetyClockTime_ of type [**TimestampIts**](ETSI-ITS-CDD.md#TimestampIts) <br>
Represents the time when safety component created this container
```asn1
VehicleSafetyFeedbackContainer ::= SEQUENCE {
remainingTimeToStartBraking Millisecond16,
safetyViolations SafetyViolationsContainer,
currentVehicleSafetyClockTime TimestampIts
}
```
### <a name="SafetyViolationsContainer"></a>SafetyViolationsContainer
Up to 5 elements of [**SafetyViolationsEnum**](AVM-Commons.md#SafetyViolationsEnum) can be reported per cycle.
```asn1
SafetyViolationsContainer ::= SEQUENCE (SIZE(0..5)) OF SafetyViolationsEnum
```
### <a name="VehicleProperties"></a>VehicleProperties
This type represents the optional container added to the MVM message mainly as a surrogate for missing static vehicle data that RO will possibly need.
It includes the following components:
* _basicVehicleClass_ of type [**BasicVehicleClassEnum**](#BasicVehicleClassEnum) <br>
It shares the vehicle class information to the RO.
* _vehicleLength_ of type [**Centimetre**](AVM-Commons.md#Centimetre) <br>
Represents the overall vehicle length in (cm).
* _vehicleWheelbase_ of type [**Centimetre**](AVM-Commons.md#Centimetre) <br>
Represents the wheelbase value (cm).
* _vehicleRearOverhang_ of type [**Centimetre**](AVM-Commons.md#Centimetre) <br>
Represents the rear overhang value (cm).
* _vehicleWidth_ of type [**Centimetre**](AVM-Commons.md#Centimetre) <br>
Represents the overall vehicle width value (cm).
* _vehicleTireWidth_ of type [**Centimetre**](AVM-Commons.md#Centimetre) <br>
Represents a rough vehicle mass value imported fom the CDD.
* _vehicleTrackWidth_ of type [**Centimetre**](AVM-Commons.md#Centimetre) <br>
Represents the specified width of tires value (cm).
* _vehicleMass_ of type [**VehicleMass**](ETSI-ITS-CDD.md#VehicleMass) <br>
Represents a rough vehicle mass value imported fom the CDD.
* _vehicleSpeedLimit_ of type [**VelocityComponentValue**](ETSI-ITS-CDD.md#VelocityComponentValue) <br>
Represents the limit value of the vehicle speed according to the use case, unit in (cm/s).
* _vehicleCuvatureLimit_ of type [**HighResCurvature**](AVM-Commons.md#HighResCurvature) <br>
Represents the maximum curvature for left and right turning (assumed symmetrical).
* _vehicleMaxAngularSteeringRate_ of type [**RadPerSecond**](AVM-Commons.md#RadPerSecond) <br>
Represents maximum steering rate for automated operation (rate of road wheel angle).
```asn1
VehicleProperties ::= SEQUENCE {
basicVehicleClass BasicVehicleClassEnum,
vehicleLength Centimetre,
vehicleWheelbase Centimetre,
vehicleRearOverhang Centimetre,
vehicleWidth Centimetre,
vehicleTireWidth Centimetre,
vehicleTrackWidth Centimetre,
vehicleMass VehicleMass,
vehicleSpeedLimit VelocityComponentValue,
vehicleCuvatureLimit HighResCurvature,
vehicleMaxAngularSteeringRate RadPerSecond,
...
}
```
### <a name="ParkingBrakeStateEnum"></a>ParkingBrakeStateEnum
Data element ParkingBrakeStateEnum describes the status of the electric parking brake .
It offers the following signal values:
- 0 - `unknown` - The status of the electric parking brake is not known.
- 1 - `engaging` - The parking brake is processing to become engaged .
- 2 - `engaged` - The The parking brake is fully engaged .
- 3 - `disengaging` - The parking brake is processing to become disengaged .
- 4 - `disengaged` - The The parking brake is fully disengaged .
```asn1
ParkingBrakeStateEnum ::= ENUMERATED {
unknown(0),
engaging(1),
engaged(2),
disengaging(3),
disengaged(4)
}
```
### <a name="OperationModeEnum"></a>OperationModeEnum
The data element OperationModeEnum reports the vehicle' general state. It can also be used for logging purposes and forwarding its content to the backend.
The value shall be set to:
- 0 - `unknown(0)` - The vehicle operation mode is not defined,
- 1 - `initializing(1)` - The vehicle is preparing for the mission, but hasn't entered automted mode yet,
- 2 - `prepared(2)` - The vehicle is in automted mode, but currently doesn't follow one of the control interfaces (waypoints, direct control, ...),
- 3 - `driving(3)` - The vehicle is in automted mode and actively follows one of the control interfaces (waypoints, direct control, ...). It hasn't reached the end of the given path yet. Also applies if the vehicle stopped temporarily,
- 4 - `terminating(4)` - The vehicle left automated mode and is terminating related functions,
- 5 - `suspend (5)` - The vehicle is in a critical error state and requires external operator intervention,
- 6 - `tempError (6)` - The vehicle is in a non-critical error state and is initiating a deceleration into stop and hold, prior to suspend,
- 7 - `humanInControl (7)` - Manual control of the vehicle has been taken over ,
- 8 - `stationHold (8)` - The external mfg./customer environment interlocks have taken over and is holding the vehicle from marshalling.
Values:
* **unknown** (0)<br>
* **initializing** (1)<br>
* **prepared** (2)<br>
* **driving** (3)<br>
* **terminating** (4)<br>
* **suspend** (5)<br>
* **tempError** (6)<br>
* **humanInControl** (7)<br>
* **stationHold** (8)<br>
```asn1
OperationModeEnum ::= ENUMERATED {
unknown (0),
initializing (1),
prepared (2),
driving (3),
terminating (4),
suspend (5),
tempError (6),
humanInControl (7),
stationHold (8),
...
}
```
### <a name="VehCodeEnum"></a>VehCodeEnum
This DE saves this state for logging purposes and forwards its content to the backend.
The value shall be set to:
- 0 - `unspecified` - Any kind of error that is not specified otherwise. Infrastructure aborts the mission,
- 1 - `pathNotDriveable` - The vehicle can't follow the given waypoints, based on the given DetectedVehiclePose. Infrastructure tries to plan a different path or aborts the mission otherwise,
- 2 - `onboardVehicleFault` - Failure during vehicle onboarding,
- 3 - `communicationFault` - vehicle internal comms fault,
- 4 - `vehicleEgressFault` - Failure during vehicle AVP egress or shutdown process.
Values:
* **unspecified** (0)<br>
* **pathNotDriveable** (1)<br>
* **onboardVehicleFault** (2)<br>
* **communicationFault** (3)<br>
* **vehicleEgressFault** (4)<br>
```asn1
VehCodeEnum ::= ENUMERATED {
unspecified (0),
pathNotDriveable (1),
onboardVehicleFault (2),
communicationFault (3),
vehicleEgressFault (4),
...
}
```
### <a name="BasicVehicleClassEnum"></a>BasicVehicleClassEnum
This data element specified a generic vehicle class that the RO has to cope with.
The value shall be set to:
- 0 - `none` - Not known or unavailable category,
- 1 - `unknown` - Does not fit any other category,
- 2 - `special` - Special use,
- 3 - `moto` - Motorcycle,
- 4 - `car` - Passenger car,
- 5 - `carOther` - Four tire single units,
- 6 - `bus` - Buses,
- 7 - `axleCnt2` - Two axle, six tire single units,
- 8 - `axleCnt3` - Three axle, single units,
- 9 - `axleCnt4` - Four or more axle, single unit,
- 10 - `axleCnt4Trailer` - Four or less axle, single trailer,
- 11 - `axleCnt5Trailer` - Five or less axle, single trailer,
- 12 - `axleCnt6Trailer` - Six or more axle, single trailer,
- 13 - `axleCnt5MultiTrailer` - Five or less axle, multi-trailer,
- 14 - `axleCnt6MultiTrailer` - Six axle, multi-trailer,
- 15 - `axleCnt7MultiTrailer` - Seven or more axle, multi-trailer.
Values:
* **none** (0)<br>
* **unknown** (1)<br>
* **special** (2)<br>
* **moto** (3)<br>
* **car** (4)<br>
* **carOther** (5)<br>
* **bus** (6)<br>
* **axleCnt2** (7)<br>
* **axleCnt3** (8)<br>
* **axleCnt4** (9)<br>
* **axleCnt4Trailer** (10)<br>
* **axleCnt5Trailer** (11)<br>
* **axleCnt6Trailer** (12)<br>
* **axleCnt5MultiTrailer** (13)<br>
* **axleCnt6MultiTrailer** (14)<br>
* **axleCnt7MultiTrailer** (15)<br>
```asn1
BasicVehicleClassEnum ::= ENUMERATED {
none (0),
unknown (1),
special (2),
moto (3),
car (4),
carOther (5),
bus (6),
axleCnt2 (7),
axleCnt3 (8),
axleCnt4 (9),
axleCnt4Trailer (10),
axleCnt5Trailer (11),
axleCnt6Trailer (12),
axleCnt5MultiTrailer (13),
axleCnt6MultiTrailer (14),
axleCnt7MultiTrailer (15),
...
}
```
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><asnv><protocol name="MIM"><encoding entry-point="MIM" method="per"/><lower-layer name="btp" value2="2018"/><source path="ASNV_Module_MIM.xml"/></protocol><protocol name="MVM"><encoding entry-point="MVM" method="per"/><lower-layer name="btp" value2="2019"/><source path="ASNV_Module_MVM.xml"/></protocol></asnv>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><module asnv-version="1" entry-point="MIM" name="MIM" tags="automatic"><sequence name="MIM"><field name="header" type="ItsPduHeader"/><field name="e2eProtection" type="AvmE2EProtection"/><field name="mims" type="MIM$mims"/></sequence><sequence name="ItsPduHeader"><field name="protocolVersion" type="OrdinalNumber1B"/><field name="messageId" type="MessageId"/><field name="stationId" type="StationId"/></sequence><integer max="255" min="0" name="OrdinalNumber1B"/><integer max="255" min="0" name="MessageId"><value name="denm" value="1"/><value name="cam" value="2"/><value name="poim" value="3"/><value name="spatem" value="4"/><value name="mapem" value="5"/><value name="ivim" value="6"/><value name="rfu1" value="7"/><value name="rfu2" value="8"/><value name="srem" value="9"/><value name="ssem" value="10"/><value name="evcsn" value="11"/><value name="saem" value="12"/><value name="rtcmem" value="13"/><value name="cpm" value="14"/><value name="imzm" value="15"/><value name="vam" value="16"/><value name="dsm" value="17"/><value name="pcim" value="18"/><value name="pcvm" value="19"/><value name="mcm" value="20"/><value name="pam" value="21"/></integer><integer max="4294967295" min="0" name="StationId"/><sequence name="AvmE2EProtection"><field name="length" type="UInt16"/><field name="rollingCounter" type="UInt16"/><field name="dataID" type="UInt32"/><field name="crc32" type="UInt32"/></sequence><integer max="65535" min="0" name="UInt16"/><integer max="4294967295" min="0" name="UInt32"/><sequence-of max="32" min="1" name="MIM$mims"><field type="Mim"/></sequence-of><sequence name="Mim"><field name="mimDataControlField" optional="true" type="MIMDataControlField"/><field name="systemManagementData" optional="true" type="SystemManagementData"/><field name="vehicleIdentification" optional="true" type="VidRequest"/><field name="drivingPermission" optional="true" type="DrivingPermission"/><field name="safetyTimeSyncRequest" optional="true" type="SafetyTimeSyncRequest"/><field name="driveCommand" optional="true" type="DriveCommand"/><field name="detectedVehiclePose" optional="true" type="DetectedVehiclePose"/><field name="controlInterface" optional="true" type="ControlInterface"/><extension/></sequence><sequence name="MIMDataControlField"><field name="checksum" optional="true" type="UInt32"/><field name="mimGenerationTime" optional="true" type="TimestampIts"/><field name="rollingCounterFromMvm" type="MIMDataControlField$rollingCounterFromMvm"/><field name="proprietaryExtensionField" optional="true" type="UInt16"/><extension/></sequence><integer max="4398046511103" min="0" name="TimestampIts"/><sequence-of max="10" min="0" name="MIMDataControlField$rollingCounterFromMvm"><field type="UInt16"/></sequence-of><sequence name="SystemManagementData"><field name="sessionID" optional="true" type="SessionMissionID"/><field name="missionID" optional="true" type="SessionMissionID"/><field name="vehicleID" optional="true" type="VehicleID"/><field name="facilityID" optional="true" type="FacilityID"/></sequence><ia5-string max="32" min="17" name="SessionMissionID"/><ia5-string max="17" min="1" name="VehicleID"/><ia5-string max="32" min="1" name="FacilityID"/><choice name="VidRequest"><field name="blinking" type="Blinking"/><extension/></choice><sequence name="Blinking"><field name="vidRoPublicKey" type="UInt64"/><field name="codeLength" type="UInt8"/><field name="blinkingCommand" type="VidRequestCommandEnum"/></sequence><integer max="18446744073709551615" min="0" name="UInt64"/><integer max="255" min="0" name="UInt8"/><enumerated name="VidRequestCommandEnum"><value name="generateNewCode" value="0"/><value name="generateNewCodeAndPrepareForFlashing" value="1"/><value name="flashing" value="2"/><value name="successful" value="3"/></enumerated><sequence name="DrivingPermission"><field name="expirationTime" type="TimestampIts"/><field name="velocityMax" type="VelocityComponentValue"/><field name="curvatureMin" type="HighResCurvature"/><field name="curvatureMax" type="HighResCurvature"/><field name="checksum" type="UInt32"/></sequence><integer max="16383" min="-16383" name="VelocityComponentValue"><value name="negativeOutOfRange" value="-16383"/><value name="positiveOutOfRange" value="16382"/><value name="unavailable" value="16383"/></integer><integer max="32767" min="-32768" name="HighResCurvature"><value name="outOfRangeNegative" value="-32767"/><value name="straight" value="0"/><value name="outOfRangePositive" value="32767"/><value name="unavailable" value="-32768"/></integer><sequence name="SafetyTimeSyncRequest"><field name="challenge" type="UInt16"/><field name="checksum" type="UInt32"/></sequence><sequence name="DriveCommand"><field name="driveCommandAction" type="DriveCommandActionEnum"/><field name="terminateReason" type="TerminateReasonEnum"/><field name="gearRequest" optional="true" type="GearEnum"/><field name="directionIndicatorRequest" optional="true" type="DirectionIndicatorEnum"/><field name="parkingBrakeRequest" optional="true" type="ParkingBrakeRequestEnum"/><field name="motorSystemRequest" optional="true" type="MotorSystemEnum"/><field name="emergencyStopRequest" optional="true" type="EmergencyStopEnum"/><field name="interlockRequest" optional="true" type="InterlockEnum"/><field name="hornRequest" optional="true" type="VehicleHornRequestEnum"/></sequence><enumerated name="DriveCommandActionEnum"><value name="sleep" value="0"/><value name="initialize" value="1"/><value name="wait" value="2"/><value name="drive" value="3"/><value name="terminate" value="4"/></enumerated><enumerated name="TerminateReasonEnum"><value name="proceed" value="0"/><value name="destinationReached" value="1"/><value name="infrastructureError" value="2"/><value name="vehicleError" value="3"/><value name="backend" value="4"/><value name="vehicleIdentificationError" value="5"/></enumerated><enumerated name="GearEnum"><value name="park" value="0"/><value name="backwards" value="1"/><value name="neutral" value="2"/><value name="forwards" value="3"/><value name="unknown" value="4"/></enumerated><enumerated name="DirectionIndicatorEnum"><value name="off" value="0"/><value name="right" value="1"/><value name="left" value="2"/><value name="both" value="3"/><value name="unknown" value="4"/></enumerated><enumerated name="ParkingBrakeRequestEnum"><value name="disengage" value="0"/><value name="engage" value="1"/></enumerated><enumerated name="MotorSystemEnum"><value name="off" value="0"/><value name="on" value="1"/><value name="unknown" value="2"/></enumerated><enumerated name="EmergencyStopEnum"><value name="inactive" value="0"/><value name="precharge" value="1"/><value name="active" value="2"/><value name="temError" value="3"/><value name="suspend" value="4"/></enumerated><enumerated name="InterlockEnum"><value name="none" value="0"/><value name="zonalInterlock" value="1"/><value name="globalStop" value="2"/></enumerated><enumerated name="VehicleHornRequestEnum"><value name="none" value="0"/><value name="singleHorn" value="1"/><value name="doubleHorn" value="2"/><value name="holdHorn" value="3"/></enumerated><sequence name="DetectedVehiclePose"><field name="detectedPose" type="Pose"/><field name="poseMeasurementTime" type="TimestampIts"/></sequence><sequence name="Pose"><field name="x" type="Centimetre"/><field name="y" type="Centimetre"/><field name="psi" type="Psi"/></sequence><integer max="524287" min="-524288" name="Centimetre"><value name="negativeOutOfRange" value="-524287"/><value name="positiveOutOfRange" value="524287"/><value name="unavailable" value="-524288"/></integer><integer max="62833" min="0" name="Psi"><value name="xDirection" value="0"/><value name="outOfRange" value="62832"/><value name="unavailable" value="62833"/></integer><choice name="ControlInterface"><field name="pathControl" type="PathControl"/><field name="trajectoryControl" type="TrajectoryControl"/><extension/></choice><sequence name="PathControl"><field name="pathSnippet" optional="true" type="PathSnippet"/><field name="clearedDistanceOnPath" type="Centimetre"/><field name="situationalVelocityLimit" optional="true" type="VelocityComponentValue"/></sequence><sequence-of max="200" min="0" name="PathSnippet"><field type="WayPoint"/></sequence-of><sequence name="WayPoint"><field name="index" optional="true" type="UInt16"/><field name="wayPointPose" type="Pose"/><field name="velocity" type="VelocityComponentValue"/><field name="curvature" type="HighResCurvature"/><field name="pitchAngle" optional="true" type="CartesianAngleValue"/></sequence><integer max="3601" min="0" name="CartesianAngleValue"><value name="valueNotUsed" value="3600"/><value name="unavailable" value="3601"/></integer><sequence name="TrajectoryControl"><field name="timeReference" type="TimestampIts"/><field name="driveDirection" optional="true" type="DriveDirectionEnum"/><field name="controlTrajectory" type="ControlTrajectory"/><field name="stateTrajectory" optional="true" type="StateTrajectory"/></sequence><enumerated name="DriveDirectionEnum"><value name="forwards" value="0"/><value name="backwards" value="1"/></enumerated><sequence-of max="50" min="0" name="ControlTrajectory"><field type="ControlPoint"/></sequence-of><sequence name="ControlPoint"><field name="curvature" type="HighResCurvature"/><field name="controlParameter" type="ControlParameter"/></sequence><choice name="ControlParameter"><field name="controlAcceleration" type="LongitudinalAccelerationValue"/><field name="controlVelocity" type="ControlVelocity"/></choice><integer max="161" min="-160" name="LongitudinalAccelerationValue"><value name="negativeOutOfRange" value="-160"/><value name="positiveOutOfRange" value="160"/><value name="unavailable" value="161"/></integer><sequence name="ControlVelocity"><field name="velocity" type="VelocityComponentValue"/><field name="distanceToStop" optional="true" type="Centimetre"/></sequence><sequence-of max="50" min="0" name="StateTrajectory"><field type="StatePoint"/></sequence-of><sequence name="StatePoint"><field name="statePose" type="Pose"/><field name="velocity" type="VelocityComponentValue"/></sequence></module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><module asnv-version="1" entry-point="MVM" name="MVM" tags="automatic"><sequence name="MVM"><field name="header" type="ItsPduHeader"/><field name="e2eProtection" type="AvmE2EProtection"/><field name="mvm" type="Mvm"/></sequence><sequence name="ItsPduHeader"><field name="protocolVersion" type="OrdinalNumber1B"/><field name="messageId" type="MessageId"/><field name="stationId" type="StationId"/></sequence><integer max="255" min="0" name="OrdinalNumber1B"/><integer max="255" min="0" name="MessageId"><value name="denm" value="1"/><value name="cam" value="2"/><value name="poim" value="3"/><value name="spatem" value="4"/><value name="mapem" value="5"/><value name="ivim" value="6"/><value name="rfu1" value="7"/><value name="rfu2" value="8"/><value name="srem" value="9"/><value name="ssem" value="10"/><value name="evcsn" value="11"/><value name="saem" value="12"/><value name="rtcmem" value="13"/><value name="cpm" value="14"/><value name="imzm" value="15"/><value name="vam" value="16"/><value name="dsm" value="17"/><value name="pcim" value="18"/><value name="pcvm" value="19"/><value name="mcm" value="20"/><value name="pam" value="21"/></integer><integer max="4294967295" min="0" name="StationId"/><sequence name="AvmE2EProtection"><field name="length" type="UInt16"/><field name="rollingCounter" type="UInt16"/><field name="dataID" type="UInt32"/><field name="crc32" type="UInt32"/></sequence><integer max="65535" min="0" name="UInt16"/><integer max="4294967295" min="0" name="UInt32"/><sequence name="Mvm"><field name="mvmDataControlField" optional="true" type="MVMDataControlField"/><field name="systemManagementData" optional="true" type="SystemManagementData"/><field name="vehicleState" optional="true" type="VehicleState"/><field name="vidResponse" optional="true" type="VidResponse"/><field name="safetyTimeSyncResponse" optional="true" type="SafetyTimeSyncResponse"/><field name="safeVehicleTypeConfirmation" optional="true" type="SafeVehicleTypeConfirmation"/><field name="vehicleError" optional="true" type="VehicleError"/><field name="vehicleSafetyFeedback" optional="true" type="VehicleSafetyFeedback"/><field name="vehicleProperties" optional="true" type="VehicleProperties"/><extension/></sequence><sequence name="MVMDataControlField"><field name="mvmGenerationTime" optional="true" type="TimestampIts"/><field name="rollingCounterFromMim" type="MVMDataControlField$rollingCounterFromMim"/><field name="proprietaryExtensionField" optional="true" type="UInt16"/><extension/></sequence><integer max="4398046511103" min="0" name="TimestampIts"/><sequence-of max="10" min="0" name="MVMDataControlField$rollingCounterFromMim"><field type="UInt16"/></sequence-of><sequence name="SystemManagementData"><field name="sessionID" optional="true" type="SessionMissionID"/><field name="missionID" optional="true" type="SessionMissionID"/><field name="vehicleID" optional="true" type="VehicleID"/><field name="facilityID" optional="true" type="FacilityID"/></sequence><ia5-string max="32" min="17" name="SessionMissionID"/><ia5-string max="17" min="1" name="VehicleID"/><ia5-string max="32" min="1" name="FacilityID"/><sequence name="VehicleState"><field name="vehicleStateGenerationTime" optional="true" type="TimestampIts"/><field name="operationMode" type="OperationModeEnum"/><field name="gearState" type="GearEnum"/><field name="directionIndicatorState" type="DirectionIndicatorEnum"/><field name="parkingBrakeState" type="ParkingBrakeStateEnum"/><field name="motorSystemState" type="MotorSystemEnum"/><field name="currentVelocity" type="VelocityComponentValue"/><field name="currentCurvature" type="HighResCurvature"/><field name="secureStandstill" type="VehicleState$secureStandstill"/><field name="idxLastWayPoint" optional="true" type="UInt16"/><field name="localizedPose" optional="true" type="Pose"/></sequence><enumerated name="OperationModeEnum"><value name="unknown" value="0"/><value name="initializing" value="1"/><value name="prepared" value="2"/><value name="driving" value="3"/><value name="terminating" value="4"/><value name="suspend" value="5"/><value name="tempError" value="6"/><value name="humanInControl" value="7"/><value name="stationHold" value="8"/><extension/></enumerated><enumerated name="GearEnum"><value name="park" value="0"/><value name="backwards" value="1"/><value name="neutral" value="2"/><value name="forwards" value="3"/><value name="unknown" value="4"/></enumerated><enumerated name="DirectionIndicatorEnum"><value name="off" value="0"/><value name="right" value="1"/><value name="left" value="2"/><value name="both" value="3"/><value name="unknown" value="4"/></enumerated><enumerated name="ParkingBrakeStateEnum"><value name="unknown" value="0"/><value name="engaging" value="1"/><value name="engaged" value="2"/><value name="disengaging" value="3"/><value name="disengaged" value="4"/></enumerated><enumerated name="MotorSystemEnum"><value name="off" value="0"/><value name="on" value="1"/><value name="unknown" value="2"/></enumerated><integer max="16383" min="-16383" name="VelocityComponentValue"><value name="negativeOutOfRange" value="-16383"/><value name="positiveOutOfRange" value="16382"/><value name="unavailable" value="16383"/></integer><integer max="32767" min="-32768" name="HighResCurvature"><value name="outOfRangeNegative" value="-32767"/><value name="straight" value="0"/><value name="outOfRangePositive" value="32767"/><value name="unavailable" value="-32768"/></integer><boolean name="VehicleState$secureStandstill"/><sequence name="Pose"><field name="x" type="Centimetre"/><field name="y" type="Centimetre"/><field name="psi" type="Psi"/></sequence><integer max="524287" min="-524288" name="Centimetre"><value name="negativeOutOfRange" value="-524287"/><value name="positiveOutOfRange" value="524287"/><value name="unavailable" value="-524288"/></integer><integer max="62833" min="0" name="Psi"><value name="xDirection" value="0"/><value name="outOfRange" value="62832"/><value name="unavailable" value="62833"/></integer><sequence name="VidResponse"><field name="vidVehicleState" type="VidVehicleStateEnum"/><field name="vidVehiclePublicKey" type="UInt64"/></sequence><enumerated name="VidVehicleStateEnum"><value name="undefined" value="0"/><value name="ready" value="1"/><value name="lightFlashingInProgress" value="2"/><value name="lightFlashingCompleted" value="3"/><value name="lightFlashingFailed" value="4"/><value name="authorized" value="5"/></enumerated><integer max="18446744073709551615" min="0" name="UInt64"/><sequence name="SafetyTimeSyncResponse"><field name="challenge" type="UInt16"/><field name="vehicleSafetyClockReceiveTimestamp" type="TimestampIts"/><field name="vehicleSafetyClockTransmitTimestamp" type="TimestampIts"/><field name="checksum" type="UInt32"/></sequence><sequence name="SafeVehicleTypeConfirmation"><field name="vehicleType" type="SafeVehicleTypeConfirmation$vehicleType"/><field name="safetyProfile" type="SafeVehicleTypeConfirmation$safetyProfile"/><field name="checksum" type="UInt32"/></sequence><ia5-string max="32" min="1" name="SafeVehicleTypeConfirmation$vehicleType"/><ia5-string max="32" min="1" name="SafeVehicleTypeConfirmation$safetyProfile"/><sequence name="VehicleError"><field name="time" type="TimestampIts"/><field name="vehCode" type="VehCodeEnum"/><field name="customCode" type="UInt8"/><field name="description" optional="true" type="Description"/></sequence><enumerated name="VehCodeEnum"><value name="unspecified" value="0"/><value name="pathNotDriveable" value="1"/><value name="onboardVehicleFault" value="2"/><value name="communicationFault" value="3"/><value name="vehicleEgressFault" value="4"/><extension/></enumerated><integer max="255" min="0" name="UInt8"/><ia5-string max="200" min="1" name="Description"/><sequence-of max="20" min="1" name="VehicleSafetyFeedback"><field type="VehicleSafetyFeedbackContainer"/></sequence-of><sequence name="VehicleSafetyFeedbackContainer"><field name="remainingTimeToStartBraking" type="Int16"/><field name="safetyViolations" type="SafetyViolationsContainer"/><field name="currentVehicleSafetyClockTime" type="TimestampIts"/></sequence><integer max="32767" min="-32768" name="Int16"/><sequence-of max="5" min="0" name="SafetyViolationsContainer"><field type="SafetyViolationsEnum"/></sequence-of><enumerated name="SafetyViolationsEnum"><value name="noViolation" value="0"/><value name="noDrivingPermissionReceived" value="1"/><value name="lastDrivingPermissionTooOld" value="2"/><value name="crcViolationClockSyncRequest" value="3"/><value name="crcViolationDrivingPermission" value="4"/><value name="expirationTimeViolation" value="5"/><value name="drivingDirectionMismatch" value="6"/><value name="velocityViolation" value="7"/><value name="curvatureMinViolation" value="8"/><value name="curvatureMaxViolation" value="9"/><value name="expirationTimeTooHigh" value="10"/><value name="monitoring" value="11"/><extension/></enumerated><sequence name="VehicleProperties"><field name="basicVehicleClass" type="BasicVehicleClassEnum"/><field name="vehicleLength" type="Centimetre"/><field name="vehicleWheelbase" type="Centimetre"/><field name="vehicleRearOverhang" type="Centimetre"/><field name="vehicleWidth" type="Centimetre"/><field name="vehicleTireWidth" type="Centimetre"/><field name="vehicleTrackWidth" type="Centimetre"/><field name="vehicleMass" type="VehicleMass"/><field name="vehicleSpeedLimit" type="VelocityComponentValue"/><field name="vehicleCuvatureLimit" type="HighResCurvature"/><field name="vehicleMaxAngularSteeringRate" type="RadPerSecond"/><extension/></sequence><enumerated name="BasicVehicleClassEnum"><value name="none" value="0"/><value name="unknown" value="1"/><value name="special" value="2"/><value name="moto" value="3"/><value name="car" value="4"/><value name="carOther" value="5"/><value name="bus" value="6"/><value name="axleCnt2" value="7"/><value name="axleCnt3" value="8"/><value name="axleCnt4" value="9"/><value name="axleCnt4Trailer" value="10"/><value name="axleCnt5Trailer" value="11"/><value name="axleCnt6Trailer" value="12"/><value name="axleCnt5MultiTrailer" value="13"/><value name="axleCnt6MultiTrailer" value="14"/><value name="axleCnt7MultiTrailer" value="15"/><extension/></enumerated><integer max="1024" min="1" name="VehicleMass"><value name="outOfRange" value="1023"/><value name="unavailable" value="1024"/></integer><integer max="32766" min="-32767" name="RadPerSecond"><value name="negativeOutOfRange" value="-32766"/><value name="positiveOutOfRange" value="32766"/><value name="unavailable" value="-32767"/></integer></module>
\ No newline at end of file