ETSI-ITS-CDD.asn 272 KB
Newer Older
--! @options: no-fields-header
tijinkj's avatar
tijinkj committed

tijinkj's avatar
tijinkj committed
ETSI-ITS-CDD {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) 102894 cdd (2) major-version-3 (3) minor-version-1 (1)}
tijinkj's avatar
tijinkj committed

DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

------------------------------------------
-- Specification of CDD Data Elements: 
------------------------------------------


/** 
 * This DE indicates a change of acceleration.
 *
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - 0 - `accelerate` - if the magnitude of the horizontal velocity vector increases.
 * - 1 - `decelerate` - if the magnitude of the horizontal velocity vector decreases.
tijinkj's avatar
tijinkj committed
 *
tijinkj's avatar
tijinkj committed
 * @category: Kinematic information
tijinkj's avatar
tijinkj committed
 * @revision: Created in V2.1.1
*/
AccelerationChange::= ENUMERATED { 
    accelerate (0), 
    decelerate (1) 
}

/**
tijinkj's avatar
tijinkj committed
 * This DE indicates the acceleration confidence value which represents the estimated absolute accuracy of an acceleration value with a default confidence level of 95%. 
 * If required, the confidence level can be defined by the corresponding standards applying this DE.
tijinkj's avatar
tijinkj committed
 *
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - `n (n > 0 and n < 101)` if the confidence value is equal to or less than n x 0,1 m/s<sup>2</sup>, and greater than (n-1) x 0,1 m/s<sup>2</sup>,
 * - `101` if the confidence value is out of range i.e. greater than 10 m/s<sup>2</sup>,
tijinkj's avatar
tijinkj committed
 * - `102` if the confidence value is unavailable.
tijinkj's avatar
tijinkj committed
 *
tijinkj's avatar
tijinkj committed
 * The value 0 shall not be used.
 *
 * @note: The fact that an acceleration value is received with confidence value set to 'unavailable(102)' can be caused by several reasons, such as:
tijinkj's avatar
tijinkj committed
 * - the sensor cannot deliver the accuracy at the defined confidence level because it is a low-end sensor,
 * - the sensor cannot calculate the accuracy due to lack of variables, or
 * - there has been a vehicle bus (e.g. CAN bus) error.
tijinkj's avatar
tijinkj committed
 * In all 3 cases above, the acceleration value may be valid and used by the application.
tijinkj's avatar
tijinkj committed
 * 
tijinkj's avatar
tijinkj committed
 * @note: If an acceleration value is received and its confidence value is set to `outOfRange(101)`, it means that the value is not valid and therefore cannot be trusted. Such value is not useful for the application.
tijinkj's avatar
tijinkj committed
 *
 * @unit 0,1 m/s<sup>2</sup>
tijinkj's avatar
tijinkj committed
 * @category: Kinematic information
tijinkj's avatar
tijinkj committed
 * @revision: Description revised in V2.1.1
 */
AccelerationConfidence ::= INTEGER {
    outOfRange                 (101), 
    unavailable                (102)
} (0..102)

/**
 * This DE indicates the current controlling mechanism for longitudinal movement of the vehicle.
 * The data may be provided via the in-vehicle network. It indicates whether a specific in-vehicle
 * acceleration control system is engaged or not. Currently, this DE includes the information of the
 * vehicle brake pedal, gas pedal, emergency brake system, collision warning system, adaptive cruise
 * control system, cruise control system and speed limiter system.
 *
 * The corresponding bit shall be set to 1 under the following conditions:
 * - 0 - `brakePedalEngaged`      - Driver is stepping on the brake pedal,
 * - 1 - `gasPedalEngaged`        - Driver is stepping on the gas pedal,
 * - 2 - `emergencyBrakeEngaged`  - emergency brake system is engaged,
 * - 3 - `collisionWarningEngaged`- collision warning system is engaged,
 * - 4 - `accEngaged`             - ACC is engaged,
 * - 5 - `cruiseControlEngaged`   - cruise control is engaged,
 * - 6 - `speedLimiterEngaged`    - speed limiter is engaged.
 *
 * Otherwise (for example when the corresponding system is not available due to non equipped system
tijinkj's avatar
tijinkj committed
 * or information is unavailable), the corresponding bit shall be set to 0.
tijinkj's avatar
tijinkj committed
 *
 * @note: The system engagement condition is OEM specific and therefore out of scope of the present document.
tijinkj's avatar
tijinkj committed
 * @category: Vehicle information
tijinkj's avatar
tijinkj committed
 * @revision: V1.3.1
 */
AccelerationControl ::= BIT STRING {
    brakePedalEngaged       (0),
    gasPedalEngaged         (1),
    emergencyBrakeEngaged   (2),
    collisionWarningEngaged (3),
    accEngaged              (4),
    cruiseControlEngaged    (5),
    speedLimiterEngaged     (6)
} (SIZE(7))

tijinkj's avatar
tijinkj committed
/** 
 * This DE represents the magnitude of the acceleration vector in a defined coordinate system.
 *
 * The value shall be set to:
 * - `0` to indicate no acceleration,
tijinkj's avatar
tijinkj committed
 * - `n (n > 0 and n < 160)` to indicate acceleration equal to or less than n x 0,1 m/s<sup>2</sup>, and greater than (n-1) x 0,1 m/s<sup>2</sup>,
 * - `160` for acceleration values greater than 15,9 m/s<sup>2</sup>,
tijinkj's avatar
tijinkj committed
 * - `161` when the data is unavailable.
 *
 * @unit 0,1 m/s<sup>2</sup>
tijinkj's avatar
tijinkj committed
 * @category: Kinematic information
tijinkj's avatar
tijinkj committed
 * @revision: Created in V2.1.1
*/
AccelerationMagnitudeValue ::= INTEGER {
    positiveOutOfRange (160),
    unavailable        (161)  
} (0.. 161)

tijinkj's avatar
tijinkj committed
/** 
 * This DE represents the value of an acceleration component in a defined coordinate system.
 *
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - `-160` for acceleration values equal to or less than -16 m/s<sup>2</sup>,
tijinkj's avatar
tijinkj committed
 * - `n (n > -160 and n <= 0)` to indicate negative acceleration equal to or less than n x 0,1 m/s<sup>2</sup>, and greater than (n-1) x 0,1 m/s<sup>2</sup>,
 * - `n (n > 0 and n < 160)` to indicate positive acceleration equal to or less than n x 0,1 m/s<sup>2</sup>, and greater than (n-1) x 0,1 m/s<sup>2</sup>,
tijinkj's avatar
tijinkj committed
 * - `160` for acceleration values greater than 15,9 m/s<sup>2</sup>,
tijinkj's avatar
tijinkj committed
 * - `161` when the data is unavailable.
 *
tijinkj's avatar
tijinkj committed
 * @note: the formula for values > -160 and <160 results in rounding up to the next value. Zero acceleration is indicated using n=0.
tijinkj's avatar
tijinkj committed
 * @unit 0,1 m/s<sup>2</sup>
tijinkj's avatar
tijinkj committed
 * @category: Kinematic information
tijinkj's avatar
tijinkj committed
 * @revision: Created in V2.1.1
*/
AccelerationValue ::= INTEGER {
    negativeOutOfRange (-160),
    positiveOutOfRange (160),
tijinkj's avatar
tijinkj committed
    unavailable        (161)  
tijinkj's avatar
tijinkj committed
} (-160 .. 161)


