Commit 69fca229 authored by mullers's avatar mullers
Browse files

ASN.1 updated according to ETSI TS 102 894-2 V1.2.1 (2014-09)

parent bd4a61e0
Loading
Loading
Loading
Loading
+346 −288
Original line number Original line Diff line number Diff line
@@ -8,7 +8,7 @@ BEGIN


ItsPduHeader ::= SEQUENCE {
ItsPduHeader ::= SEQUENCE {
	protocolVersion INTEGER{currentVersion(1)} (0..255),
	protocolVersion INTEGER{currentVersion(1)} (0..255),
	messageID 		INTEGER{ denm(1),cam(2), poi(3), spat(4), map(5), ivi(6), ivs(7), ev-rsr(8)  } (0..255),
	messageID INTEGER{denm(1),cam(2), poi(3), spat(4), map(5), ivi(6), ev-rsr(7)} (0..255),
	stationID StationID
	stationID StationID
}
}


@@ -27,16 +27,16 @@ DeltaReferencePosition ::= SEQUENCE {
	deltaAltitude DeltaAltitude
	deltaAltitude DeltaAltitude
}
}


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


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


Altitude ::= SEQUENCE {
Altitude ::= SEQUENCE {
	altitudeValue AltitudeValue,
	altitudeValue AltitudeValue,
	altitudeConfidence AltitudeConfidence
	altitudeConfidence AltitudeConfidence
}
}


AltitudeValue ::= INTEGER { seaLevel(0), oneCentimeter(1), unavailable(800001) } (-100000..800001)
AltitudeValue ::= INTEGER {referenceEllipsoidSurface(0), oneCentimeter(1), unavailable(800001)} (-100000..800001)


AltitudeConfidence ::= ENUMERATED {
AltitudeConfidence ::= ENUMERATED {
	alt-000-01 (0),
	alt-000-01 (0),
@@ -57,17 +57,16 @@ outOfRange (14),
	unavailable (15)
	unavailable (15)
}
}


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


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


DeltaAltitude ::= INTEGER {oneCentimeterUp (1), oneCentimeterDown (-1), unavailable(12800)} (-12700..12800)
DeltaAltitude ::= INTEGER {oneCentimeterUp (1), oneCentimeterDown (-1), unavailable(12800)} (-12700..12800)



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


