Skip to content
ITS-Container.asn 15 KiB
Newer Older
tepelmann's avatar
tepelmann committed
ITS-Container {
 itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (302637) cc (0) 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) } (-1800000000..1800000001) -- multiples of 0.1 microdegree

Latitude ::= INTEGER { oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10) } (-900000000..900000001) -- 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)
} 


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 { yawRateNotAvailable(0), yawRateAvailable(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)

LaneCount ::= SEQUENCE {
 laneNumber LaneNumber,
 laneNumberConfidence LaneNumberConfidence
}


LaneNumber ::= INTEGER { offTheRoad(0) } (0..15)

LaneInfo ::= ENUMERATED { leftLaneClosed(0), rightLaneClosed(1) }

LaneNumberConfidence ::= Percentage

Percentage ::= INTEGER (0..100)

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  ::= ENUMERATED { heavyLoad(0), excessWidth(1) } 

LightBarSirenInUse ::= BIT STRING {
 lightBarActivated (0),
 sirenActivated (1)
}

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)

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)
}

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

Priority ::= INTEGER { lowest(0), highest(3) }  (0..3)

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), unavailable(127) }  (-126..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) }

END