/**
 * This DE indicates an access technology.
 *
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - `0`: in case of any access technology class,
 * - `1`: in case of ITS-G5 access technology class,
 * - `2`: in case of LTE-V2X access technology class,
tijinkj's avatar
tijinkj committed
 * - `3`: in case of NR-V2X access technology class.
 * 
 * @category: Communication information
 * @revision: Created in V2.1.1
 */
AccessTechnologyClass ::= ENUMERATED {
   any         (0), 
   itsg5Class  (1), 
   ltev2xClass (2), 
   nrv2xClass  (3),
   ...
}

/**
 * This DE represents the value of the sub cause code of the @ref CauseCode `accident`.
 *
 * The value shall be set to:
 * - 0 - `unavailable`                        - in case the information on the sub cause of the accident is unavailable,
 * - 1 - `multiVehicleAccident`               - in case more than two vehicles are involved in accident,
 * - 2 - `heavyAccident`                      - in case the airbag of the vehicle involved in the accident is triggered, 
 *                                              the accident requires important rescue and/or recovery work,
 * - 3 - `accidentInvolvingLorry`             - in case the accident involves a lorry,
 * - 4 - `accidentInvolvingBus`               - in case the accident involves a bus,
 * - 5 - `accidentInvolvingHazardousMaterials`- in case the accident involves hazardous material,
 * - 6 - `accidentOnOppositeLane`             - in case the accident happens on opposite lanes,
 * - 7 - `unsecuredAccident`                  - in case the accident is not secured,
 * - 8 - `assistanceRequested`                - in case rescue and assistance are requested,
 * - 9-255                                    - reserved for future usage. 
 *
 * @category: Traffic information
 * @revision: V1.3.1
 */
AccidentSubCauseCode ::= INTEGER {
    unavailable                         (0),
    multiVehicleAccident                (1),
    heavyAccident                       (2),
    accidentInvolvingLorry              (3),
    accidentInvolvingBus                (4),
    accidentInvolvingHazardousMaterials (5),
    accidentOnOppositeLane              (6),
    unsecuredAccident                   (7),
    assistanceRequested                 (8)
} (0..255)

/**
 * This DE represents the value of the sub cause code of the @ref CauseCode `adverseWeatherCondition-Adhesion`. 
 * 
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - 0 - `unavailable`     - in case information on the cause of the low road adhesion is unavailable,
 * - 1 - `heavyFrostOnRoad`- in case the low road adhesion is due to heavy frost on the road,
 * - 2 - `fuelOnRoad`      - in case the low road adhesion is due to fuel on the road,
 * - 3 - `mudOnRoad`       - in case the low road adhesion is due to mud on the road,
 * - 4 - `snowOnRoad`      - in case the low road adhesion is due to snow on the road,
 * - 5 - `iceOnRoad`       - in case the low road adhesion is due to ice on the road,
 * - 6 - `blackIceOnRoad`  - in case the low road adhesion is due to black ice on the road,
 * - 7 - `oilOnRoad`       - in case the low road adhesion is due to oil on the road,
 * - 8 - `looseChippings`  - in case the low road adhesion is due to loose gravel or stone fragments detached from a road surface or from a hazard,
 * - 9 - `instantBlackIce` - in case the low road adhesion is due to instant black ice on the road surface,
 * - 10 - `roadsSalted`    - when the low road adhesion is due to salted road,
tijinkj's avatar
tijinkj committed
 * - 11-255                - are reserved for future usage.
 *
 * @category: Traffic information
 * @revision: V1.3.1
 */
AdverseWeatherCondition-AdhesionSubCauseCode ::= INTEGER {
    unavailable      (0),
    heavyFrostOnRoad (1),
    fuelOnRoad       (2),
    mudOnRoad        (3),
    snowOnRoad       (4),
    iceOnRoad        (5),
    blackIceOnRoad   (6),
    oilOnRoad        (7),
    looseChippings   (8),
    instantBlackIce  (9),
    roadsSalted      (10)
} (0..255)

/**
 * This DE represents the value of the sub cause codes of the @ref CauseCode `adverseWeatherCondition-ExtremeWeatherCondition`.
 *
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - 0 - `unavailable` - in case information on the type of extreme weather condition is unavailable,
 * - 1 - `strongWinds` - in case the type of extreme weather condition is strong wind,
 * - 2 - `damagingHail`- in case the type of extreme weather condition is damaging hail,
 * - 3 - `hurricane`   - in case the type of extreme weather condition is hurricane,
 * - 4 - `thunderstorm`- in case the type of extreme weather condition is thunderstorm,
 * - 5 - `tornado`     - in case the type of extreme weather condition is tornado,
tijinkj's avatar
tijinkj committed
 * - 6 - `blizzard`    - in case the type of extreme weather condition is blizzard.
 * - 7-255             - are reserved for future usage.
 *
 * @category: Traffic information
 * @revision: V1.3.1
 */
AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode ::= INTEGER {
    unavailable  (0),
    strongWinds  (1),
    damagingHail (2),
    hurricane    (3),
    thunderstorm (4),
    tornado      (5),
    blizzard     (6)
} (0..255)

/**
 * This DE represents the value of the sub cause codes of the @ref CauseCode `adverseWeatherCondition-Precipitation`. 
 *
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - 0 - `unavailable`   - in case information on the type of precipitation is unavailable,
 * - 1 - `heavyRain`     - in case the type of precipitation is heavy rain,
 * - 2 - `heavySnowfall` - in case the type of precipitation is heavy snow fall,
 * - 3 - `softHail`      - in case the type of precipitation is soft hail.
 * - 4-255               - are reserved for future usage
tijinkj's avatar
tijinkj committed
 *
 * @category: Traffic information
 * @revision: V1.3.1
 */
AdverseWeatherCondition-PrecipitationSubCauseCode ::= INTEGER {
    unavailable   (0),
    heavyRain     (1),
    heavySnowfall (2),
    softHail      (3)
} (0..255)

