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 Original line 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 {
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 ::= 
DEFINITIONS AUTOMATIC TAGS ::= 
@@ -9,13 +7,14 @@ DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
BEGIN


IMPORTS 
IMPORTS 
    ItsPduHeader, VehicleCommonParameters, ProfileParameters, StationID, TimeStamp, ReferencePosition 
   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 {
FROM DENM-PDU-Descriptions { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) denm (3) version2 (2) };
 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
--	The root data frame for cooperative awareness messages


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


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




 CoopAwareness ::= 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.
 LowFrequencyContainer ::= CHOICE {
	stationCharacteristics	SEQUENCE {
  basicVehicleContainerLowFrequency BasicVehicleContainerLowFrequency,
		mobileItsStation			BOOLEAN,	-- will ITS station change position?
  ...  -- further type specific RSU containers might be added as extensions  
		privateItsStation			BOOLEAN,	-- not public authority
 }
		physicalRelevantItsStation	BOOLEAN,	-- can another mobile ITS station crash into this station?
 
 SpecialVehicleContainer ::= CHOICE {
  publicTransportContainer PublicTransportContainer,
  specialTransportContainer SpecialTransportContainer,
  dangerousGoodsContainer DangerousGoodsContainer,
  roadWorksContainerBasic RoadWorksContainerBasic,
  rescueContainer RescueContainer,
  emergencyContainer EmergencyContainer,
  safetyCarContainer SafetyCarContainer,
  ...  
  ...  
	},
 }
	
	
 BasicContainer ::= SEQUENCE {
  stationType StationType,
  referencePosition ReferencePosition,
  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 {
 PublicTransportContainer ::= SEQUENCE {
	 vehicleCommonParameters	VehicleCommonParameters,
  embarkationStatus EmbarkationStatus,
	 profileDependent 		ProfileParameters OPTIONAL,
  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
END
+4 −13
Original line number Original line Diff line number Diff line
@@ -7,8 +7,8 @@ DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
BEGIN


IMPORTS 
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 {
   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) en (302637) cc (0) version (1) 
 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 {
LocationContainer ::= SEQUENCE {
	eventSpeed Movement OPTIONAL,
	eventSpeed Speed OPTIONAL,
	eventPositionHeading Direction OPTIONAL,
	eventPositionHeading Heading OPTIONAL,
	traces Traces,
	traces Traces,
	roadClass RoadClass OPTIONAL
	roadClass RoadClass OPTIONAL
}
}
@@ -78,15 +78,6 @@ PositionOfPillars ::= SEQUENCE (SIZE(1..3, ...)) OF PosPillar
  recommendedPath ItineraryPath OPTIONAL	--Traces without timestamps
  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
RestrictedTypes ::= SEQUENCE OF StationType


+133 −68
Original line number Original line Diff line number Diff line
ITS-Container {
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 ::= 
DEFINITIONS AUTOMATIC TAGS ::= 
@@ -27,39 +27,48 @@ DeltaReferencePosition ::= SEQUENCE {
  deltaElevation DeltaElevation
  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 {
Elevation ::= SEQUENCE {
 elevationValue ElevationValue,
 elevationValue ElevationValue,
 elevationConfidence ElevationConfidence
 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
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
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 {
PosConfidenceEllipse ::= SEQUENCE {
  semiMajorConfidence   SemiAxisLength,   -- confidence of the ellipse's major semi-axes
  semiMajorConfidence   SemiAxisLength,   -- confidence of the ellipse's major semi-axes
  semiMinorConfidence   SemiAxisLength,   -- confidence of the ellipse's minor semi-axes
  semiMinorConfidence   SemiAxisLength,   -- confidence of the ellipse's minor semi-axes
  semiMajorOrientation   Direction
  semiMajorOrientation  Heading
} 
} 


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


PathDeltaTime ::= INTEGER { tenMilliSecondsInPast(1) } (0..65535, ...) 
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 {
AccelerationControl ::= BIT STRING {
 brakePedalActive (0),
 brakePedalActive (0),
 gasPedalActive (1),
 gasPedalActive (1),
@@ -71,7 +80,7 @@ AccelerationControl ::= BIT STRING {
} (SIZE(7))
} (SIZE(7))




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


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


CurvatureConfidence ::= INTEGER { lessThanOnePercentDeviation(0), onePercentDeviation(1), tenPercentDeviation(10), overTenPercentDeviation(11), notAvailable(12) } (0..12)
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 {
Heading ::= SEQUENCE {
 directionValue DirectionValue,
 headingValue HeadingValue,
 directionConfidence DirectionConfidence
 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),
LaneNumber ::= INTEGER { offTheRoad(-1), hardShoulder(0),
outermostDrivingLane(1), secondLaneFromOutside(2) } (-1..14)
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) 
VehicleMass ::= INTEGER  { hundredKg(1), unavailable(1024) } (1..1024) 


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


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


EmbarkationStatus ::= BOOLEAN
EmbarkationStatus ::= BOOLEAN


LongitudinalAcceleration ::= SEQUENCE {
LongitudinalAcceleration ::= SEQUENCE {
 longitudinalAccelerationValue LongitudinalAccelerationValue,
 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), 
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)
lightTruck(7), heavyTruck(8), trailer(9), specialVehicles(10), tram(11), roadSideUnit(15) } (0..255)
@@ -267,13 +306,13 @@ LightBarSirenInUse ::= BIT STRING {
 sirenActivated (1)
 sirenActivated (1)
} (SIZE(2))
} (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) }
RequestResponseIndication ::= ENUMERATED { request(0), response(1) }


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


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


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


@@ -330,24 +372,20 @@ VehicleLength ::= SEQUENCE {
 vehicleLengthConfidenceIndication VehicleLengthConfidenceIndication
 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), 
VehicleLengthConfidenceIndication ::= ENUMERATED { noTrailerPresent(0), trailerPresentWithKnownLength(1), trailerPresentWithUnknownLength(2), 
trailerPresenceIsUnknown(3) }
trailerPresenceIsUnknown(3) }


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

PathHistory::=  SEQUENCE (SIZE(0..40)) OF PathPoint


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


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


PtLineNumber ::= UTF8String (SIZE(1..5))
InformationQuality ::= INTEGER { unavailable(0), lowest(1), highest(7) }  (0..7)

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

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


RoadClass ::= ENUMERATED {
RoadClass ::= ENUMERATED {
 urban-NoStructuralSeparationToOppositeLanes(0),
 urban-NoStructuralSeparationToOppositeLanes(0),
@@ -355,11 +393,38 @@ RoadClass ::= ENUMERATED {
 nonUrban-NoStructuralSeparationToOppositeLanes(2),
 nonUrban-NoStructuralSeparationToOppositeLanes(2),
 nonUrban-WithStructuralSeparationToOppositeLanes(3) }
 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)
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) }
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
END