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
This diff is collapsed.
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 diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<?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