Commit f4e05738 authored by mullers's avatar mullers
Browse files

Branches of CAM, DENM and CDD merged from revisions 461 - 635

parent 1328993c
Loading
Loading
Loading
Loading
+108 −28
Original line number Diff line number Diff line
-- This ASN.1 specification has been checked for conformance with the ASN.1 standard by the OSS ASN.1 Tools

CAM-PDU-Descriptions {
 itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) cam (2) version1 (1) 
 itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (302637) cam (2) version (1) 
}

DEFINITIONS AUTOMATIC TAGS ::= 
@@ -9,13 +7,14 @@ DEFINITIONS AUTOMATIC TAGS ::=
BEGIN

IMPORTS 
    ItsPduHeader, VehicleCommonParameters, ProfileParameters, StationID, TimeStamp, ReferencePosition 
FROM DENM-PDU-Descriptions { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) denm (3) version2 (2) };
   ItsPduHeader, CauseCode, ReferencePosition, AccelerationControl, Curvature, CurvatureCalculationMode, Heading, PtActivation, LaneNumber, EmergencyPriority, EmbarkationStatus, Speed, DriveDirection, LongitudinalAcceleration, LateralAcceleration, VerticalAcceleration, StationType, ExteriorLights, DangerousGoodsBasic, PerformanceClass, SpecialTransportType, LightBarSirenInUse, VehicleRole, VehicleLength, VehicleWidth, PathHistory, RoadworksSubCauseCode, ClosedLanes, TrafficRule, SpeedLimit, SteeringWheelAngle, YawRate FROM ITS-Container {
 itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) 
};


--	The root data frame for cooperative awareness messages

