ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cc (2) version (1) } DEFINITIONS AUTOMATIC TAGS ::= BEGIN ItsPduHeader ::= SEQUENCE { protocolVersion INTEGER{ currentVersion(1) } (0..255), messageID INTEGER{ denm(1),cam(2), poi(3) } (0..255), stationID StationID } StationID ::= INTEGER(0..4294967295) ReferencePosition ::= SEQUENCE { latitude Latitude, longitude Longitude, positionConfidenceEllipse PosConfidenceEllipse , elevation Elevation } DeltaReferencePosition ::= SEQUENCE { deltaLatitude DeltaLatitude, deltaLongitude DeltaLongitude, deltaElevation DeltaElevation } Longitude ::= INTEGER { oneMicrodegreeEast (10), oneMicrodegreeWest (-10) } (-1799999999..1800000000) -- multiples of 0.1 microdegree Latitude ::= INTEGER { oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10) } (-900000000..900000000) -- multiples of 0.1 microdegree Elevation ::= SEQUENCE { elevationValue ElevationValue, elevationConfidence ElevationConfidence } ElevationValue ::= INTEGER { seaLevel(0),oneMeter (1) } (-1000..7191) ElevationConfidence ::= INTEGER { withinOneMeter(1), 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) PosConfidenceEllipse ::= SEQUENCE { semiMajorConfidence SemiAxisLength, -- confidence of the ellipse's major semi-axes semiMinorConfidence SemiAxisLength, -- confidence of the ellipse's minor semi-axes semiMajorOrientation Direction } PathPoint ::= SEQUENCE { pathPosition DeltaReferencePosition, pathDeltaTime PathDeltaTime } PathDeltaTime ::= INTEGER { tenMilliSecondsInPast(1) } (0..65535, ...) AccelerationControl ::= BIT STRING { brakePedalActive (0), gasPedalActive (1), emergencyBrakeActive (2), collisionWarningActive (3), accActive (4), cruiseControl (5), speedLimiterActive (6) } (SIZE(7)) SemiAxisLength ::= INTEGER{ oneCentimeter(1), unavailable(4095) } (0..4095) CauseCode ::= SEQUENCE { causeCode CauseCodeType, subCauseCode SubCauseCodeType } CauseCodeType ::= INTEGER { reserved (0), trafficCondition (1), accident (2), roadworks (3), adverseWeatherCondition-Adhesion (6), hazardousLocation-SurfaceCondition (9), hazardousLocation-ObstacleOnTheRoad (10), hazardousLocation-AnimalOnTheRoad (11), humanPresenceOnTheRoad (12), wrongWayDriving (14), rescueAndRecoveryWorkInProgress (15), adverseWeatherCondition-ExtremeWeatherCondition (17), adverseWeatherCondition-Visibility (18), adverseWeatherCondition-Precipitation (19), slowVehicle (26), dangerousEndOfQueue (27), vehicleBreakdown (91), postCrash (92), humanProblem (93), stationaryVehicle (94), emergencyVehicleApproaching (95), hazardousLocation-DangerousCurve (96), collisionRisk (97), signalViolation (98), dangerousSituation (99) } (0..255) SubCauseCodeType ::= INTEGER (0..255) TrafficConditionSubCauseCode ::= INTEGER {unavailable(0), increasedVolumeOfTraffic(1), trafficJamSlowlyIncreasing(2), trafficJamIncreasing(3), trafficJamStronglyIncreasing(4), trafficStationary(5), trafficJamSlightlyDecreasing(6), trafficJamDecreasing(7), trafficJamStronglyDecreasing(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) HumanPresenceOnTheRoadSubCauseCode ::= INTEGER {unavailable(0), childrenOnRoadway(1), cyclistOnRoadway(2), motorcyclistOnRoadway(3) } (0..255) WrongWayDrivingSubCauseCode ::= INTEGER {unavailable(0), wrongLane(1), wrongDirection(2) } (0..255) AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode ::= INTEGER {unavailable(0), strongWinds(1), damagingHail(2), hurricane(3), thunderstorm(4), tornado(5), blizzard(6) } (0..255) 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) AdverseWeatherCondition-VisibilitySubCauseCode ::= INTEGER {unavailable(0), fog(1), smoke(2), heavySnowfall(3), heavyRain(4), heavyHail(5), lowSunGlare(6), sandstorms(7), swarmsOfInsects(8) } (0..255) AdverseWeatherCondition-PrecipitationSubCauseCode ::= INTEGER {unavailable(0), heavyRain(1), heavySnowfall(2), softHail(3) } (0..255) SlowVehicleSubCauseCode ::= INTEGER {unavailable(0), maintenanceVehicle(1), vehiclesSlowingToLookAtAccident(2), abnormalLoad(3), abnormalWideLoad(4), convoy(5), snowplough(6), deicing(7), saltingVehicles(8) } (0..255) StationaryVehicleSubCauseCode ::= INTEGER {unavailable(0), humanProblem(1), vehicleBreakdown(2), postCrash(3), publicTransportStop(4), carryingDangerousGoods(5) } (0..255) HumanProblemSubCauseCode ::= INTEGER { unavailable(0), glycemiaProblem(1), heartProblem(2) } (0..255) EmergencyVehicleApproachingSubCauseCode ::= INTEGER {unavailable(0), emergencyVehicleApproaching(1), prioritizedVehicleApproaching(2) } (0..255) HazardousLocation-DangerousCurveSubCauseCode ::= INTEGER {unavailable(0), dangerousLeftTurnCurve(1), dangerousRightTurnCurve(2), multipleCurvesStartingWithUnknownTurningDirection(3), multipleCurvesStartingWithLeftTurn(4), multipleCurvesStartingWithRightTurn(5) } (0..255) HazardousLocation-SurfaceConditionSubCauseCode ::= INTEGER {unavailable(0), rockfalls(1), earthquakeDamage(2), sewerCollapse(3), subsidence(4), snowDrifts(5), stormDamage(6), burstPipe(7), volcanoEruption(8), fallingIce(9) } (0..255) HazardousLocation-ObstacleOnTheRoadSubCauseCode ::= INTEGER {unavailable(0), shedLoad(1), partsOfVehicles(2), partsOfTyres(3), bigObjects(4), fallenTrees(5), hubCaps(6), waitingVehicles(7) } (0..255) HazardousLocation-AnimalOnTheRoadSubCauseCode ::= INTEGER {unavailable(0), wildAnimals(1), herdOfAnimals(2), smallAnimals(3), largeAnimals(4) } (0..255) CollisionRiskSubCauseCode ::= INTEGER {unavailable(0), longitudinalCollisionRisk(1), crossingCollisionRisk(2), lateralCollisionRisk(3), vulnerableRoadUser(4) } (0..255) SignalViolationSubCauseCode ::= INTEGER {unavailable(0), stopSignViolation(1), trafficLightViolation(2), turningRegulationViolation(3) } (0..255) RescueAndRecoveryWorkInProgressSubCauseCode ::= INTEGER {unavailable(0), emergencyVehicles(1), rescueHelicopterLanding(2), policeActivityOngoing(3), medicalEmergencyOngoing(4), childAbductionInProgress(5) } (0..255) DangerousEndOfQueueSubCauseCode ::= INTEGER {unavailable(0), suddenEndOfQueue(1), queueOverHill(2), queueAroundBend(3), queueInTunnel(4) } (0..255) DangerousSituationSubCauseCode ::= INTEGER {unavailable(0), emergencyElectronicBrake(1), preCrashSystemActivated(2), espActivated(3), absActivated(4), aebActivated(5), brakeWarningActivated(6), collisionRiskWarningActivated(7) } (0..255) VehicleBreakdownSubCauseCode ::= INTEGER {unavailable(0), lackOfFuel (1), lackOfBatteryPower (2), engineProblem(3), transmissionProblem(4), engineCoolingProblem(5), brakingSystemProblem(6), steeringProblem(7), tyrePuncture(8)} (0..255) PostCrashSubCauseCode ::= INTEGER {unavailable(0), accidentWithoutECallTriggered (1), accidentWithECallManuallyTriggered (2), accidentWithECallAutomaticallyTriggered (3), accidentWithECallTriggeredWithoutAccessToCellularNetwork(4)} (0..255) Curvature ::= SEQUENCE { curvatureValue CurvatureValue, 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) CurvatureCalculationMode ::= ENUMERATED { yawRateNotUsed(0), yawRateUsed(1), ... } Direction ::= SEQUENCE { directionValue DirectionValue, directionConfidence DirectionConfidence } DirectionValue ::= INTEGER {north(0), east(900), south(1800), west(2700), unavailable(3600) } (0..3600) DirectionConfidence ::= INTEGER { withinZeroPointOneDegree(1), withinOneDegree(10), 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)) VehicleSpeed ::= INTEGER { standstill(0), oneCentimeterPerSec(1) } (0..16383) VehicleSpeedConfidence ::= 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 } DriveDirection ::= ENUMERATED { forward (0), backward (1) } EmbarkationStatus ::= BOOLEAN LongitudinalAcceleration ::= SEQUENCE { longitudinalAccelerationValue LongitudinalAccelerationValue, longitudinalAccelerationConfidence LongitudinalAccelerationConfidence } LongitudinalAccelerationValue ::= INTEGER { pointOneMeterPerSecSquaredForward(1), pointOneMeterPerSecSquaredBackward(-1)} (-160 .. 160) LongitudinalAccelerationConfidence ::= INTEGER { pointOneMeterPerSecSquared(1), outOfRange(101), unavailable(102)} (0 .. 102) LateralAcceleration ::= INTEGER { pointOneMeterPerSecSquaredToRight(1), pointOneMeterPerSecSquaredToLeft(-1)} (-160 .. 160) VerticalAcceleration ::= INTEGER { eightCentimeterPerSecSquaredUp(1), eightCentimeterPerSecSquaredDown(-1)} (-127 .. 127) 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) ExteriorLights ::= BIT STRING { lowBeamHeadlightsOn (0), highBeamHeadlightsOn (1), leftTurnSignalOn (2), rightTurnSignalOn (3), daytimeRunningLightsOn (4), reverseLightOn (5), fogLightOn (6), parkingLightsOn (7) } (SIZE(8)) 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) } DangerousGoodsExtended ::= SEQUENCE { dangerousGoodsType DangerousGoodsBasic, unNumber INTEGER (0..9999), elevatedTemperature BOOLEAN, tunnelsRestricted BOOLEAN, limitedQuantity BOOLEAN, emergencyActionCode IA5String OPTIONAL, phoneNumber IA5String OPTIONAL, companyName UTF8String OPTIONAL } SpecialTransportType ::= BIT STRING { heavyLoad(0), excessWidth(1), excessLength(2), excessHeight(3) } (SIZE(4)) LightBarSirenInUse ::= BIT STRING { lightBarActivated (0), sirenActivated (1) } (SIZE(2)) HeightLonCarr ::= INTEGER { oneCentimeter(1), unknown(100) } (0..100) PosLonCarr ::= INTEGER { oneCentimeter(1), unknown(127) } (0..127) PosPillar ::= INTEGER { tenCentimeters(1), unknown(30) } (0..30) PosCentMass ::= INTEGER { tenCentimeters(1), unknown(63) } (0..63) RequestResponseIndication ::= ENUMERATED { request(0), response(1) } SpeedLimit ::= INTEGER { oneKmPerHour(1) } (0..150) StationarySince ::= ENUMERATED { lessThan1Minute(0), lessThan2Minutes(1), lessThan15Minutes(2), over15Minutes(3) } Temperature ::= INTEGER { oneDegreeCelsius(1) } (-60..67) TrafficRule ::= ENUMERATED { noPassing(0), noPassingForTrucks(1) } WheelBaseVehicle ::= INTEGER { tenCentimeters(1), unknown(127) } (0..127) TurningRadius ::= INTEGER { point4Meters(1), unknown(255) } (0..255) PosFrontAx ::= INTEGER { tenCentimeters(1), unknown(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)) PositioningSolutionType ::= ENUMERATED { noPositioningSolution(0), sGNSS(1), dGNSS(2), sGNSSplusDR(3), dGNSSplusDR(4), dR(5), ... } VehicleIdentification ::= SEQUENCE { wMInumber WMInumber, vDS VDS } WMInumber ::= IA5String (SIZE(1..3)) VDS ::= IA5String (SIZE(6)) EnergyStorageType::= BIT STRING { hydrogenStorage(0), electricEnergyStorage(1), liquidPropaneGas(2), compressedNaturalGas(3), diesel(4), gasoline(5), ammonia(6) } (SIZE(7)) VehicleLength ::= SEQUENCE { vehicleLengthValue VehicleLengthValue, vehicleLengthConfidenceIndication VehicleLengthConfidenceIndication } VehicleLengthValue ::= INTEGER { tenCentimeters(1), outOfRange(1022), unknown(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 PtPriority ::= INTEGER { lowest(0), highest(3) } (0..3) 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) RoadClass ::= ENUMERATED { urban-NoStructuralSeparationToOppositeLanes(0), urban-WithStructuralSeparationToOppositeLanes(1), nonUrban-NoStructuralSeparationToOppositeLanes(2), nonUrban-WithStructuralSeparationToOppositeLanes(3) } SteeringWheelAngle ::= INTEGER { straight(0), onePointFiveDegreesToRight(1), onePointFiveDegreesToLeft(-1), outOfRangeToRight(126), outOfRangeToLeft(-126) } (-126..126) 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) } END