diff --git a/asn1/CAM/CAM.asn b/asn1/CAM/CAM.asn index dea8c46745a06999e094dcb79fb147a6c9e066b9..178f101e290067c5a9271e0e4bc07968f57586aa 100644 --- a/asn1/CAM/CAM.asn +++ b/asn1/CAM/CAM.asn @@ -1,7 +1,7 @@ -- This ASN.1 specification has been checked for conformance with the ASN.1 standard by the OSS ASN.1 Tools CAM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) cam (2) version1 (1) + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) cam (2) version (3) } DEFINITIONS AUTOMATIC TAGS ::= @@ -9,8 +9,9 @@ DEFINITIONS AUTOMATIC TAGS ::= BEGIN IMPORTS - ItsPduHeader, VehicleCommonParameters, ProfileParameters, StationID, TimeStamp, ReferencePosition -FROM DENM-PDU-Descriptions { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) denm (3) version2 (2) }; + ItsPduHeader, ReferencePosition, AccelerationControl, Curvature, CurvatureAccuracy, CurvatureCalculationMode, Direction, DirectionConfidence, IncidentIndication, IncidentRule, LaneCount, LaneCountConfidence, Percentage, Priority, PtLineRoute, PtScheduleDelay, VehicleSpeed, DriveDirection, LongitudinalAcceleration, StationType, ExteriorLights, LongTruck, DangerousGoods, SpecialTransport, LightBarSirenInUse, Mass, VehicleWidth, VehicleLength, VehicleLengthConfidenceIndication, PathHistory FROM ITS-Container { + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) cc (3) version (3) +}; -- The root data frame for cooperative awareness messages @@ -23,31 +24,59 @@ CamPdu ::= SEQUENCE { CoopAwareness ::= SEQUENCE { - - stationID StationID, - - -- Basic characterization of an ITS station. A more detailed classification can be given by VehicleType. - stationCharacteristics SEQUENCE { - mobileItsStation BOOLEAN, -- will ITS station change position? - privateItsStation BOOLEAN, -- not public authority - physicalRelevantItsStation BOOLEAN, -- can another mobile ITS station crash into this station? - ... - }, - - referencePosition ReferencePosition, - camParameters CamParameters OPTIONAL, -- presently omitted for Irs + generationDeltaTime GenerationDeltaTime, + camParameters CamParameters, ... } - - CamParameters ::= SEQUENCE { - vehicleCommonParameters VehicleCommonParameters, - profileDependent ProfileParameters OPTIONAL, + basicContainer BasicContainer, + basicVehicleContainer BasicVehicleContainerHighFrequency OPTIONAL, + basicVehicleContainerStatic BasicVehicleContainerLowFrequency OPTIONAL, + specialVehicleContainer SpecialVehicleContainer OPTIONAL, ... } + BasicContainer ::= SEQUENCE { + stationType StationType, + referencePosition ReferencePosition + } + + BasicVehicleContainerHighFrequency ::= SEQUENCE { + heading Direction, + headingConfidence DirectionConfidence, + laneCount LaneCount OPTIONAL, + vehicleSpeed VehicleSpeed, + driveDirection DriveDirection, + longitudinalAcceleration LongitudinalAcceleration, + accelerationControl AccelerationControl, + curvature Curvature, + curvatureAccuracy CurvatureAccuracy, + curvatureCalculationMode CurvatureCalculationMode + } + + BasicVehicleContainerLowFrequency ::= SEQUENCE { + vehicleWidth VehicleWidth, + vehicleLength VehicleLength, + vehicleLengthConfidenceIndication VehicleLengthConfidenceIndication, + exteriorLights ExteriorLights, + pathHistory PathHistory + } + + SpecialVehicleContainer ::= SEQUENCE { + lightBarSirenInUse LightBarSirenInUse OPTIONAL, + incidentIndication IncidentIndication OPTIONAL, + incidentRule IncidentRule OPTIONAL, + dangerousGoods DangerousGoods OPTIONAL, + ptLineRoute PtLineRoute OPTIONAL, + ptScheduleDelay PtScheduleDelay OPTIONAL, + priority Priority OPTIONAL + } + + GenerationDeltaTime ::= INTEGER { oneMilliSec(1) } (0..65535) + + END diff --git a/asn1/CommonContainer/ITS-Container.asn b/asn1/CommonContainer/ITS-Container.asn new file mode 100644 index 0000000000000000000000000000000000000000..3606d50ff8fc9a4136b607033f582954f452f5d7 --- /dev/null +++ b/asn1/CommonContainer/ITS-Container.asn @@ -0,0 +1,213 @@ +ITS-Container { + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) cc (3) version (3) +} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + + +ItsPduHeader ::= SEQUENCE { + protocolVersion INTEGER{ currentVersion(3) } (0..255), + messageID INTEGER{ cam(0), denm(1) } (0..255), + stationID StationID +} + +StationID ::= INTEGER(0..4294967295) + +ReferencePosition ::= SEQUENCE { + longitude Longitude, + latitude Latitude, + positionConfidenceEllipse PosConfidenceEllipse , + elevation Elevation, + elevationConfidence ElevationConfidence +} + +DeltaPosition ::= SEQUENCE { + deltaLongitude DeltaLongitude, + deltaLatitude DeltaLatitude, + positionConfidenceEllipse PosConfidenceEllipse +} + +Longitude ::= INTEGER { oneMicrodegreeEast (10), oneMicrodegreeWest (-10), unknown(1800000001) } (-1800000000..1800000001) -- multiples of 0.1 microdegree + +Latitude ::= INTEGER { oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10), unknown(900000001) } (-900000000..900000001) -- multiples of 0.1 microdegree + +Elevation ::= INTEGER (-1000..7191) -- multiples of 1 m + +DeltaLongitude ::= INTEGER { oneMicrodegreeEast (10), oneMicrodegreeWest (-10) } (-120..120) -- multiples of 0.1 microdegree + +DeltaLatitude ::= INTEGER { oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10) } (-120..120) -- multiples of 0.1 microdegree + + +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 DeltaPosition, + pathDeltaTime PathDeltaTime +} + +PathDeltaTime ::= INTEGER { hundredMilliSecondsInPast(1), hundredMilliSecondsInFuture(-1) } (-31..31, ...) + +AccelerationControl ::= BIT STRING { + notValid (0), + breakPedalActive (1), + gasPedalActive (2), + emergencyBrakeActive (3), + collisionWarningActive (4), + accActive (5), + cruiseControl (6), + speedLimiterActive (7) +} + + +SemiAxisLength ::= INTEGER{ oneCentimeter(1), notValid(4095) } (0..4095) + +Curvature ::= INTEGER{ straight(0), reciprocalOf1MeterRadiusToRight(1), reciprocalOf1MeterRadiusToLeft(-1) } (-30000..30000) + +CurvatureChange ::= INTEGER{ noChange(0) } (-1020..1020) -- removing this type is under discussion + +CurvatureAccuracy ::= INTEGER { lessThanOnePercentDeviation(0), onePercentDeviation(1), tenPercentDeviation(10), overTenPercentDeviation(11), notAvailable(12) } (0..12) + +CurvatureCalculationMode ::= ENUMERATED { yawRateNotAvailable(0), yawRateAvailable(1), ... } + +Direction ::= INTEGER {north(0), east(900), south(1800), west(2700)} (0..4095) + +DirectionConfidence ::= INTEGER { notValid(127) } (0..127) + +ElevationConfidence ::= INTEGER { notValid(127) } (0..127) + +LaneCount ::= INTEGER { offTheRoad(0) } (0..15) + +LaneCountConfidence ::= Percentage + +Percentage ::= INTEGER (0..100) + +VehicleSpeed ::= INTEGER { oneCentimeterPerSec(1) } (0..16383) + +DriveDirection ::= ENUMERATED { forward (0), backward (1) } + +LongitudinalAcceleration ::= INTEGER { pointOneMeterPerSecSquared(1), notValid (160)} (-160 .. 160) + +StationType ::= INTEGER { unkown(0), passengerCar(1), bus(2) } (0..255) + +VehicleHeight ::= INTEGER { tenCentimeters(1), outOfRange(51) } (0..51) +VehicleWidth ::= INTEGER { tenCentimeters(1), outOfRange(51) } (0..51) +VehicleLengthNormal ::= INTEGER { tenCentimeters(1), outOfRange(127) } (0..127) + +ExteriorLights ::= BIT STRING { + lowBeamHeadlightsOn (0), + highBeamHeadlightsOn (1), + leftTurnSignalOn (2), + rightTurnSignalOn (3), + tbd (4), + tbd2 (5), + fogLightOn (6), + parkingLightsOn (7) +} + + +LongTruck ::= ENUMERATED { lengthOf18point75Meters, ... } + +DangerousGoods ::= ENUMERATED { unknown +(0), explosives +(1), flammableGases(2), +toxicGases(3), flammableLiquids +(4), flammalbeSolids(5), substancesLiableToSpontaneousCombustion(6) +, substancesEmittingFlammableGasesUponContactWithWater(7), oxidizingSubstances(8), +organicPeroxides +(9), toxicSubstances(10), infectiousSubstances(11), radioactiveMaterial +(12), corrosiveSubstances(13), +miscellaneousDangerousSubstances(14) } + +SpecialTransport ::= ENUMERATED { toBeDefined } -- not well defined yet + +LightBarSirenInUse ::= BIT STRING { + noActivity (0), + lightBarAvailable (1), + lightBarActivated (2), + sirenAvailable (3), + sirenActivated (4) +} + +Mass ::= INTEGER { hundredKg(1), exceeding50Tons(500), massUnknown(501) } (0..501) + +HeightLonCarr ::= INTEGER { oneCentimeter(1) } (0..100) + +PosLonCarr ::= INTEGER { oneCentimeter(1) } (0..127) + +PosPillar ::= INTEGER { tenCentimeters(1), notUsed(30) } (0..30) + +PosCentMass ::= INTEGER { tenCentimeters(1), notUsed(63) } (0..63) + +WheelBaseVehicle ::= INTEGER { tenCentimeters(1), notUsed(127) } (0..127) + +TurningRadius ::= INTEGER { point4Meters(1) } (0..255) + +PosFrontAx ::= INTEGER { tenCentimeters(1) } (0..20) + +PositionOfOccupants ::= BIT STRING { + tier1LeftOccupied (0), + tier1RightOccupied (1), + tier1MidOccupied (2), + tier2LeftOccupied (3), + tier2RightOccupied (4), + tier2MidOccupied (5), + tier3LeftOccupied (6), + tier3RightOccupied (7), + tier3MidOccupied (8), + tier3NotDetectable (9) +} + +VehicleLength ::= CHOICE { vehicleLengthNormal VehicleLengthNormal, longTruck LongTruck} + +VehicleLengthConfidenceIndication ::= ENUMERATED { noTrailerPresent(0), trailerPresentWithUnkownLength(1), +trailerPresenceIsUnkown(2) } + +PathHistory::= SEQUENCE SIZE(0..23) OF PathPoint + +IncidentIndication ::= ENUMERATED { attention(0), +trafficJamAhead(1), +slowVehicle(2), +heavyGoodsTransport(3), +movingRoadWorks(4), +publicTransportDisembarkation(5), ... +} + +IncidentRule ::= BIT STRING { + leftLaneClosed (0), + +rightLaneClosed + (1), + +noPassing + (2), + +noPassingForTrucks (3) +} + +Priority ::= INTEGER { lowest(0), highest(3) } (0..3) + +PtLineRoute ::= BIT STRING + +PtScheduleDelay ::= INTEGER { oneSecondAheadOfSchedule(-1), noDelay(0), oneSecondDelay(1) } (-300..3795) + +InformationQuality ::= INTEGER { unknown(0), lowest(1), highest(7) } (0..127) + +RoadClass ::= ENUMERATED { gravelRoad(0) +, localRoad(1), +districtRoad(2), +countryRoad(3), +stateRoad(4), +highway(5), +reserved(6), +unknown(7) } + +Timestamp ::= INTEGER { startOf1970(0), oneMillisecAfterStartOf1970(1) } (0..281474976710655) + +END + diff --git a/asn1/DENM/DENM.asn b/asn1/DENM/DENM.asn index 789b73782f3a74716abaf9b323ac922cb18520b0..7a1052fff375e78c6dcd1ba175077f4fb904fab9 100644 --- a/asn1/DENM/DENM.asn +++ b/asn1/DENM/DENM.asn @@ -1,413 +1,160 @@ --- This ASN.1 specification has been checked for conformance with the ASN.1 standard by the Objective Systems ASN.1 Tools - -DENM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) denm (3) version2 (2) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -DenmPdu ::= SEQUENCE { - header ItsPduHeader, - denm DecentralizedEnvironmentalNotificationMessage - -} - -DecentralizedEnvironmentalNotificationMessage ::= SEQUENCE { - - management DecentralizedSituationManagement, -- container with DEN management and version control - situation DecentralizedSituation, -- container with event description, incl. type, severity - location DecentralizedSituationLocation, -- container with event location, location referencing with more detailed location description and the relevance area - - ... - } - -DecentralizedSituationManagement::= SEQUENCE { - -- unique identifier about an event from one originator ITS station, combination of node ID and a sequence number - actionID ActionID, -- 6 byte - - -- version of the DENM indicating updates from the same originator ITS station; value of 255 is used for the cancellation message sent from the originator ITS station - - dataVersion DataVersion, -- 1 byte - -- time when the DENM is deleted from the DEN management and the information related to the event is set as invalid.. If it is not provided, it indicates that the expiry time is unkown by the originator ITS station - expiryTime TimeStamp OPTIONAL, -- 6 byte - frequency INTEGER (0..255) OPTIONAL, --units of 0.1 Hz - -- probability of the detected event to be true, varies from 0 to 100, with maximum value as full reliability - reliability INTEGER(0..100), -- 7 bits - -- negates the existence of an event at the event position by a third part ITS station that have received DENMs previously. - isNegation BOOLEAN -- 1 bit -} - --- event description derived from [3] -DecentralizedSituation::= SEQUENCE { - -- traffic status near the event position, defined based on [3], TPEG table tec001 - trafficFlowEffect TrafficFlowEffect OPTIONAL, -- 1 byte. - -- event direct cause and sub cause description as defined in tab6.1 and in [3] - situation Situation, - -- linked cause if information is available. - linkedCause Situation OPTIONAL, -- 2 Byte, - -- severity value of the event, defined in [3], TPEG table tec003 - severity Severity, -- 1 byte - -- characteristics of the event - eventCharact SEQUENCE -- EventCharact 1 byte - { - -- event mobility description, set to TRUE if the event is in mobility - eventmobility BOOLEAN, - -- whether the event is caused by the originator ITS station - causeType ENUMERATED { itsStation, geographicalRegion }, - -- whether the event is physicalling relevant to the receiving ITS station. - relevance ENUMERATED {physicallyRelevant, difficultDrivingConditions }, - -- whether the event is time critical road safety event, set to TRUE if it is the case. - timeCriticality BOOLEAN, - -- more characteristics may be added in future. - ... - } OPTIONAL, - - vehicleCommonParameters VehicleCommonParameters OPTIONAL, - profile ProfileParameters OPTIONAL -} - -DecentralizedSituationLocation::= SEQUENCE { - -- description of the event position - eventPosition CHOICE { - -- the geographical position of the reference position - eventPositionCurrentDefinition EventPosition, - ... - }, - -- location referencing of the event position - locationRef CHOICE { - -- consequence position of the trace location referencing mechanism - trace TraceLocData, - -- more location referencing mechanism to be added - ... - }, - ..., - -- description of the relevance area for the DENM dissemination - [[relevanceArea RelevanceArea]] -} - -EventPosition ::= SEQUENCE { - refPosition ReferencePosition, - eventSpeed Speed OPTIONAL -- event speed, either equal to or different from the vehicle speed -} - - -ActionID ::= SEQUENCE { - stationID StationID, -- a 4 byte value - sequenceNo SequenceNo -- a 2 byte value -} - -Elevation ::= INTEGER (-10000..16767215) -- multiples of 0.1 m - -ItsPduHeader ::= SEQUENCE { - -- protocolVersion fixed to 0 - protocolVersion INTEGER(0..255), - - -- message type ID associated to CAM = 0, DENM=1 - messageID INTEGER(0..255), - - -- milliseconds elapsed since midnight January 1st, 1970 UTC - generationTime TimeStamp -} - -Latitude ::= SEQUENCE { - hemisphere ENUMERATED { north (0), south (1) }, - degree INTEGER (0..900000000) -- multiples of 0.1 microdegree -} - -Longitude ::= SEQUENCE { - hemisphere ENUMERATED { east (0), west (1) }, - degree INTEGER (0..1800000000) -- multiples of 0.1 microdegree -} - -ReferencePosition ::= SEQUENCE { - longitude Longitude, - latitude Latitude, - elevation Elevation, - heading Direction OPTIONAL, --present if mobileItsStation flag is TRUE - streetName StreetName OPTIONAL, - positionConfidence Confidence OPTIONAL, --present if mobileItsStation flag is TRUE - elevationConfidence Confidence OPTIONAL, --present if mobileItsStation flag is TRUE - roadSegmentID RoadSegmentID OPTIONAL -} - -RelevanceArea ::= SEQUENCE { - geoAreaCenterLatitude Latitude, - geoAreaCenterLongitude Longitude, - shape CHOICE {circle Circle, rectangle Rectangle, ellipse Ellipse}, - directionalityFilter DirectionalityFilter OPTIONAL, - disseminationAreaSize RelativeSize DEFAULT same, - ... -} - -Circle ::= SEQUENCE { -- reference EN 302 931 - radius Distance -} - -Rectangle ::= SEQUENCE { -- reference EN 302 931 - aSemiAxis Distance, - bSemiAxis Distance, - azimuthAngle Direction -- aSemiAxis directionality -} - -Ellipse ::= SEQUENCE { -- reference EN 302 931 - aSemiAxis Distance, - bSemiAxis Distance, - azimuthAngle Direction -- aSemiAxis directionality -} - -DirectionalityFilter ::= ENUMERATED { noFilter (0), approachingCenter (1), leavingCenter (2) } - -RelativeSize ::= ENUMERATED { same (0), oneAndHalfSize (1), doubleSize (2), tripleSize (3) } - - -SequenceNo ::= INTEGER (0..65535) -- increased by 1 each time a new event is detected by the same ITS station. - -DataVersion ::= INTEGER {firstVersion(0),secondVersion(1),cancellation(255) } (0..255) - -TrafficFlowEffect ::= INTEGER (0..7) - -Situation ::= SEQUENCE { - cause CauseCode, -- 1 byte - subCause SubCauseCode -- 1 byte -} - --- 1 to 100 indicates causecode defined within [3] --- 101 – 255 indicates causecode without being defined by [3] -CauseCode ::= INTEGER {reserved(0),dangerousDriving(101),intersectionViolation(102),vehicleProblem(103),intersectionCollision(104),hazardousLocation(105) } (0..255) - -SubCauseCode ::= INTEGER {unknown(0)} (0..255) - -Severity ::= ENUMERATED -- 1 byte -{ - informative (1), - -- Text example: - obstacles (2), --danger level 1 - -- Text example: - danger (3), --danger level 2: - -- Text example: - highestDanger (4) --danger level 3: -} - -Speed ::= INTEGER (-32765..32765) -- multiples of 0.01 m/s - -StationID ::= INTEGER(0..4294967295) - -TraceLocData ::= SEQUENCE { - --3 bits, identifier of the trace - traceID INTEGER(0 .. 7), - --5 bits, number of waypoint positions included in the trace - waypoints SEQUENCE (SIZE(0..31)) OF Waypoint -} - -TimeStamp ::= INTEGER (0.. 281474976710655) -- units of milliseconds, 6 byte - -Waypoint ::= SEQUENCE{ - -- waypoint positions included in the trace. - ptLat Latitude, --a 4 bytes value - ptLong Longitude, --a 4 bytes value - ptAlt Elevation, - ... -} - - --- common and profile dependent parameter definitions follow - -ProfileParameters ::= CHOICE { - basicVehicle BasicVehicle, - emergencyVehicle EmergencyVehicle, - publicTransportVehicle PublicTransportVehicle, - ... -} - -VehicleCommonParameters ::= SEQUENCE { - vehicleType VehicleType, - stationLength StationLength, - stationLengthConfidence Confidence OPTIONAL, - stationWidth StationWidth, - stationWidthConfidence Confidence OPTIONAL, - vehicleSpeed VehicleSpeed, - vehicleSpeedConfidence Confidence, - longAcceleration LongAcceleration, - longAccelerationConfidence Confidence, - accelerationControl AccelerationControl, - yawRate YawRate, - yawRateConfidence Confidence, - exteriorLights ExteriorLights, - turnAdvice TurnAdvice OPTIONAL, - distanceToStopLine DistanceToStopLine OPTIONAL, - occupancy Occupancy OPTIONAL, - doorOpen DoorOpen OPTIONAL, - posConfidenceEllipse PosConfidenceEllipse, - curvature Curvature, - curvatureChange CurvatureChange OPTIONAL, - curvatureConfidence Confidence, - crashStatus CrashStatus OPTIONAL, - headingConfidence Confidence, - dangerousGoods DangerousGoods OPTIONAL, - ... -} - - -BasicVehicle ::= SEQUENCE { - ... -} - -EmergencyVehicle ::= SEQUENCE { - lightBarInUse LightBarInUse OPTIONAL, - sireneInUse SireneInUse OPTIONAL, - emergencyResponseType EmergencyResponseType, - ... -} - -PublicTransportVehicle ::= SEQUENCE { - publicVehicleType PublicVehicleType, - pTLineDescription PTLineDescription OPTIONAL, - scheduleDeviation ScheduleDeviation OPTIONAL, - trafficLightPriority TrafficLightPriority OPTIONAL, - ... -} - -AccelerationControl ::= BIT STRING { - brakePedal (0), - throttlePedal (1), - cruiseControl (2), - acc (3), - limiter (4), - brakeAssist (5) -} - -AmbientAirTemperature ::= Temperature - -Confidence ::= INTEGER (0..15) - -CourseOfJourney ::= IA5String(SIZE(0..32)) - -CrashStatus ::= BOOLEAN - -Curvature ::= INTEGER (-32765..32765) - -CurvatureChange ::= INTEGER (-1023..1023) - -DataReference ::= IA5String(SIZE(1..128)) - -DangerousGoods ::= INTEGER (0..8191) - -Dimension ::= INTEGER (0..16383) - -Direction ::= INTEGER{north(0), east(7200), south(14400), west(21600)} (0..28799) - -Distance ::= INTEGER (0..65535) -- multiples of 1.0m - -DistanceToStopLine ::= Distance - -DoorOpen ::= BIT STRING { - driver (0), - passenger (1), -- any passenger door - maintenance (2), -- hood, other access to engine, or similar - luggage (3) -} - -EmergencyResponseType ::= ENUMERATED { - none (0), - staticSafeguard (1), -- e.g. at accident spot - movingSafeguard (2), -- e.g. convoy or abnormal load - rightOfWay (3), -- claiming right of way - ... -} - -ExteriorLights ::= BIT STRING { - lowBeamHeadlightsOn (0), - highBeamHeadlightsOn (1), - leftTurnSignalOn (2), - rightTurnSignalOn (3), - automaticLightControlOn (4), - daytimeRunningLightsOn (5), - fogLightOn (6), - parkingLightsOn (7) - } - -LightBarInUse ::= SimpleSystemState - -LineRef ::= IA5String(SIZE(0..32)) - -LongAcceleration ::= INTEGER (-2000..2000) -- multiples of 0.01 m/s^2 - -Occupancy ::= INTEGER (0..255) - -PosConfidenceEllipse ::= SEQUENCE { - semiMajorConfidence Confidence, -- confidence of the ellipse's major semi-axes - semiMinorConfidence Confidence, -- confidence of the ellipse's minor semi-axes - semiMajorOrientation Direction -} - -Priority ::= INTEGER(0..7) - -PTLineDescription ::= SEQUENCE { - courseOfJourney CourseOfJourney, - lineRef LineRef, - routeRef RouteRef -} - -PublicVehicleType ::= INTEGER(0..255) - -RoadSegmentID ::= INTEGER (0..99999999) - -RouteRef ::= IA5String(SIZE(0..32)) - -ScheduleDeviation ::= INTEGER (-900..3600) -- seconds, positiv delay; negative ahead of schedule - -SimpleSystemState ::= ENUMERATED { - unavailable (0), -- not equipped or out of order - disabled (1), -- switched off by user or due to driving situation, e.g. ACC below minimum speed - enabled (2), -- switched on but no action, e.g. ESP in normal operation, limiter below limit speed - engaged (3) -- switched on and in action, e.g. light bar flashing, limiter limiting speed -} - -SireneInUse ::= SimpleSystemState - -StationLength ::= Dimension - -StationWidth ::= Dimension - -StreetName ::= IA5String(SIZE(1..32)) - -Temperature ::= INTEGER (-40..215) - -TrafficLightPriority ::= Priority - -TurnAdvice ::= SEQUENCE { - direction TurnDirection, - distance Distance -} - -TurnDirection ::= BIT STRING { - uTurn (0), - sharpRight (1), - right (2), - slightRight (3), - straight (4), - slightLeft (5), - left (6), - sharpLeft (7) -} - -VehicleSpeed ::= Speed - -VehicleType ::= INTEGER (0..255) - -WiperSystemFront ::= ENUMERATED { - idle (0), - interval (1), - normal (2), - fast (3), - washerActive (4) -} - -YawRate ::= SEQUENCE { - yawDirection ENUMERATED { left (0), right (1) }, - yawRateValue INTEGER (0..32765) -- multiples of 0.01deg/s -} - -END +-- This ASN.1 specification has been checked for conformance with the ASN.1 standard by the Objective Systems ASN.1 Tools + +DENM-PDU-Descriptions { + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) denm (1) version (3) +} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + ItsPduHeader, Percentage, StationID, Timestamp, VehicleSpeed,InformationQuality, ReferencePosition, Direction, DirectionConfidence, LaneCount, LaneCountConfidence, StationID, PathHistory, RoadClass, Mass, HeightLonCarr, PosLonCarr, PosPillar, PosCentMass, WheelBaseVehicle, TurningRadius, PosFrontAx, PositionOfOccupants FROM ITS-Container { + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) cc (3) version (3) +}; + + +DenmPdu ::= SEQUENCE { + header ItsPduHeader, + denm DecentralizedEnvironmentalNotificationMessage + +} + +DecentralizedEnvironmentalNotificationMessage ::= SEQUENCE { + + management ManagementContainer, + situation SituationContainer OPTIONAL, + location LocationContainer OPTIONAL, + alacarte AlacarteContainer OPTIONAL +} + + +ManagementContainer ::= SEQUENCE { + generationTime Timestamp, + actionID ActionID, + dataVersion DataVersion, + detectionTime Timestamp, + expiryTime ExpiryTime, + isNegation BOOLEAN, + frequency Frequency +} + + +SituationContainer ::= SEQUENCE { + informationQuality InformationQuality, + situation Situation +} + +LocationContainer ::= SEQUENCE { + eventPosition ReferencePosition, + eventPositionHeading Direction OPTIONAL, + eventPositionHeadingConfidence DirectionConfidence OPTIONAL, + laneCount LaneCount OPTIONAL, + laneCountConfidence LaneCountConfidence OPTIONAL, + vehicleSpeed VehicleSpeed OPTIONAL, + pathHistoryID PathHistoryID, + pathHistory PathHistory, + roadClass RoadClass OPTIONAL, + relevanceDistance RelevanceDistance, + disseminationDirection Direction +} + +ImpactReductionContainer ::= SEQUENCE { + heightLonCarrLeft HeightLonCarr, + heightLonCarrRight HeightLonCarr, + posLonCarrLeft PosLonCarr, + posLonCarrRight PosLonCarr, + posAPillar PosPillar, + posBPillar PosPillar, + posCPillar PosPillar, + posDPillar PosPillar, + posCentMass PosCentMass, + wheelBaseVehicle WheelBaseVehicle, + turningRadius TurningRadius, + posFrontAx PosFrontAx, + positionOfOccupants PositionOfOccupants +} + +AlacarteContainer ::= SEQUENCE { + impactReduction ImpactReductionContainer OPTIONAL, + ... +} + + ActionID ::= SEQUENCE { + + originatorStationID StationID, + sequenceNumber SequenceNumber + } + + SequenceNumber ::= INTEGER (0..65535) + + DataVersion ::= INTEGER {firstVersion(0),secondVersion(1) } (0..255) + + ExpiryTime ::= INTEGER { timeOfDetection(0), oneSecondAfterDetection(1) } (0..86400) + + Situation ::= SEQUENCE { + causeCode CauseCode, + subCauseCode SubCauseCode + } + + CauseCode ::= INTEGER { reserved(0), trafficCondition(1), accident(2), roadworks(3), peopleOnTheRoad(12), wrongWayDrivingWarning(14), adverseWeatherConditionIndication(17), visibilityReduced(18), precipitation(19), slowVehicleWarning(26), stationaryVehicleIndication(94), emergencyVehicleApproachingIndication(95), hazardousLocation(96), collisionRiskWarning(97), signalViolationWarning(98), emergencyElectronicBrakeLights(99) } (0..127, ...) + + SubCauseCode ::= CHOICE { + reserved NULL, + trafficCondition TrafficConditionSubCauseCode, + accident AccidentSubCauseCode, + roadworks RoadworksSubCauseCode, + peopleOnTheRoad PeopleOnTheRoadSubCauseCode, + wrongWayDrivingWarning NULL, + adverseWeatherConditionIndication AdverseWeatherConditionIndicationSubCauseCode, + visibilityReduced VisibilityReducedSubCauseCode, + precipitation PrecipitationSubCauseCode, + slowVehicleWarning SlowVehicleWarningSubCauseCode, + stationaryVehicleIndication StationaryVehicleIndicationSubCauseCode, + emergencyVehicleApproachingIndication EmergencyVehicleApproachingIndicationSubCauseCode, + hazardousLocation HazardousLocationSubCauseCode, + collisionRiskWarning CollisionRiskWarningSubCauseCode, + signalViolationWarning SignalViolationWarningSubCauseCode, + emergencyElectronicBrakeLights EmergencyElectronicBrakeLightsSubCauseCode, + ... + } + + TrafficConditionSubCauseCode ::= INTEGER {unknown(0), increasedVolumeOfTraffic(1) } (0..1, ...) + + AccidentSubCauseCode ::= INTEGER {unknown(0), multiVehicleAccident(1), heavyAccident(2), accidentInvolvingLorry(3), accidentInvolvingBus(4), accidentInvolvingHazardousMaterials(5), accidentOnOppositeLane(6), unsecuredAccident(7), assistanceRequested(8) } (0..8, ...) + + RoadworksSubCauseCode ::= INTEGER {unknown(0), majorRoadworks(1), roadMarkingWork(2), slowMovingRoadMaintenance(3) } (0..3, ...) + + PeopleOnTheRoadSubCauseCode ::= INTEGER {unknown(0), childrenOnRoadway(1), cyclistOnRoadway(2), motorcyclistOnRoadway(3) } (0..3, ...) + + AdverseWeatherConditionIndicationSubCauseCode ::= INTEGER {unknown(0), strongWinds(1), damagingHail(2), hurricane(3), thunderstorm(4), tornado(5), blizzard(6) } (0..6, ...) + + VisibilityReducedSubCauseCode ::= INTEGER {unknown(0), fog(1), smoke(2), heavySnowfall(3), heavyRain(4), heavyHail(5), lowSunGlare(6), sandstorms(7), swarmsOfInsects(8) } (0..8, ...) + + PrecipitationSubCauseCode ::= INTEGER {unknown(0), heavyRain(1), heavySnowfall(2), heavyHail(3) } (0..3, ...) + + SlowVehicleWarningSubCauseCode ::= INTEGER {unknown(0), maintenanceVehicle(1), vehiclesSlowingToLookAtAccident(2), abnormalLoad(3), abnormalWideLoad(4), convoy(5), snowplough(6), deicing(7), saltingVehicles(8) } (0..8, ...) + + StationaryVehicleIndicationSubCauseCode ::= INTEGER {unknown(0), unknownHumanProblem(1), glycemiaProblem(2), heartProblem(3), accidentSignalledByManualECall(4), accidentSignalledByAutomaticECall(5), unknownVehicleProblem(6), lackOfFuel(7), lackOfBattery(8), engineProblem(9), transmissionProblem(10), engineCoolingProblem(11), brakingSystemProblem(12), steeringProblem(13), tyrePressureProblem(14) } (0..14, ...) + + EmergencyVehicleApproachingIndicationSubCauseCode ::= INTEGER {unknown(0), emergencyVehicleApproaching(1), prioritizedVehicleApproaching(2) } (0..2, ...) + + HazardousLocationSubCauseCode ::= INTEGER {unknown(0), dangerousCurve(1) } (0..1, ...) + + CollisionRiskWarningSubCauseCode ::= INTEGER {unknown(0), longitudinalCollisionRisk(1), crossingCollisionRisk(2), lateralCollisionRisk(3), vulnerableRoadUser(4) } (0..4, ...) + + SignalViolationWarningSubCauseCode ::= INTEGER {unknown(0), stopSignViolation(1), trafficLightViolation(2), turningRegulationViolation(3) } (0..3, ...) + + EmergencyElectronicBrakeLightsSubCauseCode ::= INTEGER {unknown(0), hardBrakingVehicle(1) } (0..1, ...) + + + PathHistoryID ::= INTEGER { pathHistory +(0), alternativePath1(1), alternativePath7(7) } (0..7) + + Frequency ::= INTEGER { unknown(0), oneHz(10), thousandHz(10000) } (0..10000) + + RelevanceDistance ::= ENUMERATED { lessThan50m(0) +, between50to100m(1), between100to200m(2), between200to500m(3), between500to1000m(4), between1to5km(5), between5to10km(6), over10km(7) } + + +END