CamPdu ::= SEQUENCE {
CAM ::= SEQUENCE {
	header	ItsPduHeader,
	cam	CoopAwareness

@@ -23,31 +22,112 @@ CamPdu ::= SEQUENCE {


 CoopAwareness ::= SEQUENCE {
   generationDeltaTime GenerationDeltaTime,
   camParameters CamParameters
 }

 CamParameters ::= SEQUENCE {
  basicContainer BasicContainer,
  highFrequencyContainer HighFrequencyContainer,
  lowFrequencyContainer LowFrequencyContainer OPTIONAL,
  specialVehicleContainer SpecialVehicleContainer OPTIONAL,
  ...
 }

	stationID	StationID,
 HighFrequencyContainer ::= CHOICE {
  basicVehicleContainerHighFrequency BasicVehicleContainerHighFrequency,
  emptyRSUContainerHighFrequency EmptyRSUContainerHighFrequency,
  ...  -- further type specific RSU containers might be added as extensions  
 }

	-- Basic characterization of an ITS station. A more detailed classification can be given by VehicleType.
	stationCharacteristics	SEQUENCE {
		mobileItsStation			BOOLEAN,	-- will ITS station change position?
		privateItsStation			BOOLEAN,	-- not public authority
		physicalRelevantItsStation	BOOLEAN,	-- can another mobile ITS station crash into this station?
 LowFrequencyContainer ::= CHOICE {
  basicVehicleContainerLowFrequency BasicVehicleContainerLowFrequency,
  ...  -- further type specific RSU containers might be added as extensions  
 }
 
 SpecialVehicleContainer ::= CHOICE {
  publicTransportContainer PublicTransportContainer,
  specialTransportContainer SpecialTransportContainer,
  dangerousGoodsContainer DangerousGoodsContainer,
  roadWorksContainerBasic RoadWorksContainerBasic,
  rescueContainer RescueContainer,
  emergencyContainer EmergencyContainer,
  safetyCarContainer SafetyCarContainer,
  ...  
	},
 }
	
 BasicContainer ::= SEQUENCE {
  stationType StationType,
  referencePosition ReferencePosition,
	camParameters CamParameters OPTIONAL, -- presently omitted for Irs
	
  ...
 }
 
 BasicVehicleContainerHighFrequency ::= SEQUENCE {
  heading Heading,
  speed Speed,
  driveDirection DriveDirection,
  vehicleLength VehicleLength,
  vehicleWidth VehicleWidth,
  longitudinalAcceleration LongitudinalAcceleration,
  curvature Curvature,
  curvatureCalculationMode CurvatureCalculationMode,
  yawRate YawRate,
  accelerationControl AccelerationControl OPTIONAL,
  laneNumber LaneNumber OPTIONAL,
  steeringWheelAngle SteeringWheelAngle OPTIONAL,
  lateralAcceleration LateralAcceleration OPTIONAL,
  verticalAcceleration VerticalAcceleration OPTIONAL, 
  performanceClass PerformanceClass OPTIONAL
 }

 BasicVehicleContainerLowFrequency  ::= SEQUENCE {
  vehicleRole VehicleRole,
  exteriorLights ExteriorLights,
  pathHistory PathHistory
 }
 
	CamParameters ::= SEQUENCE {
	 vehicleCommonParameters	VehicleCommonParameters,
	 profileDependent 		ProfileParameters OPTIONAL,
	 ...
 PublicTransportContainer ::= SEQUENCE {
  embarkationStatus EmbarkationStatus,
  ptActivation PtActivation OPTIONAL
 }
 
 SpecialTransportContainer ::= SEQUENCE {
  specialTransportType SpecialTransportType,
  lightBarSirenInUse LightBarSirenInUse
 }

 DangerousGoodsContainer ::= SEQUENCE {
  dangerousGoodsBasic DangerousGoodsBasic
 }
 
 RoadWorksContainerBasic ::= SEQUENCE {
  roadworksSubCauseCode RoadworksSubCauseCode OPTIONAL,
  lightBarSirenInUse LightBarSirenInUse,
  closedLanes ClosedLanes OPTIONAL
 }

 RescueContainer ::= SEQUENCE {
  lightBarSirenInUse LightBarSirenInUse,
  emergencyPriority EmergencyPriority OPTIONAL
 }
 
 EmergencyContainer ::= SEQUENCE {
  lightBarSirenInUse LightBarSirenInUse,
  incidentIndication CauseCode OPTIONAL,
  emergencyPriority EmergencyPriority OPTIONAL
 }

 SafetyCarContainer ::= SEQUENCE {
  lightBarSirenInUse LightBarSirenInUse,
  incidentIndication CauseCode OPTIONAL,
  trafficRule TrafficRule OPTIONAL,
  speedLimit SpeedLimit OPTIONAL
 }

 EmptyRSUContainerHighFrequency ::= NULL

 GenerationDeltaTime ::= INTEGER { oneMilliSec(1) } (0..65535)

 
END
+4 −13
Original line number Diff line number Diff line
@@ -7,8 +7,8 @@ DEFINITIONS AUTOMATIC TAGS ::=
BEGIN

IMPORTS 
   ItsPduHeader, CauseCode, StationID, Movement, InformationQuality, ReferencePosition, DangerousGoodsExtended, Direction, LaneNumber, LightBarSirenInUse, PathHistory, RoadClass, HeightLonCarr, PosLonCarr, PosPillar, PosCentMass, PositioningSolutionType, RequestResponseIndication, StationType, SpeedLimit, StationarySince, TimestampIts, WheelBaseVehicle, TurningRadius, PosFrontAx, PositionOfOccupants, Temperature, VehicleMass, VehicleIdentification, EnergyStorageType FROM ITS-Container {
 itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (302637) cc (0) version (1) 
   ItsPduHeader, CauseCode, StationID, Speed, InformationQuality, ReferencePosition, ClosedLanes, DangerousGoodsExtended, Heading, LaneNumber, LightBarSirenInUse, PathHistory, RoadClass, HeightLonCarr, PosLonCarr, PosPillar, PosCentMass, PositioningSolutionType, RequestResponseIndication, StationType, SpeedLimit, StationarySince, TimestampIts, WheelBaseVehicle, TurningRadius, PosFrontAx, PositionOfOccupants, Temperature, VehicleMass, VehicleIdentification, EnergyStorageType FROM ITS-Container {
 itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) 
};


@@ -46,8 +46,8 @@ SituationContainer ::= SEQUENCE {
}

LocationContainer ::= SEQUENCE {
	eventSpeed Movement OPTIONAL,
	eventPositionHeading Direction OPTIONAL,
	eventSpeed Speed OPTIONAL,
	eventPositionHeading Heading OPTIONAL,
	traces Traces,
	roadClass RoadClass OPTIONAL
}
@@ -78,15 +78,6 @@ PositionOfPillars ::= SEQUENCE (SIZE(1..3, ...)) OF PosPillar
  recommendedPath ItineraryPath OPTIONAL	--Traces without timestamps
 }

ClosedLanes ::= SEQUENCE {
 hardShoulderStatus HardShoulderStatus OPTIONAL,
 drivingLaneStatus DrivingLaneStatus,
 ... 
}

HardShoulderStatus ::= ENUMERATED { availableForStopping(0), closed(1), availableForDriving(2) }

DrivingLaneStatus ::= BIT STRING { outermostLaneClosed(0), secondLaneFromOutsideClosed(1) } (SIZE (1..14))

RestrictedTypes ::= SEQUENCE OF StationType

+133 −68
Original line number Diff line number Diff line
ITS-Container {
 itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cc (2) version (1) 
 itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) 
}

DEFINITIONS AUTOMATIC TAGS ::= 
@@ -27,39 +27,48 @@ DeltaReferencePosition ::= SEQUENCE {
  deltaElevation DeltaElevation
}

Longitude ::= INTEGER { oneMicrodegreeEast (10), oneMicrodegreeWest (-10) } (-1799999999..1800000000) -- multiples of 0.1 microdegree
Longitude ::= INTEGER { oneMicrodegreeEast (10), oneMicrodegreeWest (-10), unavailable(1800000001) } (-1799999999..1800000001) -- multiples of 0.1 microdegree

Latitude ::= INTEGER { oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10) } (-900000000..900000000) -- multiples of 0.1 microdegree
Latitude ::= INTEGER { oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10), unavailable(900000001) } (-900000000..900000001) -- multiples of 0.1 microdegree