/**
 * This DE represents the value of the sub cause codes of the @ref CauseCode `adverseWeatherCondition-Visibility`.
 *
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - 0 - `unavailable`    - in case information on the cause of low visibility is unavailable,
 * - 1 - `fog`            - in case the cause of low visibility is fog,
 * - 2 - `smoke`          - in case the cause of low visibility is smoke,
 * - 3 - `heavySnowfall`  - in case the cause of low visibility is heavy snow fall,
 * - 4 - `heavyRain`      - in case the cause of low visibility is heavy rain,
 * - 5 - `heavyHail`      - in case the cause of low visibility is heavy hail,
 * - 6 - `lowSunGlare`    - in case the cause of low visibility is sun glare,
 * - 7 - `sandstorms`     - in case the cause of low visibility is sand storm,
tijinkj's avatar
tijinkj committed
 * - 8 - `swarmsOfInsects`- in case the cause of low visibility is swarm of insects.
 * - 9-255                - are reserved for future usage
 *
 * @category: Traffic information
 * @revision: V1.3.1
 */
AdverseWeatherCondition-VisibilitySubCauseCode ::= INTEGER {
    unavailable     (0),
    fog             (1),
    smoke           (2),
    heavySnowfall   (3),
    heavyRain       (4),
    heavyHail       (5),
    lowSunGlare     (6),
    sandstorms      (7),
    swarmsOfInsects (8)
} (0..255)

/**
tijinkj's avatar
tijinkj committed
 * This DE represents the air humidity in tenths of percent.
tijinkj's avatar
tijinkj committed
 *
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - `n (n > 0 and n < 1001)` indicates that the applicable value is equal to or less than n x 0,1 percent and greater than (n-1) x 0,1 percent.
tijinkj's avatar
tijinkj committed
 * - `1001` indicates that the air humidity is unavailable.
 *
 * @category: Basic information
 * @unit: 0,1 % 
 * @revision: created in V2.1.1
 */
AirHumidity ::= INTEGER {
tijinkj's avatar
tijinkj committed
	oneHundredPercent   (1000),
	unavailable         (1001)
tijinkj's avatar
tijinkj committed
} (1..1001)

/**
tijinkj's avatar
tijinkj committed
 * This DE indicates the altitude confidence value which represents the estimated absolute accuracy of an altitude value of a geographical point with a default confidence level of 95%.
 * If required, the confidence level can be defined by the corresponding standards applying this DE.
tijinkj's avatar
tijinkj committed
 *
 * The value shall be set to: 
tijinkj's avatar
tijinkj committed
 *   - 0  - `alt-000-01`   - if the confidence value is equal to or less than 0,01 metre,
 *   - 1  - `alt-000-02`   - if the confidence value is equal to or less than 0,02 metre and greater than 0,01 metre,
 *   - 2  - `alt-000-05`   - if the confidence value is equal to or less than 0,05 metre and greater than 0,02 metre,            
 *   - 3  - `alt-000-10`   - if the confidence value is equal to or less than 0,1 metre and greater than 0,05 metre,            
 *   - 4  - `alt-000-20`   - if the confidence value is equal to or less than 0,2 metre and greater than 0,1 metre,            
 *   - 5  - `alt-000-50`   - if the confidence value is equal to or less than 0,5 metre and greater than 0,2 metre,             
 *   - 6  - `alt-001-00`   - if the confidence value is equal to or less than 1 metre and greater than 0,5 metre,             
 *   - 7  - `alt-002-00`   - if the confidence value is equal to or less than 2 metres and greater than 1 metre,             
 *   - 8  - `alt-005-00`   - if the confidence value is equal to or less than 5 metres and greater than 2 metres,              
 *   - 9  - `alt-010-00`   - if the confidence value is equal to or less than 10 metres and greater than 5 metres,             
 *   - 10 - `alt-020-00`   - if the confidence value is equal to or less than 20 metres and greater than 10 metres,            
 *   - 11 - `alt-050-00`   - if the confidence value is equal to or less than 50 metres and greater than 20 metres,            
 *   - 12 - `alt-100-00`   - if the confidence value is equal to or less than 100 metres and greater than 50 metres,           
 *   - 13 - `alt-200-00`   - if the confidence value is equal to or less than 200 metres and greater than 100 metres,           
 *   - 14 - `outOfRange`   - if the confidence value is out of range, i.e. greater than 200 metres,
 *   - 15 - `unavailable`  - if the confidence value is unavailable.       
tijinkj's avatar
tijinkj committed
 *
 * @note: The fact that an altitude value is received with confidence value set to `unavailable(15)` can be caused
tijinkj's avatar
tijinkj committed
 * by several reasons, such as:
 * - the sensor cannot deliver the accuracy at the defined confidence level because it is a low-end sensor,
 * - the sensor cannot calculate the accuracy due to lack of variables, or
 * - there has been a vehicle bus (e.g. CAN bus) error.
tijinkj's avatar
tijinkj committed
 * In all 3 cases above, the altitude value may be valid and used by the application.
tijinkj's avatar
tijinkj committed
 * 
tijinkj's avatar
tijinkj committed
 * @note: If an altitude value is received and its confidence value is set to `outOfRange(14)`, it means that the  
tijinkj's avatar
tijinkj committed
 * altitude value is not valid and therefore cannot be trusted. Such value is not useful for the application.             
 *
 * @category: GeoReference information
tijinkj's avatar
tijinkj committed
 * @revision: Description revised in V2.1.1
tijinkj's avatar
tijinkj committed
 */
AltitudeConfidence ::= ENUMERATED {
    alt-000-01  (0),
    alt-000-02  (1),
    alt-000-05  (2),
    alt-000-10  (3),
    alt-000-20  (4),
    alt-000-50  (5),
    alt-001-00  (6),
    alt-002-00  (7),
    alt-005-00  (8),
    alt-010-00  (9),
    alt-020-00  (10),
    alt-050-00  (11),
    alt-100-00  (12),
    alt-200-00  (13),
    outOfRange  (14),
    unavailable (15)
}

/**
tijinkj's avatar
tijinkj committed
 * This DE represents the altitude value in a WGS84 coordinate system.
 * The specific WGS84 coordinate system is specified by the corresponding standards applying this DE.
tijinkj's avatar
tijinkj committed
 *
 * The value shall be set to: 
tijinkj's avatar
tijinkj committed
 * - `-100 000` if the altitude is equal to or less than -1 000 m,
 * - `n (n > -100 000 and n < 800 000)` if the altitude is equal to or less than n  x 0,01 metre and greater than (n-1) x 0,01 metre,
 * - `800 000` if the altitude  greater than 7 999,99 m,
tijinkj's avatar
tijinkj committed
 * - `800 001` if the information is not available.
 *
tijinkj's avatar
tijinkj committed
 * @note: the range of this DE does not use the full binary encoding range, but all reasonable values are covered. In order to cover all possible altitude ranges a larger encoding would be necessary.
 * @unit: 0,01 metre
tijinkj's avatar
tijinkj committed
 * @category: GeoReference information
 * @revision: Description revised in V2.1.1 (definition of 800 000 has slightly changed) 
 */
AltitudeValue ::= INTEGER {
tijinkj's avatar
tijinkj committed
    negativeOutOfRange (-100000),
tijinkj's avatar
tijinkj committed
    postiveOutOfRange  (800000),
    unavailable        (800001)
} (-100000..800001)

