ITS-Container.asn 17.3 KB
Newer Older
tepelmann's avatar
tepelmann committed
ITS-Container {
 itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (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), unavailable(1800000001) } (-1799999999..1800000001) -- multiples of 0.1 microdegree
Latitude ::= INTEGER { oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10), unavailable(900000001) } (-900000000..900000001) -- multiples of 0.1 microdegree
tepelmann's avatar
tepelmann committed

Elevation ::= SEQUENCE {
 elevationValue ElevationValue,
 elevationConfidence ElevationConfidence
}

ElevationValue ::= INTEGER { seaLevel(0), oneMeter(1), unavailable(7191) } (-1000..7191)
ElevationConfidence ::= INTEGER { withinOneMeter(1), outOfRange(126), unavailable(127) } (1..127)
tepelmann's avatar
tepelmann committed

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


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

PathPoint ::= SEQUENCE {
 pathPosition DeltaReferencePosition,
 pathDeltaTime PathDeltaTime OPTIONAL
tepelmann's avatar
tepelmann committed
}

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

tepelmann's avatar
tepelmann committed
AccelerationControl ::= BIT STRING {
 brakePedalActive (0),
 gasPedalActive (1),
 emergencyBrakeActive (2),
 collisionWarningActive (3),
 accActive (4),
 cruiseControl (5),
tepelmann's avatar
tepelmann committed
 speedLimiterActive (6)
SemiAxisLength ::= INTEGER{ oneCentimeter(1), outOfRange(4094), unavailable(4095) } (0..4095)
tepelmann's avatar
tepelmann committed

 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(-30000), reciprocalOf1MeterRadiusToLeft(30000), unavailable(30001) } (-30000..30001)

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 { yawRateUsed(0), yawRateNotUsed(1), transitionMode(2), ... }
Heading ::= SEQUENCE {
 headingValue HeadingValue,
 headingConfidence HeadingConfidence
HeadingValue ::= INTEGER { wgs84North(0), wgs84East(900), wgs84South(1800), wgs84West(2700), unavailable(3600) } (0..3600)
HeadingConfidence ::= INTEGER { withinZeroPointOneDegree(1), withinOneDegree(10), outOfRange(126), unavailable(127) } (1..127)
LaneNumber ::= INTEGER { offTheRoad(-1), hardShoulder(0),
outermostDrivingLane(1), secondLaneFromOutside(2) } (-1..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
SpeedValue ::= INTEGER { standstill(0), oneCentimeterPerSec(1), unavailable(16383)  } (0..16383)
SpeedConfidence ::= INTEGER { withinOneCentimeterPerSec(1), withinOneMeterPerSec(100), outOfRange(126), unavailable(127) } (1..127)
tepelmann's avatar
tepelmann committed

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

Speed ::= SEQUENCE {
 speedValue SpeedValue,
 speedConfidence SpeedConfidence
DriveDirection ::= ENUMERATED { forward (0), backward (1), unavailable (2) }
tepelmann's avatar
tepelmann committed

EmbarkationStatus ::= BOOLEAN

LongitudinalAcceleration ::= SEQUENCE {
 longitudinalAccelerationValue LongitudinalAccelerationValue,
 longitudinalAccelerationConfidence AccelerationConfidence
LongitudinalAccelerationValue ::= INTEGER { pointOneMeterPerSecSquaredForward(1), pointOneMeterPerSecSquaredBackward(-1), unavailable(161)} (-160 .. 161)
AccelerationConfidence ::= INTEGER { pointOneMeterPerSecSquared(1), outOfRange(101), unavailable(102)} (0 .. 102)
LateralAcceleration ::= SEQUENCE {
 lateralAccelerationValue LateralAccelerationValue,
 lateralAccelerationConfidence AccelerationConfidence
}

LateralAccelerationValue ::= INTEGER { pointOneMeterPerSecSquaredToRight(-1), pointOneMeterPerSecSquaredToLeft(1), unavailable(161) } (-160 .. 161)
VerticalAcceleration ::= SEQUENCE {
 verticalAccelerationValue VerticalAccelerationValue,
 verticalAccelerationConfidence AccelerationConfidence
}

VerticalAccelerationValue ::= INTEGER { pointOneMeterPerSecSquaredUp(1), pointOneMeterPerSecSquaredDown(-1), unavailable(161) } (-160 .. 161)
tepelmann's avatar
tepelmann committed

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)
HeightLonCarr ::= INTEGER { oneCentimeter(1), unavailable(100) } (0..100)
PosLonCarr ::= INTEGER { oneCentimeter(1), unavailable(127) } (0..127)
PosPillar ::= INTEGER { tenCentimeters(1), unavailable(30) } (0..30)
PosCentMass ::= INTEGER { tenCentimeters(1), unavailable(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), unavailable(127) } (0..127)
TurningRadius ::= INTEGER { point4Meters(1), unavailable(255) } (0..255)
PosFrontAx ::= INTEGER { tenCentimeters(1), unavailable(20) } (0..20)
tepelmann's avatar
tepelmann committed

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

VehicleLengthConfidenceIndication ::= ENUMERATED { noTrailerPresent(0), trailerPresentWithKnownLength(1), trailerPresentWithUnknownLength(2), 
trailerPresenceIsUnknown(3) }

VehicleWidth  ::= INTEGER { tenCentimeters(1), outOfRange(61), unavailable(62) }  (1..62)
PathHistory::=  SEQUENCE (SIZE(0..23)) OF PathPoint

EmergencyPriority ::= INTEGER { requestForRightOfWay(0), requestForFreeCrossingAtATrafficLight(1) } (0..1)
InformationQuality ::= INTEGER { unavailable(0), lowest(1), highest(7) }  (0..7)
tepelmann's avatar
tepelmann committed

RoadClass ::= ENUMERATED {
 urban-NoStructuralSeparationToOppositeLanes(0),
 urban-WithStructuralSeparationToOppositeLanes(1),
 nonUrban-NoStructuralSeparationToOppositeLanes(2),
 nonUrban-WithStructuralSeparationToOppositeLanes(3) }

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

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