Elevation ::= SEQUENCE {
 elevationValue ElevationValue,
 elevationConfidence ElevationConfidence
}

ElevationValue ::= INTEGER { seaLevel(0),oneMeter (1) } (-1000..7191)
ElevationValue ::= INTEGER { seaLevel(0), oneMeter(1), unavailable(7191) } (-1000..7191)

ElevationConfidence ::= INTEGER { withinOneMeter(1), unavailable(127) } (1..127)
ElevationConfidence ::= INTEGER { withinOneMeter(1), outOfRange(126), unavailable(127) } (1..127)

DeltaLongitude ::= INTEGER { oneMicrodegreeEast (10), oneMicrodegreeWest (-10) } (-131072..131071) -- multiples of 0.1 microdegree

DeltaLatitude ::= INTEGER { oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10) } (-131072..131071) -- multiples of 0.1 microdegree

DeltaElevation  ::= INTEGER { oneMeterUp (1), oneMeterDown (-1) } (-127..128)
DeltaElevation  ::= INTEGER { oneMeterUp (1), oneMeterDown (-1), unavailable(128) } (-127..128)


PosConfidenceEllipse ::= SEQUENCE {
  semiMajorConfidence   SemiAxisLength,   -- confidence of the ellipse's major semi-axes
  semiMinorConfidence   SemiAxisLength,   -- confidence of the ellipse's minor semi-axes
  semiMajorOrientation   Direction
  semiMajorOrientation  Heading
} 