/** 
tijinkj's avatar
tijinkj committed
 * This DE indicates the angle confidence value which represents the estimated absolute accuracy of an angle value with a default confidence level of 95 %.
 * If required, the confidence level can be defined by the corresponding standards applying this DE.
tijinkj's avatar
tijinkj committed
 *
 * The value shall be set to: 
tijinkj's avatar
tijinkj committed
 * - `n (n > 0 and n < 126)`  if the accuracy is equal to or less than n * 0,1 degrees and greater than (n-1) x * 0,1 degrees,
 * - `126` if the  accuracy is out of range, i.e. greater than 12,5 degrees,
tijinkj's avatar
tijinkj committed
 * - `127` if the accuracy information is not available.
 *
 * @unit: 0,1 degrees
tijinkj's avatar
tijinkj committed
 * @category: Basic information
tijinkj's avatar
tijinkj committed
 * @revision: Created in V2.1.1
*/
AngleConfidence ::= INTEGER {
    outOfRange  (126),
    unavailable (127)   
} (1..127)

/** 
tijinkj's avatar
tijinkj committed
 * This DE indicates the angular speed confidence value which represents the estimated absolute accuracy of an angular speed value with a default confidence level of 95%.
 * If required, the confidence level can be defined by the corresponding standards applying this DE.
tijinkj's avatar
tijinkj committed
 * For correlation computation, maximum interval levels can be assumed.
 *
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - 0 - `degSec-01`   - if the accuracy is equal to or less than 1 degree/second,
 * - 1 - `degSec-02`   - if the accuracy is equal to or less than 2 degrees/second and greater than 1 degree/second,
 * - 2 - `degSec-05`   - if the accuracy is equal to or less than 5 degrees/second and greater than 2 degrees/second,
 * - 3 - `degSec-10`   - if the accuracy is equal to or less than 10 degrees/second and greater than 5 degrees/second,
 * - 4 - `degSec-20`   - if the accuracy is equal to or less than 20 degrees/second and greater than 10 degrees/second,
 * - 5 - `degSec-50`   - if the accuracy is equal to or less than 50 degrees/second and greater than 20 degrees/second,
 * - 6 - `outOfRange`  - if the accuracy is out of range, i.e. greater than 50 degrees/second,
 * - 7 - `unavailable` - if the accuracy information is unavailable.
tijinkj's avatar
tijinkj committed
 * 
tijinkj's avatar
tijinkj committed
 * @category: Kinematic information
tijinkj's avatar
tijinkj committed
 * @revision: Created in V2.1.1
*/
AngularSpeedConfidence ::= ENUMERATED {
tijinkj's avatar
tijinkj committed
    degSec-01   (0), 
    degSec-02   (1),  
    degSec-05   (2), 
    degSec-10   (3), 
    degSec-20   (4),  
    degSec-50   (5), 
tijinkj's avatar
tijinkj committed
    outOfRange  (6),   
    unavailable (7)   
tijinkj's avatar
tijinkj committed
}

/** 
tijinkj's avatar
tijinkj committed
 * This DE indicates the angular acceleration confidence value which represents the estimated accuracy of an angular acceleration value with a default confidence level of 95%.
 * If required, the confidence level can be defined by the corresponding standards applying this DE.
tijinkj's avatar
tijinkj committed
 * For correlation computation, maximum interval levels shall be assumed.
 *
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - 0 - `degSecSquared-01` - if the accuracy is equal to or less than 1 degree/second<sup>2</sup>,
 * - 1 - `degSecSquared-02` - if the accuracy is equal to or less than 2 degrees/second<sup>2</sup> and greater than 1 degree/second<sup>2</sup>,
 * - 2 - `degSecSquared-05` - if the accuracy is equal to or less than 5 degrees/second<sup>2</sup> and greater than 1 degree/second<sup>2</sup>,
 * - 3 - `degSecSquared-10` - if the accuracy is equal to or less than 10 degrees/second<sup>2</sup> and greater than 5 degrees/second<sup>2</sup>,
 * - 4 - `degSecSquared-20` - if the accuracy is equal to or less than 20 degrees/second<sup>2</sup> and greater than 10 degrees/second<sup>2</sup>,
 * - 5 - `degSecSquared-50` - if the accuracy is equal to or less than 50 degrees/second<sup>2</sup> and greater than 20 degrees/second<sup>2</sup>,
 * - 6 - `outOfRange`       - if the accuracy is out of range, i.e. greater than 50 degrees/second<sup>2</sup>,
 * - 7 - `unavailable`      - if the accuracy information is unavailable.
tijinkj's avatar
tijinkj committed
 *
tijinkj's avatar
tijinkj committed
 * @category: Kinematic information
tijinkj's avatar
tijinkj committed
 * @revision: Created in V2.1.1
*/
AngularAccelerationConfidence ::= ENUMERATED {
tijinkj's avatar
tijinkj committed
    degSecSquared-01 (0), 
    degSecSquared-02 (1), 
    degSecSquared-05 (2),  
    degSecSquared-10 (3), 
    degSecSquared-20 (4),  
    degSecSquared-50 (5),  
    outOfRange       (6),     
    unavailable      (7)   
tijinkj's avatar
tijinkj committed
}

/**
tijinkj's avatar
tijinkj committed
 * This DE indicates the number of axles of a passing train.
tijinkj's avatar
tijinkj committed
 *
tijinkj's avatar
tijinkj committed
 * The value shall be set to:
 * - `n(n > 2 and n < 1001)` indicates that the train has n x axles,
 * - `1001`indicates that the number of axles is out of range,
tijinkj's avatar
tijinkj committed
 * - `1002` the information is unavailable.
 *
 * 
tijinkj's avatar
tijinkj committed
 * @unit: Number of axles
tijinkj's avatar
tijinkj committed
 * @category: Vehicle information
 * @revision: Created in V2.1.1
*/
AxlesCount ::= INTEGER{
tijinkj's avatar
tijinkj committed
    outOfRange   (1001),
    unavailable  (1002)
tijinkj's avatar
tijinkj committed
} (2..1002) 

/**
tijinkj's avatar
tijinkj committed
 * This DE represents the measured uncompensated atmospheric pressure.
tijinkj's avatar
tijinkj committed
 * 
tijinkj's avatar
tijinkj committed
 * The value shall be set to:
 * - `2999` indicates that the applicable value is less than 29990 Pa,
 * - `n (n >= 3000 and n <= 12000)` indicates that the applicable value is equal to or less than n x 10 Pa and greater than (n-1) x 10 Pa, 
 * - `12001` indicates that the values is greater than 120000 Pa,
tijinkj's avatar
tijinkj committed
 * - `12002` indicates that the information is not available.
 *
 * @category: Basic information
tijinkj's avatar
tijinkj committed
 * @unit: 10 Pascal
tijinkj's avatar
tijinkj committed
 * @revision: Created in V2.1.1
*/
BarometricPressure ::= INTEGER{
	outOfRangelower        (2999),
	outOfRangeUpper        (12001),
	unavailable            (12002)
} (2999..12002)