PathPoint ::= SEQUENCE {
PathPoint ::= SEQUENCE {
@@ -75,7 +74,7 @@ PathPoint ::= SEQUENCE {
	pathDeltaTime PathDeltaTime OPTIONAL
	pathDeltaTime PathDeltaTime OPTIONAL
}
}


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


PtActivation ::= SEQUENCE {
PtActivation ::= SEQUENCE {
	ptActivationType PtActivationType,
	ptActivationType PtActivationType,
@@ -138,7 +137,7 @@ SemiAxisLength ::= INTEGER{ oneCentimeter(1), outOfRange(4094), unavailable(4095


AccidentSubCauseCode ::= INTEGER {unavailable(0), multiVehicleAccident(1), heavyAccident(2), accidentInvolvingLorry(3), accidentInvolvingBus(4), accidentInvolvingHazardousMaterials(5), accidentOnOppositeLane(6), unsecuredAccident(7), assistanceRequested(8)} (0..255)
AccidentSubCauseCode ::= INTEGER {unavailable(0), multiVehicleAccident(1), heavyAccident(2), accidentInvolvingLorry(3), accidentInvolvingBus(4), accidentInvolvingHazardousMaterials(5), accidentOnOppositeLane(6), unsecuredAccident(7), assistanceRequested(8)} (0..255)


 RoadworksSubCauseCode ::= INTEGER {unavailable(0), majorRoadworks(1), roadMarkingWork(2), slowMovingRoadMaintenance(3), winterService(4), streetCleaning(5) }  (0..255)
RoadworksSubCauseCode ::= INTEGER {unavailable(0), majorRoadworks(1), roadMarkingWork(2), slowMovingRoadMaintenance(3), shortTermStationaryRoadworks(4), streetCleaning(5), winterService(6)} (0..255)


HumanPresenceOnTheRoadSubCauseCode ::= INTEGER {unavailable(0), childrenOnRoadway(1), cyclistOnRoadway(2), motorcyclistOnRoadway(3)} (0..255)
HumanPresenceOnTheRoadSubCauseCode ::= INTEGER {unavailable(0), childrenOnRoadway(1), cyclistOnRoadway(2), motorcyclistOnRoadway(3)} (0..255)


@@ -182,7 +181,6 @@ SemiAxisLength ::= INTEGER{ oneCentimeter(1), outOfRange(4094), unavailable(4095


PostCrashSubCauseCode ::= INTEGER {unavailable(0), accidentWithoutECallTriggered (1), accidentWithECallManuallyTriggered (2), accidentWithECallAutomaticallyTriggered (3), accidentWithECallTriggeredWithoutAccessToCellularNetwork(4)} (0..255)
PostCrashSubCauseCode ::= INTEGER {unavailable(0), accidentWithoutECallTriggered (1), accidentWithECallManuallyTriggered (2), accidentWithECallAutomaticallyTriggered (3), accidentWithECallTriggeredWithoutAccessToCellularNetwork(4)} (0..255)



Curvature ::= SEQUENCE {
Curvature ::= SEQUENCE {
 curvatureValue CurvatureValue,
 curvatureValue CurvatureValue,
 curvatureConfidence CurvatureConfidence
 curvatureConfidence CurvatureConfidence
@@ -191,28 +189,28 @@ Curvature ::= SEQUENCE {
CurvatureValue ::= INTEGER {straight(0), reciprocalOf1MeterRadiusToRight(-30000), reciprocalOf1MeterRadiusToLeft(30000), unavailable(30001)} (-30000..30001)
CurvatureValue ::= INTEGER {straight(0), reciprocalOf1MeterRadiusToRight(-30000), reciprocalOf1MeterRadiusToLeft(30000), unavailable(30001)} (-30000..30001)


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


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


Heading ::= SEQUENCE {
Heading ::= SEQUENCE {
	headingValue HeadingValue,
	headingValue HeadingValue,
	headingConfidence HeadingConfidence
	headingConfidence HeadingConfidence
}
}


HeadingValue ::= INTEGER { wgs84North(0), wgs84East(900), wgs84South(1800), wgs84West(2700), unavailable(3600) } (0..3600)
HeadingValue ::= INTEGER {wgs84North(0), wgs84East(900), wgs84South(1800), wgs84West(2700), unavailable(3601)} (0..3601)


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


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


ClosedLanes ::= SEQUENCE {
ClosedLanes ::= SEQUENCE {
@@ -223,14 +221,14 @@ ClosedLanes ::= SEQUENCE {


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


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




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


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


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


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


@@ -309,9 +307,9 @@ DangerousGoodsExtended ::= SEQUENCE {
	elevatedTemperature BOOLEAN,
	elevatedTemperature BOOLEAN,
	tunnelsRestricted BOOLEAN,
	tunnelsRestricted BOOLEAN,
	limitedQuantity BOOLEAN,
	limitedQuantity BOOLEAN,
   emergencyActionCode IA5String OPTIONAL,
	emergencyActionCode IA5String (SIZE (1..24)) OPTIONAL,
   phoneNumber         IA5String OPTIONAL,
	phoneNumber IA5String (SIZE (1..24)) OPTIONAL,
   companyName         UTF8String OPTIONAL
	companyName UTF8String (SIZE (1..24)) OPTIONAL
}
}


SpecialTransportType ::= BIT STRING {heavyLoad(0), excessWidth(1), excessLength(2), excessHeight(3)} (SIZE(4))
SpecialTransportType ::= BIT STRING {heavyLoad(0), excessWidth(1), excessLength(2), excessHeight(3)} (SIZE(4))
@@ -321,31 +319,30 @@ LightBarSirenInUse ::= BIT STRING {
	sirenActivated (1)
	sirenActivated (1)
} (SIZE(2))
} (SIZE(2))


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


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


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


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


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


SpeedLimit ::= INTEGER { oneKmPerHour(1) } (0..255)
SpeedLimit ::= INTEGER {oneKmPerHour(1)} (1..255)


StationarySince ::= ENUMERATED { lessThan1Minute(0), lessThan2Minutes(1), lessThan15Minutes(2), over15Minutes(3) }
StationarySince ::= ENUMERATED {lessThan1Minute(0), lessThan2Minutes(1), lessThan15Minutes(2), equalOrGreater15Minutes(3)}


Temperature ::= INTEGER { oneDegreeCelsius(1) } (-60..67)
Temperature ::= INTEGER {equalOrSmallerThanMinus60Deg (-60), oneDegreeCelsius(1), equalOrGreaterThan67Deg(67)} (-60..67)


TrafficRule ::= ENUMERATED { noPassing(0),
TrafficRule ::= ENUMERATED {noPassing(0), noPassingForTrucks(1), passToRight(2), passToLeft(3), ...
 noPassingForTrucks(1), ...
}
}


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


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


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


PositionOfOccupants ::= BIT STRING {
PositionOfOccupants ::= BIT STRING {
	row1LeftOccupied (0),
	row1LeftOccupied (0),
@@ -372,8 +369,9 @@ PositionOfOccupants ::= BIT STRING {
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), ...}


VehicleIdentification ::= SEQUENCE {
VehicleIdentification ::= SEQUENCE {
 wMInumber WMInumber,
	wMInumber WMInumber OPTIONAL,
 vDS VDS
	vDS VDS OPTIONAL,
	...
}
}


WMInumber ::= IA5String (SIZE(1..3))
WMInumber ::= IA5String (SIZE(1..3))
@@ -389,12 +387,11 @@ VehicleLength ::= SEQUENCE {


VehicleLengthValue ::= INTEGER {tenCentimeters(1), outOfRange(1022), unavailable(1023)}  (1..1023)
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), unavailable(4)}
trailerPresenceIsUnknown(3) }


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


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


EmergencyPriority ::= BIT STRING {requestForRightOfWay(0), requestForFreeCrossingAtATrafficLight(1)} (SIZE(2))
EmergencyPriority ::= BIT STRING {requestForRightOfWay(0), requestForFreeCrossingAtATrafficLight(1)} (SIZE(2))


@@ -408,24 +405,23 @@ RoadType ::= ENUMERATED {


SteeringWheelAngle ::= SEQUENCE {
SteeringWheelAngle ::= SEQUENCE {
	steeringWheelAngleValue SteeringWheelAngleValue,
	steeringWheelAngleValue SteeringWheelAngleValue,
 steeringWheelConfidence SteeringWheelConfidence
	steeringWheelAngleConfidence SteeringWheelAngleConfidence
}
}


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


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


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


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), agriculture(8),commercial(9),military(10),roadOperator(11),taxi(12), reserved1(13), reserved2(14), reserved3(15)}


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


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


YawRateConfidence ::= ENUMERATED {
YawRateConfidence ::= ENUMERATED {
	degSec-000-01 (0),
	degSec-000-01 (0),
@@ -439,5 +435,67 @@ YawRateConfidence ::= ENUMERATED {
	unavailable (8)
	unavailable (8)
}
}


ProtectedZoneType::=  ENUMERATED {
	cenDsrcTolling (0),
	...
}

RelevanceDistance ::= ENUMERATED {lessThan50m(0), lessThan100m(1), lessThan200m(2), lessThan500m(3), lessThan1000m(4), lessThan5km(5), lessThan10km(6), over10km(7)}

RelevanceTrafficDirection ::= ENUMERATED {allTrafficDirections(0), upstreamTraffic(1), downstreamTraffic(2), oppositeTraffic(3)}

TransmissionInterval ::= INTEGER {oneMilliSecond(1), tenSeconds(10000)} (1..10000)

ValidityDuration ::=	INTEGER {timeOfDetection(0), oneSecondAfterDetection(1)} (0..86400)

ActionID ::= SEQUENCE {
	originatingStationID StationID,
	sequenceNumber SequenceNumber
}

ItineraryPath ::= SEQUENCE SIZE(1..40) OF ReferencePosition

ProtectedCommunicationZone ::= SEQUENCE {
	protectedZoneType		ProtectedZoneType,
	expiryTime TimestampIts OPTIONAL,
	protectedZoneLatitude	Latitude,
	protectedZoneLongitude	Longitude,
	protectedZoneRadius	ProtectedZoneRadius OPTIONAL,
	protectedZoneID	ProtectedZoneID OPTIONAL
}

Traces ::= SEQUENCE SIZE(1..7) OF PathHistory

NumberOfOccupants ::= INTEGER {oneOccupant (1), unavailable(127)} (0 .. 127)

SequenceNumber ::=	INTEGER (0..65535)

PositionOfPillars ::= SEQUENCE (SIZE(1..3, ...)) OF PosPillar

RestrictedTypes ::= SEQUENCE (SIZE(1..3, ...)) OF StationType

EventHistory::= SEQUENCE (SIZE(1..23)) OF EventPoint

EventPoint ::= SEQUENCE {
	eventPosition DeltaReferencePosition,
	eventDeltaTime PathDeltaTime OPTIONAL,
	informationQuality InformationQuality
}

ProtectedCommunicationZonesRSU ::= SEQUENCE (SIZE(1..16)) OF ProtectedCommunicationZone 



CenDsrcTollingZone ::= SEQUENCE {
	protectedZoneLatitude Latitude,
	protectedZoneLongitude Longitude,
	cenDsrcTollingZoneID CenDsrcTollingZoneID OPTIONAL
}

ProtectedZoneRadius ::= INTEGER {oneMeter(1)} (1..255,...)

ProtectedZoneID ::= INTEGER (0.. 134217727)

CenDsrcTollingZoneID ::= ProtectedZoneID


END
END
 No newline at end of file