PathPoint ::= SEQUENCE {
 pathPosition DeltaReferencePosition,
 pathDeltaTime PathDeltaTime 
 pathDeltaTime PathDeltaTime OPTIONAL
}

PathDeltaTime ::= INTEGER { tenMilliSecondsInPast(1) } (0..65535, ...) 

PtActivation ::= SEQUENCE {
  ptActivationType PtActivationType,
  ptActivationData PtActivationData
}

PtActivationType ::= INTEGER { undefinedCodingType(0), r09-16CodingType(1), vdv-50149CodingType(2) } (0..255)

PtActivationData ::= OCTET STRING (SIZE(1..20))

AccelerationControl ::= BIT STRING {
 brakePedalActive (0),
 gasPedalActive (1),
@@ -71,7 +80,7 @@ AccelerationControl ::= BIT STRING {
} (SIZE(7))


SemiAxisLength ::= INTEGER{ oneCentimeter(1), unavailable(4095) } (0..4095)
SemiAxisLength ::= INTEGER{ oneCentimeter(1), outOfRange(4094), unavailable(4095) } (0..4095)

 CauseCode ::= SEQUENCE {
  causeCode CauseCodeType,
@@ -162,53 +171,83 @@ Curvature ::= SEQUENCE {
 curvatureConfidence CurvatureConfidence
}
 
CurvatureValue ::= INTEGER{ straight(0), reciprocalOf1MeterRadiusToRight(1), reciprocalOf1MeterRadiusToLeft(-1) } (-30000..30000)

CurvatureConfidence ::= INTEGER { lessThanOnePercentDeviation(0), onePercentDeviation(1), tenPercentDeviation(10), overTenPercentDeviation(11), notAvailable(12) } (0..12)
CurvatureValue ::= INTEGER { straight(0), reciprocalOf1MeterRadiusToRight(-30000), reciprocalOf1MeterRadiusToLeft(30000), unavailable(30001) } (-30000..30001)

CurvatureConfidence ::= ENUMERATED {
 onePerMeter-0-00002 (0), -- within  0.00002 m^-1
 onePerMeter-0-0001 (1), -- within 0.0001 m^-1
 onePerMeter-0-0005 (2), -- within 0.0005 m^-1
 onePerMeter-0-002 (3), -- within 0.002 m^-1
 onePerMeter-0-01 (4), -- within 0.01 m^-1
 onePerMeter-0-1 (5), -- within 0.1 m^-1
 outOfRange (6),
 unavailable (7)
}

CurvatureCalculationMode ::= ENUMERATED { yawRateNotUsed(0), yawRateUsed(1), ... }
CurvatureCalculationMode ::= ENUMERATED { yawRateUsed(0), yawRateNotUsed(1), transitionMode(2), ... }

Direction ::= SEQUENCE {
 directionValue DirectionValue,
 directionConfidence DirectionConfidence
Heading ::= SEQUENCE {
 headingValue HeadingValue,
 headingConfidence HeadingConfidence
}

DirectionValue ::= INTEGER {north(0), east(900), south(1800), west(2700), unavailable(3600) } (0..3600)
HeadingValue ::= INTEGER { wgs84North(0), wgs84East(900), wgs84South(1800), wgs84West(2700), unavailable(3600) } (0..3600)

DirectionConfidence ::= INTEGER { withinZeroPointOneDegree(1), withinOneDegree(10), unavailable(127) } (1..127)
HeadingConfidence ::= INTEGER { withinZeroPointOneDegree(1), withinOneDegree(10), outOfRange(126), unavailable(127) } (1..127)

LaneNumber ::= INTEGER { offTheRoad(-1), hardShoulder(0),
outermostDrivingLane(1), secondLaneFromOutside(2) } (-1..14)

LaneClosure ::= BIT STRING { hardShoulderClosed(0), outermostLaneClosed(1), secondLaneFromOutsideClosed(2) } (SIZE (2..14))
ClosedLanes ::= SEQUENCE {
 hardShoulderStatus HardShoulderStatus OPTIONAL,
 drivingLaneStatus DrivingLaneStatus,
 ... 
}

HardShoulderStatus ::= ENUMERATED { availableForStopping(0), closed(1), availableForDriving(2) }

DrivingLaneStatus ::= BIT STRING { outermostLaneClosed(1), secondLaneFromOutsideClosed(2) } (SIZE (1..14)) -- numbering matches LaneNumber numbering


PerformanceClass ::= INTEGER { unavailable(0), performanceClassA(1), performanceClassB(2) } (0..7)  -- values in range 3-7 are reserved for later definition

VehicleSpeed ::= INTEGER { standstill(0), oneCentimeterPerSec(1)  } (0..16383)
SpeedValue ::= INTEGER { standstill(0), oneCentimeterPerSec(1), unavailable(16383)  } (0..16383)

VehicleSpeedConfidence ::= INTEGER { withinOneCentimeterPerSec(1), withinOneMeterPerSec(100), outOfRange(126), unavailable(127) } (1..127)
SpeedConfidence ::= INTEGER { withinOneCentimeterPerSec(1), withinOneMeterPerSec(100), outOfRange(126), unavailable(127) } (1..127)

VehicleMass ::= INTEGER  { hundredKg(1), unavailable(1024) } (1..1024) 

Movement ::= SEQUENCE {
 vehicleSpeed VehicleSpeed,
 vehicleSpeedConfidence VehicleSpeedConfidence
Speed ::= SEQUENCE {
 speedValue SpeedValue,
 speedConfidence SpeedConfidence
}

DriveDirection ::= ENUMERATED { forward (0), backward (1) }
DriveDirection ::= ENUMERATED { forward (0), backward (1), unavailable (2) }

EmbarkationStatus ::= BOOLEAN

LongitudinalAcceleration ::= SEQUENCE {
 longitudinalAccelerationValue LongitudinalAccelerationValue,
 longitudinalAccelerationConfidence LongitudinalAccelerationConfidence
 longitudinalAccelerationConfidence AccelerationConfidence
}

LongitudinalAccelerationValue ::= INTEGER { pointOneMeterPerSecSquaredForward(1), pointOneMeterPerSecSquaredBackward(-1)} (-160 .. 160)
LongitudinalAccelerationValue ::= INTEGER { pointOneMeterPerSecSquaredForward(1), pointOneMeterPerSecSquaredBackward(-1), unavailable(161)} (-160 .. 161)

LongitudinalAccelerationConfidence ::= INTEGER { pointOneMeterPerSecSquared(1), outOfRange(101), unavailable(102)} (0 .. 102)
AccelerationConfidence ::= INTEGER { pointOneMeterPerSecSquared(1), outOfRange(101), unavailable(102)} (0 .. 102)

LateralAcceleration ::= INTEGER { pointOneMeterPerSecSquaredToRight(1), pointOneMeterPerSecSquaredToLeft(-1)} (-160 .. 160)
LateralAcceleration ::= SEQUENCE {
 lateralAccelerationValue LateralAccelerationValue,
 lateralAccelerationConfidence AccelerationConfidence
}

LateralAccelerationValue ::= INTEGER { pointOneMeterPerSecSquaredToRight(-1), pointOneMeterPerSecSquaredToLeft(1), unavailable(161) } (-160 .. 161)

VerticalAcceleration ::= INTEGER { eightCentimeterPerSecSquaredUp(1), eightCentimeterPerSecSquaredDown(-1)} (-127 .. 127)
VerticalAcceleration ::= SEQUENCE {
 verticalAccelerationValue VerticalAccelerationValue,
 verticalAccelerationConfidence AccelerationConfidence
}

VerticalAccelerationValue ::= INTEGER { pointOneMeterPerSecSquaredUp(1), pointOneMeterPerSecSquaredDown(-1), unavailable(161) } (-160 .. 161)

StationType ::= INTEGER { unknown(0), pedestrian(1), cyclist(2), moped(3), motorcycle(4), passengerCar(5), bus(6), 
lightTruck(7), heavyTruck(8), trailer(9), specialVehicles(10), tram(11), roadSideUnit(15) } (0..255)
@@ -267,13 +306,13 @@ LightBarSirenInUse ::= BIT STRING {
 sirenActivated (1)
} (SIZE(2))

HeightLonCarr ::= INTEGER { oneCentimeter(1), unknown(100) } (0..100)
HeightLonCarr ::= INTEGER { oneCentimeter(1), unavailable(100) } (0..100)

PosLonCarr ::= INTEGER { oneCentimeter(1), unknown(127) } (0..127)
PosLonCarr ::= INTEGER { oneCentimeter(1), unavailable(127) } (0..127)

PosPillar ::= INTEGER { tenCentimeters(1), unknown(30) } (0..30)
PosPillar ::= INTEGER { tenCentimeters(1), unavailable(30) } (0..30)

PosCentMass ::= INTEGER { tenCentimeters(1), unknown(63) } (0..63)
PosCentMass ::= INTEGER { tenCentimeters(1), unavailable(63) } (0..63)

RequestResponseIndication ::= ENUMERATED { request(0), response(1) }

@@ -284,33 +323,36 @@ StationarySince ::= ENUMERATED { lessThan1Minute(0), lessThan2Minutes(1), lessTh
Temperature ::= INTEGER { oneDegreeCelsius(1) } (-60..67)

TrafficRule ::= ENUMERATED { noPassing(0),
 noPassingForTrucks(1)
 noPassingForTrucks(1), ...
 }

WheelBaseVehicle ::= INTEGER { tenCentimeters(1), unknown(127) } (0..127)
WheelBaseVehicle ::= INTEGER { tenCentimeters(1), unavailable(127) } (0..127)

TurningRadius ::= INTEGER { point4Meters(1), unknown(255) } (0..255)
TurningRadius ::= INTEGER { point4Meters(1), unavailable(255) } (0..255)

PosFrontAx ::= INTEGER { tenCentimeters(1), unknown(20) } (0..20)
PosFrontAx ::= INTEGER { tenCentimeters(1), unavailable(20) } (0..20)

PositionOfOccupants ::= BIT STRING {
 row1LeftOccupied (0),
 row1RightOccupied (1),
 row1MidOccupied (2),
 row1NotDetectable (3),
 row2LeftOccupied    (4),
 row2RightOccupied   (5),
 row2MidOccupied     (6),
 row2NotDetectable   (7),
 row3LeftOccupied    (8),
 row3RightOccupied   (9),
 row3MidOccupied     (10),
 row3NotDetectable   (11),
 row4LeftOccupied    (12),
 row4RightOccupied   (13),
 row4MidOccupied     (14),
 row4NotDetectable   (15)
} (SIZE(16))
 row1NotPresent (4),
 row2LeftOccupied (5),
 row2RightOccupied (6),
 row2MidOccupied (7),
 row2NotDetectable (8),
 row2NotPresent (9),
 row3LeftOccupied (10),
 row3RightOccupied (11),
 row3MidOccupied (12),
 row3NotDetectable (13),
 row3NotPresent (14),
 row4LeftOccupied (15),
 row4RightOccupied (16),
 row4MidOccupied (17),
 row4NotDetectable (18),
 row4NotPresent (19) } (SIZE(20))

PositioningSolutionType ::= ENUMERATED { noPositioningSolution(0), sGNSS(1), dGNSS(2), sGNSSplusDR(3), dGNSSplusDR(4), dR(5), ... }

@@ -330,24 +372,20 @@ VehicleLength ::= SEQUENCE {
 vehicleLengthConfidenceIndication VehicleLengthConfidenceIndication
}
 
VehicleLengthValue  ::= INTEGER { tenCentimeters(1), outOfRange(1022), unknown(1023) }  (1..1023)
WMInumber ::= IA5String (SIZE(1..3))

VehicleLengthValue  ::= INTEGER { tenCentimeters(1), outOfRange(1022), unavailable(1023) }  (1..1023)

VehicleLengthConfidenceIndication ::= ENUMERATED { noTrailerPresent(0), trailerPresentWithKnownLength(1), trailerPresentWithUnknownLength(2), 
trailerPresenceIsUnknown(3) }

VehicleWidth  ::= INTEGER { tenCentimeters(1), outOfRange(61), unknown(62) }  (1..62)

PathHistory::=  SEQUENCE (SIZE(0..40)) OF PathPoint
VehicleWidth  ::= INTEGER { tenCentimeters(1), outOfRange(61), unavailable(62) }  (1..62)

PtPriority ::= INTEGER { lowest(0), highest(3) }  (0..3)
PathHistory::=  SEQUENCE (SIZE(0..23)) OF PathPoint

EmergencyPriority ::= INTEGER { requestForRightOfWay(0), requestForFreeCrossingAtATrafficLight(1) } (0..1)

PtLineNumber ::= UTF8String (SIZE(1..5))

PtScheduleDelay ::= INTEGER { oneSecondAheadOfSchedule(-1), noDelay(0), oneSecondDelay(1) }  (-300..3795)

InformationQuality ::= INTEGER { unknown(0), lowest(1), highest(7) }  (0..7)
InformationQuality ::= INTEGER { unavailable(0), lowest(1), highest(7) }  (0..7)

RoadClass ::= ENUMERATED {
 urban-NoStructuralSeparationToOppositeLanes(0),
@@ -355,11 +393,38 @@ RoadClass ::= ENUMERATED {
 nonUrban-NoStructuralSeparationToOppositeLanes(2),
 nonUrban-WithStructuralSeparationToOppositeLanes(3) }

SteeringWheelAngle  ::= INTEGER { straight(0), onePointFiveDegreesToRight(1), onePointFiveDegreesToLeft(-1), outOfRangeToRight(126), outOfRangeToLeft(-126) }  (-126..126)
SteeringWheelAngle::= SEQUENCE {
 steeringWheelAngleValue SteeringWheelAngleValue,
 steeringWheelConfidence SteeringWheelConfidence
}

SteeringWheelAngleValue  ::= INTEGER { straight(0), onePointFiveDegreesToRight(-1), onePointFiveDegreesToLeft(1), unavailable(511) } (-511..511)

SteeringWheelConfidence ::= INTEGER { withinOnePointFiveDegrees(1), outOfRange(126), unavailable(127) } (1..127)

TimestampIts ::= INTEGER { utcStartOf2004(0), oneMillisecAfterUTCStartOf2004(1) } (0..3153600000000)

VehicleRole ::= ENUMERATED { default(0), publicTransport(1), specialTransport(2), dangerousGoods(3), roadWork(4), rescue(5), emergency(6), safetyCar(7) }

YawRate::= SEQUENCE {
 yawRateValue YawRateValue,
 yawRateConfidence YawRateConfidence
}

YawRateValue ::= INTEGER { straight(0), degSec-000-01ToRight(-1), degSec-000-01ToLeft(1), unavailable(32767) } (-32767..32767)
-- LSB units of 0.01 degrees per second

YawRateConfidence ::= ENUMERATED {
 unavailable (0),
 degSec-100-00 (1), -- within 100 deg/sec
 degSec-010-00 (2), -- within 10 deg/sec
 degSec-005-00 (3), -- within 5 deg/sec
 degSec-001-00 (4), -- within 1 deg/sec
 degSec-000-10 (5), -- within 0.1 deg/sec
 degSec-000-05 (6), -- within 0.05 deg/sec
 degSec-000-01 (7),  -- within 0.01 deg/sec
 outOfRange (8)
}

END