/**
 * This DE indicates the cardinal number of bogies of a train.
 *
tijinkj's avatar
tijinkj committed
 * The value shall be set to: 
 * - `n (n > 1 and n < 100)` indicates that the train has n x bogies,
 * - `100`indicates that the number of bogies is out of range, 
tijinkj's avatar
tijinkj committed
 * - `101` the information is unavailable.
 *
 * @unit: Number of bogies
 * @category: Vehicle information
 * @revision: Created in V2.1.1
*/
BogiesCount ::= INTEGER{
	outOfRange   (100),
	unavailable  (101)
} (2..101)

/**
 * The DE represents a cardinal number that counts the size of a set. 
 * 
 * @category: Basic information
 * @revision: Created in V2.1.1
*/
tijinkj's avatar
tijinkj committed
CardinalNumber1B ::= INTEGER(0..255)
tijinkj's avatar
tijinkj committed

tijinkj's avatar
tijinkj committed
/**
 * The DE represents a cardinal number that counts the size of a set. 
 * 
 * @category: Basic information
 * @revision: Created in V2.1.1
*/
CardinalNumber3b ::= INTEGER(1..8)

tijinkj's avatar
tijinkj committed
/** 
tijinkj's avatar
tijinkj committed
 * This DE represents an angle value described in a local Cartesian coordinate system, per default counted positive in
tijinkj's avatar
tijinkj committed
 * a right-hand local coordinate system from the abscissa.
 *
 * The value shall be set to: 
tijinkj's avatar
tijinkj committed
 * - `n (n > 0 and n < 3600)` if the angle is equal to or less than n x 0,1 degrees, and greater than (n-1) x 0,1 degrees,
tijinkj's avatar
tijinkj committed
 * - `36001` if the accuracy information is not available.
 *
 * The value 3600 shall not be used. 
 * 
 * @unit 0,1 degrees
tijinkj's avatar
tijinkj committed
 * @category: Basic information
tijinkj's avatar
tijinkj committed
 * @revision: Created in V2.1.1
*/
CartesianAngleValue ::= INTEGER {
    valueNotUsed (3600),
    unavailable  (3601)
} (0..3601)

/**
tijinkj's avatar
tijinkj committed
 * This DE represents an angular acceleration value described in a local Cartesian coordinate system, per default counted positive in
tijinkj's avatar
tijinkj committed
 * a right-hand local coordinate system from the abscissa.
 *
tijinkj's avatar
tijinkj committed
  * The value shall be set to: 
 * - `-255` if the acceleration is equal to or less than -255 degrees/s<sup>2</sup>,
 * - `n` (`n > -255` and `n < 255`) if the acceleration is equal to or less than n x 1 degree/s<sup>2</sup>,
tijinkj's avatar
tijinkj committed
      and greater than `(n-1)` x 0,01 degree/s<sup>2</sup>,
tijinkj's avatar
tijinkj committed
 * - `255` if the acceleration is greater than 254 degrees/s<sup>2</sup>,
tijinkj's avatar
tijinkj committed
 * - `256` if the information is unavailable.
tijinkj's avatar
tijinkj committed
 *
tijinkj's avatar
tijinkj committed
 * @unit:  degree/s<sup>2</sup> (degrees per second squared)
tijinkj's avatar
tijinkj committed
 * @category: Kinematic information
tijinkj's avatar
tijinkj committed
 * @revision: Created in V2.1.1
*/
tijinkj's avatar
tijinkj committed
CartesianAngularAccelerationComponentValue ::= INTEGER {
tijinkj's avatar
tijinkj committed
    negativeOutOfRange (-255),
tijinkj's avatar
tijinkj committed
    positiveOutOfRange (255),
tijinkj's avatar
tijinkj committed
    unavailable        (256)
tijinkj's avatar
tijinkj committed
} (-255..256)
tijinkj's avatar
tijinkj committed

/**
tijinkj's avatar
tijinkj committed
 * This DE represents an angular velocity component described in a local Cartesian coordinate system, per default counted positive in
tijinkj's avatar
tijinkj committed
 * a right-hand local coordinate system from the abscissa.
 *
tijinkj's avatar
tijinkj committed
 * The value shall be set to: 
 * - `-255` if the velocity is equal to or less than -255 degrees/s,
 * - `n` (`n > -255` and `n < 255`) if the velocity is equal to or less than n x 1 degree/s, and greater than (n-1) x 1 degree/s,
 * - `255` if the velocity is greater than 254 degrees/s,
 * - `256` if the information is unavailable.
tijinkj's avatar
tijinkj committed
 *
tijinkj's avatar
tijinkj committed
 * @unit: degree/s
tijinkj's avatar
tijinkj committed
 * @category: Kinematic information
tijinkj's avatar
tijinkj committed
 * @revision: Created in V2.1.1
*/
tijinkj's avatar
tijinkj committed
CartesianAngularVelocityComponentValue ::= INTEGER {
tijinkj's avatar
tijinkj committed
    negativeOutofRange (-255),
    positiveOutOfRange (255),
tijinkj's avatar
tijinkj committed
    unavailable	       (256)
tijinkj's avatar
tijinkj committed
} (-255..256)
tijinkj's avatar
tijinkj committed

