aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/asn1/its/CAMv1.asn138
-rw-r--r--epan/dissectors/asn1/its/CMakeLists.txt3
-rw-r--r--epan/dissectors/asn1/its/DENMv1.asn113
-rw-r--r--epan/dissectors/asn1/its/ITS-ContainerV1.asn464
-rw-r--r--epan/dissectors/asn1/its/its.cnf19
-rw-r--r--epan/dissectors/asn1/its/packet-its-template.c14
-rw-r--r--epan/dissectors/packet-its.c3857
-rw-r--r--epan/dissectors/packet-its.h21
8 files changed, 4551 insertions, 78 deletions
diff --git a/epan/dissectors/asn1/its/CAMv1.asn b/epan/dissectors/asn1/its/CAMv1.asn
new file mode 100644
index 0000000000..ce2745486a
--- /dev/null
+++ b/epan/dissectors/asn1/its/CAMv1.asn
@@ -0,0 +1,138 @@
+CAMv1-PDU-Descriptions {
+itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (302637) cam (2) version (1)
+}
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ItsPduHeader, CauseCode, ReferencePosition, AccelerationControl, Curvature, CurvatureCalculationMode, Heading, LanePosition, EmergencyPriority,
+EmbarkationStatus, Speed, DriveDirection, LongitudinalAcceleration, LateralAcceleration, VerticalAcceleration, StationType, ExteriorLights,
+DangerousGoodsBasic, SpecialTransportType, LightBarSirenInUse, VehicleRole, VehicleLength, VehicleWidth, PathHistory, RoadworksSubCauseCode,
+ClosedLanes, TrafficRule, SpeedLimit, SteeringWheelAngle, PerformanceClass, YawRate, ProtectedCommunicationZone, PtActivation, Latitude,
+Longitude, ProtectedCommunicationZonesRSU, CenDsrcTollingZone
+
+FROM ITS-ContainerV1 {
+ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1)
+};
+
+
+-- The root data frame for cooperative awareness messages
+
+CAMv1 ::= SEQUENCE {
+ header ItsPduHeader,
+ camv1 CoopAwarenessV1
+}
+
+CoopAwarenessV1 ::= SEQUENCE {
+ generationDeltaTime GenerationDeltaTime,
+ camParameters CamParameters
+}
+
+CamParameters ::= SEQUENCE {
+ basicContainer BasicContainer,
+ highFrequencyContainer HighFrequencyContainer,
+ lowFrequencyContainer LowFrequencyContainer OPTIONAL,
+ specialVehicleContainer SpecialVehicleContainer OPTIONAL,
+ ...
+}
+
+HighFrequencyContainer ::= CHOICE {
+ basicVehicleContainerHighFrequency BasicVehicleContainerHighFrequency,
+ rsuContainerHighFrequency RSUContainerHighFrequency,
+ ...
+}
+
+ LowFrequencyContainer ::= CHOICE {
+ basicVehicleContainerLowFrequency BasicVehicleContainerLowFrequency,
+ ...
+}
+
+SpecialVehicleContainer ::= CHOICE {
+ publicTransportContainer PublicTransportContainer,
+ specialTransportContainer SpecialTransportContainer,
+ dangerousGoodsContainer DangerousGoodsContainer,
+ roadWorksContainerBasic RoadWorksContainerBasic,
+ rescueContainer RescueContainer,
+ emergencyContainer EmergencyContainer,
+ safetyCarContainer SafetyCarContainer,
+ ...
+}
+
+BasicContainer ::= SEQUENCE {
+ stationType StationType,
+ referencePosition ReferencePosition,
+ ...
+}
+
+BasicVehicleContainerHighFrequency ::= SEQUENCE {
+ heading Heading,
+ speed Speed,
+ driveDirection DriveDirection,
+ vehicleLength VehicleLength,
+ vehicleWidth VehicleWidth,
+ longitudinalAcceleration LongitudinalAcceleration,
+ curvature Curvature,
+ curvatureCalculationMode CurvatureCalculationMode,
+ yawRate YawRate,
+ accelerationControl AccelerationControl OPTIONAL,
+ lanePosition LanePosition OPTIONAL,
+ steeringWheelAngle SteeringWheelAngle OPTIONAL,
+ lateralAcceleration LateralAcceleration OPTIONAL,
+ verticalAcceleration VerticalAcceleration OPTIONAL,
+ performanceClass PerformanceClass OPTIONAL,
+ cenDsrcTollingZone CenDsrcTollingZone OPTIONAL
+}
+
+BasicVehicleContainerLowFrequency ::= SEQUENCE {
+ vehicleRole VehicleRole,
+ exteriorLights ExteriorLights,
+ pathHistory PathHistory
+}
+
+PublicTransportContainer ::= SEQUENCE {
+ embarkationStatus EmbarkationStatus,
+ ptActivation PtActivation OPTIONAL
+}
+
+SpecialTransportContainer ::= SEQUENCE {
+ specialTransportType SpecialTransportType,
+ lightBarSirenInUse LightBarSirenInUse
+}
+
+ DangerousGoodsContainer ::= SEQUENCE {
+ dangerousGoodsBasic DangerousGoodsBasic
+ }
+
+ RoadWorksContainerBasic ::= SEQUENCE {
+ roadworksSubCauseCode RoadworksSubCauseCode OPTIONAL,
+ lightBarSirenInUse LightBarSirenInUse,
+ closedLanes ClosedLanes OPTIONAL
+ }
+
+RescueContainer ::= SEQUENCE {
+ lightBarSirenInUse LightBarSirenInUse
+}
+
+EmergencyContainer ::= SEQUENCE {
+ lightBarSirenInUse LightBarSirenInUse,
+ incidentIndication CauseCode OPTIONAL,
+ emergencyPriority EmergencyPriority OPTIONAL
+}
+
+SafetyCarContainer ::= SEQUENCE {
+ lightBarSirenInUse LightBarSirenInUse,
+ incidentIndication CauseCode OPTIONAL,
+ trafficRule TrafficRule OPTIONAL,
+ speedLimit SpeedLimit OPTIONAL
+}
+
+RSUContainerHighFrequency ::= SEQUENCE {
+ protectedCommunicationZonesRSU ProtectedCommunicationZonesRSU OPTIONAL,
+ ...
+}
+
+GenerationDeltaTime ::= INTEGER { oneMilliSec(1) } (0..65535)
+
+END
diff --git a/epan/dissectors/asn1/its/CMakeLists.txt b/epan/dissectors/asn1/its/CMakeLists.txt
index ce36448a0d..03a9842677 100644
--- a/epan/dissectors/asn1/its/CMakeLists.txt
+++ b/epan/dissectors/asn1/its/CMakeLists.txt
@@ -16,6 +16,7 @@ set( EXT_ASN_FILE_LIST
set( ASN_FILE_LIST
ITS-Container.asn
+ ITS-ContainerV1.asn
ISO_TS_14816.asn
ISO_TS_24534-3.asn
ISO_TS_17419.asn
@@ -23,7 +24,9 @@ set( ASN_FILE_LIST
ISO_TS_19321.asn
ISO_TS_19091.asn
ETSI_TS_103301.asn
+ CAMv1.asn
CAM.asn
+ DENMv1.asn
DENM.asn
TIS_TPG_Transactions_Descriptions.asn
EVCSN-PDU-Descriptions.asn
diff --git a/epan/dissectors/asn1/its/DENMv1.asn b/epan/dissectors/asn1/its/DENMv1.asn
new file mode 100644
index 0000000000..b329c1e8d1
--- /dev/null
+++ b/epan/dissectors/asn1/its/DENMv1.asn
@@ -0,0 +1,113 @@
+DENMv1-PDU-Descriptions {
+ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (302637) denm (1) version (1)
+}
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ItsPduHeader, CauseCode, Speed, InformationQuality, ReferencePosition, ClosedLanes, DangerousGoodsExtended, Heading, LanePosition, LightBarSirenInUse, RoadType, HeightLonCarr,
+PosLonCarr, PosCentMass, PositioningSolutionType, RequestResponseIndication, StationType, SpeedLimit, StationarySince, TimestampIts, WheelBaseVehicle, TurningRadius, PosFrontAx,
+PositionOfOccupants, Temperature, VehicleMass, VehicleIdentification, EnergyStorageType, ActionID, ItineraryPath, NumberOfOccupants, PositionOfPillars, RelevanceTrafficDirection,
+RestrictedTypes, Traces, TransmissionInterval, ValidityDuration, RelevanceDistance, EventHistory, TrafficRule, DeltaReferencePosition
+FROM ITS-ContainerV1 {
+itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1)
+};
+
+
+DENMv1 ::= SEQUENCE {
+ header ItsPduHeader,
+ denm DecentralizedEnvironmentalNotificationMessageV1
+}
+
+DecentralizedEnvironmentalNotificationMessageV1 ::= SEQUENCE {
+ management ManagementContainer,
+ situation SituationContainer OPTIONAL,
+ location LocationContainer OPTIONAL,
+ alacarte AlacarteContainer OPTIONAL
+}
+
+ManagementContainer ::= SEQUENCE {
+ actionID ActionID,
+ detectionTime TimestampIts,
+ referenceTime TimestampIts,
+ termination Termination OPTIONAL,
+ eventPosition ReferencePosition,
+ relevanceDistance RelevanceDistance OPTIONAL,
+ relevanceTrafficDirection RelevanceTrafficDirection OPTIONAL,
+ validityDuration ValidityDuration DEFAULT defaultValidity,
+ transmissionInterval TransmissionInterval OPTIONAL,
+ stationType StationType,
+ ...
+}
+
+SituationContainer ::= SEQUENCE {
+ informationQuality InformationQuality,
+ eventType CauseCode,
+ linkedCause CauseCode OPTIONAL,
+ eventHistory EventHistory OPTIONAL,
+ ...
+}
+
+LocationContainer ::= SEQUENCE {
+ eventSpeed Speed OPTIONAL,
+ eventPositionHeading Heading OPTIONAL,
+ traces Traces,
+ roadType RoadType OPTIONAL,
+ ...
+}
+
+ImpactReductionContainer ::= SEQUENCE {
+ heightLonCarrLeft HeightLonCarr,
+ heightLonCarrRight HeightLonCarr,
+ posLonCarrLeft PosLonCarr,
+ posLonCarrRight PosLonCarr,
+ positionOfPillars PositionOfPillars,
+ posCentMass PosCentMass,
+ wheelBaseVehicle WheelBaseVehicle,
+ turningRadius TurningRadius,
+ posFrontAx PosFrontAx,
+ positionOfOccupants PositionOfOccupants,
+ vehicleMass VehicleMass,
+ requestResponseIndication RequestResponseIndication
+}
+
+RoadWorksContainerExtended ::= SEQUENCE {
+ lightBarSirenInUse LightBarSirenInUse OPTIONAL,
+ closedLanes ClosedLanes OPTIONAL,
+ restriction RestrictedTypes OPTIONAL,
+ speedLimit SpeedLimit OPTIONAL,
+ incidentIndication CauseCode OPTIONAL,
+ recommendedPath ItineraryPath OPTIONAL,
+ startingPointSpeedLimit DeltaReferencePosition OPTIONAL,
+ trafficFlowRule TrafficRule OPTIONAL,
+ referenceDenms ReferenceDenms OPTIONAL
+ }
+
+StationaryVehicleContainer ::= SEQUENCE {
+ stationarySince StationarySince OPTIONAL,
+ stationaryCause CauseCode OPTIONAL,
+ carryingDangerousGoods DangerousGoodsExtended OPTIONAL,
+ numberOfOccupants NumberOfOccupants OPTIONAL,
+ vehicleIdentification VehicleIdentification OPTIONAL,
+ energyStorageType EnergyStorageType OPTIONAL
+}
+
+AlacarteContainer ::= SEQUENCE {
+ lanePosition LanePosition OPTIONAL,
+ impactReduction ImpactReductionContainer OPTIONAL,
+ externalTemperature Temperature OPTIONAL,
+ roadWorks RoadWorksContainerExtended OPTIONAL,
+ positioningSolution PositioningSolutionType OPTIONAL,
+ stationaryVehicle StationaryVehicleContainer OPTIONAL,
+ ...
+}
+
+defaultValidity INTEGER ::= 600
+
+Termination ::= ENUMERATED {isCancellation(0), isNegation (1)}
+
+ReferenceDenms ::= SEQUENCE (SIZE(1..8, ...)) OF ActionID
+
+END
diff --git a/epan/dissectors/asn1/its/ITS-ContainerV1.asn b/epan/dissectors/asn1/its/ITS-ContainerV1.asn
new file mode 100644
index 0000000000..779a9648a6
--- /dev/null
+++ b/epan/dissectors/asn1/its/ITS-ContainerV1.asn
@@ -0,0 +1,464 @@
+-- https://www.etsi.org/deliver/etsi_ts/102800_102899/10289402/01.02.01_60/ts_10289402v010201p.pdf
+--
+ITS-ContainerV1 {
+itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1)
+}
+ DEFINITIONS AUTOMATIC TAGS ::=
+ BEGIN
+-- Use the def from V2
+-- ItsPduHeaderV1 ::= SEQUENCE {
+-- protocolVersion INTEGER{currentVersion(1)} (0..255),
+-- messageID INTEGER{denm(1),cam(2), poi(3), spat(4), map(5), ivi(6), ev-rsr(7)} (0..255),
+-- stationID StationID
+-- }
+ StationID ::= INTEGER(0..4294967295)
+ ReferencePosition ::= SEQUENCE {
+ latitude Latitude,
+ longitude Longitude,
+ positionConfidenceEllipse PosConfidenceEllipse ,
+ altitude Altitude
+ }
+ DeltaReferencePosition ::= SEQUENCE {
+ deltaLatitude DeltaLatitude,
+ deltaLongitude DeltaLongitude,
+ deltaAltitude DeltaAltitude
+ }
+ Longitude ::= INTEGER {oneMicrodegreeEast (10), oneMicrodegreeWest (-10), unavailable(1800000001)}
+ (-1800000000..1800000001)
+ Latitude ::= INTEGER {oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10), unavailable(900000001)}
+ (-900000000..900000001)
+ Altitude ::= SEQUENCE {
+ altitudeValue AltitudeValue,
+ altitudeConfidence AltitudeConfidence
+ }
+ AltitudeValue ::= INTEGER {referenceEllipsoidSurface(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)
+ }
+ DeltaLongitude ::= INTEGER {oneMicrodegreeEast (10), oneMicrodegreeWest (-10), unavailable(131072)}
+ (-131071..131072)
+ DeltaLatitude ::= INTEGER {oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10) ,
+ unavailable(131072)} (-131071..131072)
+ DeltaAltitude ::= INTEGER {oneCentimeterUp (1), oneCentimeterDown (-1), unavailable(12800)} (-
+ 12700..12800)
+
+ PosConfidenceEllipse ::= SEQUENCE {
+ semiMajorConfidence SemiAxisLength,
+ semiMinorConfidence SemiAxisLength,
+ semiMajorOrientation HeadingValue
+ }
+ PathPoint ::= SEQUENCE {
+ pathPosition DeltaReferencePosition,
+ pathDeltaTime PathDeltaTime OPTIONAL
+ }
+ PathDeltaTime ::= INTEGER {tenMilliSecondsInPast(1)} (1..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))
+ AccelerationControl ::= BIT STRING {
+ brakePedalEngaged (0),
+ gasPedalEngaged (1),
+ emergencyBrakeEngaged (2),
+ collisionWarningEngaged (3),
+ accEngaged (4),
+ cruiseControlEngaged (5),
+ speedLimiterEngaged (6)
+ } (SIZE(7))
+
+ SemiAxisLength ::= INTEGER{oneCentimeter(1), outOfRange(4094), unavailable(4095)} (0..4095)
+
+ CauseCode ::= SEQUENCE {
+ causeCode CauseCodeTypeV1,
+ subCauseCode SubCauseCodeTypeV1
+ }
+
+ CauseCodeTypeV1 ::= 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)
+
+ SubCauseCodeTypeV1 ::= INTEGER (0..255)
+-- Wireshark modification comment out the subCauses the ones from V2 will be used.
+-- 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), shortTermStationaryRoadworks(4), streetCleaning(5), winterService(6)}
+ (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)
+-- 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),
+ onePerMeter-0-0001 (1),
+ onePerMeter-0-0005 (2),
+ onePerMeter-0-002 (3),
+ onePerMeter-0-01 (4),
+ onePerMeter-0-1 (5),
+ outOfRange (6),
+ unavailable (7)
+ }
+ CurvatureCalculationMode ::= ENUMERATED {yawRateUsed(0), yawRateNotUsed(1), unavailable(2), ...}
+ Heading ::= SEQUENCE {
+ headingValue HeadingValue,
+ headingConfidence HeadingConfidence
+ }
+ HeadingValue ::= INTEGER {wgs84North(0), wgs84East(900), wgs84South(1800), wgs84West(2700),
+ unavailable(3601)} (0..3601)
+ HeadingConfidence ::= INTEGER {equalOrWithinZeroPointOneDegree (1), equalOrWithinOneDegree (10),
+ outOfRange(126), unavailable(127)} (1..127)
+ LanePosition::= 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))
+ PerformanceClass ::= INTEGER {unavailable(0), performanceClassA(1), performanceClassB(2)} (0..7)
+ SpeedValue ::= INTEGER {standstill(0), oneCentimeterPerSec(1), unavailable(16383)} (0..16383)
+ SpeedConfidence ::= INTEGER {equalOrWithinOneCentimeterPerSec(1), equalOrWithinOneMeterPerSec(100),
+ outOfRange(126), unavailable(127)} (1..127)
+ VehicleMass ::= INTEGER {hundredKg(1), unavailable(1024)} (1..1024)
+ Speed ::= SEQUENCE {
+ speedValue SpeedValue,
+ speedConfidence SpeedConfidence
+ }
+ DriveDirection ::= ENUMERATED {forward (0), backward (1), unavailable (2)}
+ 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)
+ 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 (SIZE (1..24)) OPTIONAL,
+ phoneNumber IA5String (SIZE (1..24)) OPTIONAL,
+ companyName UTF8String (SIZE (1..24)) OPTIONAL
+ }
+
+ SpecialTransportType ::= BIT STRING {heavyLoad(0), excessWidth(1), excessLength(2), excessHeight(3)}
+ (SIZE(4))
+ LightBarSirenInUse ::= BIT STRING {
+ lightBarActivated (0),
+ sirenActivated (1)
+ } (SIZE(2))
+ HeightLonCarr ::= INTEGER {oneCentimeter(1), unavailable(100)} (1..100)
+ PosLonCarr ::= INTEGER {oneCentimeter(1), unavailable(127)} (1..127)
+ PosPillar ::= INTEGER {tenCentimeters(1), unavailable(30)} (1..30)
+ PosCentMass ::= INTEGER {tenCentimeters(1), unavailable(63)} (1..63)
+ RequestResponseIndication ::= ENUMERATED {request(0), response(1)}
+ SpeedLimit ::= INTEGER {oneKmPerHour(1)} (1..255)
+ StationarySince ::= ENUMERATED {lessThan1Minute(0), lessThan2Minutes(1), lessThan15Minutes(2),
+ equalOrGreater15Minutes(3)}
+ Temperature ::= INTEGER {equalOrSmallerThanMinus60Deg (-60), oneDegreeCelsius(1),
+ equalOrGreaterThan67Deg(67)} (-60..67)
+ TrafficRule ::= ENUMERATED {noPassing(0), noPassingForTrucks(1), passToRight(2), passToLeft(3), ...
+ }
+ WheelBaseVehicle ::= INTEGER {tenCentimeters(1), unavailable(127)} (1..127)
+ TurningRadius ::= INTEGER {point4Meters(1), unavailable(255)} (1..255)
+ PosFrontAx ::= INTEGER {tenCentimeters(1), unavailable(20)} (1..20)
+ 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))
+ PositioningSolutionType ::= ENUMERATED {noPositioningSolution(0), sGNSS(1), dGNSS(2),
+ sGNSSplusDR(3), dGNSSplusDR(4), dR(5), ...}
+ VehicleIdentification ::= SEQUENCE {
+ wMInumber WMInumber OPTIONAL,
+ vDS VDS OPTIONAL,
+ ...
+ }
+ 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)
+ VehicleLengthConfidenceIndication ::= ENUMERATED {noTrailerPresent(0),
+ trailerPresentWithKnownLength(1), trailerPresentWithUnknownLength(2), trailerPresenceIsUnknown(3),
+ unavailable(4)}
+ VehicleWidth ::= INTEGER {tenCentimeters(1), outOfRange(61), unavailable(62)} (1..62)
+ PathHistory::= SEQUENCE (SIZE(0..40)) OF PathPoint
+
+ EmergencyPriority ::= BIT STRING {requestForRightOfWay(0), requestForFreeCrossingAtATrafficLight(1)}
+ (SIZE(2))
+ InformationQuality ::= INTEGER {unavailable(0), lowest(1), highest(7)} (0..7)
+ RoadType ::= ENUMERATED {
+ urban-NoStructuralSeparationToOppositeLanes(0),
+ urban-WithStructuralSeparationToOppositeLanes(1),
+ nonUrban-NoStructuralSeparationToOppositeLanes(2),
+ nonUrban-WithStructuralSeparationToOppositeLanes(3)}
+ SteeringWheelAngle ::= SEQUENCE {
+ steeringWheelAngleValue SteeringWheelAngleValue,
+ steeringWheelAngleConfidence SteeringWheelAngleConfidence
+ }
+ SteeringWheelAngleValue ::= INTEGER {straight(0), onePointFiveDegreesToRight(-1),
+ onePointFiveDegreesToLeft(1), unavailable(512)} (-511..512)
+ SteeringWheelAngleConfidence ::= INTEGER {equalOrWithinOnePointFiveDegree (1), outOfRange(126),
+ unavailable(127)} (1..127)
+ TimestampIts ::= INTEGER {utcStartOf2004(0), oneMillisecAfterUTCStartOf2004(1)} (0..4398046511103)
+ VehicleRole ::= ENUMERATED {default(0), publicTransport(1), specialTransport(2), dangerousGoods(3),
+ roadWork(4), rescue(5), emergency(6), safetyCar(7),
+ agriculture(8),commercial(9),military(10),roadOperator(11),taxi(12), reserved1(13), reserved2(14),
+ reserved3(15)}
+ YawRate::= SEQUENCE {
+ yawRateValue YawRateValue,
+ yawRateConfidence YawRateConfidence
+ }
+ YawRateValue ::= INTEGER {straight(0), degSec-000-01ToRight(-1), degSec-000-01ToLeft(1),
+ unavailable(32767)} (-32766..32767)
+ 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)
+ }
+ ProtectedZoneType::= ENUMERATED {
+ cenDsrcTolling (0),
+ ...
+ }
+ RelevanceDistance ::= ENUMERATED {lessThan50m(0), lessThan100m(1), lessThan200m(2), lessThan500m(3),
+ lessThan1000m(4), lessThan5km(5), lessThan10km(6), over10km(7)}
+ RelevanceTrafficDirection ::= ENUMERATED {allTrafficDirections(0), upstreamTraffic(1),
+ downstreamTraffic(2), oppositeTraffic(3)}
+ TransmissionInterval ::= INTEGER {oneMilliSecond(1), tenSeconds(10000)} (1..10000)
+ ValidityDuration ::= INTEGER {timeOfDetection(0), oneSecondAfterDetection(1)} (0..86400)
+ ActionID ::= SEQUENCE {
+ originatingStationID StationID,
+ sequenceNumber SequenceNumber
+ }
+ ItineraryPath ::= SEQUENCE SIZE(1..40) OF ReferencePosition
+
+ ProtectedCommunicationZone ::= SEQUENCE {
+ protectedZoneType ProtectedZoneType,
+ expiryTime TimestampIts OPTIONAL,
+ protectedZoneLatitude Latitude,
+ protectedZoneLongitude Longitude,
+ protectedZoneRadius ProtectedZoneRadius OPTIONAL,
+ protectedZoneID ProtectedZoneID OPTIONAL
+ }
+ Traces ::= SEQUENCE SIZE(1..7) OF PathHistory
+ NumberOfOccupants ::= INTEGER {oneOccupant (1), unavailable(127)} (0 .. 127)
+ SequenceNumber ::= INTEGER (0..65535)
+ PositionOfPillars ::= SEQUENCE (SIZE(1..3, ...)) OF PosPillar
+ RestrictedTypes ::= SEQUENCE (SIZE(1..3, ...)) OF StationType
+ EventHistory::= SEQUENCE (SIZE(1..23)) OF EventPoint
+ EventPoint ::= SEQUENCE {
+ eventPosition DeltaReferencePosition,
+ eventDeltaTime PathDeltaTime OPTIONAL,
+ informationQuality InformationQuality
+ }
+ ProtectedCommunicationZonesRSU ::= SEQUENCE (SIZE(1..16)) OF ProtectedCommunicationZone
+ CenDsrcTollingZone ::= SEQUENCE {
+ protectedZoneLatitude Latitude,
+ protectedZoneLongitude Longitude,
+ cenDsrcTollingZoneID CenDsrcTollingZoneID OPTIONAL
+ }
+ ProtectedZoneRadius ::= INTEGER {oneMeter(1)} (1..255,...)
+ ProtectedZoneID ::= INTEGER (0.. 134217727)
+ CenDsrcTollingZoneID ::= ProtectedZoneID
+
+END
diff --git a/epan/dissectors/asn1/its/its.cnf b/epan/dissectors/asn1/its/its.cnf
index 219adda3e6..c93f5f055d 100644
--- a/epan/dissectors/asn1/its/its.cnf
+++ b/epan/dissectors/asn1/its/its.cnf
@@ -12,7 +12,9 @@ UNALIGNED
# Get rid of unused code warnings
TisTpgTransactionsPdu
DENM
+DENMv1
CAM
+CAMv1
SSEM
SREM
IVIM
@@ -35,7 +37,9 @@ DSRCmsgID
#.NO_EMIT
#.MODULE
+CAMv1-PDU-Descriptions camv1
CAM-PDU-Descriptions cam
+DENMv1-PDU-Descriptions denmv1
DENM-PDU-Descriptions denm
EVCSN-PDU-Descriptions evcsn
EV-RechargingSpotReservation-PDU-Descriptions evrsr
@@ -47,6 +51,7 @@ SREM-PDU-Descriptions srem
SSEM-PDU-Descriptions ssem
AVIAEINumberingAndDataStructures anads
ITS-Container its
+ITS-ContainerV1 itsv1
ElectronicRegistrationIdentificationVehicleDataModule erivdm
CITSapplMgmtIDs csmid
EfcDsrcApplication dsrc_app
@@ -56,7 +61,9 @@ DSRC dsrc
#.PDU
CoopAwareness
+CoopAwarenessV1
DecentralizedEnvironmentalNotificationMessage
+DecentralizedEnvironmentalNotificationMessageV1
EVChargingSpotNotificationPOIMessage
EV-RSR-MessageBody
TisTpgTransaction
@@ -275,12 +282,24 @@ CauseCodeType
col_set_str(actx->pinfo->cinfo, COL_INFO, "CAM");
#.END
+#.FN_HDR CoopAwarenessV1
+ actx->private_data = (void*)wmem_new0(wmem_packet_scope(), its_private_data_t);
+ col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "CAMv1");
+ col_set_str(actx->pinfo->cinfo, COL_INFO, "CAMv1");
+#.END
+
#.FN_HDR DecentralizedEnvironmentalNotificationMessage
actx->private_data = (void*)wmem_new0(wmem_packet_scope(), its_private_data_t);
col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "DENM");
col_set_str(actx->pinfo->cinfo, COL_INFO, "DENM");
#.END
+#.FN_HDR DecentralizedEnvironmentalNotificationMessageV1
+ actx->private_data = (void*)wmem_new0(wmem_packet_scope(), its_private_data_t);
+ col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "DENMv1");
+ col_set_str(actx->pinfo->cinfo, COL_INFO, "DENMv1");
+#.END
+
#.FN_HDR EVChargingSpotNotificationPOIMessage
actx->private_data = (void*)wmem_new0(wmem_packet_scope(), its_private_data_t);
col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "EVCSN");
diff --git a/epan/dissectors/asn1/its/packet-its-template.c b/epan/dissectors/asn1/its/packet-its-template.c
index 8d14535c8e..4ffb1d5c29 100644
--- a/epan/dissectors/asn1/its/packet-its-template.c
+++ b/epan/dissectors/asn1/its/packet-its-template.c
@@ -114,7 +114,9 @@ static int its_tap = -1;
// Protocols
static int proto_its = -1;
static int proto_its_denm = -1;
+static int proto_its_denmv1 = -1;
static int proto_its_cam = -1;
+static int proto_its_camv1 = -1;
static int proto_its_evcsn = -1;
static int proto_its_evrsr = -1;
static int proto_its_ivim = -1;
@@ -608,7 +610,9 @@ void proto_register_its(void)
regionid_subdissector_table = register_dissector_table("dsrc.regionid", "DSRC RegionId", proto_its, FT_UINT32, BASE_DEC);
proto_its_denm = proto_register_protocol_in_name_only("ITS message - DENM", "DENM", "its.message.denm", proto_its, FT_BYTES);
+ proto_its_denmv1 = proto_register_protocol_in_name_only("ITS message - DENMv1", "DENMv1", "its.message.denmv1", proto_its, FT_BYTES);
proto_its_cam = proto_register_protocol_in_name_only("ITS message - CAM", "CAM", "its.message.cam", proto_its, FT_BYTES);
+ proto_its_camv1 = proto_register_protocol_in_name_only("ITS message - CAMv1", "CAMv1", "its.message.camv1", proto_its, FT_BYTES);
proto_its_spatem = proto_register_protocol_in_name_only("ITS message - SPATEM", "SPATEM", "its.message.spatem", proto_its, FT_BYTES);
proto_its_mapem = proto_register_protocol_in_name_only("ITS message - MAPEM", "MAPEM", "its.message.mapem", proto_its, FT_BYTES);
proto_its_ivim = proto_register_protocol_in_name_only("ITS message - IVIM", "IVIM", "its.message.ivim", proto_its, FT_BYTES);
@@ -633,12 +637,14 @@ void proto_register_its(void)
#define BTP_PORTS_SZ 10
#define ITS_CAM_PROT_VER 2
+#define ITS_CAM_PROT_VERv1 1
#define ITS_DENM_PROT_VER 2
+#define ITS_DENM_PROT_VERv1 1
#define ITS_SPATEM_PROT_VER 2
#define ITS_MAPEM_PROT_VER 2
#define ITS_IVIM_PROT_VER 2
#define ITS_SREM_PROT_VER 2
-#define ITS_SREM_PROT_VER 2
+#define ITS_SSEM_PROT_VER 2
void proto_reg_handoff_its(void)
{
@@ -656,13 +662,15 @@ void proto_reg_handoff_its(void)
}
dissector_add_uint("its.msg_id", (ITS_DENM_PROT_VER << 16) + ITS_DENM, create_dissector_handle( dissect_denm_DecentralizedEnvironmentalNotificationMessage_PDU, proto_its_denm ));
- dissector_add_uint("its.msg_id", (ITS_CAM_PROT_VER <<16) + ITS_CAM, create_dissector_handle( dissect_cam_CoopAwareness_PDU, proto_its_cam ));
+ dissector_add_uint("its.msg_id", (ITS_DENM_PROT_VERv1 << 16) + ITS_DENM, create_dissector_handle( dissect_denmv1_DecentralizedEnvironmentalNotificationMessageV1_PDU, proto_its_denmv1 ));
+ dissector_add_uint("its.msg_id", (ITS_CAM_PROT_VER << 16) + ITS_CAM, create_dissector_handle( dissect_cam_CoopAwareness_PDU, proto_its_cam ));
+ dissector_add_uint("its.msg_id", (ITS_CAM_PROT_VERv1 << 16) + ITS_CAM, create_dissector_handle( dissect_camv1_CoopAwarenessV1_PDU, proto_its_camv1));
dissector_add_uint("its.msg_id", (ITS_SPATEM_PROT_VER << 16) + ITS_SPATEM, create_dissector_handle( dissect_dsrc_SPAT_PDU, proto_its_spatem ));
dissector_add_uint("its.msg_id", (ITS_MAPEM_PROT_VER << 16) + ITS_MAPEM, create_dissector_handle( dissect_dsrc_MapData_PDU, proto_its_mapem ));
dissector_add_uint("its.msg_id", (ITS_IVIM_PROT_VER << 16) + ITS_IVIM, create_dissector_handle( dissect_ivi_IviStructure_PDU, proto_its_ivim ));
dissector_add_uint("its.msg_id", ITS_EV_RSR, create_dissector_handle( dissect_evrsr_EV_RSR_MessageBody_PDU, proto_its_evrsr ));
dissector_add_uint("its.msg_id", (ITS_SREM_PROT_VER << 16) + ITS_SREM, create_dissector_handle( dissect_dsrc_SignalRequestMessage_PDU, proto_its_srem ));
- dissector_add_uint("its.msg_id", (ITS_SREM_PROT_VER << 16) + ITS_SSEM, create_dissector_handle( dissect_dsrc_SignalStatusMessage_PDU, proto_its_ssem ));
+ dissector_add_uint("its.msg_id", (ITS_SSEM_PROT_VER << 16) + ITS_SSEM, create_dissector_handle( dissect_dsrc_SignalStatusMessage_PDU, proto_its_ssem ));
dissector_add_uint("its.msg_id", ITS_EVCSN, create_dissector_handle( dissect_evcsn_EVChargingSpotNotificationPOIMessage_PDU, proto_its_evcsn ));
dissector_add_uint("its.msg_id", ITS_TISTPGTRANSACTION, create_dissector_handle( dissect_tistpg_TisTpgTransaction_PDU, proto_its_tistpg ));
diff --git a/epan/dissectors/packet-its.c b/epan/dissectors/packet-its.c
index 8ae4cfa63d..236cea6ec6 100644
--- a/epan/dissectors/packet-its.c
+++ b/epan/dissectors/packet-its.c
@@ -1,7 +1,7 @@
/* Do not modify this file. Changes will be overwritten. */
/* Generated automatically by the ASN.1 to Wireshark dissector compiler */
/* packet-its.c */
-/* asn2wrs.py -o its -c ./its.cnf -s ./packet-its-template -D . -O ../.. ITS-Container.asn ISO_TS_14816.asn ISO_TS_24534-3.asn ISO_TS_17419.asn ISO_TS_14906_Application.asn ISO_TS_19321.asn ISO_TS_19091.asn ETSI_TS_103301.asn CAM.asn DENM.asn TIS_TPG_Transactions_Descriptions.asn EVCSN-PDU-Descriptions.asn EV-RSR-PDU-Descriptions.asn */
+/* asn2wrs.py -o its -c ./its.cnf -s ./packet-its-template -D . -O ../.. ITS-Container.asn ITS-ContainerV1.asn ISO_TS_14816.asn ISO_TS_24534-3.asn ISO_TS_17419.asn ISO_TS_14906_Application.asn ISO_TS_19321.asn ISO_TS_19091.asn ETSI_TS_103301.asn CAMv1.asn CAM.asn DENMv1.asn DENM.asn TIS_TPG_Transactions_Descriptions.asn EVCSN-PDU-Descriptions.asn EV-RSR-PDU-Descriptions.asn */
/* Input file: packet-its-template.c */
@@ -122,7 +122,9 @@ static int its_tap = -1;
// Protocols
static int proto_its = -1;
static int proto_its_denm = -1;
+static int proto_its_denmv1 = -1;
static int proto_its_cam = -1;
+static int proto_its_camv1 = -1;
static int proto_its_evcsn = -1;
static int proto_its_evrsr = -1;
static int proto_its_ivim = -1;
@@ -409,6 +411,130 @@ static int hf_its_EnergyStorageType_ammonia = -1;
static int hf_its_EmergencyPriority_requestForRightOfWay = -1;
static int hf_its_EmergencyPriority_requestForFreeCrossingAtATrafficLight = -1;
+/* --- Module ITS-ContainerV1 --- --- --- */
+
+static int hf_itsv1_latitude = -1; /* Latitude */
+static int hf_itsv1_longitude = -1; /* Longitude */
+static int hf_itsv1_positionConfidenceEllipse = -1; /* PosConfidenceEllipse */
+static int hf_itsv1_altitude = -1; /* Altitude */
+static int hf_itsv1_deltaLatitude = -1; /* DeltaLatitude */
+static int hf_itsv1_deltaLongitude = -1; /* DeltaLongitude */
+static int hf_itsv1_deltaAltitude = -1; /* DeltaAltitude */
+static int hf_itsv1_altitudeValue = -1; /* AltitudeValue */
+static int hf_itsv1_altitudeConfidence = -1; /* AltitudeConfidence */
+static int hf_itsv1_semiMajorConfidence = -1; /* SemiAxisLength */
+static int hf_itsv1_semiMinorConfidence = -1; /* SemiAxisLength */
+static int hf_itsv1_semiMajorOrientation = -1; /* HeadingValue */
+static int hf_itsv1_pathPosition = -1; /* DeltaReferencePosition */
+static int hf_itsv1_pathDeltaTime = -1; /* PathDeltaTime */
+static int hf_itsv1_ptActivationType = -1; /* PtActivationType */
+static int hf_itsv1_ptActivationData = -1; /* PtActivationData */
+static int hf_itsv1_causeCode = -1; /* CauseCodeTypeV1 */
+static int hf_itsv1_subCauseCode = -1; /* SubCauseCodeTypeV1 */
+static int hf_itsv1_curvatureValue = -1; /* CurvatureValue */
+static int hf_itsv1_curvatureConfidence = -1; /* CurvatureConfidence */
+static int hf_itsv1_headingValue = -1; /* HeadingValue */
+static int hf_itsv1_headingConfidence = -1; /* HeadingConfidence */
+static int hf_itsv1_hardShoulderStatus = -1; /* HardShoulderStatus */
+static int hf_itsv1_drivingLaneStatus = -1; /* DrivingLaneStatus */
+static int hf_itsv1_speedValue = -1; /* SpeedValue */
+static int hf_itsv1_speedConfidence = -1; /* SpeedConfidence */
+static int hf_itsv1_longitudinalAccelerationValue = -1; /* LongitudinalAccelerationValue */
+static int hf_itsv1_longitudinalAccelerationConfidence = -1; /* AccelerationConfidence */
+static int hf_itsv1_lateralAccelerationValue = -1; /* LateralAccelerationValue */
+static int hf_itsv1_lateralAccelerationConfidence = -1; /* AccelerationConfidence */
+static int hf_itsv1_verticalAccelerationValue = -1; /* VerticalAccelerationValue */
+static int hf_itsv1_verticalAccelerationConfidence = -1; /* AccelerationConfidence */
+static int hf_itsv1_dangerousGoodsType = -1; /* DangerousGoodsBasic */
+static int hf_itsv1_unNumber = -1; /* INTEGER_0_9999 */
+static int hf_itsv1_elevatedTemperature = -1; /* BOOLEAN */
+static int hf_itsv1_tunnelsRestricted = -1; /* BOOLEAN */
+static int hf_itsv1_limitedQuantity = -1; /* BOOLEAN */
+static int hf_itsv1_emergencyActionCode = -1; /* IA5String_SIZE_1_24 */
+static int hf_itsv1_phoneNumber = -1; /* IA5String_SIZE_1_24 */
+static int hf_itsv1_companyName = -1; /* UTF8String_SIZE_1_24 */
+static int hf_itsv1_wMInumber = -1; /* WMInumber */
+static int hf_itsv1_vDS = -1; /* VDS */
+static int hf_itsv1_vehicleLengthValue = -1; /* VehicleLengthValue */
+static int hf_itsv1_vehicleLengthConfidenceIndication = -1; /* VehicleLengthConfidenceIndication */
+static int hf_itsv1_PathHistory_item = -1; /* PathPoint */
+static int hf_itsv1_steeringWheelAngleValue = -1; /* SteeringWheelAngleValue */
+static int hf_itsv1_steeringWheelAngleConfidence = -1; /* SteeringWheelAngleConfidence */
+static int hf_itsv1_yawRateValue = -1; /* YawRateValue */
+static int hf_itsv1_yawRateConfidence = -1; /* YawRateConfidence */
+static int hf_itsv1_originatingStationID = -1; /* StationID */
+static int hf_itsv1_sequenceNumber = -1; /* SequenceNumber */
+static int hf_itsv1_ItineraryPath_item = -1; /* ReferencePosition */
+static int hf_itsv1_protectedZoneType = -1; /* ProtectedZoneType */
+static int hf_itsv1_expiryTime = -1; /* TimestampIts */
+static int hf_itsv1_protectedZoneLatitude = -1; /* Latitude */
+static int hf_itsv1_protectedZoneLongitude = -1; /* Longitude */
+static int hf_itsv1_protectedZoneRadius = -1; /* ProtectedZoneRadius */
+static int hf_itsv1_protectedZoneID = -1; /* ProtectedZoneID */
+static int hf_itsv1_Traces_item = -1; /* PathHistory */
+static int hf_itsv1_PositionOfPillars_item = -1; /* PosPillar */
+static int hf_itsv1_RestrictedTypes_item = -1; /* StationType */
+static int hf_itsv1_EventHistory_item = -1; /* EventPoint */
+static int hf_itsv1_eventPosition = -1; /* DeltaReferencePosition */
+static int hf_itsv1_eventDeltaTime = -1; /* PathDeltaTime */
+static int hf_itsv1_informationQuality = -1; /* InformationQuality */
+static int hf_itsv1_ProtectedCommunicationZonesRSU_item = -1; /* ProtectedCommunicationZone */
+static int hf_itsv1_cenDsrcTollingZoneID = -1; /* CenDsrcTollingZoneID */
+/* named bits */
+static int hf_itsv1_AccelerationControl_brakePedalEngaged = -1;
+static int hf_itsv1_AccelerationControl_gasPedalEngaged = -1;
+static int hf_itsv1_AccelerationControl_emergencyBrakeEngaged = -1;
+static int hf_itsv1_AccelerationControl_collisionWarningEngaged = -1;
+static int hf_itsv1_AccelerationControl_accEngaged = -1;
+static int hf_itsv1_AccelerationControl_cruiseControlEngaged = -1;
+static int hf_itsv1_AccelerationControl_speedLimiterEngaged = -1;
+static int hf_itsv1_DrivingLaneStatus_spare_bit0 = -1;
+static int hf_itsv1_DrivingLaneStatus_outermostLaneClosed = -1;
+static int hf_itsv1_DrivingLaneStatus_secondLaneFromOutsideClosed = -1;
+static int hf_itsv1_ExteriorLights_lowBeamHeadlightsOn = -1;
+static int hf_itsv1_ExteriorLights_highBeamHeadlightsOn = -1;
+static int hf_itsv1_ExteriorLights_leftTurnSignalOn = -1;
+static int hf_itsv1_ExteriorLights_rightTurnSignalOn = -1;
+static int hf_itsv1_ExteriorLights_daytimeRunningLightsOn = -1;
+static int hf_itsv1_ExteriorLights_reverseLightOn = -1;
+static int hf_itsv1_ExteriorLights_fogLightOn = -1;
+static int hf_itsv1_ExteriorLights_parkingLightsOn = -1;
+static int hf_itsv1_SpecialTransportType_heavyLoad = -1;
+static int hf_itsv1_SpecialTransportType_excessWidth = -1;
+static int hf_itsv1_SpecialTransportType_excessLength = -1;
+static int hf_itsv1_SpecialTransportType_excessHeight = -1;
+static int hf_itsv1_LightBarSirenInUse_lightBarActivated = -1;
+static int hf_itsv1_LightBarSirenInUse_sirenActivated = -1;
+static int hf_itsv1_PositionOfOccupants_row1LeftOccupied = -1;
+static int hf_itsv1_PositionOfOccupants_row1RightOccupied = -1;
+static int hf_itsv1_PositionOfOccupants_row1MidOccupied = -1;
+static int hf_itsv1_PositionOfOccupants_row1NotDetectable = -1;
+static int hf_itsv1_PositionOfOccupants_row1NotPresent = -1;
+static int hf_itsv1_PositionOfOccupants_row2LeftOccupied = -1;
+static int hf_itsv1_PositionOfOccupants_row2RightOccupied = -1;
+static int hf_itsv1_PositionOfOccupants_row2MidOccupied = -1;
+static int hf_itsv1_PositionOfOccupants_row2NotDetectable = -1;
+static int hf_itsv1_PositionOfOccupants_row2NotPresent = -1;
+static int hf_itsv1_PositionOfOccupants_row3LeftOccupied = -1;
+static int hf_itsv1_PositionOfOccupants_row3RightOccupied = -1;
+static int hf_itsv1_PositionOfOccupants_row3MidOccupied = -1;
+static int hf_itsv1_PositionOfOccupants_row3NotDetectable = -1;
+static int hf_itsv1_PositionOfOccupants_row3NotPresent = -1;
+static int hf_itsv1_PositionOfOccupants_row4LeftOccupied = -1;
+static int hf_itsv1_PositionOfOccupants_row4RightOccupied = -1;
+static int hf_itsv1_PositionOfOccupants_row4MidOccupied = -1;
+static int hf_itsv1_PositionOfOccupants_row4NotDetectable = -1;
+static int hf_itsv1_PositionOfOccupants_row4NotPresent = -1;
+static int hf_itsv1_EnergyStorageType_hydrogenStorage = -1;
+static int hf_itsv1_EnergyStorageType_electricEnergyStorage = -1;
+static int hf_itsv1_EnergyStorageType_liquidPropaneGas = -1;
+static int hf_itsv1_EnergyStorageType_compressedNaturalGas = -1;
+static int hf_itsv1_EnergyStorageType_diesel = -1;
+static int hf_itsv1_EnergyStorageType_gasoline = -1;
+static int hf_itsv1_EnergyStorageType_ammonia = -1;
+static int hf_itsv1_EmergencyPriority_requestForRightOfWay = -1;
+static int hf_itsv1_EmergencyPriority_requestForFreeCrossingAtATrafficLight = -1;
+
/* --- Module ElectronicRegistrationIdentificationVehicleDataModule --- --- --- */
static int hf_erivdm_euVehicleCategoryL = -1; /* EuVehicleCategoryL */
@@ -1081,6 +1207,59 @@ static int hf_AddGrpC_ItsStationPositionList_item = -1; /* ItsStationPosition *
static int hf_AddGrpC_laneID = -1; /* LaneID */
static int hf_AddGrpC_timeReference = -1; /* TimeReference */
+/* --- Module CAMv1-PDU-Descriptions --- --- --- */
+
+static int hf_camv1_camv1_CoopAwarenessV1_PDU = -1; /* CoopAwarenessV1 */
+static int hf_camv1_generationDeltaTime = -1; /* GenerationDeltaTime */
+static int hf_camv1_camParameters = -1; /* CamParameters */
+static int hf_camv1_basicContainer = -1; /* BasicContainer */
+static int hf_camv1_highFrequencyContainer = -1; /* HighFrequencyContainer */
+static int hf_camv1_lowFrequencyContainer = -1; /* LowFrequencyContainer */
+static int hf_camv1_specialVehicleContainer = -1; /* SpecialVehicleContainer */
+static int hf_camv1_basicVehicleContainerHighFrequency = -1; /* BasicVehicleContainerHighFrequency */
+static int hf_camv1_rsuContainerHighFrequency = -1; /* RSUContainerHighFrequency */
+static int hf_camv1_basicVehicleContainerLowFrequency = -1; /* BasicVehicleContainerLowFrequency */
+static int hf_camv1_publicTransportContainer = -1; /* PublicTransportContainer */
+static int hf_camv1_specialTransportContainer = -1; /* SpecialTransportContainer */
+static int hf_camv1_dangerousGoodsContainer = -1; /* DangerousGoodsContainer */
+static int hf_camv1_roadWorksContainerBasic = -1; /* RoadWorksContainerBasic */
+static int hf_camv1_rescueContainer = -1; /* RescueContainer */
+static int hf_camv1_emergencyContainer = -1; /* EmergencyContainer */
+static int hf_camv1_safetyCarContainer = -1; /* SafetyCarContainer */
+static int hf_camv1_stationType = -1; /* StationType */
+static int hf_camv1_referencePosition = -1; /* ReferencePosition */
+static int hf_camv1_heading = -1; /* Heading */
+static int hf_camv1_speed = -1; /* Speed */
+static int hf_camv1_driveDirection = -1; /* DriveDirection */
+static int hf_camv1_vehicleLength = -1; /* VehicleLength */
+static int hf_camv1_vehicleWidth = -1; /* VehicleWidth */
+static int hf_camv1_longitudinalAcceleration = -1; /* LongitudinalAcceleration */
+static int hf_camv1_curvature = -1; /* Curvature */
+static int hf_camv1_curvatureCalculationMode = -1; /* CurvatureCalculationMode */
+static int hf_camv1_yawRate = -1; /* YawRate */
+static int hf_camv1_accelerationControl = -1; /* AccelerationControl */
+static int hf_camv1_lanePosition = -1; /* LanePosition */
+static int hf_camv1_steeringWheelAngle = -1; /* SteeringWheelAngle */
+static int hf_camv1_lateralAcceleration = -1; /* LateralAcceleration */
+static int hf_camv1_verticalAcceleration = -1; /* VerticalAcceleration */
+static int hf_camv1_performanceClass = -1; /* PerformanceClass */
+static int hf_camv1_cenDsrcTollingZone = -1; /* CenDsrcTollingZone */
+static int hf_camv1_vehicleRole = -1; /* VehicleRole */
+static int hf_camv1_exteriorLights = -1; /* ExteriorLights */
+static int hf_camv1_pathHistory = -1; /* PathHistory */
+static int hf_camv1_embarkationStatus = -1; /* EmbarkationStatus */
+static int hf_camv1_ptActivation = -1; /* PtActivation */
+static int hf_camv1_specialTransportType = -1; /* SpecialTransportType */
+static int hf_camv1_lightBarSirenInUse = -1; /* LightBarSirenInUse */
+static int hf_camv1_dangerousGoodsBasic = -1; /* DangerousGoodsBasic */
+static int hf_camv1_roadworksSubCauseCode = -1; /* RoadworksSubCauseCode */
+static int hf_camv1_closedLanes = -1; /* ClosedLanes */
+static int hf_camv1_incidentIndication = -1; /* CauseCode */
+static int hf_camv1_emergencyPriority = -1; /* EmergencyPriority */
+static int hf_camv1_trafficRule = -1; /* TrafficRule */
+static int hf_camv1_speedLimit = -1; /* SpeedLimit */
+static int hf_camv1_protectedCommunicationZonesRSU = -1; /* ProtectedCommunicationZonesRSU */
+
/* --- Module CAM-PDU-Descriptions --- --- --- */
static int hf_cam_cam_CoopAwareness_PDU = -1; /* CoopAwareness */
@@ -1134,6 +1313,66 @@ static int hf_cam_trafficRule = -1; /* TrafficRule */
static int hf_cam_speedLimit = -1; /* SpeedLimit */
static int hf_cam_protectedCommunicationZonesRSU = -1; /* ProtectedCommunicationZonesRSU */
+/* --- Module DENMv1-PDU-Descriptions --- --- --- */
+
+static int hf_denmv1_denmv1_DecentralizedEnvironmentalNotificationMessageV1_PDU = -1; /* DecentralizedEnvironmentalNotificationMessageV1 */
+static int hf_denmv1_management = -1; /* ManagementContainer */
+static int hf_denmv1_situation = -1; /* SituationContainer */
+static int hf_denmv1_location = -1; /* LocationContainer */
+static int hf_denmv1_alacarte = -1; /* AlacarteContainer */
+static int hf_denmv1_actionID = -1; /* ActionID */
+static int hf_denmv1_detectionTime = -1; /* TimestampIts */
+static int hf_denmv1_referenceTime = -1; /* TimestampIts */
+static int hf_denmv1_termination = -1; /* Termination */
+static int hf_denmv1_eventPosition = -1; /* ReferencePosition */
+static int hf_denmv1_relevanceDistance = -1; /* RelevanceDistance */
+static int hf_denmv1_relevanceTrafficDirection = -1; /* RelevanceTrafficDirection */
+static int hf_denmv1_validityDuration = -1; /* ValidityDuration */
+static int hf_denmv1_transmissionInterval = -1; /* TransmissionInterval */
+static int hf_denmv1_stationType = -1; /* StationType */
+static int hf_denmv1_informationQuality = -1; /* InformationQuality */
+static int hf_denmv1_eventType = -1; /* CauseCode */
+static int hf_denmv1_linkedCause = -1; /* CauseCode */
+static int hf_denmv1_eventHistory = -1; /* EventHistory */
+static int hf_denmv1_eventSpeed = -1; /* Speed */
+static int hf_denmv1_eventPositionHeading = -1; /* Heading */
+static int hf_denmv1_traces = -1; /* Traces */
+static int hf_denmv1_roadType = -1; /* RoadType */
+static int hf_denmv1_heightLonCarrLeft = -1; /* HeightLonCarr */
+static int hf_denmv1_heightLonCarrRight = -1; /* HeightLonCarr */
+static int hf_denmv1_posLonCarrLeft = -1; /* PosLonCarr */
+static int hf_denmv1_posLonCarrRight = -1; /* PosLonCarr */
+static int hf_denmv1_positionOfPillars = -1; /* PositionOfPillars */
+static int hf_denmv1_posCentMass = -1; /* PosCentMass */
+static int hf_denmv1_wheelBaseVehicle = -1; /* WheelBaseVehicle */
+static int hf_denmv1_turningRadius = -1; /* TurningRadius */
+static int hf_denmv1_posFrontAx = -1; /* PosFrontAx */
+static int hf_denmv1_positionOfOccupants = -1; /* PositionOfOccupants */
+static int hf_denmv1_vehicleMass = -1; /* VehicleMass */
+static int hf_denmv1_requestResponseIndication = -1; /* RequestResponseIndication */
+static int hf_denmv1_lightBarSirenInUse = -1; /* LightBarSirenInUse */
+static int hf_denmv1_closedLanes = -1; /* ClosedLanes */
+static int hf_denmv1_restriction = -1; /* RestrictedTypes */
+static int hf_denmv1_speedLimit = -1; /* SpeedLimit */
+static int hf_denmv1_incidentIndication = -1; /* CauseCode */
+static int hf_denmv1_recommendedPath = -1; /* ItineraryPath */
+static int hf_denmv1_startingPointSpeedLimit = -1; /* DeltaReferencePosition */
+static int hf_denmv1_trafficFlowRule = -1; /* TrafficRule */
+static int hf_denmv1_referenceDenms = -1; /* ReferenceDenms */
+static int hf_denmv1_stationarySince = -1; /* StationarySince */
+static int hf_denmv1_stationaryCause = -1; /* CauseCode */
+static int hf_denmv1_carryingDangerousGoods = -1; /* DangerousGoodsExtended */
+static int hf_denmv1_numberOfOccupants = -1; /* NumberOfOccupants */
+static int hf_denmv1_vehicleIdentification = -1; /* VehicleIdentification */
+static int hf_denmv1_energyStorageType = -1; /* EnergyStorageType */
+static int hf_denmv1_lanePosition = -1; /* LanePosition */
+static int hf_denmv1_impactReduction = -1; /* ImpactReductionContainer */
+static int hf_denmv1_externalTemperature = -1; /* Temperature */
+static int hf_denmv1_roadWorks = -1; /* RoadWorksContainerExtended */
+static int hf_denmv1_positioningSolution = -1; /* PositioningSolutionType */
+static int hf_denmv1_stationaryVehicle = -1; /* StationaryVehicleContainer */
+static int hf_denmv1_ReferenceDenms_item = -1; /* ActionID */
+
/* --- Module DENM-PDU-Descriptions --- --- --- */
static int hf_denm_denm_DecentralizedEnvironmentalNotificationMessage_PDU = -1; /* DecentralizedEnvironmentalNotificationMessage */
@@ -1396,7 +1635,7 @@ static int hf_evrsr_SupportedPaymentTypes_contract = -1;
static int hf_evrsr_SupportedPaymentTypes_externalIdentification = -1;
/*--- End of included file: packet-its-hf.c ---*/
-#line 274 "./asn1/its/packet-its-template.c"
+#line 276 "./asn1/its/packet-its-template.c"
// CauseCode/SubCauseCode management
static int hf_its_trafficConditionSubCauseCode = -1;
@@ -1472,6 +1711,47 @@ static gint ett_its_ProtectedCommunicationZonesRSU = -1;
static gint ett_its_CenDsrcTollingZone = -1;
static gint ett_its_DigitalMap = -1;
+/* --- Module ITS-ContainerV1 --- --- --- */
+
+static gint ett_itsv1_ReferencePosition = -1;
+static gint ett_itsv1_DeltaReferencePosition = -1;
+static gint ett_itsv1_Altitude = -1;
+static gint ett_itsv1_PosConfidenceEllipse = -1;
+static gint ett_itsv1_PathPoint = -1;
+static gint ett_itsv1_PtActivation = -1;
+static gint ett_itsv1_AccelerationControl = -1;
+static gint ett_itsv1_CauseCode = -1;
+static gint ett_itsv1_Curvature = -1;
+static gint ett_itsv1_Heading = -1;
+static gint ett_itsv1_ClosedLanes = -1;
+static gint ett_itsv1_DrivingLaneStatus = -1;
+static gint ett_itsv1_Speed = -1;
+static gint ett_itsv1_LongitudinalAcceleration = -1;
+static gint ett_itsv1_LateralAcceleration = -1;
+static gint ett_itsv1_VerticalAcceleration = -1;
+static gint ett_itsv1_ExteriorLights = -1;
+static gint ett_itsv1_DangerousGoodsExtended = -1;
+static gint ett_itsv1_SpecialTransportType = -1;
+static gint ett_itsv1_LightBarSirenInUse = -1;
+static gint ett_itsv1_PositionOfOccupants = -1;
+static gint ett_itsv1_VehicleIdentification = -1;
+static gint ett_itsv1_EnergyStorageType = -1;
+static gint ett_itsv1_VehicleLength = -1;
+static gint ett_itsv1_PathHistory = -1;
+static gint ett_itsv1_EmergencyPriority = -1;
+static gint ett_itsv1_SteeringWheelAngle = -1;
+static gint ett_itsv1_YawRate = -1;
+static gint ett_itsv1_ActionID = -1;
+static gint ett_itsv1_ItineraryPath = -1;
+static gint ett_itsv1_ProtectedCommunicationZone = -1;
+static gint ett_itsv1_Traces = -1;
+static gint ett_itsv1_PositionOfPillars = -1;
+static gint ett_itsv1_RestrictedTypes = -1;
+static gint ett_itsv1_EventHistory = -1;
+static gint ett_itsv1_EventPoint = -1;
+static gint ett_itsv1_ProtectedCommunicationZonesRSU = -1;
+static gint ett_itsv1_CenDsrcTollingZone = -1;
+
/* --- Module AVIAEINumberingAndDataStructures --- --- --- */
@@ -1739,6 +2019,25 @@ static gint ett_AddGrpC_ItsStationPosition = -1;
/* --- Module RTCMEM-PDU-Descriptions --- --- --- */
+/* --- Module CAMv1-PDU-Descriptions --- --- --- */
+
+static gint ett_camv1_CoopAwarenessV1 = -1;
+static gint ett_camv1_CamParameters = -1;
+static gint ett_camv1_HighFrequencyContainer = -1;
+static gint ett_camv1_LowFrequencyContainer = -1;
+static gint ett_camv1_SpecialVehicleContainer = -1;
+static gint ett_camv1_BasicContainer = -1;
+static gint ett_camv1_BasicVehicleContainerHighFrequency = -1;
+static gint ett_camv1_BasicVehicleContainerLowFrequency = -1;
+static gint ett_camv1_PublicTransportContainer = -1;
+static gint ett_camv1_SpecialTransportContainer = -1;
+static gint ett_camv1_DangerousGoodsContainer = -1;
+static gint ett_camv1_RoadWorksContainerBasic = -1;
+static gint ett_camv1_RescueContainer = -1;
+static gint ett_camv1_EmergencyContainer = -1;
+static gint ett_camv1_SafetyCarContainer = -1;
+static gint ett_camv1_RSUContainerHighFrequency = -1;
+
/* --- Module CAM-PDU-Descriptions --- --- --- */
static gint ett_cam_CoopAwareness = -1;
@@ -1758,6 +2057,18 @@ static gint ett_cam_EmergencyContainer = -1;
static gint ett_cam_SafetyCarContainer = -1;
static gint ett_cam_RSUContainerHighFrequency = -1;
+/* --- Module DENMv1-PDU-Descriptions --- --- --- */
+
+static gint ett_denmv1_DecentralizedEnvironmentalNotificationMessageV1 = -1;
+static gint ett_denmv1_ManagementContainer = -1;
+static gint ett_denmv1_SituationContainer = -1;
+static gint ett_denmv1_LocationContainer = -1;
+static gint ett_denmv1_ImpactReductionContainer = -1;
+static gint ett_denmv1_RoadWorksContainerExtended = -1;
+static gint ett_denmv1_StationaryVehicleContainer = -1;
+static gint ett_denmv1_AlacarteContainer = -1;
+static gint ett_denmv1_ReferenceDenms = -1;
+
/* --- Module DENM-PDU-Descriptions --- --- --- */
static gint ett_denm_DecentralizedEnvironmentalNotificationMessage = -1;
@@ -1841,7 +2152,7 @@ static gint ett_evrsr_RechargingType = -1;
static gint ett_evrsr_SupportedPaymentTypes = -1;
/*--- End of included file: packet-its-ett.c ---*/
-#line 304 "./asn1/its/packet-its-template.c"
+#line 306 "./asn1/its/packet-its-template.c"
// Deal with cause/subcause code management
struct { CauseCodeType_enum cause; int* hf; } cause_to_subcause[] = {
@@ -1946,7 +2257,7 @@ static const per_sequence_t its_ItsPduHeader_sequence[] = {
static int
dissect_its_ItsPduHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 585 "./asn1/its/its.cnf"
+#line 604 "./asn1/its/its.cnf"
guint8 version = tvb_get_guint8(tvb, 0);
if ((offset = dissector_try_uint(its_version_subdissector_table, version, tvb, actx->pinfo, tree))) {
return offset;
@@ -2337,7 +2648,7 @@ dissect_its_CauseCodeType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
static int
dissect_its_SubCauseCodeType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 686 "./asn1/its/its.cnf"
+#line 705 "./asn1/its/its.cnf"
// Overwrite hf_index
hf_index = *find_subcause_from_cause((CauseCodeType_enum) ((its_private_data_t*)actx->private_data)->cause_code);
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
@@ -4135,6 +4446,1880 @@ static int dissect_its_ItsPduHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U
}
+/* --- Module ITS-ContainerV1 --- --- --- */
+
+
+
+static int
+dissect_itsv1_StationID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 4294967295U, actx->private_data?&((its_header_t*)actx->private_data)->stationId:NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_Latitude_vals[] = {
+ { 10, "oneMicrodegreeNorth" },
+ { -10, "oneMicrodegreeSouth" },
+ { 900000001, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_Latitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -900000000, 900000001U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_Longitude_vals[] = {
+ { 10, "oneMicrodegreeEast" },
+ { -10, "oneMicrodegreeWest" },
+ { 1800000001, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_Longitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -1800000000, 1800000001U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_SemiAxisLength_vals[] = {
+ { 1, "oneCentimeter" },
+ { 4094, "outOfRange" },
+ { 4095, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_SemiAxisLength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 4095U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_HeadingValue_vals[] = {
+ { 0, "wgs84North" },
+ { 900, "wgs84East" },
+ { 1800, "wgs84South" },
+ { 2700, "wgs84West" },
+ { 3601, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_HeadingValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 3601U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_PosConfidenceEllipse_sequence[] = {
+ { &hf_itsv1_semiMajorConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SemiAxisLength },
+ { &hf_itsv1_semiMinorConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SemiAxisLength },
+ { &hf_itsv1_semiMajorOrientation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_HeadingValue },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_PosConfidenceEllipse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_PosConfidenceEllipse, itsv1_PosConfidenceEllipse_sequence);
+
+ return offset;
+}
+
+
+static const value_string itsv1_AltitudeValue_vals[] = {
+ { 0, "referenceEllipsoidSurface" },
+ { 1, "oneCentimeter" },
+ { 800001, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_AltitudeValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -100000, 800001U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_AltitudeConfidence_vals[] = {
+ { 0, "alt-000-01" },
+ { 1, "alt-000-02" },
+ { 2, "alt-000-05" },
+ { 3, "alt-000-10" },
+ { 4, "alt-000-20" },
+ { 5, "alt-000-50" },
+ { 6, "alt-001-00" },
+ { 7, "alt-002-00" },
+ { 8, "alt-005-00" },
+ { 9, "alt-010-00" },
+ { 10, "alt-020-00" },
+ { 11, "alt-050-00" },
+ { 12, "alt-100-00" },
+ { 13, "alt-200-00" },
+ { 14, "outOfRange" },
+ { 15, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_AltitudeConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 16, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_Altitude_sequence[] = {
+ { &hf_itsv1_altitudeValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_AltitudeValue },
+ { &hf_itsv1_altitudeConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_AltitudeConfidence },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_Altitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_Altitude, itsv1_Altitude_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_ReferencePosition_sequence[] = {
+ { &hf_itsv1_latitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Latitude },
+ { &hf_itsv1_longitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Longitude },
+ { &hf_itsv1_positionConfidenceEllipse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PosConfidenceEllipse },
+ { &hf_itsv1_altitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Altitude },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_ReferencePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_ReferencePosition, itsv1_ReferencePosition_sequence);
+
+ return offset;
+}
+
+
+static const value_string itsv1_DeltaLatitude_vals[] = {
+ { 10, "oneMicrodegreeNorth" },
+ { -10, "oneMicrodegreeSouth" },
+ { 131072, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_DeltaLatitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -131071, 131072U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_DeltaLongitude_vals[] = {
+ { 10, "oneMicrodegreeEast" },
+ { -10, "oneMicrodegreeWest" },
+ { 131072, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_DeltaLongitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -131071, 131072U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_DeltaAltitude_vals[] = {
+ { 1, "oneCentimeterUp" },
+ { -1, "oneCentimeterDown" },
+ { 12800, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_DeltaAltitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -12700, 12800U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_DeltaReferencePosition_sequence[] = {
+ { &hf_itsv1_deltaLatitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DeltaLatitude },
+ { &hf_itsv1_deltaLongitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DeltaLongitude },
+ { &hf_itsv1_deltaAltitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DeltaAltitude },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_DeltaReferencePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_DeltaReferencePosition, itsv1_DeltaReferencePosition_sequence);
+
+ return offset;
+}
+
+
+static const value_string itsv1_PathDeltaTime_vals[] = {
+ { 1, "tenMilliSecondsInPast" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_PathDeltaTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 65535U, NULL, TRUE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_PathPoint_sequence[] = {
+ { &hf_itsv1_pathPosition , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DeltaReferencePosition },
+ { &hf_itsv1_pathDeltaTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_PathDeltaTime },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_PathPoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_PathPoint, itsv1_PathPoint_sequence);
+
+ return offset;
+}
+
+
+static const value_string itsv1_PtActivationType_vals[] = {
+ { 0, "undefinedCodingType" },
+ { 1, "r09-16CodingType" },
+ { 2, "vdv-50149CodingType" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_PtActivationType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 255U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_itsv1_PtActivationData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 1, 20, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_PtActivation_sequence[] = {
+ { &hf_itsv1_ptActivationType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PtActivationType },
+ { &hf_itsv1_ptActivationData, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PtActivationData },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_PtActivation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_PtActivation, itsv1_PtActivation_sequence);
+
+ return offset;
+}
+
+
+static const int * itsv1_AccelerationControl_bits[] = {
+ &hf_itsv1_AccelerationControl_brakePedalEngaged,
+ &hf_itsv1_AccelerationControl_gasPedalEngaged,
+ &hf_itsv1_AccelerationControl_emergencyBrakeEngaged,
+ &hf_itsv1_AccelerationControl_collisionWarningEngaged,
+ &hf_itsv1_AccelerationControl_accEngaged,
+ &hf_itsv1_AccelerationControl_cruiseControlEngaged,
+ &hf_itsv1_AccelerationControl_speedLimiterEngaged,
+ NULL
+};
+
+static int
+dissect_itsv1_AccelerationControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 7, 7, FALSE, itsv1_AccelerationControl_bits, 7, NULL, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_CauseCodeTypeV1_vals[] = {
+ { 0, "reserved" },
+ { 1, "trafficCondition" },
+ { 2, "accident" },
+ { 3, "roadworks" },
+ { 6, "adverseWeatherCondition-Adhesion" },
+ { 9, "hazardousLocation-SurfaceCondition" },
+ { 10, "hazardousLocation-ObstacleOnTheRoad" },
+ { 11, "hazardousLocation-AnimalOnTheRoad" },
+ { 12, "humanPresenceOnTheRoad" },
+ { 14, "wrongWayDriving" },
+ { 15, "rescueAndRecoveryWorkInProgress" },
+ { 17, "adverseWeatherCondition-ExtremeWeatherCondition" },
+ { 18, "adverseWeatherCondition-Visibility" },
+ { 19, "adverseWeatherCondition-Precipitation" },
+ { 26, "slowVehicle" },
+ { 27, "dangerousEndOfQueue" },
+ { 91, "vehicleBreakdown" },
+ { 92, "postCrash" },
+ { 93, "humanProblem" },
+ { 94, "stationaryVehicle" },
+ { 95, "emergencyVehicleApproaching" },
+ { 96, "hazardousLocation-DangerousCurve" },
+ { 97, "collisionRisk" },
+ { 98, "signalViolation" },
+ { 99, "dangerousSituation" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_CauseCodeTypeV1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 255U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_itsv1_SubCauseCodeTypeV1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 255U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_CauseCode_sequence[] = {
+ { &hf_itsv1_causeCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_CauseCodeTypeV1 },
+ { &hf_itsv1_subCauseCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SubCauseCodeTypeV1 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_CauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_CauseCode, itsv1_CauseCode_sequence);
+
+ return offset;
+}
+
+
+static const value_string itsv1_RoadworksSubCauseCode_vals[] = {
+ { 0, "unavailable" },
+ { 1, "majorRoadworks" },
+ { 2, "roadMarkingWork" },
+ { 3, "slowMovingRoadMaintenance" },
+ { 4, "shortTermStationaryRoadworks" },
+ { 5, "streetCleaning" },
+ { 6, "winterService" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_RoadworksSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 255U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_CurvatureValue_vals[] = {
+ { 0, "straight" },
+ { -30000, "reciprocalOf1MeterRadiusToRight" },
+ { 30000, "reciprocalOf1MeterRadiusToLeft" },
+ { 30001, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_CurvatureValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -30000, 30001U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_CurvatureConfidence_vals[] = {
+ { 0, "onePerMeter-0-00002" },
+ { 1, "onePerMeter-0-0001" },
+ { 2, "onePerMeter-0-0005" },
+ { 3, "onePerMeter-0-002" },
+ { 4, "onePerMeter-0-01" },
+ { 5, "onePerMeter-0-1" },
+ { 6, "outOfRange" },
+ { 7, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_CurvatureConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_Curvature_sequence[] = {
+ { &hf_itsv1_curvatureValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_CurvatureValue },
+ { &hf_itsv1_curvatureConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_CurvatureConfidence },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_Curvature(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_Curvature, itsv1_Curvature_sequence);
+
+ return offset;
+}
+
+
+static const value_string itsv1_CurvatureCalculationMode_vals[] = {
+ { 0, "yawRateUsed" },
+ { 1, "yawRateNotUsed" },
+ { 2, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_CurvatureCalculationMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 3, NULL, TRUE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_HeadingConfidence_vals[] = {
+ { 1, "equalOrWithinZeroPointOneDegree" },
+ { 10, "equalOrWithinOneDegree" },
+ { 126, "outOfRange" },
+ { 127, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_HeadingConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 127U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_Heading_sequence[] = {
+ { &hf_itsv1_headingValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_HeadingValue },
+ { &hf_itsv1_headingConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_HeadingConfidence },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_Heading(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_Heading, itsv1_Heading_sequence);
+
+ return offset;
+}
+
+
+static const value_string itsv1_LanePosition_vals[] = {
+ { -1, "offTheRoad" },
+ { 0, "hardShoulder" },
+ { 1, "outermostDrivingLane" },
+ { 2, "secondLaneFromOutside" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_LanePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -1, 14U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_HardShoulderStatus_vals[] = {
+ { 0, "availableForStopping" },
+ { 1, "closed" },
+ { 2, "availableForDriving" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_HardShoulderStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 3, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const int * itsv1_DrivingLaneStatus_bits[] = {
+ &hf_itsv1_DrivingLaneStatus_spare_bit0,
+ &hf_itsv1_DrivingLaneStatus_outermostLaneClosed,
+ &hf_itsv1_DrivingLaneStatus_secondLaneFromOutsideClosed,
+ NULL
+};
+
+static int
+dissect_itsv1_DrivingLaneStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 1, 14, FALSE, itsv1_DrivingLaneStatus_bits, 3, NULL, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_ClosedLanes_sequence[] = {
+ { &hf_itsv1_hardShoulderStatus, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_HardShoulderStatus },
+ { &hf_itsv1_drivingLaneStatus, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_DrivingLaneStatus },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_ClosedLanes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_ClosedLanes, itsv1_ClosedLanes_sequence);
+
+ return offset;
+}
+
+
+static const value_string itsv1_PerformanceClass_vals[] = {
+ { 0, "unavailable" },
+ { 1, "performanceClassA" },
+ { 2, "performanceClassB" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_PerformanceClass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 7U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_SpeedValue_vals[] = {
+ { 0, "standstill" },
+ { 1, "oneCentimeterPerSec" },
+ { 16383, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_SpeedValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 16383U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_SpeedConfidence_vals[] = {
+ { 1, "equalOrWithinOneCentimeterPerSec" },
+ { 100, "equalOrWithinOneMeterPerSec" },
+ { 126, "outOfRange" },
+ { 127, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_SpeedConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 127U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_VehicleMass_vals[] = {
+ { 1, "hundredKg" },
+ { 1024, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_VehicleMass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 1024U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_Speed_sequence[] = {
+ { &hf_itsv1_speedValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SpeedValue },
+ { &hf_itsv1_speedConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SpeedConfidence },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_Speed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_Speed, itsv1_Speed_sequence);
+
+ return offset;
+}
+
+
+static const value_string itsv1_DriveDirection_vals[] = {
+ { 0, "forward" },
+ { 1, "backward" },
+ { 2, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_DriveDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 3, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_itsv1_EmbarkationStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_LongitudinalAccelerationValue_vals[] = {
+ { 1, "pointOneMeterPerSecSquaredForward" },
+ { -1, "pointOneMeterPerSecSquaredBackward" },
+ { 161, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_LongitudinalAccelerationValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -160, 161U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_AccelerationConfidence_vals[] = {
+ { 1, "pointOneMeterPerSecSquared" },
+ { 101, "outOfRange" },
+ { 102, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_AccelerationConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 102U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_LongitudinalAcceleration_sequence[] = {
+ { &hf_itsv1_longitudinalAccelerationValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LongitudinalAccelerationValue },
+ { &hf_itsv1_longitudinalAccelerationConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_AccelerationConfidence },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_LongitudinalAcceleration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_LongitudinalAcceleration, itsv1_LongitudinalAcceleration_sequence);
+
+ return offset;
+}
+
+
+static const value_string itsv1_LateralAccelerationValue_vals[] = {
+ { -1, "pointOneMeterPerSecSquaredToRight" },
+ { 1, "pointOneMeterPerSecSquaredToLeft" },
+ { 161, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_LateralAccelerationValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -160, 161U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_LateralAcceleration_sequence[] = {
+ { &hf_itsv1_lateralAccelerationValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LateralAccelerationValue },
+ { &hf_itsv1_lateralAccelerationConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_AccelerationConfidence },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_LateralAcceleration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_LateralAcceleration, itsv1_LateralAcceleration_sequence);
+
+ return offset;
+}
+
+
+static const value_string itsv1_VerticalAccelerationValue_vals[] = {
+ { 1, "pointOneMeterPerSecSquaredUp" },
+ { -1, "pointOneMeterPerSecSquaredDown" },
+ { 161, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_VerticalAccelerationValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -160, 161U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_VerticalAcceleration_sequence[] = {
+ { &hf_itsv1_verticalAccelerationValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_VerticalAccelerationValue },
+ { &hf_itsv1_verticalAccelerationConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_AccelerationConfidence },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_VerticalAcceleration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_VerticalAcceleration, itsv1_VerticalAcceleration_sequence);
+
+ return offset;
+}
+
+
+static const value_string itsv1_StationType_vals[] = {
+ { 0, "unknown" },
+ { 1, "pedestrian" },
+ { 2, "cyclist" },
+ { 3, "moped" },
+ { 4, "motorcycle" },
+ { 5, "passengerCar" },
+ { 6, "bus" },
+ { 7, "lightTruck" },
+ { 8, "heavyTruck" },
+ { 9, "trailer" },
+ { 10, "specialVehicles" },
+ { 11, "tram" },
+ { 15, "roadSideUnit" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_StationType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 255U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const int * itsv1_ExteriorLights_bits[] = {
+ &hf_itsv1_ExteriorLights_lowBeamHeadlightsOn,
+ &hf_itsv1_ExteriorLights_highBeamHeadlightsOn,
+ &hf_itsv1_ExteriorLights_leftTurnSignalOn,
+ &hf_itsv1_ExteriorLights_rightTurnSignalOn,
+ &hf_itsv1_ExteriorLights_daytimeRunningLightsOn,
+ &hf_itsv1_ExteriorLights_reverseLightOn,
+ &hf_itsv1_ExteriorLights_fogLightOn,
+ &hf_itsv1_ExteriorLights_parkingLightsOn,
+ NULL
+};
+
+static int
+dissect_itsv1_ExteriorLights(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 8, 8, FALSE, itsv1_ExteriorLights_bits, 8, NULL, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_DangerousGoodsBasic_vals[] = {
+ { 0, "explosives1" },
+ { 1, "explosives2" },
+ { 2, "explosives3" },
+ { 3, "explosives4" },
+ { 4, "explosives5" },
+ { 5, "explosives6" },
+ { 6, "flammableGases" },
+ { 7, "nonFlammableGases" },
+ { 8, "toxicGases" },
+ { 9, "flammableLiquids" },
+ { 10, "flammableSolids" },
+ { 11, "substancesLiableToSpontaneousCombustion" },
+ { 12, "substancesEmittingFlammableGasesUponContactWithWater" },
+ { 13, "oxidizingSubstances" },
+ { 14, "organicPeroxides" },
+ { 15, "toxicSubstances" },
+ { 16, "infectiousSubstances" },
+ { 17, "radioactiveMaterial" },
+ { 18, "corrosiveSubstances" },
+ { 19, "miscellaneousDangerousSubstances" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_DangerousGoodsBasic(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 20, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_itsv1_INTEGER_0_9999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 9999U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_itsv1_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_itsv1_IA5String_SIZE_1_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
+ 1, 24, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_itsv1_UTF8String_SIZE_1_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
+ 1, 24, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_DangerousGoodsExtended_sequence[] = {
+ { &hf_itsv1_dangerousGoodsType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DangerousGoodsBasic },
+ { &hf_itsv1_unNumber , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_INTEGER_0_9999 },
+ { &hf_itsv1_elevatedTemperature, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_BOOLEAN },
+ { &hf_itsv1_tunnelsRestricted, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_BOOLEAN },
+ { &hf_itsv1_limitedQuantity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_BOOLEAN },
+ { &hf_itsv1_emergencyActionCode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_IA5String_SIZE_1_24 },
+ { &hf_itsv1_phoneNumber , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_IA5String_SIZE_1_24 },
+ { &hf_itsv1_companyName , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_UTF8String_SIZE_1_24 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_DangerousGoodsExtended(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_DangerousGoodsExtended, itsv1_DangerousGoodsExtended_sequence);
+
+ return offset;
+}
+
+
+static const int * itsv1_SpecialTransportType_bits[] = {
+ &hf_itsv1_SpecialTransportType_heavyLoad,
+ &hf_itsv1_SpecialTransportType_excessWidth,
+ &hf_itsv1_SpecialTransportType_excessLength,
+ &hf_itsv1_SpecialTransportType_excessHeight,
+ NULL
+};
+
+static int
+dissect_itsv1_SpecialTransportType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 4, 4, FALSE, itsv1_SpecialTransportType_bits, 4, NULL, NULL);
+
+ return offset;
+}
+
+
+static const int * itsv1_LightBarSirenInUse_bits[] = {
+ &hf_itsv1_LightBarSirenInUse_lightBarActivated,
+ &hf_itsv1_LightBarSirenInUse_sirenActivated,
+ NULL
+};
+
+static int
+dissect_itsv1_LightBarSirenInUse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 2, 2, FALSE, itsv1_LightBarSirenInUse_bits, 2, NULL, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_HeightLonCarr_vals[] = {
+ { 1, "oneCentimeter" },
+ { 100, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_HeightLonCarr(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 100U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_PosLonCarr_vals[] = {
+ { 1, "oneCentimeter" },
+ { 127, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_PosLonCarr(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 127U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_PosPillar_vals[] = {
+ { 1, "tenCentimeters" },
+ { 30, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_PosPillar(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 30U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_PosCentMass_vals[] = {
+ { 1, "tenCentimeters" },
+ { 63, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_PosCentMass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 63U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_RequestResponseIndication_vals[] = {
+ { 0, "request" },
+ { 1, "response" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_RequestResponseIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_SpeedLimit_vals[] = {
+ { 1, "oneKmPerHour" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_SpeedLimit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 255U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_StationarySince_vals[] = {
+ { 0, "lessThan1Minute" },
+ { 1, "lessThan2Minutes" },
+ { 2, "lessThan15Minutes" },
+ { 3, "equalOrGreater15Minutes" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_StationarySince(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_Temperature_vals[] = {
+ { -60, "equalOrSmallerThanMinus60Deg" },
+ { 1, "oneDegreeCelsius" },
+ { 67, "equalOrGreaterThan67Deg" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_Temperature(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -60, 67U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_TrafficRule_vals[] = {
+ { 0, "noPassing" },
+ { 1, "noPassingForTrucks" },
+ { 2, "passToRight" },
+ { 3, "passToLeft" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_TrafficRule(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, TRUE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_WheelBaseVehicle_vals[] = {
+ { 1, "tenCentimeters" },
+ { 127, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_WheelBaseVehicle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 127U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_TurningRadius_vals[] = {
+ { 1, "point4Meters" },
+ { 255, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_TurningRadius(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 255U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_PosFrontAx_vals[] = {
+ { 1, "tenCentimeters" },
+ { 20, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_PosFrontAx(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 20U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const int * itsv1_PositionOfOccupants_bits[] = {
+ &hf_itsv1_PositionOfOccupants_row1LeftOccupied,
+ &hf_itsv1_PositionOfOccupants_row1RightOccupied,
+ &hf_itsv1_PositionOfOccupants_row1MidOccupied,
+ &hf_itsv1_PositionOfOccupants_row1NotDetectable,
+ &hf_itsv1_PositionOfOccupants_row1NotPresent,
+ &hf_itsv1_PositionOfOccupants_row2LeftOccupied,
+ &hf_itsv1_PositionOfOccupants_row2RightOccupied,
+ &hf_itsv1_PositionOfOccupants_row2MidOccupied,
+ &hf_itsv1_PositionOfOccupants_row2NotDetectable,
+ &hf_itsv1_PositionOfOccupants_row2NotPresent,
+ &hf_itsv1_PositionOfOccupants_row3LeftOccupied,
+ &hf_itsv1_PositionOfOccupants_row3RightOccupied,
+ &hf_itsv1_PositionOfOccupants_row3MidOccupied,
+ &hf_itsv1_PositionOfOccupants_row3NotDetectable,
+ &hf_itsv1_PositionOfOccupants_row3NotPresent,
+ &hf_itsv1_PositionOfOccupants_row4LeftOccupied,
+ &hf_itsv1_PositionOfOccupants_row4RightOccupied,
+ &hf_itsv1_PositionOfOccupants_row4MidOccupied,
+ &hf_itsv1_PositionOfOccupants_row4NotDetectable,
+ &hf_itsv1_PositionOfOccupants_row4NotPresent,
+ NULL
+};
+
+static int
+dissect_itsv1_PositionOfOccupants(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 20, 20, FALSE, itsv1_PositionOfOccupants_bits, 20, NULL, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_PositioningSolutionType_vals[] = {
+ { 0, "noPositioningSolution" },
+ { 1, "sGNSS" },
+ { 2, "dGNSS" },
+ { 3, "sGNSSplusDR" },
+ { 4, "dGNSSplusDR" },
+ { 5, "dR" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_PositioningSolutionType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 6, NULL, TRUE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_itsv1_WMInumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
+ 1, 3, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_itsv1_VDS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
+ 6, 6, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_VehicleIdentification_sequence[] = {
+ { &hf_itsv1_wMInumber , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_WMInumber },
+ { &hf_itsv1_vDS , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_VDS },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_VehicleIdentification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_VehicleIdentification, itsv1_VehicleIdentification_sequence);
+
+ return offset;
+}
+
+
+static const int * itsv1_EnergyStorageType_bits[] = {
+ &hf_itsv1_EnergyStorageType_hydrogenStorage,
+ &hf_itsv1_EnergyStorageType_electricEnergyStorage,
+ &hf_itsv1_EnergyStorageType_liquidPropaneGas,
+ &hf_itsv1_EnergyStorageType_compressedNaturalGas,
+ &hf_itsv1_EnergyStorageType_diesel,
+ &hf_itsv1_EnergyStorageType_gasoline,
+ &hf_itsv1_EnergyStorageType_ammonia,
+ NULL
+};
+
+static int
+dissect_itsv1_EnergyStorageType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 7, 7, FALSE, itsv1_EnergyStorageType_bits, 7, NULL, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_VehicleLengthValue_vals[] = {
+ { 1, "tenCentimeters" },
+ { 1022, "outOfRange" },
+ { 1023, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_VehicleLengthValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 1023U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_VehicleLengthConfidenceIndication_vals[] = {
+ { 0, "noTrailerPresent" },
+ { 1, "trailerPresentWithKnownLength" },
+ { 2, "trailerPresentWithUnknownLength" },
+ { 3, "trailerPresenceIsUnknown" },
+ { 4, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_VehicleLengthConfidenceIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 5, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_VehicleLength_sequence[] = {
+ { &hf_itsv1_vehicleLengthValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_VehicleLengthValue },
+ { &hf_itsv1_vehicleLengthConfidenceIndication, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_VehicleLengthConfidenceIndication },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_VehicleLength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_VehicleLength, itsv1_VehicleLength_sequence);
+
+ return offset;
+}
+
+
+static const value_string itsv1_VehicleWidth_vals[] = {
+ { 1, "tenCentimeters" },
+ { 61, "outOfRange" },
+ { 62, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_VehicleWidth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 62U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_PathHistory_sequence_of[1] = {
+ { &hf_itsv1_PathHistory_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PathPoint },
+};
+
+static int
+dissect_itsv1_PathHistory(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_PathHistory, itsv1_PathHistory_sequence_of,
+ 0, 40, FALSE);
+
+ return offset;
+}
+
+
+static const int * itsv1_EmergencyPriority_bits[] = {
+ &hf_itsv1_EmergencyPriority_requestForRightOfWay,
+ &hf_itsv1_EmergencyPriority_requestForFreeCrossingAtATrafficLight,
+ NULL
+};
+
+static int
+dissect_itsv1_EmergencyPriority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 2, 2, FALSE, itsv1_EmergencyPriority_bits, 2, NULL, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_InformationQuality_vals[] = {
+ { 0, "unavailable" },
+ { 1, "lowest" },
+ { 7, "highest" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_InformationQuality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 7U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_RoadType_vals[] = {
+ { 0, "urban-NoStructuralSeparationToOppositeLanes" },
+ { 1, "urban-WithStructuralSeparationToOppositeLanes" },
+ { 2, "nonUrban-NoStructuralSeparationToOppositeLanes" },
+ { 3, "nonUrban-WithStructuralSeparationToOppositeLanes" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_RoadType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_SteeringWheelAngleValue_vals[] = {
+ { 0, "straight" },
+ { -1, "onePointFiveDegreesToRight" },
+ { 1, "onePointFiveDegreesToLeft" },
+ { 512, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_SteeringWheelAngleValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -511, 512U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_SteeringWheelAngleConfidence_vals[] = {
+ { 1, "equalOrWithinOnePointFiveDegree" },
+ { 126, "outOfRange" },
+ { 127, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_SteeringWheelAngleConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 127U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_SteeringWheelAngle_sequence[] = {
+ { &hf_itsv1_steeringWheelAngleValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SteeringWheelAngleValue },
+ { &hf_itsv1_steeringWheelAngleConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SteeringWheelAngleConfidence },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_SteeringWheelAngle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_SteeringWheelAngle, itsv1_SteeringWheelAngle_sequence);
+
+ return offset;
+}
+
+
+static const val64_string itsv1_TimestampIts_vals[] = {
+ { 0, "utcStartOf2004" },
+ { 1, "oneMillisecAfterUTCStartOf2004" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_TimestampIts(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
+ 0U, G_GUINT64_CONSTANT(4398046511103), NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_VehicleRole_vals[] = {
+ { 0, "default" },
+ { 1, "publicTransport" },
+ { 2, "specialTransport" },
+ { 3, "dangerousGoods" },
+ { 4, "roadWork" },
+ { 5, "rescue" },
+ { 6, "emergency" },
+ { 7, "safetyCar" },
+ { 8, "agriculture" },
+ { 9, "commercial" },
+ { 10, "military" },
+ { 11, "roadOperator" },
+ { 12, "taxi" },
+ { 13, "reserved1" },
+ { 14, "reserved2" },
+ { 15, "reserved3" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_VehicleRole(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 16, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_YawRateValue_vals[] = {
+ { 0, "straight" },
+ { -1, "degSec-000-01ToRight" },
+ { 1, "degSec-000-01ToLeft" },
+ { 32767, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_YawRateValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -32766, 32767U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_YawRateConfidence_vals[] = {
+ { 0, "degSec-000-01" },
+ { 1, "degSec-000-05" },
+ { 2, "degSec-000-10" },
+ { 3, "degSec-001-00" },
+ { 4, "degSec-005-00" },
+ { 5, "degSec-010-00" },
+ { 6, "degSec-100-00" },
+ { 7, "outOfRange" },
+ { 8, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_YawRateConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 9, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_YawRate_sequence[] = {
+ { &hf_itsv1_yawRateValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_YawRateValue },
+ { &hf_itsv1_yawRateConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_YawRateConfidence },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_YawRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_YawRate, itsv1_YawRate_sequence);
+
+ return offset;
+}
+
+
+static const value_string itsv1_ProtectedZoneType_vals[] = {
+ { 0, "cenDsrcTolling" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_ProtectedZoneType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, TRUE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_RelevanceDistance_vals[] = {
+ { 0, "lessThan50m" },
+ { 1, "lessThan100m" },
+ { 2, "lessThan200m" },
+ { 3, "lessThan500m" },
+ { 4, "lessThan1000m" },
+ { 5, "lessThan5km" },
+ { 6, "lessThan10km" },
+ { 7, "over10km" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_RelevanceDistance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_RelevanceTrafficDirection_vals[] = {
+ { 0, "allTrafficDirections" },
+ { 1, "upstreamTraffic" },
+ { 2, "downstreamTraffic" },
+ { 3, "oppositeTraffic" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_RelevanceTrafficDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string itsv1_TransmissionInterval_vals[] = {
+ { 1, "oneMilliSecond" },
+ { 10000, "tenSeconds" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_TransmissionInterval(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 10000U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_ValidityDuration_vals[] = {
+ { 0, "timeOfDetection" },
+ { 1, "oneSecondAfterDetection" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_ValidityDuration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 86400U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_itsv1_SequenceNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 65535U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_ActionID_sequence[] = {
+ { &hf_itsv1_originatingStationID, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_StationID },
+ { &hf_itsv1_sequenceNumber, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SequenceNumber },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_ActionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_ActionID, itsv1_ActionID_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_ItineraryPath_sequence_of[1] = {
+ { &hf_itsv1_ItineraryPath_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_ReferencePosition },
+};
+
+static int
+dissect_itsv1_ItineraryPath(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_ItineraryPath, itsv1_ItineraryPath_sequence_of,
+ 1, 40, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_ProtectedZoneRadius_vals[] = {
+ { 1, "oneMeter" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_ProtectedZoneRadius(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 255U, NULL, TRUE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_itsv1_ProtectedZoneID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 134217727U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_ProtectedCommunicationZone_sequence[] = {
+ { &hf_itsv1_protectedZoneType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_ProtectedZoneType },
+ { &hf_itsv1_expiryTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_TimestampIts },
+ { &hf_itsv1_protectedZoneLatitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Latitude },
+ { &hf_itsv1_protectedZoneLongitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Longitude },
+ { &hf_itsv1_protectedZoneRadius, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_ProtectedZoneRadius },
+ { &hf_itsv1_protectedZoneID, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_ProtectedZoneID },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_ProtectedCommunicationZone(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_ProtectedCommunicationZone, itsv1_ProtectedCommunicationZone_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_Traces_sequence_of[1] = {
+ { &hf_itsv1_Traces_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PathHistory },
+};
+
+static int
+dissect_itsv1_Traces(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_Traces, itsv1_Traces_sequence_of,
+ 1, 7, FALSE);
+
+ return offset;
+}
+
+
+static const value_string itsv1_NumberOfOccupants_vals[] = {
+ { 1, "oneOccupant" },
+ { 127, "unavailable" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_itsv1_NumberOfOccupants(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 127U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_PositionOfPillars_sequence_of[1] = {
+ { &hf_itsv1_PositionOfPillars_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PosPillar },
+};
+
+static int
+dissect_itsv1_PositionOfPillars(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_PositionOfPillars, itsv1_PositionOfPillars_sequence_of,
+ 1, 3, TRUE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_RestrictedTypes_sequence_of[1] = {
+ { &hf_itsv1_RestrictedTypes_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_StationType },
+};
+
+static int
+dissect_itsv1_RestrictedTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_RestrictedTypes, itsv1_RestrictedTypes_sequence_of,
+ 1, 3, TRUE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_EventPoint_sequence[] = {
+ { &hf_itsv1_eventPosition , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DeltaReferencePosition },
+ { &hf_itsv1_eventDeltaTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_PathDeltaTime },
+ { &hf_itsv1_informationQuality, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_InformationQuality },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_EventPoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_EventPoint, itsv1_EventPoint_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_EventHistory_sequence_of[1] = {
+ { &hf_itsv1_EventHistory_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_EventPoint },
+};
+
+static int
+dissect_itsv1_EventHistory(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_EventHistory, itsv1_EventHistory_sequence_of,
+ 1, 23, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_ProtectedCommunicationZonesRSU_sequence_of[1] = {
+ { &hf_itsv1_ProtectedCommunicationZonesRSU_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_ProtectedCommunicationZone },
+};
+
+static int
+dissect_itsv1_ProtectedCommunicationZonesRSU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_ProtectedCommunicationZonesRSU, itsv1_ProtectedCommunicationZonesRSU_sequence_of,
+ 1, 16, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_itsv1_CenDsrcTollingZoneID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_itsv1_ProtectedZoneID(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+static const per_sequence_t itsv1_CenDsrcTollingZone_sequence[] = {
+ { &hf_itsv1_protectedZoneLatitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Latitude },
+ { &hf_itsv1_protectedZoneLongitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Longitude },
+ { &hf_itsv1_cenDsrcTollingZoneID, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_CenDsrcTollingZoneID },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_itsv1_CenDsrcTollingZone(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_itsv1_CenDsrcTollingZone, itsv1_CenDsrcTollingZone_sequence);
+
+ return offset;
+}
+
+
/* --- Module AVIAEINumberingAndDataStructures --- --- --- */
@@ -6917,7 +9102,7 @@ static const per_sequence_t ivi_IviStructure_sequence[] = {
static int
dissect_ivi_IviStructure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 303 "./asn1/its/its.cnf"
+#line 322 "./asn1/its/its.cnf"
actx->private_data = (void*)wmem_new0(wmem_packet_scope(), its_private_data_t);
col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "IVIM");
col_set_str(actx->pinfo->cinfo, COL_INFO, "IVIM");
@@ -7258,14 +9443,14 @@ static const per_sequence_t dsrc_AdvisorySpeed_sequence[] = {
static int
dissect_dsrc_AdvisorySpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 382 "./asn1/its/its.cnf"
+#line 401 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_AdvisorySpeed;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_AdvisorySpeed, dsrc_AdvisorySpeed_sequence);
-#line 386 "./asn1/its/its.cnf"
+#line 405 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -7310,14 +9495,14 @@ static const per_sequence_t dsrc_MovementEvent_sequence[] = {
static int
dissect_dsrc_MovementEvent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 454 "./asn1/its/its.cnf"
+#line 473 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_MovementEvent;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_MovementEvent, dsrc_MovementEvent_sequence);
-#line 458 "./asn1/its/its.cnf"
+#line 477 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -7392,14 +9577,14 @@ static const per_sequence_t dsrc_ConnectionManeuverAssist_sequence[] = {
static int
dissect_dsrc_ConnectionManeuverAssist(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 400 "./asn1/its/its.cnf"
+#line 419 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_ConnectionManeuverAssist;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_ConnectionManeuverAssist, dsrc_ConnectionManeuverAssist_sequence);
-#line 404 "./asn1/its/its.cnf"
+#line 423 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -7445,14 +9630,14 @@ static const per_sequence_t dsrc_MovementState_sequence[] = {
static int
dissect_dsrc_MovementState(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 463 "./asn1/its/its.cnf"
+#line 482 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_MovementState;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_MovementState, dsrc_MovementState_sequence);
-#line 467 "./asn1/its/its.cnf"
+#line 486 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -7503,14 +9688,14 @@ static const per_sequence_t dsrc_IntersectionState_sequence[] = {
static int
dissect_dsrc_IntersectionState(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 427 "./asn1/its/its.cnf"
+#line 446 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_IntersectionState;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_IntersectionState, dsrc_IntersectionState_sequence);
-#line 431 "./asn1/its/its.cnf"
+#line 450 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -7555,7 +9740,7 @@ static const per_sequence_t dsrc_SPAT_sequence[] = {
static int
dissect_dsrc_SPAT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 333 "./asn1/its/its.cnf"
+#line 352 "./asn1/its/its.cnf"
its_private_data_t *regext = wmem_new0(wmem_packet_scope(), its_private_data_t);
actx->private_data = (void*)regext;
col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "SPATEM");
@@ -7657,14 +9842,14 @@ static const per_sequence_t dsrc_SignalRequest_sequence[] = {
static int
dissect_dsrc_SignalRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 544 "./asn1/its/its.cnf"
+#line 563 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_SignalRequest;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_SignalRequest, dsrc_SignalRequest_sequence);
-#line 548 "./asn1/its/its.cnf"
+#line 567 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -7696,14 +9881,14 @@ static const per_sequence_t dsrc_SignalRequestPackage_sequence[] = {
static int
dissect_dsrc_SignalRequestPackage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 535 "./asn1/its/its.cnf"
+#line 554 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_SignalRequestPackage;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_SignalRequestPackage, dsrc_SignalRequestPackage_sequence);
-#line 539 "./asn1/its/its.cnf"
+#line 558 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -7895,14 +10080,14 @@ static const per_sequence_t dsrc_RequestorType_sequence[] = {
static int
dissect_dsrc_RequestorType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 508 "./asn1/its/its.cnf"
+#line 527 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_RequestorType;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_RequestorType, dsrc_RequestorType_sequence);
-#line 512 "./asn1/its/its.cnf"
+#line 531 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -7943,14 +10128,14 @@ static const per_sequence_t dsrc_Position3D_sequence[] = {
static int
dissect_dsrc_Position3D(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 490 "./asn1/its/its.cnf"
+#line 509 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_Position3D;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_Position3D, dsrc_Position3D_sequence);
-#line 494 "./asn1/its/its.cnf"
+#line 513 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -8110,14 +10295,14 @@ static const per_sequence_t dsrc_RequestorDescription_sequence[] = {
static int
dissect_dsrc_RequestorDescription(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 499 "./asn1/its/its.cnf"
+#line 518 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_RequestorDescription;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_RequestorDescription, dsrc_RequestorDescription_sequence);
-#line 503 "./asn1/its/its.cnf"
+#line 522 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -8150,7 +10335,7 @@ static const per_sequence_t dsrc_SignalRequestMessage_sequence[] = {
static int
dissect_dsrc_SignalRequestMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 317 "./asn1/its/its.cnf"
+#line 336 "./asn1/its/its.cnf"
its_private_data_t *regext = wmem_new0(wmem_packet_scope(), its_private_data_t);
actx->private_data = (void*)regext;
col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "SREM");
@@ -8232,14 +10417,14 @@ static const per_sequence_t dsrc_SignalStatusPackage_sequence[] = {
static int
dissect_dsrc_SignalStatusPackage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 553 "./asn1/its/its.cnf"
+#line 572 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_SignalStatusPackage;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_SignalStatusPackage, dsrc_SignalStatusPackage_sequence);
-#line 557 "./asn1/its/its.cnf"
+#line 576 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -8284,14 +10469,14 @@ static const per_sequence_t dsrc_SignalStatus_sequence[] = {
static int
dissect_dsrc_SignalStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 562 "./asn1/its/its.cnf"
+#line 581 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_SignalStatus;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_SignalStatus, dsrc_SignalStatus_sequence);
-#line 566 "./asn1/its/its.cnf"
+#line 585 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -8337,7 +10522,7 @@ static const per_sequence_t dsrc_SignalStatusMessage_sequence[] = {
static int
dissect_dsrc_SignalStatusMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 309 "./asn1/its/its.cnf"
+#line 328 "./asn1/its/its.cnf"
its_private_data_t *regext = wmem_new0(wmem_packet_scope(), its_private_data_t);
actx->private_data = (void*)regext;
col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "SSEM");
@@ -8691,14 +10876,14 @@ static const per_sequence_t dsrc_LaneAttributes_sequence[] = {
static int
dissect_dsrc_LaneAttributes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 436 "./asn1/its/its.cnf"
+#line 455 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_LaneAttributes;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_LaneAttributes, dsrc_LaneAttributes_sequence);
-#line 440 "./asn1/its/its.cnf"
+#line 459 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -8921,7 +11106,7 @@ static const per_choice_t dsrc_NodeOffsetPointXY_choice[] = {
static int
dissect_dsrc_NodeOffsetPointXY(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 481 "./asn1/its/its.cnf"
+#line 500 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_NodeOffsetPointXY;
@@ -8929,7 +11114,7 @@ dissect_dsrc_NodeOffsetPointXY(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
ett_dsrc_NodeOffsetPointXY, dsrc_NodeOffsetPointXY_choice,
NULL);
-#line 485 "./asn1/its/its.cnf"
+#line 504 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -9110,7 +11295,7 @@ static const per_choice_t dsrc_LaneDataAttribute_choice[] = {
static int
dissect_dsrc_LaneDataAttribute(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 445 "./asn1/its/its.cnf"
+#line 464 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_LaneDataAttribute;
@@ -9118,7 +11303,7 @@ dissect_dsrc_LaneDataAttribute(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
ett_dsrc_LaneDataAttribute, dsrc_LaneDataAttribute_choice,
NULL);
-#line 449 "./asn1/its/its.cnf"
+#line 468 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -9166,14 +11351,14 @@ static const per_sequence_t dsrc_NodeAttributeSetXY_sequence[] = {
static int
dissect_dsrc_NodeAttributeSetXY(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 472 "./asn1/its/its.cnf"
+#line 491 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_NodeAttributeSetXY;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_NodeAttributeSetXY, dsrc_NodeAttributeSetXY_sequence);
-#line 476 "./asn1/its/its.cnf"
+#line 495 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -9310,14 +11495,14 @@ static const per_sequence_t dsrc_ComputedLane_sequence[] = {
static int
dissect_dsrc_ComputedLane(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 391 "./asn1/its/its.cnf"
+#line 410 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_ComputedLane;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_ComputedLane, dsrc_ComputedLane_sequence);
-#line 395 "./asn1/its/its.cnf"
+#line 414 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -9437,14 +11622,14 @@ static const per_sequence_t dsrc_GenericLane_sequence[] = {
static int
dissect_dsrc_GenericLane(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 409 "./asn1/its/its.cnf"
+#line 428 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_GenericLane;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_GenericLane, dsrc_GenericLane_sequence);
-#line 413 "./asn1/its/its.cnf"
+#line 432 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -9472,14 +11657,14 @@ static const per_sequence_t dsrc_SignalControlZone_sequence[] = {
static int
dissect_dsrc_SignalControlZone(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 571 "./asn1/its/its.cnf"
+#line 590 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_SignalControlZone;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_SignalControlZone, dsrc_SignalControlZone_sequence);
-#line 575 "./asn1/its/its.cnf"
+#line 594 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -9529,14 +11714,14 @@ static const per_sequence_t dsrc_IntersectionGeometry_sequence[] = {
static int
dissect_dsrc_IntersectionGeometry(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 418 "./asn1/its/its.cnf"
+#line 437 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_IntersectionGeometry;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_IntersectionGeometry, dsrc_IntersectionGeometry_sequence);
-#line 422 "./asn1/its/its.cnf"
+#line 441 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -9624,14 +11809,14 @@ static const per_sequence_t dsrc_RoadSegment_sequence[] = {
static int
dissect_dsrc_RoadSegment(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 526 "./asn1/its/its.cnf"
+#line 545 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_RoadSegment;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_dsrc_RoadSegment, dsrc_RoadSegment_sequence);
-#line 530 "./asn1/its/its.cnf"
+#line 549 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -9735,7 +11920,7 @@ static const per_choice_t dsrc_RestrictionUserType_choice[] = {
static int
dissect_dsrc_RestrictionUserType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 517 "./asn1/its/its.cnf"
+#line 536 "./asn1/its/its.cnf"
enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
((its_private_data_t*)actx->private_data)->type = Reg_RestrictionUserType;
@@ -9743,7 +11928,7 @@ dissect_dsrc_RestrictionUserType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
ett_dsrc_RestrictionUserType, dsrc_RestrictionUserType_choice,
NULL);
-#line 521 "./asn1/its/its.cnf"
+#line 540 "./asn1/its/its.cnf"
((its_private_data_t*)actx->private_data)->type = save;
return offset;
@@ -9822,7 +12007,7 @@ static const per_sequence_t dsrc_MapData_sequence[] = {
static int
dissect_dsrc_MapData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 325 "./asn1/its/its.cnf"
+#line 344 "./asn1/its/its.cnf"
its_private_data_t *regext = wmem_new0(wmem_packet_scope(), its_private_data_t);
actx->private_data = (void*)regext;
col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "MAPEM");
@@ -9928,7 +12113,7 @@ static const per_sequence_t AddGrpC_ConnectionManeuverAssist_addGrpC_sequence[]
static int
dissect_AddGrpC_ConnectionManeuverAssist_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 342 "./asn1/its/its.cnf"
+#line 361 "./asn1/its/its.cnf"
actx->private_data = wmem_new0(wmem_packet_scope(), its_private_data_t);
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -9945,7 +12130,7 @@ static const per_sequence_t AddGrpC_ConnectionTrajectory_addGrpC_sequence[] = {
static int
dissect_AddGrpC_ConnectionTrajectory_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 347 "./asn1/its/its.cnf"
+#line 366 "./asn1/its/its.cnf"
actx->private_data = wmem_new0(wmem_packet_scope(), its_private_data_t);
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -9981,7 +12166,7 @@ static const per_sequence_t AddGrpC_Control_addGrpC_sequence[] = {
static int
dissect_AddGrpC_Control_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 352 "./asn1/its/its.cnf"
+#line 371 "./asn1/its/its.cnf"
actx->private_data = wmem_new0(wmem_packet_scope(), its_private_data_t);
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -10028,7 +12213,7 @@ static const per_sequence_t AddGrpC_IntersectionState_addGrpC_sequence[] = {
static int
dissect_AddGrpC_IntersectionState_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 357 "./asn1/its/its.cnf"
+#line 376 "./asn1/its/its.cnf"
actx->private_data = wmem_new0(wmem_packet_scope(), its_private_data_t);
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -10075,7 +12260,7 @@ static const per_sequence_t AddGrpC_MapData_addGrpC_sequence[] = {
static int
dissect_AddGrpC_MapData_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 362 "./asn1/its/its.cnf"
+#line 381 "./asn1/its/its.cnf"
actx->private_data = wmem_new0(wmem_packet_scope(), its_private_data_t);
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -10092,7 +12277,7 @@ static const per_sequence_t AddGrpC_Position3D_addGrpC_sequence[] = {
static int
dissect_AddGrpC_Position3D_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 367 "./asn1/its/its.cnf"
+#line 386 "./asn1/its/its.cnf"
actx->private_data = wmem_new0(wmem_packet_scope(), its_private_data_t);
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -10129,7 +12314,7 @@ static const per_sequence_t AddGrpC_RestrictionUserType_addGrpC_sequence[] = {
static int
dissect_AddGrpC_RestrictionUserType_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 372 "./asn1/its/its.cnf"
+#line 391 "./asn1/its/its.cnf"
actx->private_data = wmem_new0(wmem_packet_scope(), its_private_data_t);
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -10146,7 +12331,7 @@ static const per_sequence_t AddGrpC_SignalStatusPackage_addGrpC_sequence[] = {
static int
dissect_AddGrpC_SignalStatusPackage_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 377 "./asn1/its/its.cnf"
+#line 396 "./asn1/its/its.cnf"
actx->private_data = wmem_new0(wmem_packet_scope(), its_private_data_t);
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -10244,6 +12429,327 @@ static int dissect_AddGrpC_SignalStatusPackage_addGrpC_PDU(tvbuff_t *tvb _U_, pa
/* --- Module RTCMEM-PDU-Descriptions --- --- --- */
+/* --- Module CAMv1-PDU-Descriptions --- --- --- */
+
+
+static const value_string camv1_GenerationDeltaTime_vals[] = {
+ { 1, "oneMilliSec" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_camv1_GenerationDeltaTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 65535U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t camv1_BasicContainer_sequence[] = {
+ { &hf_camv1_stationType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_StationType },
+ { &hf_camv1_referencePosition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_ReferencePosition },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_camv1_BasicContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_camv1_BasicContainer, camv1_BasicContainer_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t camv1_BasicVehicleContainerHighFrequency_sequence[] = {
+ { &hf_camv1_heading , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Heading },
+ { &hf_camv1_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Speed },
+ { &hf_camv1_driveDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DriveDirection },
+ { &hf_camv1_vehicleLength , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_VehicleLength },
+ { &hf_camv1_vehicleWidth , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_VehicleWidth },
+ { &hf_camv1_longitudinalAcceleration, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LongitudinalAcceleration },
+ { &hf_camv1_curvature , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Curvature },
+ { &hf_camv1_curvatureCalculationMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_CurvatureCalculationMode },
+ { &hf_camv1_yawRate , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_YawRate },
+ { &hf_camv1_accelerationControl, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_AccelerationControl },
+ { &hf_camv1_lanePosition , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_LanePosition },
+ { &hf_camv1_steeringWheelAngle, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_SteeringWheelAngle },
+ { &hf_camv1_lateralAcceleration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_LateralAcceleration },
+ { &hf_camv1_verticalAcceleration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_VerticalAcceleration },
+ { &hf_camv1_performanceClass, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_PerformanceClass },
+ { &hf_camv1_cenDsrcTollingZone, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_CenDsrcTollingZone },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_camv1_BasicVehicleContainerHighFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_camv1_BasicVehicleContainerHighFrequency, camv1_BasicVehicleContainerHighFrequency_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t camv1_RSUContainerHighFrequency_sequence[] = {
+ { &hf_camv1_protectedCommunicationZonesRSU, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_ProtectedCommunicationZonesRSU },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_camv1_RSUContainerHighFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_camv1_RSUContainerHighFrequency, camv1_RSUContainerHighFrequency_sequence);
+
+ return offset;
+}
+
+
+static const value_string camv1_HighFrequencyContainer_vals[] = {
+ { 0, "basicVehicleContainerHighFrequency" },
+ { 1, "rsuContainerHighFrequency" },
+ { 0, NULL }
+};
+
+static const per_choice_t camv1_HighFrequencyContainer_choice[] = {
+ { 0, &hf_camv1_basicVehicleContainerHighFrequency, ASN1_EXTENSION_ROOT , dissect_camv1_BasicVehicleContainerHighFrequency },
+ { 1, &hf_camv1_rsuContainerHighFrequency, ASN1_EXTENSION_ROOT , dissect_camv1_RSUContainerHighFrequency },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_camv1_HighFrequencyContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_camv1_HighFrequencyContainer, camv1_HighFrequencyContainer_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t camv1_BasicVehicleContainerLowFrequency_sequence[] = {
+ { &hf_camv1_vehicleRole , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_VehicleRole },
+ { &hf_camv1_exteriorLights, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_ExteriorLights },
+ { &hf_camv1_pathHistory , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PathHistory },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_camv1_BasicVehicleContainerLowFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_camv1_BasicVehicleContainerLowFrequency, camv1_BasicVehicleContainerLowFrequency_sequence);
+
+ return offset;
+}
+
+
+static const value_string camv1_LowFrequencyContainer_vals[] = {
+ { 0, "basicVehicleContainerLowFrequency" },
+ { 0, NULL }
+};
+
+static const per_choice_t camv1_LowFrequencyContainer_choice[] = {
+ { 0, &hf_camv1_basicVehicleContainerLowFrequency, ASN1_EXTENSION_ROOT , dissect_camv1_BasicVehicleContainerLowFrequency },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_camv1_LowFrequencyContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_camv1_LowFrequencyContainer, camv1_LowFrequencyContainer_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t camv1_PublicTransportContainer_sequence[] = {
+ { &hf_camv1_embarkationStatus, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_EmbarkationStatus },
+ { &hf_camv1_ptActivation , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_PtActivation },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_camv1_PublicTransportContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_camv1_PublicTransportContainer, camv1_PublicTransportContainer_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t camv1_SpecialTransportContainer_sequence[] = {
+ { &hf_camv1_specialTransportType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SpecialTransportType },
+ { &hf_camv1_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LightBarSirenInUse },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_camv1_SpecialTransportContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_camv1_SpecialTransportContainer, camv1_SpecialTransportContainer_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t camv1_DangerousGoodsContainer_sequence[] = {
+ { &hf_camv1_dangerousGoodsBasic, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DangerousGoodsBasic },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_camv1_DangerousGoodsContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_camv1_DangerousGoodsContainer, camv1_DangerousGoodsContainer_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t camv1_RoadWorksContainerBasic_sequence[] = {
+ { &hf_camv1_roadworksSubCauseCode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_RoadworksSubCauseCode },
+ { &hf_camv1_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LightBarSirenInUse },
+ { &hf_camv1_closedLanes , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_ClosedLanes },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_camv1_RoadWorksContainerBasic(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_camv1_RoadWorksContainerBasic, camv1_RoadWorksContainerBasic_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t camv1_RescueContainer_sequence[] = {
+ { &hf_camv1_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LightBarSirenInUse },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_camv1_RescueContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_camv1_RescueContainer, camv1_RescueContainer_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t camv1_EmergencyContainer_sequence[] = {
+ { &hf_camv1_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LightBarSirenInUse },
+ { &hf_camv1_incidentIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_CauseCode },
+ { &hf_camv1_emergencyPriority, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_EmergencyPriority },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_camv1_EmergencyContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_camv1_EmergencyContainer, camv1_EmergencyContainer_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t camv1_SafetyCarContainer_sequence[] = {
+ { &hf_camv1_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LightBarSirenInUse },
+ { &hf_camv1_incidentIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_CauseCode },
+ { &hf_camv1_trafficRule , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_TrafficRule },
+ { &hf_camv1_speedLimit , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_SpeedLimit },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_camv1_SafetyCarContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_camv1_SafetyCarContainer, camv1_SafetyCarContainer_sequence);
+
+ return offset;
+}
+
+
+static const value_string camv1_SpecialVehicleContainer_vals[] = {
+ { 0, "publicTransportContainer" },
+ { 1, "specialTransportContainer" },
+ { 2, "dangerousGoodsContainer" },
+ { 3, "roadWorksContainerBasic" },
+ { 4, "rescueContainer" },
+ { 5, "emergencyContainer" },
+ { 6, "safetyCarContainer" },
+ { 0, NULL }
+};
+
+static const per_choice_t camv1_SpecialVehicleContainer_choice[] = {
+ { 0, &hf_camv1_publicTransportContainer, ASN1_EXTENSION_ROOT , dissect_camv1_PublicTransportContainer },
+ { 1, &hf_camv1_specialTransportContainer, ASN1_EXTENSION_ROOT , dissect_camv1_SpecialTransportContainer },
+ { 2, &hf_camv1_dangerousGoodsContainer, ASN1_EXTENSION_ROOT , dissect_camv1_DangerousGoodsContainer },
+ { 3, &hf_camv1_roadWorksContainerBasic, ASN1_EXTENSION_ROOT , dissect_camv1_RoadWorksContainerBasic },
+ { 4, &hf_camv1_rescueContainer, ASN1_EXTENSION_ROOT , dissect_camv1_RescueContainer },
+ { 5, &hf_camv1_emergencyContainer, ASN1_EXTENSION_ROOT , dissect_camv1_EmergencyContainer },
+ { 6, &hf_camv1_safetyCarContainer, ASN1_EXTENSION_ROOT , dissect_camv1_SafetyCarContainer },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_camv1_SpecialVehicleContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_camv1_SpecialVehicleContainer, camv1_SpecialVehicleContainer_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t camv1_CamParameters_sequence[] = {
+ { &hf_camv1_basicContainer, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_camv1_BasicContainer },
+ { &hf_camv1_highFrequencyContainer, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_camv1_HighFrequencyContainer },
+ { &hf_camv1_lowFrequencyContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_camv1_LowFrequencyContainer },
+ { &hf_camv1_specialVehicleContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_camv1_SpecialVehicleContainer },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_camv1_CamParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_camv1_CamParameters, camv1_CamParameters_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t camv1_CoopAwarenessV1_sequence[] = {
+ { &hf_camv1_generationDeltaTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_camv1_GenerationDeltaTime },
+ { &hf_camv1_camParameters , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_camv1_CamParameters },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_camv1_CoopAwarenessV1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 286 "./asn1/its/its.cnf"
+ actx->private_data = (void*)wmem_new0(wmem_packet_scope(), its_private_data_t);
+ col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "CAMv1");
+ col_set_str(actx->pinfo->cinfo, COL_INFO, "CAMv1");
+
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_camv1_CoopAwarenessV1, camv1_CoopAwarenessV1_sequence);
+
+ return offset;
+}
+
+/*--- PDUs ---*/
+
+static int dissect_camv1_CoopAwarenessV1_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
+ int offset = 0;
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
+ offset = dissect_camv1_CoopAwarenessV1(tvb, offset, &asn1_ctx, tree, hf_camv1_camv1_CoopAwarenessV1_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
+
+
/* --- Module CAM-PDU-Descriptions --- --- --- */
@@ -10542,7 +13048,7 @@ static const per_sequence_t cam_CoopAwareness_sequence[] = {
static int
dissect_cam_CoopAwareness(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 273 "./asn1/its/its.cnf"
+#line 280 "./asn1/its/its.cnf"
actx->private_data = (void*)wmem_new0(wmem_packet_scope(), its_private_data_t);
col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "CAM");
col_set_str(actx->pinfo->cinfo, COL_INFO, "CAM");
@@ -10565,6 +13071,214 @@ static int dissect_cam_CoopAwareness_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _
}
+/* --- Module DENMv1-PDU-Descriptions --- --- --- */
+
+
+static const value_string denmv1_Termination_vals[] = {
+ { 0, "isCancellation" },
+ { 1, "isNegation" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_denmv1_Termination(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t denmv1_ManagementContainer_sequence[] = {
+ { &hf_denmv1_actionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_ActionID },
+ { &hf_denmv1_detectionTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_TimestampIts },
+ { &hf_denmv1_referenceTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_TimestampIts },
+ { &hf_denmv1_termination , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_denmv1_Termination },
+ { &hf_denmv1_eventPosition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_ReferencePosition },
+ { &hf_denmv1_relevanceDistance, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_RelevanceDistance },
+ { &hf_denmv1_relevanceTrafficDirection, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_RelevanceTrafficDirection },
+ { &hf_denmv1_validityDuration, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_ValidityDuration },
+ { &hf_denmv1_transmissionInterval, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_TransmissionInterval },
+ { &hf_denmv1_stationType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_StationType },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_denmv1_ManagementContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_denmv1_ManagementContainer, denmv1_ManagementContainer_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t denmv1_SituationContainer_sequence[] = {
+ { &hf_denmv1_informationQuality, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_InformationQuality },
+ { &hf_denmv1_eventType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_CauseCode },
+ { &hf_denmv1_linkedCause , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_CauseCode },
+ { &hf_denmv1_eventHistory , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_EventHistory },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_denmv1_SituationContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_denmv1_SituationContainer, denmv1_SituationContainer_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t denmv1_LocationContainer_sequence[] = {
+ { &hf_denmv1_eventSpeed , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_Speed },
+ { &hf_denmv1_eventPositionHeading, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_Heading },
+ { &hf_denmv1_traces , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_Traces },
+ { &hf_denmv1_roadType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_RoadType },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_denmv1_LocationContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_denmv1_LocationContainer, denmv1_LocationContainer_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t denmv1_ImpactReductionContainer_sequence[] = {
+ { &hf_denmv1_heightLonCarrLeft, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_HeightLonCarr },
+ { &hf_denmv1_heightLonCarrRight, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_HeightLonCarr },
+ { &hf_denmv1_posLonCarrLeft, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PosLonCarr },
+ { &hf_denmv1_posLonCarrRight, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PosLonCarr },
+ { &hf_denmv1_positionOfPillars, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PositionOfPillars },
+ { &hf_denmv1_posCentMass , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PosCentMass },
+ { &hf_denmv1_wheelBaseVehicle, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_WheelBaseVehicle },
+ { &hf_denmv1_turningRadius, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_TurningRadius },
+ { &hf_denmv1_posFrontAx , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PosFrontAx },
+ { &hf_denmv1_positionOfOccupants, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PositionOfOccupants },
+ { &hf_denmv1_vehicleMass , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_VehicleMass },
+ { &hf_denmv1_requestResponseIndication, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_RequestResponseIndication },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_denmv1_ImpactReductionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_denmv1_ImpactReductionContainer, denmv1_ImpactReductionContainer_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t denmv1_ReferenceDenms_sequence_of[1] = {
+ { &hf_denmv1_ReferenceDenms_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_ActionID },
+};
+
+static int
+dissect_denmv1_ReferenceDenms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_denmv1_ReferenceDenms, denmv1_ReferenceDenms_sequence_of,
+ 1, 8, TRUE);
+
+ return offset;
+}
+
+
+static const per_sequence_t denmv1_RoadWorksContainerExtended_sequence[] = {
+ { &hf_denmv1_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_LightBarSirenInUse },
+ { &hf_denmv1_closedLanes , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_ClosedLanes },
+ { &hf_denmv1_restriction , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_RestrictedTypes },
+ { &hf_denmv1_speedLimit , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_SpeedLimit },
+ { &hf_denmv1_incidentIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_CauseCode },
+ { &hf_denmv1_recommendedPath, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_ItineraryPath },
+ { &hf_denmv1_startingPointSpeedLimit, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_DeltaReferencePosition },
+ { &hf_denmv1_trafficFlowRule, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_TrafficRule },
+ { &hf_denmv1_referenceDenms, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_denmv1_ReferenceDenms },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_denmv1_RoadWorksContainerExtended(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_denmv1_RoadWorksContainerExtended, denmv1_RoadWorksContainerExtended_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t denmv1_StationaryVehicleContainer_sequence[] = {
+ { &hf_denmv1_stationarySince, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_StationarySince },
+ { &hf_denmv1_stationaryCause, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_CauseCode },
+ { &hf_denmv1_carryingDangerousGoods, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_DangerousGoodsExtended },
+ { &hf_denmv1_numberOfOccupants, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_NumberOfOccupants },
+ { &hf_denmv1_vehicleIdentification, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_VehicleIdentification },
+ { &hf_denmv1_energyStorageType, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_EnergyStorageType },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_denmv1_StationaryVehicleContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_denmv1_StationaryVehicleContainer, denmv1_StationaryVehicleContainer_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t denmv1_AlacarteContainer_sequence[] = {
+ { &hf_denmv1_lanePosition , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_LanePosition },
+ { &hf_denmv1_impactReduction, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_denmv1_ImpactReductionContainer },
+ { &hf_denmv1_externalTemperature, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_Temperature },
+ { &hf_denmv1_roadWorks , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_denmv1_RoadWorksContainerExtended },
+ { &hf_denmv1_positioningSolution, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_PositioningSolutionType },
+ { &hf_denmv1_stationaryVehicle, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_denmv1_StationaryVehicleContainer },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_denmv1_AlacarteContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_denmv1_AlacarteContainer, denmv1_AlacarteContainer_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t denmv1_DecentralizedEnvironmentalNotificationMessageV1_sequence[] = {
+ { &hf_denmv1_management , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_denmv1_ManagementContainer },
+ { &hf_denmv1_situation , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_denmv1_SituationContainer },
+ { &hf_denmv1_location , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_denmv1_LocationContainer },
+ { &hf_denmv1_alacarte , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_denmv1_AlacarteContainer },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_denmv1_DecentralizedEnvironmentalNotificationMessageV1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 298 "./asn1/its/its.cnf"
+ actx->private_data = (void*)wmem_new0(wmem_packet_scope(), its_private_data_t);
+ col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "DENMv1");
+ col_set_str(actx->pinfo->cinfo, COL_INFO, "DENMv1");
+
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_denmv1_DecentralizedEnvironmentalNotificationMessageV1, denmv1_DecentralizedEnvironmentalNotificationMessageV1_sequence);
+
+ return offset;
+}
+
+/*--- PDUs ---*/
+
+static int dissect_denmv1_DecentralizedEnvironmentalNotificationMessageV1_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
+ int offset = 0;
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
+ offset = dissect_denmv1_DecentralizedEnvironmentalNotificationMessageV1(tvb, offset, &asn1_ctx, tree, hf_denmv1_denmv1_DecentralizedEnvironmentalNotificationMessageV1_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
+
+
/* --- Module DENM-PDU-Descriptions --- --- --- */
@@ -10750,7 +13464,7 @@ static const per_sequence_t denm_DecentralizedEnvironmentalNotificationMessage_s
static int
dissect_denm_DecentralizedEnvironmentalNotificationMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 279 "./asn1/its/its.cnf"
+#line 292 "./asn1/its/its.cnf"
actx->private_data = (void*)wmem_new0(wmem_packet_scope(), its_private_data_t);
col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "DENM");
col_set_str(actx->pinfo->cinfo, COL_INFO, "DENM");
@@ -11854,7 +14568,7 @@ static const per_choice_t tistpg_TisTpgTransaction_choice[] = {
static int
dissect_tistpg_TisTpgTransaction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 297 "./asn1/its/its.cnf"
+#line 316 "./asn1/its/its.cnf"
actx->private_data = (void*)wmem_new0(wmem_packet_scope(), its_private_data_t);
col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "TISTPG");
col_set_str(actx->pinfo->cinfo, COL_INFO, "TISTPG");
@@ -11987,7 +14701,7 @@ dissect_evcsn_ChargingSpotType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_evcsn_TypeOfReceptacle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 619 "./asn1/its/its.cnf"
+#line 638 "./asn1/its/its.cnf"
tvbuff_t *parameter_tvb = NULL;
int len;
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
@@ -12161,7 +14875,7 @@ static const per_sequence_t evcsn_EVChargingSpotNotificationPOIMessage_sequence[
static int
dissect_evcsn_EVChargingSpotNotificationPOIMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 285 "./asn1/its/its.cnf"
+#line 304 "./asn1/its/its.cnf"
actx->private_data = (void*)wmem_new0(wmem_packet_scope(), its_private_data_t);
col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "EVCSN");
col_set_str(actx->pinfo->cinfo, COL_INFO, "EVCSN");
@@ -12665,7 +15379,7 @@ static const per_choice_t evrsr_EV_RSR_MessageBody_choice[] = {
static int
dissect_evrsr_EV_RSR_MessageBody(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 291 "./asn1/its/its.cnf"
+#line 310 "./asn1/its/its.cnf"
actx->private_data = (void*)wmem_new0(wmem_packet_scope(), its_private_data_t);
col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "EV-RSR");
col_set_str(actx->pinfo->cinfo, COL_INFO, "EV-RSR");
@@ -12690,7 +15404,7 @@ static int dissect_evrsr_EV_RSR_MessageBody_PDU(tvbuff_t *tvb _U_, packet_info *
/*--- End of included file: packet-its-fn.c ---*/
-#line 346 "./asn1/its/packet-its-template.c"
+#line 348 "./asn1/its/packet-its-template.c"
static int
dissect_its_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
@@ -13225,6 +15939,489 @@ void proto_register_its(void)
FT_BOOLEAN, 8, NULL, 0x40,
NULL, HFILL }},
+/* --- Module ITS-ContainerV1 --- --- --- */
+
+ { &hf_itsv1_latitude,
+ { "latitude", "itsv1.latitude",
+ FT_INT32, BASE_DEC, VALS(itsv1_Latitude_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_longitude,
+ { "longitude", "itsv1.longitude",
+ FT_INT32, BASE_DEC, VALS(itsv1_Longitude_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_positionConfidenceEllipse,
+ { "positionConfidenceEllipse", "itsv1.positionConfidenceEllipse_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "PosConfidenceEllipse", HFILL }},
+ { &hf_itsv1_altitude,
+ { "altitude", "itsv1.altitude_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_itsv1_deltaLatitude,
+ { "deltaLatitude", "itsv1.deltaLatitude",
+ FT_INT32, BASE_DEC, VALS(itsv1_DeltaLatitude_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_deltaLongitude,
+ { "deltaLongitude", "itsv1.deltaLongitude",
+ FT_INT32, BASE_DEC, VALS(itsv1_DeltaLongitude_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_deltaAltitude,
+ { "deltaAltitude", "itsv1.deltaAltitude",
+ FT_INT32, BASE_DEC, VALS(itsv1_DeltaAltitude_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_altitudeValue,
+ { "altitudeValue", "itsv1.altitudeValue",
+ FT_INT32, BASE_DEC, VALS(itsv1_AltitudeValue_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_altitudeConfidence,
+ { "altitudeConfidence", "itsv1.altitudeConfidence",
+ FT_UINT32, BASE_DEC, VALS(itsv1_AltitudeConfidence_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_semiMajorConfidence,
+ { "semiMajorConfidence", "itsv1.semiMajorConfidence",
+ FT_UINT32, BASE_DEC, VALS(itsv1_SemiAxisLength_vals), 0,
+ "SemiAxisLength", HFILL }},
+ { &hf_itsv1_semiMinorConfidence,
+ { "semiMinorConfidence", "itsv1.semiMinorConfidence",
+ FT_UINT32, BASE_DEC, VALS(itsv1_SemiAxisLength_vals), 0,
+ "SemiAxisLength", HFILL }},
+ { &hf_itsv1_semiMajorOrientation,
+ { "semiMajorOrientation", "itsv1.semiMajorOrientation",
+ FT_UINT32, BASE_DEC, VALS(itsv1_HeadingValue_vals), 0,
+ "HeadingValue", HFILL }},
+ { &hf_itsv1_pathPosition,
+ { "pathPosition", "itsv1.pathPosition_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DeltaReferencePosition", HFILL }},
+ { &hf_itsv1_pathDeltaTime,
+ { "pathDeltaTime", "itsv1.pathDeltaTime",
+ FT_UINT32, BASE_DEC, VALS(itsv1_PathDeltaTime_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_ptActivationType,
+ { "ptActivationType", "itsv1.ptActivationType",
+ FT_UINT32, BASE_DEC, VALS(itsv1_PtActivationType_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_ptActivationData,
+ { "ptActivationData", "itsv1.ptActivationData",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_itsv1_causeCode,
+ { "causeCode", "itsv1.causeCode",
+ FT_UINT32, BASE_DEC, VALS(itsv1_CauseCodeTypeV1_vals), 0,
+ "CauseCodeTypeV1", HFILL }},
+ { &hf_itsv1_subCauseCode,
+ { "subCauseCode", "itsv1.subCauseCode",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SubCauseCodeTypeV1", HFILL }},
+ { &hf_itsv1_curvatureValue,
+ { "curvatureValue", "itsv1.curvatureValue",
+ FT_INT32, BASE_DEC, VALS(itsv1_CurvatureValue_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_curvatureConfidence,
+ { "curvatureConfidence", "itsv1.curvatureConfidence",
+ FT_UINT32, BASE_DEC, VALS(itsv1_CurvatureConfidence_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_headingValue,
+ { "headingValue", "itsv1.headingValue",
+ FT_UINT32, BASE_DEC, VALS(itsv1_HeadingValue_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_headingConfidence,
+ { "headingConfidence", "itsv1.headingConfidence",
+ FT_UINT32, BASE_DEC, VALS(itsv1_HeadingConfidence_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_hardShoulderStatus,
+ { "hardShoulderStatus", "itsv1.hardShoulderStatus",
+ FT_UINT32, BASE_DEC, VALS(itsv1_HardShoulderStatus_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_drivingLaneStatus,
+ { "drivingLaneStatus", "itsv1.drivingLaneStatus",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_itsv1_speedValue,
+ { "speedValue", "itsv1.speedValue",
+ FT_UINT32, BASE_DEC, VALS(itsv1_SpeedValue_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_speedConfidence,
+ { "speedConfidence", "itsv1.speedConfidence",
+ FT_UINT32, BASE_DEC, VALS(itsv1_SpeedConfidence_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_longitudinalAccelerationValue,
+ { "longitudinalAccelerationValue", "itsv1.longitudinalAccelerationValue",
+ FT_INT32, BASE_DEC, VALS(itsv1_LongitudinalAccelerationValue_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_longitudinalAccelerationConfidence,
+ { "longitudinalAccelerationConfidence", "itsv1.longitudinalAccelerationConfidence",
+ FT_UINT32, BASE_DEC, VALS(itsv1_AccelerationConfidence_vals), 0,
+ "AccelerationConfidence", HFILL }},
+ { &hf_itsv1_lateralAccelerationValue,
+ { "lateralAccelerationValue", "itsv1.lateralAccelerationValue",
+ FT_INT32, BASE_DEC, VALS(itsv1_LateralAccelerationValue_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_lateralAccelerationConfidence,
+ { "lateralAccelerationConfidence", "itsv1.lateralAccelerationConfidence",
+ FT_UINT32, BASE_DEC, VALS(itsv1_AccelerationConfidence_vals), 0,
+ "AccelerationConfidence", HFILL }},
+ { &hf_itsv1_verticalAccelerationValue,
+ { "verticalAccelerationValue", "itsv1.verticalAccelerationValue",
+ FT_INT32, BASE_DEC, VALS(itsv1_VerticalAccelerationValue_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_verticalAccelerationConfidence,
+ { "verticalAccelerationConfidence", "itsv1.verticalAccelerationConfidence",
+ FT_UINT32, BASE_DEC, VALS(itsv1_AccelerationConfidence_vals), 0,
+ "AccelerationConfidence", HFILL }},
+ { &hf_itsv1_dangerousGoodsType,
+ { "dangerousGoodsType", "itsv1.dangerousGoodsType",
+ FT_UINT32, BASE_DEC, VALS(itsv1_DangerousGoodsBasic_vals), 0,
+ "DangerousGoodsBasic", HFILL }},
+ { &hf_itsv1_unNumber,
+ { "unNumber", "itsv1.unNumber",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_9999", HFILL }},
+ { &hf_itsv1_elevatedTemperature,
+ { "elevatedTemperature", "itsv1.elevatedTemperature",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_itsv1_tunnelsRestricted,
+ { "tunnelsRestricted", "itsv1.tunnelsRestricted",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_itsv1_limitedQuantity,
+ { "limitedQuantity", "itsv1.limitedQuantity",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_itsv1_emergencyActionCode,
+ { "emergencyActionCode", "itsv1.emergencyActionCode",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IA5String_SIZE_1_24", HFILL }},
+ { &hf_itsv1_phoneNumber,
+ { "phoneNumber", "itsv1.phoneNumber",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IA5String_SIZE_1_24", HFILL }},
+ { &hf_itsv1_companyName,
+ { "companyName", "itsv1.companyName",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "UTF8String_SIZE_1_24", HFILL }},
+ { &hf_itsv1_wMInumber,
+ { "wMInumber", "itsv1.wMInumber",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_itsv1_vDS,
+ { "vDS", "itsv1.vDS",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_itsv1_vehicleLengthValue,
+ { "vehicleLengthValue", "itsv1.vehicleLengthValue",
+ FT_UINT32, BASE_DEC, VALS(itsv1_VehicleLengthValue_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_vehicleLengthConfidenceIndication,
+ { "vehicleLengthConfidenceIndication", "itsv1.vehicleLengthConfidenceIndication",
+ FT_UINT32, BASE_DEC, VALS(itsv1_VehicleLengthConfidenceIndication_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_PathHistory_item,
+ { "PathPoint", "itsv1.PathPoint_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_itsv1_steeringWheelAngleValue,
+ { "steeringWheelAngleValue", "itsv1.steeringWheelAngleValue",
+ FT_INT32, BASE_DEC, VALS(itsv1_SteeringWheelAngleValue_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_steeringWheelAngleConfidence,
+ { "steeringWheelAngleConfidence", "itsv1.steeringWheelAngleConfidence",
+ FT_UINT32, BASE_DEC, VALS(itsv1_SteeringWheelAngleConfidence_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_yawRateValue,
+ { "yawRateValue", "itsv1.yawRateValue",
+ FT_INT32, BASE_DEC, VALS(itsv1_YawRateValue_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_yawRateConfidence,
+ { "yawRateConfidence", "itsv1.yawRateConfidence",
+ FT_UINT32, BASE_DEC, VALS(itsv1_YawRateConfidence_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_originatingStationID,
+ { "originatingStationID", "itsv1.originatingStationID",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "StationID", HFILL }},
+ { &hf_itsv1_sequenceNumber,
+ { "sequenceNumber", "itsv1.sequenceNumber",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_itsv1_ItineraryPath_item,
+ { "ReferencePosition", "itsv1.ReferencePosition_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_itsv1_protectedZoneType,
+ { "protectedZoneType", "itsv1.protectedZoneType",
+ FT_UINT32, BASE_DEC, VALS(itsv1_ProtectedZoneType_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_expiryTime,
+ { "expiryTime", "itsv1.expiryTime",
+ FT_UINT64, BASE_DEC|BASE_VAL64_STRING, VALS64(itsv1_TimestampIts_vals), 0,
+ "TimestampIts", HFILL }},
+ { &hf_itsv1_protectedZoneLatitude,
+ { "protectedZoneLatitude", "itsv1.protectedZoneLatitude",
+ FT_INT32, BASE_DEC, VALS(itsv1_Latitude_vals), 0,
+ "Latitude", HFILL }},
+ { &hf_itsv1_protectedZoneLongitude,
+ { "protectedZoneLongitude", "itsv1.protectedZoneLongitude",
+ FT_INT32, BASE_DEC, VALS(itsv1_Longitude_vals), 0,
+ "Longitude", HFILL }},
+ { &hf_itsv1_protectedZoneRadius,
+ { "protectedZoneRadius", "itsv1.protectedZoneRadius",
+ FT_UINT32, BASE_DEC, VALS(itsv1_ProtectedZoneRadius_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_protectedZoneID,
+ { "protectedZoneID", "itsv1.protectedZoneID",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_itsv1_Traces_item,
+ { "PathHistory", "itsv1.PathHistory",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfPillars_item,
+ { "PosPillar", "itsv1.PosPillar",
+ FT_UINT32, BASE_DEC, VALS(itsv1_PosPillar_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_RestrictedTypes_item,
+ { "StationType", "itsv1.StationType",
+ FT_UINT32, BASE_DEC, VALS(itsv1_StationType_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_EventHistory_item,
+ { "EventPoint", "itsv1.EventPoint_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_itsv1_eventPosition,
+ { "eventPosition", "itsv1.eventPosition_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DeltaReferencePosition", HFILL }},
+ { &hf_itsv1_eventDeltaTime,
+ { "eventDeltaTime", "itsv1.eventDeltaTime",
+ FT_UINT32, BASE_DEC, VALS(itsv1_PathDeltaTime_vals), 0,
+ "PathDeltaTime", HFILL }},
+ { &hf_itsv1_informationQuality,
+ { "informationQuality", "itsv1.informationQuality",
+ FT_UINT32, BASE_DEC, VALS(itsv1_InformationQuality_vals), 0,
+ NULL, HFILL }},
+ { &hf_itsv1_ProtectedCommunicationZonesRSU_item,
+ { "ProtectedCommunicationZone", "itsv1.ProtectedCommunicationZone_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_itsv1_cenDsrcTollingZoneID,
+ { "cenDsrcTollingZoneID", "itsv1.cenDsrcTollingZoneID",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_itsv1_AccelerationControl_brakePedalEngaged,
+ { "brakePedalEngaged", "itsv1.AccelerationControl.brakePedalEngaged",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }},
+ { &hf_itsv1_AccelerationControl_gasPedalEngaged,
+ { "gasPedalEngaged", "itsv1.AccelerationControl.gasPedalEngaged",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }},
+ { &hf_itsv1_AccelerationControl_emergencyBrakeEngaged,
+ { "emergencyBrakeEngaged", "itsv1.AccelerationControl.emergencyBrakeEngaged",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }},
+ { &hf_itsv1_AccelerationControl_collisionWarningEngaged,
+ { "collisionWarningEngaged", "itsv1.AccelerationControl.collisionWarningEngaged",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ NULL, HFILL }},
+ { &hf_itsv1_AccelerationControl_accEngaged,
+ { "accEngaged", "itsv1.AccelerationControl.accEngaged",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ NULL, HFILL }},
+ { &hf_itsv1_AccelerationControl_cruiseControlEngaged,
+ { "cruiseControlEngaged", "itsv1.AccelerationControl.cruiseControlEngaged",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }},
+ { &hf_itsv1_AccelerationControl_speedLimiterEngaged,
+ { "speedLimiterEngaged", "itsv1.AccelerationControl.speedLimiterEngaged",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL }},
+ { &hf_itsv1_DrivingLaneStatus_spare_bit0,
+ { "spare_bit0", "itsv1.DrivingLaneStatus.spare.bit0",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }},
+ { &hf_itsv1_DrivingLaneStatus_outermostLaneClosed,
+ { "outermostLaneClosed", "itsv1.DrivingLaneStatus.outermostLaneClosed",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }},
+ { &hf_itsv1_DrivingLaneStatus_secondLaneFromOutsideClosed,
+ { "secondLaneFromOutsideClosed", "itsv1.DrivingLaneStatus.secondLaneFromOutsideClosed",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }},
+ { &hf_itsv1_ExteriorLights_lowBeamHeadlightsOn,
+ { "lowBeamHeadlightsOn", "itsv1.ExteriorLights.lowBeamHeadlightsOn",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }},
+ { &hf_itsv1_ExteriorLights_highBeamHeadlightsOn,
+ { "highBeamHeadlightsOn", "itsv1.ExteriorLights.highBeamHeadlightsOn",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }},
+ { &hf_itsv1_ExteriorLights_leftTurnSignalOn,
+ { "leftTurnSignalOn", "itsv1.ExteriorLights.leftTurnSignalOn",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }},
+ { &hf_itsv1_ExteriorLights_rightTurnSignalOn,
+ { "rightTurnSignalOn", "itsv1.ExteriorLights.rightTurnSignalOn",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ NULL, HFILL }},
+ { &hf_itsv1_ExteriorLights_daytimeRunningLightsOn,
+ { "daytimeRunningLightsOn", "itsv1.ExteriorLights.daytimeRunningLightsOn",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ NULL, HFILL }},
+ { &hf_itsv1_ExteriorLights_reverseLightOn,
+ { "reverseLightOn", "itsv1.ExteriorLights.reverseLightOn",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }},
+ { &hf_itsv1_ExteriorLights_fogLightOn,
+ { "fogLightOn", "itsv1.ExteriorLights.fogLightOn",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL }},
+ { &hf_itsv1_ExteriorLights_parkingLightsOn,
+ { "parkingLightsOn", "itsv1.ExteriorLights.parkingLightsOn",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL }},
+ { &hf_itsv1_SpecialTransportType_heavyLoad,
+ { "heavyLoad", "itsv1.SpecialTransportType.heavyLoad",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }},
+ { &hf_itsv1_SpecialTransportType_excessWidth,
+ { "excessWidth", "itsv1.SpecialTransportType.excessWidth",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }},
+ { &hf_itsv1_SpecialTransportType_excessLength,
+ { "excessLength", "itsv1.SpecialTransportType.excessLength",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }},
+ { &hf_itsv1_SpecialTransportType_excessHeight,
+ { "excessHeight", "itsv1.SpecialTransportType.excessHeight",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ NULL, HFILL }},
+ { &hf_itsv1_LightBarSirenInUse_lightBarActivated,
+ { "lightBarActivated", "itsv1.LightBarSirenInUse.lightBarActivated",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }},
+ { &hf_itsv1_LightBarSirenInUse_sirenActivated,
+ { "sirenActivated", "itsv1.LightBarSirenInUse.sirenActivated",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row1LeftOccupied,
+ { "row1LeftOccupied", "itsv1.PositionOfOccupants.row1LeftOccupied",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row1RightOccupied,
+ { "row1RightOccupied", "itsv1.PositionOfOccupants.row1RightOccupied",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row1MidOccupied,
+ { "row1MidOccupied", "itsv1.PositionOfOccupants.row1MidOccupied",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row1NotDetectable,
+ { "row1NotDetectable", "itsv1.PositionOfOccupants.row1NotDetectable",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row1NotPresent,
+ { "row1NotPresent", "itsv1.PositionOfOccupants.row1NotPresent",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row2LeftOccupied,
+ { "row2LeftOccupied", "itsv1.PositionOfOccupants.row2LeftOccupied",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row2RightOccupied,
+ { "row2RightOccupied", "itsv1.PositionOfOccupants.row2RightOccupied",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row2MidOccupied,
+ { "row2MidOccupied", "itsv1.PositionOfOccupants.row2MidOccupied",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row2NotDetectable,
+ { "row2NotDetectable", "itsv1.PositionOfOccupants.row2NotDetectable",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row2NotPresent,
+ { "row2NotPresent", "itsv1.PositionOfOccupants.row2NotPresent",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row3LeftOccupied,
+ { "row3LeftOccupied", "itsv1.PositionOfOccupants.row3LeftOccupied",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row3RightOccupied,
+ { "row3RightOccupied", "itsv1.PositionOfOccupants.row3RightOccupied",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row3MidOccupied,
+ { "row3MidOccupied", "itsv1.PositionOfOccupants.row3MidOccupied",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row3NotDetectable,
+ { "row3NotDetectable", "itsv1.PositionOfOccupants.row3NotDetectable",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row3NotPresent,
+ { "row3NotPresent", "itsv1.PositionOfOccupants.row3NotPresent",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row4LeftOccupied,
+ { "row4LeftOccupied", "itsv1.PositionOfOccupants.row4LeftOccupied",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row4RightOccupied,
+ { "row4RightOccupied", "itsv1.PositionOfOccupants.row4RightOccupied",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row4MidOccupied,
+ { "row4MidOccupied", "itsv1.PositionOfOccupants.row4MidOccupied",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row4NotDetectable,
+ { "row4NotDetectable", "itsv1.PositionOfOccupants.row4NotDetectable",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }},
+ { &hf_itsv1_PositionOfOccupants_row4NotPresent,
+ { "row4NotPresent", "itsv1.PositionOfOccupants.row4NotPresent",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ NULL, HFILL }},
+ { &hf_itsv1_EnergyStorageType_hydrogenStorage,
+ { "hydrogenStorage", "itsv1.EnergyStorageType.hydrogenStorage",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }},
+ { &hf_itsv1_EnergyStorageType_electricEnergyStorage,
+ { "electricEnergyStorage", "itsv1.EnergyStorageType.electricEnergyStorage",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }},
+ { &hf_itsv1_EnergyStorageType_liquidPropaneGas,
+ { "liquidPropaneGas", "itsv1.EnergyStorageType.liquidPropaneGas",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }},
+ { &hf_itsv1_EnergyStorageType_compressedNaturalGas,
+ { "compressedNaturalGas", "itsv1.EnergyStorageType.compressedNaturalGas",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ NULL, HFILL }},
+ { &hf_itsv1_EnergyStorageType_diesel,
+ { "diesel", "itsv1.EnergyStorageType.diesel",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ NULL, HFILL }},
+ { &hf_itsv1_EnergyStorageType_gasoline,
+ { "gasoline", "itsv1.EnergyStorageType.gasoline",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }},
+ { &hf_itsv1_EnergyStorageType_ammonia,
+ { "ammonia", "itsv1.EnergyStorageType.ammonia",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL }},
+ { &hf_itsv1_EmergencyPriority_requestForRightOfWay,
+ { "requestForRightOfWay", "itsv1.EmergencyPriority.requestForRightOfWay",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }},
+ { &hf_itsv1_EmergencyPriority_requestForFreeCrossingAtATrafficLight,
+ { "requestForFreeCrossingAtATrafficLight", "itsv1.EmergencyPriority.requestForFreeCrossingAtATrafficLight",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }},
+
/* --- Module ElectronicRegistrationIdentificationVehicleDataModule --- --- --- */
{ &hf_erivdm_euVehicleCategoryL,
@@ -15851,6 +19048,209 @@ void proto_register_its(void)
FT_UINT32, BASE_DEC, VALS(AddGrpC_TimeReference_vals), 0,
NULL, HFILL }},
+/* --- Module CAMv1-PDU-Descriptions --- --- --- */
+
+ { &hf_camv1_camv1_CoopAwarenessV1_PDU,
+ { "CoopAwarenessV1", "camv1.CoopAwarenessV1_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_generationDeltaTime,
+ { "generationDeltaTime", "camv1.generationDeltaTime",
+ FT_UINT32, BASE_DEC, VALS(camv1_GenerationDeltaTime_vals), 0,
+ NULL, HFILL }},
+ { &hf_camv1_camParameters,
+ { "camParameters", "camv1.camParameters_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_basicContainer,
+ { "basicContainer", "camv1.basicContainer_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_highFrequencyContainer,
+ { "highFrequencyContainer", "camv1.highFrequencyContainer",
+ FT_UINT32, BASE_DEC, VALS(camv1_HighFrequencyContainer_vals), 0,
+ NULL, HFILL }},
+ { &hf_camv1_lowFrequencyContainer,
+ { "lowFrequencyContainer", "camv1.lowFrequencyContainer",
+ FT_UINT32, BASE_DEC, VALS(camv1_LowFrequencyContainer_vals), 0,
+ NULL, HFILL }},
+ { &hf_camv1_specialVehicleContainer,
+ { "specialVehicleContainer", "camv1.specialVehicleContainer",
+ FT_UINT32, BASE_DEC, VALS(camv1_SpecialVehicleContainer_vals), 0,
+ NULL, HFILL }},
+ { &hf_camv1_basicVehicleContainerHighFrequency,
+ { "basicVehicleContainerHighFrequency", "camv1.basicVehicleContainerHighFrequency_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_rsuContainerHighFrequency,
+ { "rsuContainerHighFrequency", "camv1.rsuContainerHighFrequency_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_basicVehicleContainerLowFrequency,
+ { "basicVehicleContainerLowFrequency", "camv1.basicVehicleContainerLowFrequency_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_publicTransportContainer,
+ { "publicTransportContainer", "camv1.publicTransportContainer_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_specialTransportContainer,
+ { "specialTransportContainer", "camv1.specialTransportContainer_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_dangerousGoodsContainer,
+ { "dangerousGoodsContainer", "camv1.dangerousGoodsContainer_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_roadWorksContainerBasic,
+ { "roadWorksContainerBasic", "camv1.roadWorksContainerBasic_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_rescueContainer,
+ { "rescueContainer", "camv1.rescueContainer_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_emergencyContainer,
+ { "emergencyContainer", "camv1.emergencyContainer_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_safetyCarContainer,
+ { "safetyCarContainer", "camv1.safetyCarContainer_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_stationType,
+ { "stationType", "camv1.stationType",
+ FT_UINT32, BASE_DEC, VALS(itsv1_StationType_vals), 0,
+ NULL, HFILL }},
+ { &hf_camv1_referencePosition,
+ { "referencePosition", "camv1.referencePosition_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_heading,
+ { "heading", "camv1.heading_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_speed,
+ { "speed", "camv1.speed_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_driveDirection,
+ { "driveDirection", "camv1.driveDirection",
+ FT_UINT32, BASE_DEC, VALS(itsv1_DriveDirection_vals), 0,
+ NULL, HFILL }},
+ { &hf_camv1_vehicleLength,
+ { "vehicleLength", "camv1.vehicleLength_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_vehicleWidth,
+ { "vehicleWidth", "camv1.vehicleWidth",
+ FT_UINT32, BASE_DEC, VALS(itsv1_VehicleWidth_vals), 0,
+ NULL, HFILL }},
+ { &hf_camv1_longitudinalAcceleration,
+ { "longitudinalAcceleration", "camv1.longitudinalAcceleration_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_curvature,
+ { "curvature", "camv1.curvature_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_curvatureCalculationMode,
+ { "curvatureCalculationMode", "camv1.curvatureCalculationMode",
+ FT_UINT32, BASE_DEC, VALS(itsv1_CurvatureCalculationMode_vals), 0,
+ NULL, HFILL }},
+ { &hf_camv1_yawRate,
+ { "yawRate", "camv1.yawRate_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_accelerationControl,
+ { "accelerationControl", "camv1.accelerationControl",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_lanePosition,
+ { "lanePosition", "camv1.lanePosition",
+ FT_INT32, BASE_DEC, VALS(itsv1_LanePosition_vals), 0,
+ NULL, HFILL }},
+ { &hf_camv1_steeringWheelAngle,
+ { "steeringWheelAngle", "camv1.steeringWheelAngle_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_lateralAcceleration,
+ { "lateralAcceleration", "camv1.lateralAcceleration_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_verticalAcceleration,
+ { "verticalAcceleration", "camv1.verticalAcceleration_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_performanceClass,
+ { "performanceClass", "camv1.performanceClass",
+ FT_UINT32, BASE_DEC, VALS(itsv1_PerformanceClass_vals), 0,
+ NULL, HFILL }},
+ { &hf_camv1_cenDsrcTollingZone,
+ { "cenDsrcTollingZone", "camv1.cenDsrcTollingZone_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_vehicleRole,
+ { "vehicleRole", "camv1.vehicleRole",
+ FT_UINT32, BASE_DEC, VALS(itsv1_VehicleRole_vals), 0,
+ NULL, HFILL }},
+ { &hf_camv1_exteriorLights,
+ { "exteriorLights", "camv1.exteriorLights",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_pathHistory,
+ { "pathHistory", "camv1.pathHistory",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_embarkationStatus,
+ { "embarkationStatus", "camv1.embarkationStatus",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_ptActivation,
+ { "ptActivation", "camv1.ptActivation_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_specialTransportType,
+ { "specialTransportType", "camv1.specialTransportType",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_lightBarSirenInUse,
+ { "lightBarSirenInUse", "camv1.lightBarSirenInUse",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_dangerousGoodsBasic,
+ { "dangerousGoodsBasic", "camv1.dangerousGoodsBasic",
+ FT_UINT32, BASE_DEC, VALS(itsv1_DangerousGoodsBasic_vals), 0,
+ NULL, HFILL }},
+ { &hf_camv1_roadworksSubCauseCode,
+ { "roadworksSubCauseCode", "camv1.roadworksSubCauseCode",
+ FT_UINT32, BASE_DEC, VALS(itsv1_RoadworksSubCauseCode_vals), 0,
+ NULL, HFILL }},
+ { &hf_camv1_closedLanes,
+ { "closedLanes", "camv1.closedLanes_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_incidentIndication,
+ { "incidentIndication", "camv1.incidentIndication_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CauseCode", HFILL }},
+ { &hf_camv1_emergencyPriority,
+ { "emergencyPriority", "camv1.emergencyPriority",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_camv1_trafficRule,
+ { "trafficRule", "camv1.trafficRule",
+ FT_UINT32, BASE_DEC, VALS(itsv1_TrafficRule_vals), 0,
+ NULL, HFILL }},
+ { &hf_camv1_speedLimit,
+ { "speedLimit", "camv1.speedLimit",
+ FT_UINT32, BASE_DEC, VALS(itsv1_SpeedLimit_vals), 0,
+ NULL, HFILL }},
+ { &hf_camv1_protectedCommunicationZonesRSU,
+ { "protectedCommunicationZonesRSU", "camv1.protectedCommunicationZonesRSU",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
/* --- Module CAM-PDU-Descriptions --- --- --- */
{ &hf_cam_cam_CoopAwareness_PDU,
@@ -16054,6 +19454,237 @@ void proto_register_its(void)
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+/* --- Module DENMv1-PDU-Descriptions --- --- --- */
+
+ { &hf_denmv1_denmv1_DecentralizedEnvironmentalNotificationMessageV1_PDU,
+ { "DecentralizedEnvironmentalNotificationMessageV1", "denmv1.DecentralizedEnvironmentalNotificationMessageV1_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_denmv1_management,
+ { "management", "denmv1.management_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ManagementContainer", HFILL }},
+ { &hf_denmv1_situation,
+ { "situation", "denmv1.situation_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SituationContainer", HFILL }},
+ { &hf_denmv1_location,
+ { "location", "denmv1.location_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "LocationContainer", HFILL }},
+ { &hf_denmv1_alacarte,
+ { "alacarte", "denmv1.alacarte_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AlacarteContainer", HFILL }},
+ { &hf_denmv1_actionID,
+ { "actionID", "denmv1.actionID_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_denmv1_detectionTime,
+ { "detectionTime", "denmv1.detectionTime",
+ FT_UINT64, BASE_DEC|BASE_VAL64_STRING|BASE_VAL64_STRING, VALS64(itsv1_TimestampIts_vals), 0,
+ "TimestampIts", HFILL }},
+ { &hf_denmv1_referenceTime,
+ { "referenceTime", "denmv1.referenceTime",
+ FT_UINT64, BASE_DEC|BASE_VAL64_STRING|BASE_VAL64_STRING, VALS64(itsv1_TimestampIts_vals), 0,
+ "TimestampIts", HFILL }},
+ { &hf_denmv1_termination,
+ { "termination", "denmv1.termination",
+ FT_UINT32, BASE_DEC, VALS(denmv1_Termination_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_eventPosition,
+ { "eventPosition", "denmv1.eventPosition_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ReferencePosition", HFILL }},
+ { &hf_denmv1_relevanceDistance,
+ { "relevanceDistance", "denmv1.relevanceDistance",
+ FT_UINT32, BASE_DEC, VALS(itsv1_RelevanceDistance_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_relevanceTrafficDirection,
+ { "relevanceTrafficDirection", "denmv1.relevanceTrafficDirection",
+ FT_UINT32, BASE_DEC, VALS(itsv1_RelevanceTrafficDirection_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_validityDuration,
+ { "validityDuration", "denmv1.validityDuration",
+ FT_UINT32, BASE_DEC, VALS(itsv1_ValidityDuration_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_transmissionInterval,
+ { "transmissionInterval", "denmv1.transmissionInterval",
+ FT_UINT32, BASE_DEC, VALS(itsv1_TransmissionInterval_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_stationType,
+ { "stationType", "denmv1.stationType",
+ FT_UINT32, BASE_DEC, VALS(itsv1_StationType_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_informationQuality,
+ { "informationQuality", "denmv1.informationQuality",
+ FT_UINT32, BASE_DEC, VALS(itsv1_InformationQuality_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_eventType,
+ { "eventType", "denmv1.eventType_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CauseCode", HFILL }},
+ { &hf_denmv1_linkedCause,
+ { "linkedCause", "denmv1.linkedCause_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CauseCode", HFILL }},
+ { &hf_denmv1_eventHistory,
+ { "eventHistory", "denmv1.eventHistory",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_denmv1_eventSpeed,
+ { "eventSpeed", "denmv1.eventSpeed_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Speed", HFILL }},
+ { &hf_denmv1_eventPositionHeading,
+ { "eventPositionHeading", "denmv1.eventPositionHeading_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Heading", HFILL }},
+ { &hf_denmv1_traces,
+ { "traces", "denmv1.traces",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_denmv1_roadType,
+ { "roadType", "denmv1.roadType",
+ FT_UINT32, BASE_DEC, VALS(itsv1_RoadType_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_heightLonCarrLeft,
+ { "heightLonCarrLeft", "denmv1.heightLonCarrLeft",
+ FT_UINT32, BASE_DEC, VALS(itsv1_HeightLonCarr_vals), 0,
+ "HeightLonCarr", HFILL }},
+ { &hf_denmv1_heightLonCarrRight,
+ { "heightLonCarrRight", "denmv1.heightLonCarrRight",
+ FT_UINT32, BASE_DEC, VALS(itsv1_HeightLonCarr_vals), 0,
+ "HeightLonCarr", HFILL }},
+ { &hf_denmv1_posLonCarrLeft,
+ { "posLonCarrLeft", "denmv1.posLonCarrLeft",
+ FT_UINT32, BASE_DEC, VALS(itsv1_PosLonCarr_vals), 0,
+ "PosLonCarr", HFILL }},
+ { &hf_denmv1_posLonCarrRight,
+ { "posLonCarrRight", "denmv1.posLonCarrRight",
+ FT_UINT32, BASE_DEC, VALS(itsv1_PosLonCarr_vals), 0,
+ "PosLonCarr", HFILL }},
+ { &hf_denmv1_positionOfPillars,
+ { "positionOfPillars", "denmv1.positionOfPillars",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_denmv1_posCentMass,
+ { "posCentMass", "denmv1.posCentMass",
+ FT_UINT32, BASE_DEC, VALS(itsv1_PosCentMass_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_wheelBaseVehicle,
+ { "wheelBaseVehicle", "denmv1.wheelBaseVehicle",
+ FT_UINT32, BASE_DEC, VALS(itsv1_WheelBaseVehicle_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_turningRadius,
+ { "turningRadius", "denmv1.turningRadius",
+ FT_UINT32, BASE_DEC, VALS(itsv1_TurningRadius_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_posFrontAx,
+ { "posFrontAx", "denmv1.posFrontAx",
+ FT_UINT32, BASE_DEC, VALS(itsv1_PosFrontAx_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_positionOfOccupants,
+ { "positionOfOccupants", "denmv1.positionOfOccupants",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_denmv1_vehicleMass,
+ { "vehicleMass", "denmv1.vehicleMass",
+ FT_UINT32, BASE_DEC, VALS(itsv1_VehicleMass_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_requestResponseIndication,
+ { "requestResponseIndication", "denmv1.requestResponseIndication",
+ FT_UINT32, BASE_DEC, VALS(itsv1_RequestResponseIndication_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_lightBarSirenInUse,
+ { "lightBarSirenInUse", "denmv1.lightBarSirenInUse",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_denmv1_closedLanes,
+ { "closedLanes", "denmv1.closedLanes_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_denmv1_restriction,
+ { "restriction", "denmv1.restriction",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RestrictedTypes", HFILL }},
+ { &hf_denmv1_speedLimit,
+ { "speedLimit", "denmv1.speedLimit",
+ FT_UINT32, BASE_DEC, VALS(itsv1_SpeedLimit_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_incidentIndication,
+ { "incidentIndication", "denmv1.incidentIndication_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CauseCode", HFILL }},
+ { &hf_denmv1_recommendedPath,
+ { "recommendedPath", "denmv1.recommendedPath",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ItineraryPath", HFILL }},
+ { &hf_denmv1_startingPointSpeedLimit,
+ { "startingPointSpeedLimit", "denmv1.startingPointSpeedLimit_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DeltaReferencePosition", HFILL }},
+ { &hf_denmv1_trafficFlowRule,
+ { "trafficFlowRule", "denmv1.trafficFlowRule",
+ FT_UINT32, BASE_DEC, VALS(itsv1_TrafficRule_vals), 0,
+ "TrafficRule", HFILL }},
+ { &hf_denmv1_referenceDenms,
+ { "referenceDenms", "denmv1.referenceDenms",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_denmv1_stationarySince,
+ { "stationarySince", "denmv1.stationarySince",
+ FT_UINT32, BASE_DEC, VALS(itsv1_StationarySince_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_stationaryCause,
+ { "stationaryCause", "denmv1.stationaryCause_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CauseCode", HFILL }},
+ { &hf_denmv1_carryingDangerousGoods,
+ { "carryingDangerousGoods", "denmv1.carryingDangerousGoods_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DangerousGoodsExtended", HFILL }},
+ { &hf_denmv1_numberOfOccupants,
+ { "numberOfOccupants", "denmv1.numberOfOccupants",
+ FT_UINT32, BASE_DEC, VALS(itsv1_NumberOfOccupants_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_vehicleIdentification,
+ { "vehicleIdentification", "denmv1.vehicleIdentification_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_denmv1_energyStorageType,
+ { "energyStorageType", "denmv1.energyStorageType",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_denmv1_lanePosition,
+ { "lanePosition", "denmv1.lanePosition",
+ FT_INT32, BASE_DEC, VALS(itsv1_LanePosition_vals), 0,
+ NULL, HFILL }},
+ { &hf_denmv1_impactReduction,
+ { "impactReduction", "denmv1.impactReduction_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ImpactReductionContainer", HFILL }},
+ { &hf_denmv1_externalTemperature,
+ { "externalTemperature", "denmv1.externalTemperature",
+ FT_INT32, BASE_DEC, VALS(itsv1_Temperature_vals), 0,
+ "Temperature", HFILL }},
+ { &hf_denmv1_roadWorks,
+ { "roadWorks", "denmv1.roadWorks_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RoadWorksContainerExtended", HFILL }},
+ { &hf_denmv1_positioningSolution,
+ { "positioningSolution", "denmv1.positioningSolution",
+ FT_UINT32, BASE_DEC, VALS(itsv1_PositioningSolutionType_vals), 0,
+ "PositioningSolutionType", HFILL }},
+ { &hf_denmv1_stationaryVehicle,
+ { "stationaryVehicle", "denmv1.stationaryVehicle_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "StationaryVehicleContainer", HFILL }},
+ { &hf_denmv1_ReferenceDenms_item,
+ { "ActionID", "denmv1.ActionID_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
/* --- Module DENM-PDU-Descriptions --- --- --- */
{ &hf_denm_denm_DecentralizedEnvironmentalNotificationMessage_PDU,
@@ -17051,7 +20682,7 @@ void proto_register_its(void)
NULL, HFILL }},
/*--- End of included file: packet-its-hfarr.c ---*/
-#line 382 "./asn1/its/packet-its-template.c"
+#line 384 "./asn1/its/packet-its-template.c"
{ &hf_its_roadworksSubCauseCode,
{ "roadworksSubCauseCode", "its.subCauseCode",
@@ -17300,6 +20931,47 @@ void proto_register_its(void)
&ett_its_CenDsrcTollingZone,
&ett_its_DigitalMap,
+/* --- Module ITS-ContainerV1 --- --- --- */
+
+ &ett_itsv1_ReferencePosition,
+ &ett_itsv1_DeltaReferencePosition,
+ &ett_itsv1_Altitude,
+ &ett_itsv1_PosConfidenceEllipse,
+ &ett_itsv1_PathPoint,
+ &ett_itsv1_PtActivation,
+ &ett_itsv1_AccelerationControl,
+ &ett_itsv1_CauseCode,
+ &ett_itsv1_Curvature,
+ &ett_itsv1_Heading,
+ &ett_itsv1_ClosedLanes,
+ &ett_itsv1_DrivingLaneStatus,
+ &ett_itsv1_Speed,
+ &ett_itsv1_LongitudinalAcceleration,
+ &ett_itsv1_LateralAcceleration,
+ &ett_itsv1_VerticalAcceleration,
+ &ett_itsv1_ExteriorLights,
+ &ett_itsv1_DangerousGoodsExtended,
+ &ett_itsv1_SpecialTransportType,
+ &ett_itsv1_LightBarSirenInUse,
+ &ett_itsv1_PositionOfOccupants,
+ &ett_itsv1_VehicleIdentification,
+ &ett_itsv1_EnergyStorageType,
+ &ett_itsv1_VehicleLength,
+ &ett_itsv1_PathHistory,
+ &ett_itsv1_EmergencyPriority,
+ &ett_itsv1_SteeringWheelAngle,
+ &ett_itsv1_YawRate,
+ &ett_itsv1_ActionID,
+ &ett_itsv1_ItineraryPath,
+ &ett_itsv1_ProtectedCommunicationZone,
+ &ett_itsv1_Traces,
+ &ett_itsv1_PositionOfPillars,
+ &ett_itsv1_RestrictedTypes,
+ &ett_itsv1_EventHistory,
+ &ett_itsv1_EventPoint,
+ &ett_itsv1_ProtectedCommunicationZonesRSU,
+ &ett_itsv1_CenDsrcTollingZone,
+
/* --- Module AVIAEINumberingAndDataStructures --- --- --- */
@@ -17567,6 +21239,25 @@ void proto_register_its(void)
/* --- Module RTCMEM-PDU-Descriptions --- --- --- */
+/* --- Module CAMv1-PDU-Descriptions --- --- --- */
+
+ &ett_camv1_CoopAwarenessV1,
+ &ett_camv1_CamParameters,
+ &ett_camv1_HighFrequencyContainer,
+ &ett_camv1_LowFrequencyContainer,
+ &ett_camv1_SpecialVehicleContainer,
+ &ett_camv1_BasicContainer,
+ &ett_camv1_BasicVehicleContainerHighFrequency,
+ &ett_camv1_BasicVehicleContainerLowFrequency,
+ &ett_camv1_PublicTransportContainer,
+ &ett_camv1_SpecialTransportContainer,
+ &ett_camv1_DangerousGoodsContainer,
+ &ett_camv1_RoadWorksContainerBasic,
+ &ett_camv1_RescueContainer,
+ &ett_camv1_EmergencyContainer,
+ &ett_camv1_SafetyCarContainer,
+ &ett_camv1_RSUContainerHighFrequency,
+
/* --- Module CAM-PDU-Descriptions --- --- --- */
&ett_cam_CoopAwareness,
@@ -17586,6 +21277,18 @@ void proto_register_its(void)
&ett_cam_SafetyCarContainer,
&ett_cam_RSUContainerHighFrequency,
+/* --- Module DENMv1-PDU-Descriptions --- --- --- */
+
+ &ett_denmv1_DecentralizedEnvironmentalNotificationMessageV1,
+ &ett_denmv1_ManagementContainer,
+ &ett_denmv1_SituationContainer,
+ &ett_denmv1_LocationContainer,
+ &ett_denmv1_ImpactReductionContainer,
+ &ett_denmv1_RoadWorksContainerExtended,
+ &ett_denmv1_StationaryVehicleContainer,
+ &ett_denmv1_AlacarteContainer,
+ &ett_denmv1_ReferenceDenms,
+
/* --- Module DENM-PDU-Descriptions --- --- --- */
&ett_denm_DecentralizedEnvironmentalNotificationMessage,
@@ -17669,7 +21372,7 @@ void proto_register_its(void)
&ett_evrsr_SupportedPaymentTypes,
/*--- End of included file: packet-its-ettarr.c ---*/
-#line 585 "./asn1/its/packet-its-template.c"
+#line 587 "./asn1/its/packet-its-template.c"
};
static ei_register_info ei[] = {
@@ -17696,7 +21399,9 @@ void proto_register_its(void)
regionid_subdissector_table = register_dissector_table("dsrc.regionid", "DSRC RegionId", proto_its, FT_UINT32, BASE_DEC);
proto_its_denm = proto_register_protocol_in_name_only("ITS message - DENM", "DENM", "its.message.denm", proto_its, FT_BYTES);
+ proto_its_denmv1 = proto_register_protocol_in_name_only("ITS message - DENMv1", "DENMv1", "its.message.denmv1", proto_its, FT_BYTES);
proto_its_cam = proto_register_protocol_in_name_only("ITS message - CAM", "CAM", "its.message.cam", proto_its, FT_BYTES);
+ proto_its_camv1 = proto_register_protocol_in_name_only("ITS message - CAMv1", "CAMv1", "its.message.camv1", proto_its, FT_BYTES);
proto_its_spatem = proto_register_protocol_in_name_only("ITS message - SPATEM", "SPATEM", "its.message.spatem", proto_its, FT_BYTES);
proto_its_mapem = proto_register_protocol_in_name_only("ITS message - MAPEM", "MAPEM", "its.message.mapem", proto_its, FT_BYTES);
proto_its_ivim = proto_register_protocol_in_name_only("ITS message - IVIM", "IVIM", "its.message.ivim", proto_its, FT_BYTES);
@@ -17721,12 +21426,14 @@ void proto_register_its(void)
#define BTP_PORTS_SZ 10
#define ITS_CAM_PROT_VER 2
+#define ITS_CAM_PROT_VERv1 1
#define ITS_DENM_PROT_VER 2
+#define ITS_DENM_PROT_VERv1 1
#define ITS_SPATEM_PROT_VER 2
#define ITS_MAPEM_PROT_VER 2
#define ITS_IVIM_PROT_VER 2
#define ITS_SREM_PROT_VER 2
-#define ITS_SREM_PROT_VER 2
+#define ITS_SSEM_PROT_VER 2
void proto_reg_handoff_its(void)
{
@@ -17744,13 +21451,15 @@ void proto_reg_handoff_its(void)
}
dissector_add_uint("its.msg_id", (ITS_DENM_PROT_VER << 16) + ITS_DENM, create_dissector_handle( dissect_denm_DecentralizedEnvironmentalNotificationMessage_PDU, proto_its_denm ));
- dissector_add_uint("its.msg_id", (ITS_CAM_PROT_VER <<16) + ITS_CAM, create_dissector_handle( dissect_cam_CoopAwareness_PDU, proto_its_cam ));
+ dissector_add_uint("its.msg_id", (ITS_DENM_PROT_VERv1 << 16) + ITS_DENM, create_dissector_handle( dissect_denmv1_DecentralizedEnvironmentalNotificationMessageV1_PDU, proto_its_denmv1 ));
+ dissector_add_uint("its.msg_id", (ITS_CAM_PROT_VER << 16) + ITS_CAM, create_dissector_handle( dissect_cam_CoopAwareness_PDU, proto_its_cam ));
+ dissector_add_uint("its.msg_id", (ITS_CAM_PROT_VERv1 << 16) + ITS_CAM, create_dissector_handle( dissect_camv1_CoopAwarenessV1_PDU, proto_its_camv1));
dissector_add_uint("its.msg_id", (ITS_SPATEM_PROT_VER << 16) + ITS_SPATEM, create_dissector_handle( dissect_dsrc_SPAT_PDU, proto_its_spatem ));
dissector_add_uint("its.msg_id", (ITS_MAPEM_PROT_VER << 16) + ITS_MAPEM, create_dissector_handle( dissect_dsrc_MapData_PDU, proto_its_mapem ));
dissector_add_uint("its.msg_id", (ITS_IVIM_PROT_VER << 16) + ITS_IVIM, create_dissector_handle( dissect_ivi_IviStructure_PDU, proto_its_ivim ));
dissector_add_uint("its.msg_id", ITS_EV_RSR, create_dissector_handle( dissect_evrsr_EV_RSR_MessageBody_PDU, proto_its_evrsr ));
dissector_add_uint("its.msg_id", (ITS_SREM_PROT_VER << 16) + ITS_SREM, create_dissector_handle( dissect_dsrc_SignalRequestMessage_PDU, proto_its_srem ));
- dissector_add_uint("its.msg_id", (ITS_SREM_PROT_VER << 16) + ITS_SSEM, create_dissector_handle( dissect_dsrc_SignalStatusMessage_PDU, proto_its_ssem ));
+ dissector_add_uint("its.msg_id", (ITS_SSEM_PROT_VER << 16) + ITS_SSEM, create_dissector_handle( dissect_dsrc_SignalStatusMessage_PDU, proto_its_ssem ));
dissector_add_uint("its.msg_id", ITS_EVCSN, create_dissector_handle( dissect_evcsn_EVChargingSpotNotificationPOIMessage_PDU, proto_its_evcsn ));
dissector_add_uint("its.msg_id", ITS_TISTPGTRANSACTION, create_dissector_handle( dissect_tistpg_TisTpgTransaction_PDU, proto_its_tistpg ));
diff --git a/epan/dissectors/packet-its.h b/epan/dissectors/packet-its.h
index 57f492d8ae..6e1f9906f3 100644
--- a/epan/dissectors/packet-its.h
+++ b/epan/dissectors/packet-its.h
@@ -1,7 +1,7 @@
/* Do not modify this file. Changes will be overwritten. */
/* Generated automatically by the ASN.1 to Wireshark dissector compiler */
/* packet-its.h */
-/* asn2wrs.py -o its -c ./its.cnf -s ./packet-its-template -D . -O ../.. ITS-Container.asn ISO_TS_14816.asn ISO_TS_24534-3.asn ISO_TS_17419.asn ISO_TS_14906_Application.asn ISO_TS_19321.asn ISO_TS_19091.asn ETSI_TS_103301.asn CAM.asn DENM.asn TIS_TPG_Transactions_Descriptions.asn EVCSN-PDU-Descriptions.asn EV-RSR-PDU-Descriptions.asn */
+/* asn2wrs.py -o its -c ./its.cnf -s ./packet-its-template -D . -O ../.. ITS-Container.asn ITS-ContainerV1.asn ISO_TS_14816.asn ISO_TS_24534-3.asn ISO_TS_17419.asn ISO_TS_14906_Application.asn ISO_TS_19321.asn ISO_TS_19091.asn ETSI_TS_103301.asn CAMv1.asn CAM.asn DENMv1.asn DENM.asn TIS_TPG_Transactions_Descriptions.asn EVCSN-PDU-Descriptions.asn EV-RSR-PDU-Descriptions.asn */
/* Input file: packet-its-template.h */
@@ -28,6 +28,9 @@
/* --- Module ITS-Container --- --- --- */
+/* --- Module ITS-ContainerV1 --- --- --- */
+
+
/* --- Module AVIAEINumberingAndDataStructures --- --- --- */
@@ -70,9 +73,15 @@
/* --- Module RTCMEM-PDU-Descriptions --- --- --- */
+/* --- Module CAMv1-PDU-Descriptions --- --- --- */
+
+
/* --- Module CAM-PDU-Descriptions --- --- --- */
+/* --- Module DENMv1-PDU-Descriptions --- --- --- */
+
+
/* --- Module DENM-PDU-Descriptions --- --- --- */
@@ -140,6 +149,9 @@ typedef enum _CauseCodeType_enum {
dangerousSituation = 99
} CauseCodeType_enum;
+/* --- Module ITS-ContainerV1 --- --- --- */
+
+
/* --- Module AVIAEINumberingAndDataStructures --- --- --- */
@@ -193,9 +205,16 @@ typedef enum _RegionId_enum {
/* --- Module RTCMEM-PDU-Descriptions --- --- --- */
+/* --- Module CAMv1-PDU-Descriptions --- --- --- */
+
+
/* --- Module CAM-PDU-Descriptions --- --- --- */
+/* --- Module DENMv1-PDU-Descriptions --- --- --- */
+
+#define defaultValidity 600
+
/* --- Module DENM-PDU-Descriptions --- --- --- */
#define defaultValidity 600