ITS-Container.asn 17.5 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), spat(4), map(5), ivi(6), ivs(7), ev-rsr(8)  } (0..255),
tepelmann's avatar
tepelmann committed
	stationID StationID
}

StationID ::=   INTEGER(0..4294967295)

ReferencePosition ::= SEQUENCE {
  latitude Latitude,
  longitude Longitude,
  positionConfidenceEllipse PosConfidenceEllipse ,
  altitude Altitude
tepelmann's avatar
tepelmann committed
}

DeltaReferencePosition ::= SEQUENCE {
  deltaLatitude DeltaLatitude,
  deltaLongitude DeltaLongitude,
  deltaAltitude DeltaAltitude
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
Altitude ::= SEQUENCE {
 altitudeValue AltitudeValue,
 altitudeConfidence AltitudeConfidence
AltitudeValue ::= INTEGER { seaLevel(0), oneCentimeter(1), unavailable(800001) } (-100000..800001)

AltitudeConfidence ::= ENUMERATED {
alt-000-01 (0), 
alt-000-02 (1), 
alt-000-05 (2), 
alt-000-10 (3), 
alt-000-20 (4), 
alt-000-50 (5), 
alt-001-00 (6), 
alt-002-00 (7), 
alt-005-00 (8), 
alt-010-00 (9), 
alt-020-00 (10), 
alt-050-00 (11), 
alt-100-00 (12), 
alt-200-00 (13), 
outOfRange (14),
unavailable (15)
}
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

DeltaAltitude  ::= INTEGER { oneCentimeterUp (1), oneCentimeterDown (-1), unavailable(12800) } (-12700..12800)
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 {
 brakePedalEngaged (0),
 gasPedalEngaged (1),
 emergencyBrakeEngaged (2),
 collisionWarningEngaged (3),
 accEngaged (4),
 cruiseControlEngaged (5),
 speedLimiterEngaged (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), emergencyElectronicBrakeEngaged(1), preCrashSystemEngaged(2), espEngaged(3), absEngaged(4), aebEngaged(5), brakeWarningEngaged(6), collisionRiskWarningEngaged(7) } (0..255)
tepelmann's avatar
tepelmann committed
 
 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) }

SpeedLimit ::= INTEGER { oneKmPerHour(1) } (0..255)
tepelmann's avatar
tepelmann committed

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 ::= BIT STRING { requestForRightOfWay(0), requestForFreeCrossingAtATrafficLight(1) } (SIZE(2))
InformationQuality ::= INTEGER { unavailable(0), lowest(1), highest(7) }  (0..7)
RoadType ::= ENUMERATED {
tepelmann's avatar
tepelmann committed
 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 {
 degSec-000-01 (0), 
 degSec-000-05 (1), 
 degSec-000-10 (2), 
 degSec-001-00 (3), 
 degSec-005-00 (4), 
 degSec-010-00 (5), 
 degSec-100-00 (6), 
 outOfRange (7),
 unavailable (8)