/**
 *The DE represents the value of the cause code of an event. 
 * 
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - 0                                                     - reserved for future use,
tijinkj's avatar
tijinkj committed
 * - 1  - `trafficCondition`                               - in case the type of event is an abnormal traffic condition,
 * - 2  - `accident`                                       - in case the type of event is a road accident,
 * - 3  - `roadworks`                                      - in case the type of event is roadwork,
 * - 4                                                     - reserved for future usage,
 * - 5  - `impassability`                                  - in case the  type of event is unmanaged road blocking, referring to any
tijinkj's avatar
tijinkj committed
 *                                                           blocking of a road, partial or total, which has not been adequately
 *                                                           secured and signposted,
tijinkj's avatar
tijinkj committed
 * - 6  - `adverseWeatherCondition-Adhesion`               - in case the  type of event is low adhesion,
 * - 7  - `aquaplaning`                                    - danger of aquaplaning on the road,
 * - 8                                                     - reserved for future usage,
 * - 9  - `hazardousLocation-SurfaceCondition`             - in case the type of event is abnormal road surface condition,
 * - 10 - `hazardousLocation-ObstacleOnTheRoad`            - in case the type of event is obstacle on the road,
 * - 11 - `hazardousLocation-AnimalOnTheRoad`              - in case the type of event is animal on the road,
 * - 12 - `humanPresenceOnTheRoad`                         - in case the type of event is human presence on the road,
 * - 13                                                    - reserved for future usage,
 * - 14 - `wrongWayDriving`                                - in case the type of the event is vehicle driving in wrong way,
 * - 15 - `rescueAndRecoveryWorkInProgress`                - in case the type of event is rescue and recovery work for accident or for a road hazard in progress,
 * - 16                                                    - reserved for future usage,
 * - 17 - `adverseWeatherCondition-ExtremeWeatherCondition`- in case the type of event is extreme weather condition,
 * - 18 - `adverseWeatherCondition-Visibility`             - in case the type of event is low visibility,
 * - 19 - `adverseWeatherCondition-Precipitation`          - in case the type of event is precipitation,
 * - 20 - `violence`                                       - in case the the type of event is human violence on or near the road,
 * - 21-25                                                 - reserved for future usage,
 * - 26 - `slowVehicle`                                    - in case the type of event is slow vehicle driving on the road,
 * - 27 - `dangerousEndOfQueue`                            - in case the type of event is dangerous end of vehicle queue,
 * - 28-90                                                 - are reserved for future usage,
 * - 91 - `vehicleBreakdown`                               - in case the type of event is break down vehicle on the road,
 * - 92 - `postCrash`                                      - in case the type of event is a detected crash,
 * - 93 - `humanProblem`                                   - in case the type of event is human health problem in vehicles involved in traffic,
 * - 94 - `stationaryVehicle`                              - in case the type of event is stationary vehicle,
 * - 95 - `emergencyVehicleApproaching`                    - in case the type of event is approaching vehicle operating emergency mission,
 * - 96 - `hazardousLocation-DangerousCurve`               - in case the type of event is dangerous curve,
 * - 97 - `collisionRisk`                                  - in case the type of event is a collision risk,
 * - 98 - `signalViolation`                                - in case the type of event is signal violation,
 * - 99 - `dangerousSituation`                             - in case the type of event is dangerous situation in which autonomous safety system in vehicle 
 *                                                             is activated,
 * - 100 - `railwayLevelCrossing`                          - in case the type of event is a railway level crossing. 
 * - 101-255                                               - are reserved for future usage.
 *
 * @category: Traffic information
 * @revision: V1.3.1
 */
CauseCodeType ::= INTEGER {
    trafficCondition                                (1),
    accident                                        (2),
    roadworks                                       (3),
    impassability                                   (5),
    adverseWeatherCondition-Adhesion                (6),
tijinkj's avatar
tijinkj committed
    aquaplaning                                     (7),
tijinkj's avatar
tijinkj committed
    hazardousLocation-SurfaceCondition              (9),
    hazardousLocation-ObstacleOnTheRoad             (10),
    hazardousLocation-AnimalOnTheRoad               (11),
    humanPresenceOnTheRoad                          (12),
    wrongWayDriving                                 (14),
    rescueAndRecoveryWorkInProgress                 (15),
    adverseWeatherCondition-ExtremeWeatherCondition (17),
    adverseWeatherCondition-Visibility              (18),
    adverseWeatherCondition-Precipitation           (19),
    violence                                        (20),
    slowVehicle                                     (26),
    dangerousEndOfQueue                             (27),
    vehicleBreakdown                                (91),
    postCrash                                       (92),
    humanProblem                                    (93),
    stationaryVehicle                               (94),
    emergencyVehicleApproaching                     (95),
    hazardousLocation-DangerousCurve                (96),
    collisionRisk                                   (97),
    signalViolation                                 (98),
    dangerousSituation                              (99),
    railwayLevelCrossing                            (100) 
} (0..255)

/**
tijinkj's avatar
tijinkj committed
 * This DF represents the value of a cartesian coordinate with a range of -30,94 metres to +10,00 metres.
 *
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - `3094` if the longitudinal offset is out of range, i.e. less than or equal to -30,94 metres,
 * - `n (n > -3 094 and n < 1 001)` if the longitudinal offset information is equal to or less than n x 0,01 metre and more than (n-1) x 0,01 metre,
tijinkj's avatar
tijinkj committed
 * - `1001` if the longitudinal offset is out of range, i.e. greater than 10 metres.
tijinkj's avatar
tijinkj committed
 *
 * @unit 0,01 m
 * @category: Basic information
 * @revision: Created in V2.1.1
*/
CartesianCoordinateSmall::= INTEGER {
    negativeOutOfRange (-3094),
    positiveOutOfRange (1001)
tijinkj's avatar
tijinkj committed
} (-3094..1001) 
tijinkj's avatar
tijinkj committed

/**
tijinkj's avatar
tijinkj committed
 * This DF represents the value of a cartesian coordinate with a range of -327,68 metres to +327,66 metres.
tijinkj's avatar
tijinkj committed
 *
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - `-32 768` if the longitudinal offset is out of range, i.e. less than or equal to -327,68 metres,
tijinkj's avatar
tijinkj committed
 * - `n (n > -32 768 and n < 32 767)` if the longitudinal offset information is equal to or less than n x 0,01 metre and more than (n-1) x 0,01 metre,
 * - `32 767` if the longitudinal offset is out of range, i.e. greater than + 327,66 metres.
tijinkj's avatar
tijinkj committed
 *
 * @unit 0,01 m
 * @category: Basic information
 * @revision: Created in V2.1.1
*/
CartesianCoordinate::= INTEGER{
    negativeOutOfRange (-32768),
    positiveOutOfRange (32767)
} (-32768..32767)

/**
tijinkj's avatar
tijinkj committed
 * This DF represents the value of a cartesian coordinate with a range of -1 310,72 metres to +1 310,70 metres.
tijinkj's avatar
tijinkj committed
 *
tijinkj's avatar
tijinkj committed
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - `-131072` if the longitudinal offset is out of range, i.e. less than or equal to -1 310,72 metres,
tijinkj's avatar
tijinkj committed
 * - `n (n > 131 072 and n < 131 071)` if the longitudinal offset information is equal to or less than n x 0,01 metre and more than (n-1) x 0,01 metre,
 * - `131 071` if the longitudinal offset is out of range, i.e. greater than + 1 310,70 metres.
tijinkj's avatar
tijinkj committed
 *  
tijinkj's avatar
tijinkj committed
 * @unit 0,01 m
 * @category: Basic information
 * @revision: Created in V2.1.1
*/
tijinkj's avatar
tijinkj committed
CartesianCoordinateLarge::= INTEGER{ 
    negativeOutOfRange (-131072),
    positiveOutOfRange (131071)
} (-131072..131071)
tijinkj's avatar
tijinkj committed

/**
 * This DE represents the ID of a CEN DSRC tolling zone. 
 * 
 * @category: Communication information
 * @revision: V1.3.1
tijinkj's avatar
tijinkj committed
 * @note: this DE is deprecated and shall not be used anymore.  
tijinkj's avatar
tijinkj committed
 */
tijinkj's avatar
tijinkj committed
CenDsrcTollingZoneID::= ProtectedZoneId
tijinkj's avatar
tijinkj committed

