ITS-Container.asn 15.2 KB
Newer Older
tepelmann's avatar
tepelmann committed
ITS-Container {
 itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cc (2) version (1) 
tepelmann's avatar
tepelmann committed
}

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
tepelmann's avatar
tepelmann committed

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)
tepelmann's avatar
tepelmann committed


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), ... }
tepelmann's avatar
tepelmann committed

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))
tepelmann's avatar
tepelmann committed

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))
tepelmann's avatar
tepelmann committed

LightBarSirenInUse ::= BIT STRING {
 lightBarActivated (0),
 sirenActivated (1)
tepelmann's avatar
tepelmann committed

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

tepelmann's avatar
tepelmann committed
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)
tepelmann's avatar
tepelmann committed

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)
tepelmann's avatar
tepelmann committed

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)
tepelmann's avatar
tepelmann committed

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