/**
 * This DE indicates the reason why a cluster leader intends to break up the cluster.
 * 
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - 0 - `notProvided`                          - if the information is not provided,
 * - 1 - `clusteringPurposeCompleted`           - if the cluster purpose has been completed,
 * - 2 - `leaderMovedOutOfClusterBoundingBox`   - if the leader moved out of the cluster's bounding box,
 * - 3 - `joiningAnotherCluster`                - if the cluster leader is about to join another cluster,
 * - 4 - `enteringLowRiskAreaBasedOnMaps`       - if the cluster is entering an area idenrified as low risk based on the use of maps,
tijinkj's avatar
tijinkj committed
 * - 5 - `receptionOfCpmContainingCluster`      - if the leader received a Collective Perception Message containing information about the same cluster. 
tijinkj's avatar
tijinkj committed
 * - 6 to 15                                    - are reserved for future use.                                    
tijinkj's avatar
tijinkj committed
 *
 * @category: Cluster information
 * @revision: Created in V2.1.1
*/
ClusterBreakupReason ::= ENUMERATED {
    notProvided                        (0),
    clusteringPurposeCompleted         (1),
    leaderMovedOutOfClusterBoundingBox (2),    
    joiningAnotherCluster              (3),
    enteringLowRiskAreaBasedOnMaps     (4),
    receptionOfCpmContainingCluster    (5),
    max(15)                                                                 
}

/**
 * This DE indicates the reason why a cluster participant is leaving the cluster.
 * 
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - 0 - `notProvided `                 - if the information is not provided,
 * - 1 - `clusterLeaderLost`            - if the cluster leader cannot be found anymore,   
 * - 2 - `clusterDisbandedByLeader`     - if the cluster has been disbanded by the leader,
 * - 3 - `outOfClusterBoundingBox`      - if the participants moved out of the cluster's bounding box,
 * - 4 - `outOfClusterSpeedRange`       - if the cluster speed moved out of a defined range, 
 * - 5 - `joiningAnotherCluster`        - if the participant is joining another cluster,
 * - 6 - `cancelledJoin`                - if the participant is cancelling a joining procedure,
 * - 7 - `failedJoin`                   - if the participant failed to join the cluster,
tijinkj's avatar
tijinkj committed
 * - 8 - `safetyCondition`              - if a safety condition applies.
tijinkj's avatar
tijinkj committed
 * - 9 to 15                            - are reserved for future use                             
tijinkj's avatar
tijinkj committed
 *
 * @category: Cluster information
 * @revision: Created in V2.1.1
 */
ClusterLeaveReason ::= ENUMERATED {
    notProvided                   (0), 
    clusterLeaderLost             (1),    
    clusterDisbandedByLeader      (2),    
    outOfClusterBoundingBox       (3),    
    outOfClusterSpeedRange        (4),
    joiningAnotherCluster         (5),
    cancelledJoin                 (6),
    failedJoin                    (7),
    safetyCondition               (8),
    max(15)            
}

/**
 * This DE represents the sub cause codes of the @ref CauseCode `collisionRisk`.
 * 
 * The value shall be set to:
 * - 0 - `unavailable`              - in case information on the type of collision risk is unavailable,
 * - 1 - `longitudinalCollisionRisk`- in case the type of detected collision risk is longitudinal collision risk, 
 *                                       e.g. forward collision or face to face collision,
 * - 2 - `crossingCollisionRisk`    - in case the type of detected collision risk is crossing collision risk,
 * - 3 - `lateralCollisionRisk`     - in case the type of detected collision risk is lateral collision risk,
 * - 4 - `vulnerableRoadUser`       - in case the type of detected collision risk involves vulnerable road users
tijinkj's avatar
tijinkj committed
 *                                       e.g. pedestrians or bicycles.
tijinkj's avatar
tijinkj committed
 * - 5-255                          - are reserved for future usage.
 *
 * @category: Traffic information
 * @revision: V1.3.1
 */
CollisionRiskSubCauseCode ::= INTEGER {
    unavailable               (0), 
    longitudinalCollisionRisk (1), 
    crossingCollisionRisk     (2), 
    lateralCollisionRisk      (3), 
    vulnerableRoadUser        (4)
}(0..255)

/** 
 * This DE represents a confidence level in percentage.
 * 
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - `n (n > 0 and n < 101)` : for the confidence level in %,
 * - `101`                   : in case the confidence level is not available.
tijinkj's avatar
tijinkj committed
 *
 * @unit Percent 
 * @category: Basic information 
 * @revision: Created in V2.1.1 
*/
ConfidenceLevel ::= INTEGER {
    unavailable (101)  
tijinkj's avatar
tijinkj committed
} (1..101)
tijinkj's avatar
tijinkj committed

/** 
tijinkj's avatar
tijinkj committed
 * This DE indicates the coordinate confidence value which represents the estimated absolute accuracy of a position coordinate with a default confidence level of 95%.
 * If required, the confidence level can be defined by the corresponding standards applying this DE.
tijinkj's avatar
tijinkj committed
 *
 * The value shall be set to: 
tijinkj's avatar
tijinkj committed
 * - `n` (`n > 0` and `n < 4095`) if the confidence value is is equal to or less than n x 0,01 metre, and greater than (n-1) x 0,01 metre,
 * - `4095` if the confidence value is greater than 40,94 metres,
tijinkj's avatar
tijinkj committed
 * - `4096` if the confidence value is not available.
tijinkj's avatar
tijinkj committed
 *
 * @unit 0,01 m
 * @category: Basic information
 * @revision: Created in V2.1.1
*/
CoordinateConfidence ::= INTEGER {
tijinkj's avatar
tijinkj committed
    outOfRange            (4095),
    unavailable           (4096) 
} (1..4096)
tijinkj's avatar
tijinkj committed

/** 
 * This DE represents the Bravais-Pearson correlation value for each cell of a lower triangular correlation matrix.
 *
tijinkj's avatar
tijinkj committed
 * The value shall be set to: 
tijinkj's avatar
tijinkj committed
 * - `-100` in case of full negative correlation,
 * - `n` (`n > -100` and `n < 0`) if the correlation is negative and equal to n x 100,
 * - `0` in case of no correlation,
 * - `n` (`n > 0` and `n < 100`) if the correlation is positive and equal to n x 100,
 * - `100` in case of full positive correlation,
tijinkj's avatar
tijinkj committed
 * - `101` in case the correlation information is unavailable. 
tijinkj's avatar
tijinkj committed
 *
 * @unit: the value is scaled by 100
tijinkj's avatar
tijinkj committed
 * @category: Basic information
tijinkj's avatar
tijinkj committed
 * @revision: Created in V2.1.1
*/
tijinkj's avatar
tijinkj committed
CorrelationCellValue ::= INTEGER {
tijinkj's avatar
tijinkj committed
    full-negative-correlation    (-100),     
    no-correlation               (0),       
tijinkj's avatar
tijinkj committed
    full-positive-correlation    (100),
    unavailable (101)  
} (-100..101)
tijinkj's avatar
tijinkj committed

/**
tijinkj's avatar
tijinkj committed
 * The DE describes whether the yaw rate is used to calculate the curvature for a curvature value.
tijinkj's avatar
tijinkj committed
 * 
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - 0 - `yawRateUsed`    - if the yaw rate is used,
 * - 1 - `yawRateNotUsed` - if the yaw rate is not used,
tijinkj's avatar
tijinkj committed
 * - 2 - `unavailable`    - if the information of curvature calculation mode is unknown.
 *
 * @category: Vehicle information
 * @revision: V1.3.1
 */
CurvatureCalculationMode ::= ENUMERATED {
    yawRateUsed    (0), 
    yawRateNotUsed (1), 
    unavailable    (2), 
    ...
}

/**
tijinkj's avatar
tijinkj committed
 * This DE indicates the acceleration confidence value which represents the estimated absolute accuracy range of a curvature value with a confidence level of 95%.
 * If required, the confidence level can be defined by the corresponding standards applying this DE.
tijinkj's avatar
tijinkj committed
 * 
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - 0 - `onePerMeter-0-00002` - if the confidence value is less than or equal to 0,00002 m-1,
 * - 1 - `onePerMeter-0-0001`  - if the confidence value is less than or equal to 0,0001 m-1 and greater than 0,00002 m-1,
 * - 2 - `onePerMeter-0-0005`  - if the confidence value is less than or equal to 0,0005 m-1 and greater than 0,0001 m-1,
 * - 3 - `onePerMeter-0-002`   - if the confidence value is less than or equal to 0,002 m-1 and greater than 0,0005 m-1,
 * - 4 - `nePerMeter-0-01`     - if the confidence value is less than or equal to 0,01 m-1 and greater than 0,002 m-1,
 * - 5 - `nePerMeter-0-1`      - if the confidence value is less than or equal to 0,1 m-1  and greater than 0,01 m-1,
 * - 6 - `outOfRange`          - if the confidence value is out of range, i.e. greater than 0,1 m-1,
 * - 7 - `unavailable`         - if the confidence value is not available.
tijinkj's avatar
tijinkj committed
 * 
 * @note:	The fact that a curvature value is received with confidence value set to `unavailable(7)` can be caused by
tijinkj's avatar
tijinkj committed
 * several reasons, such as:
 * - the sensor cannot deliver the accuracy at the defined confidence level because it is a low-end sensor,
 * - the sensor cannot calculate the accuracy due to lack of variables, or
 * - there has been a vehicle bus (e.g. CAN bus) error.
tijinkj's avatar
tijinkj committed
 * In all 3 cases above, the curvature value may be valid and used by the application.
tijinkj's avatar
tijinkj committed
 * 
tijinkj's avatar
tijinkj committed
 * @note: If a curvature value is received and its confidence value is set to 'outOfRange(6)', it means that the curvature value is not valid 
tijinkj's avatar
tijinkj committed
 * and therefore cannot be trusted. Such value is not useful for the application.
 * 
 * @category: Vehicle information
tijinkj's avatar
tijinkj committed
 * @revision: Description revised in V2.1.1
tijinkj's avatar
tijinkj committed
*/
CurvatureConfidence ::= ENUMERATED {
    onePerMeter-0-00002 (0),
    onePerMeter-0-0001  (1),
    onePerMeter-0-0005  (2),
    onePerMeter-0-002   (3),
    onePerMeter-0-01    (4),
    onePerMeter-0-1     (5),
    outOfRange          (6),
    unavailable         (7)
}

/**
 * This DE describes vehicle turning curve with the following information:
 * ```
 *     Value = 1 / Radius * 10000
 * ```
tijinkj's avatar
tijinkj committed
 * wherein radius is the vehicle turning curve radius in metres. 
tijinkj's avatar
tijinkj committed
 * 
 * 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 [2].
 *
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - `-1023` for  values smaller than -1023,
 * - `n` (`n > -1023` 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 < 1022) for positive values equal to or less than n, and greater than (n-1),
 * - `1022`, for values  greater than 1021,
tijinkj's avatar
tijinkj committed
 * - `1023`, if the information is not available.
 * 
 * @note: The present DE is limited to vehicle types as defined in ISO 8855 [2].
 * 
 * @unit: 1 over 10 000 metres
 * @category: Vehicle information
 * @revision: description revised in V2.1.1 (the definition of value 1022 has changed slightly)
 */
CurvatureValue ::= INTEGER {
    outOfRangeNegative (-1023),
    straight           (0),
    outOfRangePositive (1022), 
    unavailable        (1023)
} (-1023..1023)

/**
 * This DE represents the value of the sub cause codes of the @ref CauseCode `dangerousEndOfQueue`. 
 * 
tijinkj's avatar
tijinkj committed
 * The value shall be set to:
tijinkj's avatar
tijinkj committed
 * - 0 - `unavailable`     - in case information on the type of dangerous queue is unavailable,
 * - 1 - `suddenEndOfQueue`- in case a sudden end of queue is detected, e.g. due to accident or obstacle,
 * - 2 - `queueOverHill`   - in case the dangerous end of queue is detected on the road hill,
 * - 3 - `queueAroundBend` - in case the dangerous end of queue is detected around the road bend,
 * - 4 - `queueInTunnel`   - in case queue is detected in tunnel,
 * - 5-255                 - reserved for future usage.
 *
 * @category: Traffic information
 * @revision: V1.3.1
 */
DangerousEndOfQueueSubCauseCode ::= INTEGER {
    unavailable      (0), 
    suddenEndOfQueue (1), 
    queueOverHill    (2), 
    queueAroundBend  (3), 
    queueInTunnel    (4)
} (0..255)

/**
 * This DE indicates the type of the dangerous goods being carried by a heavy vehicle.
tijinkj's avatar
tijinkj committed
 * The value is assigned according to `class` and `division` definitions of dangerous goods as specified in part II,
 * chapter 2.1.1.1 of European Agreement concerning the International Carriage of Dangerous Goods by Road [i.3].
tijinkj's avatar
tijinkj committed
 * 
 * 
 * @category Vehicle information
 * @revision: V1.3.1
 */
DangerousGoodsBasic::= ENUMERATED {
    explosives1                                          (0),
    explosives2                                          (1),
    explosives3                                          (2),
    explosives4                                          (3),
    explosives5                                          (4),
    explosives6                                          (5),
    flammableGases                                       (6),
    nonFlammableGases                                    (7),
    toxicGases                                           (8),
    flammableLiquids                                     (9),
    flammableSolids                                      (10),
    substancesLiableToSpontaneousCombustion              (11),
    substancesEmittingFlammableGasesUponContactWithWater (12),
    oxidizingSubstances                                  (13),
    organicPeroxides                                     (14),
    toxicSubstances                                      (15),
    infectiousSubstances                                 (16),
    radioactiveMaterial                                  (17),
    corrosiveSubstances                                  (18),
    miscellaneousDangerousSubstances                     (19)