diff options
-rw-r--r-- | epan/dissectors/asn1/its/EV-RSR-PDU-Descriptions.asn | 10 | ||||
-rw-r--r-- | epan/dissectors/asn1/its/EVCSN-PDU-Descriptions.asn | 2 | ||||
-rw-r--r-- | epan/dissectors/asn1/its/ISO_TS_14816.asn | 9 | ||||
-rw-r--r-- | epan/dissectors/asn1/its/ISO_TS_14906_Application.asn | 13 | ||||
-rw-r--r-- | epan/dissectors/asn1/its/ISO_TS_19091.asn | 2846 | ||||
-rw-r--r-- | epan/dissectors/asn1/its/ISO_TS_19321.asn | 213 | ||||
-rw-r--r-- | epan/dissectors/asn1/its/ISO_TS_24534-3.asn | 7 | ||||
-rw-r--r-- | epan/dissectors/asn1/its/ITS-Container.asn | 93 | ||||
-rw-r--r-- | epan/dissectors/asn1/its/its.cnf | 47 | ||||
-rw-r--r-- | epan/dissectors/asn1/its/packet-its-template.c | 21 | ||||
-rw-r--r-- | epan/dissectors/asn1/its/packet-its-template.h | 1 | ||||
-rw-r--r-- | epan/dissectors/packet-its.c | 4322 | ||||
-rw-r--r-- | epan/dissectors/packet-its.h | 2 |
13 files changed, 4118 insertions, 3468 deletions
diff --git a/epan/dissectors/asn1/its/EV-RSR-PDU-Descriptions.asn b/epan/dissectors/asn1/its/EV-RSR-PDU-Descriptions.asn index eeb9943c82..8a61a6e46e 100644 --- a/epan/dissectors/asn1/its/EV-RSR-PDU-Descriptions.asn +++ b/epan/dissectors/asn1/its/EV-RSR-PDU-Descriptions.asn @@ -1,14 +1,14 @@ EV-RechargingSpotReservation-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (101556) ev-rsr (4) version (1) + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (101556) ev-rsr (4) version (1) } -DEFINITIONS AUTOMATIC TAGS ::= +DEFINITIONS AUTOMATIC TAGS ::= BEGIN -IMPORTS +IMPORTS ItsPduHeader FROM ITS-Container { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2) }; EV-RSR ::= SEQUENCE { @@ -44,7 +44,7 @@ PreReservationResponseMessage ::= SEQUENCE { supportedPaymentTypes SupportedPaymentTypes, ... } - + ReservationRequestMessage ::= SEQUENCE { currentTime TimestampUTC, preReservation-ID PreReservation-ID, diff --git a/epan/dissectors/asn1/its/EVCSN-PDU-Descriptions.asn b/epan/dissectors/asn1/its/EVCSN-PDU-Descriptions.asn index 8bcc3d340e..ca67e9fa96 100644 --- a/epan/dissectors/asn1/its/EVCSN-PDU-Descriptions.asn +++ b/epan/dissectors/asn1/its/EVCSN-PDU-Descriptions.asn @@ -19,7 +19,7 @@ IMPORTS DigitalMap, -- PATCH ReferencePosition FROM ITS-Container { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) cc (0) version (2) + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2) }; -- Root Message PDU: EvcsnPdu diff --git a/epan/dissectors/asn1/its/ISO_TS_14816.asn b/epan/dissectors/asn1/its/ISO_TS_14816.asn index 9159fc4fb6..9f7298f932 100644 --- a/epan/dissectors/asn1/its/ISO_TS_14816.asn +++ b/epan/dissectors/asn1/its/ISO_TS_14816.asn @@ -4,15 +4,16 @@ -- This ASN.1 was generateds: 30.08.2016 -- -- This document contains only the data element needed for the encoding of an IVI message --- as defined in ISO TS 19321(2015) +-- as defined in ISO TS 19321(2015) -- -- Published version location: -- http://standards.iso.org/iso/14816/ -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -AVIAEINumberingAndDataStructures {iso(1) standard(0) iso14816(14816) asnm1(1) version1(1)} +AVIAEINumberingAndDataStructures {iso(1) standard(0) iso14816(14816) asnm1(1) version1(1)} DEFINITIONS AUTOMATIC TAGS::= BEGIN +IMPORTS; CS5::= SEQUENCE { vin VisibleString, -- 17 characters VIN @@ -22,7 +23,7 @@ CS5::= SEQUENCE { CountryCode::= BIT STRING(SIZE(10)) - -IssuerIdentifier::= INTEGER(0 .. 16383) + +AVIAEIIssuerIdentifier::= INTEGER(0 .. 16383) END diff --git a/epan/dissectors/asn1/its/ISO_TS_14906_Application.asn b/epan/dissectors/asn1/its/ISO_TS_14906_Application.asn index 49110dbcaf..98db480930 100644 --- a/epan/dissectors/asn1/its/ISO_TS_14906_Application.asn +++ b/epan/dissectors/asn1/its/ISO_TS_14906_Application.asn @@ -4,7 +4,7 @@ -- This ASN.1 was generateds: 30.08.2016 -- -- This document contains only the data element needed for the encoding of an IVI message --- as defined in ISO TS 19321(2015) +-- as defined in ISO TS 19321(2015) -- -- Published version location: -- http://standards.iso.org/iso/14906 @@ -15,14 +15,17 @@ EfcDsrcApplication { iso(1) standard(0) 14906 application(0) version5(5) } DEFINITIONS AUTOMATIC TAGS ::= BEGIN EXPORTS ALL; IMPORTS -CountryCode, CS5, IssuerIdentifier -FROM AVIAEINumberingAndDataStructures {iso(1) standard(0) iso14816(14816) asnm1(1) version1(1)} +CountryCode, CS5, AVIAEIIssuerIdentifier +FROM AVIAEINumberingAndDataStructures {iso(1) standard(0) iso14816(14816) asnm1(1) version1(1)} -- defined in ISO 14816 -- AttributeIdList -FROM EfcDsrcGeneric {iso(1) standard(0) 14906 generic(1) version5(5)}; +FROM EfcDsrcGeneric {iso(1) standard(0) 14906 generic(1) version5(5)} -- NOTE: The following are the definitions of the action and response -- parameters +; +-- End of IMPORTS + AxleWeightLimits ::= SEQUENCE { maxLadenweightOnAxle1 Int2, maxLadenweightOnAxle2 Int2, @@ -112,7 +115,7 @@ PassengerCapacity ::= SEQUENCE{ Provider ::= SEQUENCE { countryCode CountryCode, - providerIdentifier IssuerIdentifier + providerIdentifier AVIAEIIssuerIdentifier } SoundLevel ::= SEQUENCE{ diff --git a/epan/dissectors/asn1/its/ISO_TS_19091.asn b/epan/dissectors/asn1/its/ISO_TS_19091.asn index 453aa536a5..ac3b094173 100644 --- a/epan/dissectors/asn1/its/ISO_TS_19091.asn +++ b/epan/dissectors/asn1/its/ISO_TS_19091.asn @@ -14,1858 +14,1258 @@ -- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -- -- module: DSRC +-- Some Types renamed (added xxxDSRC) to avoid name-clashes with CDD -- -- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } + +DSRC { + iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2) +} DEFINITIONS AUTOMATIC TAGS::= BEGIN IMPORTS -StationID, Longitude, Latitude, SpeedConfidence FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) } -Reg-SPAT,Reg-SignalRequestMessage, Reg-SignalStatusMessage, Reg-MapData, Reg-AdvisorySpeed, Reg-ComputedLane, Reg-ConnectionManeuverAssist, -Reg-GenericLane, Reg-IntersectionGeometry, Reg-IntersectionState, Reg-LaneAttributes, Reg-LaneDataAttribute, Reg-MovementEvent, Reg-MovementState, -Reg-NodeAttributeSetXY, Reg-NodeOffsetPointXY,Reg-Position3D, Reg-RequestorDescription, Reg-RequestorType, Reg-RestrictionUserType, Reg-RoadSegment, -Reg-SignalControlZone, Reg-SignalRequestPackage, Reg-SignalRequest, Reg-SignalStatusPackage, Reg-SignalStatus FROM REGION { iso (1) standard (0) signalizedIntersection (19091) profilec(2) region (1) version (1)} -Iso3833VehicleType FROM ElectronicRegistrationIdentificationVehicleDataModule { iso(1) standard(0) iso24534 (24534) vehicleData (1) version (1) }; --- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- --- Start of entries from table Messages... --- This table typicaly contains message entries. --- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- +Longitude, Latitude, StationID +FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2) } --- PATCH Moved on top so that definition precedes usage -MESSAGE-ID-AND-TYPE ::= CLASS { - &id DSRCmsgID UNIQUE, - &Type - } WITH SYNTAX {&Type IDENTIFIED BY &id} +Reg-AdvisorySpeed, Reg-ComputedLane, Reg-ConnectionManeuverAssist, Reg-GenericLane, +Reg-IntersectionGeometry, Reg-IntersectionState, Reg-LaneAttributes, Reg-MapData, +Reg-LaneDataAttribute, Reg-MovementEvent, Reg-MovementState, +Reg-NodeAttributeSetXY, Reg-NodeOffsetPointXY, Reg-Position3D, Reg-RequestorDescription, Reg-RequestorType, Reg-RestrictionUserType, Reg-RoadSegment, +Reg-RTCMcorrections, Reg-SignalControlZone, Reg-SignalRequestPackage, Reg-SignalRequest, Reg-SignalStatus, Reg-SignalStatusPackage, Reg-SignalRequestMessage, +Reg-SignalStatusMessage, Reg-SPAT +FROM REGION {iso (1) standard (0) signalizedIntersection (19091) profilec(2) region (1) version2 (2)} -MessageFrame ::= SEQUENCE { - messageId MESSAGE-ID-AND-TYPE.&id({MessageTypes}), - value MESSAGE-ID-AND-TYPE.&Type({MessageTypes}{@.messageId}), - ... - } -MessageTypes MESSAGE-ID-AND-TYPE ::= { - { MapData IDENTIFIED BY mapData } | - { SPAT IDENTIFIED BY signalPhaseAndTimingMessage } | - { SignalRequestMessage IDENTIFIED BY signalRequestMessage } | - { SignalStatusMessage IDENTIFIED BY signalStatusMessage }, - ... -- Expansion to be used only by the SAE J2735 DSRC TC - } +Iso3833VehicleType +FROM ElectronicRegistrationIdentificationVehicleDataModule { iso(1) standard(0) iso24534 (24534) vehicleData (1) version1 (1) }; +-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-- Messages +-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- Regional extensions support REG-EXT-ID-AND-TYPE ::= CLASS { - &id RegionId UNIQUE, - &Type - } WITH SYNTAX {&Type IDENTIFIED BY &id} + &id RegionId UNIQUE, + &Type +} WITH SYNTAX {&Type IDENTIFIED BY &id} RegionalExtension {REG-EXT-ID-AND-TYPE : Set} ::= SEQUENCE { - regionId REG-EXT-ID-AND-TYPE.&id( {Set} ), - regExtValue REG-EXT-ID-AND-TYPE.&Type( {Set}{@regionId} ) - } - -SPAT ::= SEQUENCE { - timeStamp MinuteOfTheYear OPTIONAL, - name DescriptiveName OPTIONAL, - -- human readable name for this collection - -- to be used only in debug mode - - intersections IntersectionStateList, - -- sets of SPAT data (one per intersection) + regionId REG-EXT-ID-AND-TYPE.&id( {Set} ), + regExtValue REG-EXT-ID-AND-TYPE.&Type( {Set}{@regionId} ) +} - -- If PrioritizationResponse data is required, it is found - -- in the RegionalSPAT entry below +MapData ::= SEQUENCE { + timeStamp MinuteOfTheYear OPTIONAL, + msgIssueRevision MsgCount, + layerType LayerType OPTIONAL, + layerID LayerID OPTIONAL, + intersections IntersectionGeometryList OPTIONAL, + roadSegments RoadSegmentList OPTIONAL, + dataParameters DataParameters OPTIONAL, + restrictionList RestrictionClassList OPTIONAL, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-MapData}} OPTIONAL, + ... +} - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SPAT}} OPTIONAL, +RTCMcorrections ::= SEQUENCE { + msgCnt MsgCount, + rev RTCM-Revision, + timeStamp MinuteOfTheYear OPTIONAL, + anchorPoint FullPositionVector OPTIONAL, + rtcmHeader RTCMheader OPTIONAL, + msgs RTCMmessageList, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-RTCMcorrections}} OPTIONAL, ... - } +} + +SPAT ::= SEQUENCE { + timeStamp MinuteOfTheYear OPTIONAL, + name DescriptiveName OPTIONAL, + intersections IntersectionStateList, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SPAT}} OPTIONAL, + ... +} SignalRequestMessage ::= SEQUENCE { - timeStamp MinuteOfTheYear OPTIONAL, - second DSecond, - sequenceNumber MsgCount OPTIONAL, - - requests SignalRequestList OPTIONAL, - -- Request Data for one or more signalized - -- intersections that support SRM dialogs - - requestor RequestorDescription, - -- Requesting Device and other User Data - -- contains vehicle ID (if from a vehicle) - -- as well as type data and current position - -- and may contain additional transit data - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalRequestMessage}} OPTIONAL, - ... + timeStamp MinuteOfTheYear OPTIONAL, + second DSecond, + sequenceNumber MsgCount OPTIONAL, + requests SignalRequestList OPTIONAL, + requestor RequestorDescription, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalRequestMessage}} OPTIONAL, + ... } SignalStatusMessage ::= SEQUENCE { - timeStamp MinuteOfTheYear OPTIONAL, - second DSecond, - sequenceNumber MsgCount OPTIONAL, - - -- Status Data for one of more signalized intersections - status SignalStatusList, - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalStatusMessage}} OPTIONAL, - ... + timeStamp MinuteOfTheYear OPTIONAL, + second DSecond, + sequenceNumber MsgCount OPTIONAL, + status SignalStatusList, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalStatusMessage}} OPTIONAL, + ... } -MapData ::= SEQUENCE { - timeStamp MinuteOfTheYear OPTIONAL, - msgIssueRevision MsgCount, - layerType LayerType OPTIONAL, - layerID LayerID OPTIONAL, - intersections IntersectionGeometryList OPTIONAL, - -- All Intersection definitions - roadSegments RoadSegmentList OPTIONAL, - -- All roadway descriptions - - dataParameters DataParameters OPTIONAL, - -- Any meta data regarding the map contents - - restrictionList RestrictionClassList OPTIONAL, - -- Any restriction ID tables which have - -- established for these map entries - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-MapData}} OPTIONAL, - - -- NOTE: - -- Other map data will be added here as it is defined - -- Examples of the type of content to be added include - -- curve warnings, construction routes, etc. - ... -} + -- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- -- Start of entries from table Data_Frames... --- This table typicaly contains data frame entries. +-- Data frames -- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- AdvisorySpeed ::= SEQUENCE { - type AdvisorySpeedType, - -- the type of advisory which this is. - speed SpeedAdvice OPTIONAL, - -- See Section 11 for converting and translating speed - -- expressed in mph into units of m/s - -- This element is optional ONLY when superceded - -- by the presence of a regional speed element found in - -- Reg-AdvisorySpeed entry - confidence SpeedConfidence OPTIONAL, - -- A confidence value for the above speed - distance ZoneLength OPTIONAL, - -- Unit = 1 meter, - -- The distance indicates the region for which the advised speed - -- is recommended, it is specified upstream from the stop bar - -- along the connected egressing lane - class RestrictionClassID OPTIONAL, - -- the vehicle types to which it applies - -- when absent, the AdvisorySpeed applies to - -- all motor vehicle types - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-AdvisorySpeed}} OPTIONAL, - ... - } + type AdvisorySpeedType, + speed SpeedAdvice OPTIONAL, + confidence SpeedConfidenceDSRC OPTIONAL, + distance ZoneLength OPTIONAL, + class RestrictionClassID OPTIONAL, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-AdvisorySpeed}} OPTIONAL, + ... +} AdvisorySpeedList ::= SEQUENCE (SIZE(1..16)) OF AdvisorySpeed -ComputedLane ::= SEQUENCE { - -- Data needed to created a computed lane - referenceLaneId LaneID, - -- the lane ID upon which this - -- computed lane will be based - -- Lane Offset in X and Y direction - offsetXaxis CHOICE { - small DrivenLineOffsetSm, - large DrivenLineOffsetLg - }, - offsetYaxis CHOICE { - small DrivenLineOffsetSm, - large DrivenLineOffsetLg - }, - -- A path X offset value for translations of the - -- path's points when creating translated lanes. - -- The values found in the reference lane are - -- all offset based on the X and Y values from - -- the coordinates of the reference lane's - -- initial path point. - -- Lane Rotation - rotateXY Angle OPTIONAL, - -- A path rotation value for the entire lane - -- Observe that this rotates the existing orientation - -- of the referenced lane, it does not replace it. - -- Rotation occurs about the initial path point. - -- Lane Path Scale (zooming) - scaleXaxis Scale-B12 OPTIONAL, - scaleYaxis Scale-B12 OPTIONAL, - -- value for translations or zooming of the path's - -- points. The values found in the reference lane - -- are all expanded or contracted based on the X - -- and Y and width values from the coordinates of - -- the reference lane's initial path point. - -- The Z axis remains untouched. - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-ComputedLane}} OPTIONAL, - ... +AntennaOffsetSet ::= SEQUENCE { + antOffsetX Offset-B12, + antOffsetY Offset-B09, + antOffsetZ Offset-B10 } + +ComputedLane ::= SEQUENCE { + referenceLaneId LaneID, + offsetXaxis CHOICE { + small DrivenLineOffsetSm, + large DrivenLineOffsetLg + }, + offsetYaxis CHOICE { + small DrivenLineOffsetSm, + large DrivenLineOffsetLg + }, + rotateXY Angle OPTIONAL, + scaleXaxis Scale-B12 OPTIONAL, + scaleYaxis Scale-B12 OPTIONAL, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-ComputedLane}} OPTIONAL, + ... +} + ConnectsToList ::= SEQUENCE (SIZE(1..16)) OF Connection ConnectingLane ::= SEQUENCE { - lane LaneID, -- Index of the connecting lane - maneuver AllowedManeuvers OPTIONAL - -- The Maneuver between - -- the enclosing lane and this lane - -- at the stop line to connect them - } - + lane LaneID, + maneuver AllowedManeuvers OPTIONAL +} Connection ::= SEQUENCE { - -- The subject lane connecting to this lane is: - connectingLane ConnectingLane, - -- The index of the connecting lane and also - -- the maneuver from the current lane to it - remoteIntersection IntersectionReferenceID OPTIONAL, - -- This entry is only used when the - -- indicated connecting lane belongs - -- to another intersection layout. This - -- provides a means to create meshes of lanes - - -- SPAT mapping details at the stop line are: - signalGroup SignalGroupID OPTIONAL, - -- The matching signal group send by - -- the SPAT message for this lane/maneuver. - -- Shall be present unless the connectingLane - -- has no signal group (is un-signalized) - userClass RestrictionClassID OPTIONAL, - -- The Restriction Class of users this applies to - -- The use of some lane/maneuver and SignalGroupID - -- pairings are restricted to selected users. - -- When absent, the SignalGroupID applies to all - - -- Movement assist details are given by: - connectionID LaneConnectionID OPTIONAL - -- An optional connection index used to - -- relate this lane connection to any dynamic - -- clearance data in the SPAT. Note that - -- the index may be shared with other - -- connections if the clearance data is common - } - + connectingLane ConnectingLane, + remoteIntersection IntersectionReferenceID OPTIONAL, + signalGroup SignalGroupID OPTIONAL, + userClass RestrictionClassID OPTIONAL, + connectionID LaneConnectionID OPTIONAL +} ConnectionManeuverAssist ::= SEQUENCE { - connectionID LaneConnectionID, - -- the common connectionID used by all lanes to which - -- this data applies - -- (this value traces to ConnectsTo entries in lanes) - -- Expected Clearance Information - queueLength ZoneLength OPTIONAL, - -- Unit = 1 meter, 0 = no queue - -- The distance from the stop line to the back - -- edge of the last vehicle in the queue, - -- as measured along the lane center line. - availableStorageLength ZoneLength OPTIONAL, - -- Unit = 1 meter, 0 = no space remains - -- Distance (e.g. beginning from the downstream - -- stop-line up to a given distance) with a high - -- probability for successfully executing the - -- connecting maneuver between the two lanes - -- during the current cycle. - -- Used for enhancing the awareness of vehicles - -- to anticipate if they can pass the stop line - -- of the lane. Used for optimizing the green wave, - -- due to knowledge of vehicles waiting in front - -- of a red light (downstream). - -- The element nextTime in TimeChangeDetails - -- in the containing data frame contains the next - -- timemark at which an active phase is expected, - -- a form of storage flush interval. - waitOnStop WaitOnStopline OPTIONAL, - -- If "true", the vehicles on this specific connecting - -- maneuver have to stop on the stop-line and not - -- to enter the collision area - pedBicycleDetect PedestrianBicycleDetect OPTIONAL, - -- true if ANY ped or bicycles are detected crossing - -- the above lanes. Set to false ONLY if there is a - -- high certainty that there are none present, - -- otherwise element is not sent. - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-ConnectionManeuverAssist}} OPTIONAL, - ... - } + connectionID LaneConnectionID, + queueLength ZoneLength OPTIONAL, + availableStorageLength ZoneLength OPTIONAL, + waitOnStop WaitOnStopline OPTIONAL, + pedBicycleDetect PedestrianBicycleDetect OPTIONAL, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-ConnectionManeuverAssist}} OPTIONAL, + ... +} DataParameters ::= SEQUENCE { - processMethod IA5String(SIZE(1..255)) OPTIONAL, - processAgency IA5String(SIZE(1..255)) OPTIONAL, - lastCheckedDate IA5String(SIZE(1..255)) OPTIONAL, - geoidUsed IA5String(SIZE(1..255)) OPTIONAL, - ... + processMethod IA5String(SIZE(1..255)) OPTIONAL, + processAgency IA5String(SIZE(1..255)) OPTIONAL, + lastCheckedDate IA5String(SIZE(1..255)) OPTIONAL, + geoidUsed IA5String(SIZE(1..255)) OPTIONAL, + ... +} + + +DDateTime ::= SEQUENCE { + year DYear OPTIONAL, + month DMonth OPTIONAL, + day DDay OPTIONAL, + hour DHour OPTIONAL, + minute DMinute OPTIONAL, + second DSecond OPTIONAL, + offset DOffset OPTIONAL } EnabledLaneList ::= SEQUENCE (SIZE(1..16)) OF LaneID - -- The unique ID numbers for each - -- lane object which is 'active' - -- as part of the dynamic map contents. -GenericLane ::= SEQUENCE { - laneID LaneID, - -- The unique ID number assigned - -- to this lane object - name DescriptiveName OPTIONAL, - -- often for debug use only - -- but at times used to name ped crossings - ingressApproach ApproachID OPTIONAL, -- inbound - egressApproach ApproachID OPTIONAL, -- outbound - -- Approach IDs to which this lane belongs - laneAttributes LaneAttributes, - -- All Attribute information about - -- the basic selected lane type - -- Directions of use, Geometric co-sharing - -- and Type Specific Attributes - -- These Attributes are 'lane - global' that is, - -- they are true for the entire length of the lane - maneuvers AllowedManeuvers OPTIONAL, - -- the permitted maneuvers for this lane - nodeList NodeListXY, - -- Lane spatial path information as well as - -- various Attribute information along the node path - -- Attributes found here are more general and may - -- come and go over the length of the lane. - connectsTo ConnectsToList OPTIONAL, - -- a list of other lanes and their signal group IDs - -- each connecting lane and its signal group ID - -- is given, therefore this element provides the - -- information formerly in "signalGroups" in prior - -- editions. - overlays OverlayLaneList OPTIONAL, - -- A list of any lanes which have spatial paths that - -- overlay (run on top of, and not simply cross) - -- the path of this lane when used - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-GenericLane}} OPTIONAL, +FullPositionVector ::= SEQUENCE { + utcTime DDateTime OPTIONAL, -- time with mSec precision + long Longitude, + lat Latitude, + elevation Elevation OPTIONAL, + heading HeadingDSRC OPTIONAL, + speed TransmissionAndSpeed OPTIONAL, + posAccuracy PositionalAccuracy OPTIONAL, + timeConfidence TimeConfidence OPTIONAL, + posConfidence PositionConfidenceSet OPTIONAL, + speedConfidence SpeedandHeadingandThrottleConfidence OPTIONAL, ... } + +GenericLane ::= SEQUENCE { + laneID LaneID, + name DescriptiveName OPTIONAL, + ingressApproach ApproachID OPTIONAL, + egressApproach ApproachID OPTIONAL, + laneAttributes LaneAttributes, + maneuvers AllowedManeuvers OPTIONAL, + nodeList NodeListXY, + connectsTo ConnectsToList OPTIONAL, + overlays OverlayLaneList OPTIONAL, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-GenericLane}} OPTIONAL, + ... +} + IntersectionAccessPoint ::= CHOICE { - lane LaneID, - approach ApproachID, - connection LaneConnectionID, - ... - } + lane LaneID, + approach ApproachID, + connection LaneConnectionID, + ... +} IntersectionGeometry ::= SEQUENCE { - name DescriptiveName OPTIONAL, - -- For debug use only - id IntersectionReferenceID, - -- A globally unique value set, - -- consisting of a regionID and - -- intersection ID assignment - revision MsgCount, - - -- Required default values about lane descriptions follow - refPoint Position3D, -- The reference from which subsequent - -- data points are offset until a new - -- point is used. - laneWidth LaneWidth OPTIONAL, - -- Reference width used by all subsequent - -- lanes unless a new width is given - speedLimits SpeedLimitList OPTIONAL, - -- Reference regulatory speed limits - -- used by all subsequent - -- lanes unless a new speed is given - -- See Section 11 for converting and - -- translating speed expressed in mph - -- into units of m/s - -- Complete details regarding each lane type in this intersection - laneSet LaneList, -- Data about one or more lanes - -- (all lane data is found here) - - -- Data describing how to use and request preemption and - -- priority services from this intersection (if supported) - -- NOTE Additonal data may be added in the next release of the - -- standard at this point to handle this concept - preemptPriorityData PreemptPriorityList OPTIONAL, - -- data about one or more regional - -- preempt or priority zones - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-IntersectionGeometry}} OPTIONAL, - ... - } + name DescriptiveName OPTIONAL, + id IntersectionReferenceID, + revision MsgCount, + refPoint Position3D, + laneWidth LaneWidth OPTIONAL, + speedLimits SpeedLimitList OPTIONAL, + laneSet LaneList, + preemptPriorityData PreemptPriorityList OPTIONAL, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-IntersectionGeometry}} OPTIONAL, + ... +} IntersectionGeometryList ::= SEQUENCE (SIZE(1..32)) OF IntersectionGeometry IntersectionReferenceID ::= SEQUENCE { - region RoadRegulatorID OPTIONAL, - -- a globally unique regional assignment value - -- typical assigned to a regional DOT authority - -- the value zero shall be used for testing needs - id IntersectionID - -- a unique mapping to the intersection - -- in question within the above region of use - } + region RoadRegulatorID OPTIONAL, + id IntersectionID +} IntersectionState ::= SEQUENCE { - name DescriptiveName OPTIONAL, - -- human readable name for intersection - -- to be used only in debug mode - id IntersectionReferenceID, - -- A globally unique value set, consisting of a - -- regionID and intersection ID assignment - -- provides a unique mapping to the - -- intersection MAP in question - -- which provides complete location - -- and approach/move/lane data - revision MsgCount, - status IntersectionStatusObject, - -- general status of the controller(s) - moy MinuteOfTheYear OPTIONAL, - -- Minute of current UTC year - -- used only with messages to be archived - timeStamp DSecond OPTIONAL, - -- the mSec point in the current UTC minute that - -- this message was constructed - enabledLanes EnabledLaneList OPTIONAL, - -- a list of lanes where the RevocableLane bit - -- has been set which are now active and - -- therefore part of the current intersection - states MovementList, - -- Each Movement is given in turn - -- and contains its signal phase state, - -- mapping to the lanes it applies to, and - -- point in time it will end, and it - -- may contain both active and future states - maneuverAssistList ManeuverAssistList OPTIONAL, - -- Assist data - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-IntersectionState}} OPTIONAL, - ... - } + name DescriptiveName OPTIONAL, + id IntersectionReferenceID, + revision MsgCount, + status IntersectionStatusObject, + moy MinuteOfTheYear OPTIONAL, + timeStamp DSecond OPTIONAL, + enabledLanes EnabledLaneList OPTIONAL, + states MovementList, + maneuverAssistList ManeuverAssistList OPTIONAL, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-IntersectionState}} OPTIONAL, + ... +} IntersectionStateList ::= SEQUENCE (SIZE(1..32)) OF IntersectionState LaneAttributes ::= SEQUENCE { - directionalUse LaneDirection, -- directions of lane use - sharedWith LaneSharing, -- co-users of the lane path - laneType LaneTypeAttributes, -- specific lane type data - regional RegionalExtension {{Reg-LaneAttributes}} OPTIONAL - } + directionalUse LaneDirection, + sharedWith LaneSharing, + laneType LaneTypeAttributes, + regional RegionalExtension {{Reg-LaneAttributes}} OPTIONAL +} LaneDataAttribute ::= CHOICE { - -- Segment attribute types and the data needed for each - pathEndPointAngle DeltaAngle, - -- adjusts final point/width slant - -- of the lane to align with the stop line - laneCrownPointCenter RoadwayCrownAngle, - -- sets the canter of the road bed - -- from centerline point - laneCrownPointLeft RoadwayCrownAngle, - -- sets the canter of the road bed - -- from left edge - laneCrownPointRight RoadwayCrownAngle, - -- sets the canter of the road bed - -- from right edge - laneAngle MergeDivergeNodeAngle, - -- the angle or direction of another lane - -- this is required to support Japan style - -- when a merge point angle is required - speedLimits SpeedLimitList, - -- Reference regulatory speed limits - -- used by all segments - - -- Add others as needed, in regional space - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-LaneDataAttribute}}, - ... - } + pathEndPointAngle DeltaAngle, + laneCrownPointCenter RoadwayCrownAngle, + laneCrownPointLeft RoadwayCrownAngle, + laneCrownPointRight RoadwayCrownAngle, + laneAngle MergeDivergeNodeAngle, + speedLimits SpeedLimitList, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-LaneDataAttribute}}, + ... +} LaneDataAttributeList ::= SEQUENCE (SIZE(1..8)) OF LaneDataAttribute LaneList ::= SEQUENCE (SIZE(1..255)) OF GenericLane LaneSharing ::= BIT STRING { - -- With bits as defined: - overlappingLaneDescriptionProvided (0), - -- Assert when another lane object is present to describe the - -- path of the overlapping shared lane - -- this construct is not used for lane objects which simply cross - multipleLanesTreatedAsOneLane (1), - -- Assert if the lane object path and width details represents - -- multiple lanes within it that are not further described - - -- Various modes and type of traffic that may share this lane: - otherNonMotorizedTrafficTypes (2), -- horse drawn etc. - individualMotorizedVehicleTraffic (3), - busVehicleTraffic (4), - taxiVehicleTraffic (5), - pedestriansTraffic (6), - cyclistVehicleTraffic (7), - trackedVehicleTraffic (8), - pedestrianTraffic (9) - } (SIZE (10)) - -- All zeros would indicate 'not shared' and 'not overlapping' + overlappingLaneDescriptionProvided (0), + multipleLanesTreatedAsOneLane (1), + otherNonMotorizedTrafficTypes (2), + individualMotorizedVehicleTraffic (3), + busVehicleTraffic (4), + taxiVehicleTraffic (5), + pedestriansTraffic (6), + cyclistVehicleTraffic (7), + trackedVehicleTraffic (8), + pedestrianTraffic (9) +} (SIZE (10)) LaneTypeAttributes ::= CHOICE { - vehicle LaneAttributes-Vehicle, -- motor vehicle lanes - crosswalk LaneAttributes-Crosswalk, -- pedestrian crosswalks - bikeLane LaneAttributes-Bike, -- bike lanes - sidewalk LaneAttributes-Sidewalk, -- pedestrian sidewalk paths - median LaneAttributes-Barrier, -- medians & channelization - striping LaneAttributes-Striping, -- roadway markings - trackedVehicle LaneAttributes-TrackedVehicle, -- trains and trolleys - parking LaneAttributes-Parking, -- parking and stopping lanes - ... - } + vehicle LaneAttributes-Vehicle, + crosswalk LaneAttributes-Crosswalk, + bikeLane LaneAttributes-Bike, + sidewalk LaneAttributes-Sidewalk, + median LaneAttributes-Barrier, + striping LaneAttributes-Striping, + trackedVehicle LaneAttributes-TrackedVehicle, + parking LaneAttributes-Parking, + ... +} ManeuverAssistList ::= SEQUENCE (SIZE(1..16)) OF ConnectionManeuverAssist -MovementEventList ::= SEQUENCE (SIZE(1..16)) OF MovementEvent - MovementEvent ::= SEQUENCE { - eventState MovementPhaseState, - -- Consisting of: - -- Phase state (the basic 11 states) - -- Directional, protected, or permissive state - - timing TimeChangeDetails OPTIONAL, - -- Timing Data in UTC time stamps for event - -- includes start and min/max end times of phase - -- confidence and estimated next occurrence - - speeds AdvisorySpeedList OPTIONAL, - -- various speed advisories for use by - -- general and specific types of vehicles - -- supporting green-wave and other flow needs - -- See Section 11 for converting and translating - -- speed expressed in mph into units of m/s - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-MovementEvent}} OPTIONAL, - ... - } + eventState MovementPhaseState, + timing TimeChangeDetails OPTIONAL, + speeds AdvisorySpeedList OPTIONAL, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-MovementEvent}} OPTIONAL, + ... +} + +MovementEventList ::= SEQUENCE (SIZE(1..16)) OF MovementEvent MovementList ::= SEQUENCE (SIZE(1..255)) OF MovementState MovementState ::= SEQUENCE { - movementName DescriptiveName OPTIONAL, - -- uniquely defines movement by name - -- human readable name for intersection - -- to be used only in debug mode - signalGroup SignalGroupID, - -- the group id is used to map to lists - -- of lanes (and their descriptions) - -- which this MovementState data applies to - -- see comments in the Remarks for usage details - state-time-speed MovementEventList, - -- Consisting of sets of movement data with: - -- a) SignalPhaseState - -- b) TimeChangeDetails, and - -- c) AdvisorySpeeds (optional ) - -- Note one or more of the movement events may be for - -- a future time and that this allows conveying multiple - -- predictive phase and movement timing for various uses - -- for the current signal group - maneuverAssistList ManeuverAssistList OPTIONAL, - -- This information may also be placed in the - -- IntersectionState when common information applies to - -- different lanes in the same way - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-MovementState}} OPTIONAL, - ... - } + movementName DescriptiveName OPTIONAL, + signalGroup SignalGroupID, + state-time-speed MovementEventList, + maneuverAssistList ManeuverAssistList OPTIONAL, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-MovementState}} OPTIONAL, + ... +} NodeAttributeSetXY ::= SEQUENCE { - localNode NodeAttributeXYList OPTIONAL, - -- Attribute states which pertain to this node point - disabled SegmentAttributeXYList OPTIONAL, - -- Attribute states which are disabled at this node point - enabled SegmentAttributeXYList OPTIONAL, - -- Attribute states which are enabled at this node point - -- and which remain enabled until disabled or the lane ends - data LaneDataAttributeList OPTIONAL, - -- Attributes which require an additional data values - -- some of these are local to the node point, while others - -- persist with the provided values until changed - -- and this is indicated in each entry - dWidth Offset-B10 OPTIONAL, - -- A value added to the current lane width - -- at this node and from this node onwards, in 1cm steps - -- lane width between nodes are a linear taper between pts - -- the value of zero shall not be sent here - dElevation Offset-B10 OPTIONAL, - -- A value added to the current Elevation - -- at this node from this node onwards, in 10cm steps - -- elevations between nodes are a linear taper between pts - -- the value of zero shall not be sent here - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-NodeAttributeSetXY}} OPTIONAL, - ... - } - -NodeAttributeXYList ::= SEQUENCE (SIZE(1..8)) OF NodeAttributeXY + localNode NodeAttributeXYList OPTIONAL, + disabled SegmentAttributeXYList OPTIONAL, + enabled SegmentAttributeXYList OPTIONAL, + data LaneDataAttributeList OPTIONAL, + dWidth Offset-B10 OPTIONAL, + dElevation Offset-B10 OPTIONAL, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-NodeAttributeSetXY}} OPTIONAL, + ... +} NodeAttributeXY ::= ENUMERATED { - -- Various values which pertain only to the current node point - - -- General Items - reserved, - stopLine, -- point where a mid-path stop line exists - -- See also 'do not block' for segments - - -- Path finish details - roundedCapStyleA, -- Used to control final path rounded end shape - -- with edge of curve at final point in a circle - roundedCapStyleB, -- Used to control final path rounded end shape - -- with edge of curve extending 50% of width past - -- final point in a circle - - -- Topography Points (items with no concept of a distance along the path) - mergePoint, -- Japan merge with 1 or more lanes - divergePoint, -- Japan diverge with 1 or more lanes - downstreamStopLine, -- Japan style downstream intersection - -- (a 2nd intersection) stop line - downstreamStartNode, -- Japan style downstream intersection - -- (a 2nd intersection) start node - - -- Pedestrian Support Attributes - closedToTraffic, -- where a pedestrian may NOT go - -- to be used during construction events - safeIsland, -- a pedestrian safe stopping point - -- also called a traffic island - -- This usage described a point feature on a path, - -- other entries can describe a path - curbPresentAtStepOff, -- the sidewalk to street curb is NOT - -- angled where it meets the edge of the - -- roadway (user must step up/down) - - -- Lane geometry details (see standard for defined shapes) - hydrantPresent, -- Or other services access - ... - } + reserved, + stopLine, + roundedCapStyleA, + roundedCapStyleB, + mergePoint, + divergePoint, + downstreamStopLine, + downstreamStartNode, + closedToTraffic, + safeIsland, + curbPresentAtStepOff, + hydrantPresent, + ... +} + +NodeAttributeXYList ::= SEQUENCE (SIZE(1..8)) OF NodeAttributeXY Node-LLmD-64b ::= SEQUENCE { - lon Longitude, - lat Latitude - } + lon Longitude, + lat Latitude +} - Node-XY-20b ::= SEQUENCE { - x Offset-B10, - y Offset-B10 - } +Node-XY-20b ::= SEQUENCE { + x Offset-B10, + y Offset-B10 +} Node-XY-22b ::= SEQUENCE { - x Offset-B11, - y Offset-B11 - } - + x Offset-B11, + y Offset-B11 +} Node-XY-24b ::= SEQUENCE { - x Offset-B12, - y Offset-B12 - } - + x Offset-B12, + y Offset-B12 +} Node-XY-26b ::= SEQUENCE { - x Offset-B13, - y Offset-B13 - } - + x Offset-B13, + y Offset-B13 +} Node-XY-28b ::= SEQUENCE { - x Offset-B14, - y Offset-B14 - } - + x Offset-B14, + y Offset-B14 +} Node-XY-32b ::= SEQUENCE { - x Offset-B16, - y Offset-B16 - } + x Offset-B16, + y Offset-B16 +} NodeListXY ::= CHOICE { - nodes NodeSetXY, - -- a lane made up of two or more - -- XY node points and any attributes - -- defined in those nodes - computed ComputedLane, - -- a lane path computed by translating - -- the data defined by another lane - ... - } + nodes NodeSetXY, + computed ComputedLane, + ... +} NodeOffsetPointXY ::= CHOICE { - -- Nodes with X,Y content - node-XY1 Node-XY-20b, -- node is within 5.11m of last node - node-XY2 Node-XY-22b, -- node is within 10.23m of last node - node-XY3 Node-XY-24b, -- node is within 20.47m of last node - node-XY4 Node-XY-26b, -- node is within 40.96m of last node - node-XY5 Node-XY-28b, -- node is within 81.91m of last node - node-XY6 Node-XY-32b, -- node is within 327.67m of last node - node-LatLon Node-LLmD-64b, -- node is a full 32b Lat/Lon range - regional RegionalExtension {{Reg-NodeOffsetPointXY}} - -- node which follows is of a - -- regional definition type - } - -NodeSetXY ::= SEQUENCE (SIZE(2..63)) OF NodeXY + node-XY1 Node-XY-20b, + node-XY2 Node-XY-22b, + node-XY3 Node-XY-24b, + node-XY4 Node-XY-26b, + node-XY5 Node-XY-28b, + node-XY6 Node-XY-32b, + node-LatLon Node-LLmD-64b, + regional RegionalExtension {{Reg-NodeOffsetPointXY}} +} NodeXY ::= SEQUENCE { - delta NodeOffsetPointXY, - -- A choice of which X,Y offset value to use - -- this includes various delta values as well a regional choices - attributes NodeAttributeSetXY OPTIONAL, - -- Any optional Attributes which are needed - -- This includes changes to the current lane width and elevation - ... + delta NodeOffsetPointXY, + attributes NodeAttributeSetXY OPTIONAL, + ... } +NodeSetXY ::= SEQUENCE (SIZE(2..63)) OF NodeXY + OverlayLaneList ::= SEQUENCE (SIZE(1..5)) OF LaneID - -- The unique ID numbers for any lane object which have - -- spatial paths that overlay (run on top of, and not - -- simply cross with) the current lane. - -- Such as a train path that overlays a motor vehicle - -- lane object for a roadway segment. -Position3D ::= SEQUENCE { - lat Latitude, -- in 1/10th micro degrees - long Longitude, -- in 1/10th micro degrees - elevation Elevation OPTIONAL, -- in 10 cm units - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-Position3D}} OPTIONAL, - ... +PositionalAccuracy ::= SEQUENCE { + semiMajor SemiMajorAxisAccuracy, + semiMinor SemiMinorAxisAccuracy, + orientation SemiMajorAxisOrientation +} + +PositionConfidenceSet ::= SEQUENCE { + pos PositionConfidence, -- for both horizontal directions + elevation ElevationConfidence } + +Position3D ::= SEQUENCE { + lat Latitude, + long Longitude, + elevation Elevation OPTIONAL, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-Position3D}} OPTIONAL, + ... +} + PreemptPriorityList ::= SEQUENCE (SIZE(1..32)) OF SignalControlZone RegulatorySpeedLimit ::= SEQUENCE { - type SpeedLimitType, - -- The type of regulatory speed which follows - speed Velocity - -- The speed in units of 0.02 m/s - -- See Section 11 for converting and translating - -- speed expressed in mph into units of m/s - } + type SpeedLimitType, + speed Velocity +} RequestorDescription ::= SEQUENCE { - id VehicleID, - -- The ID used in the BSM or CAM of the requestor - -- This ID is presumed not to change - -- during the exchange - type RequestorType OPTIONAL, - -- Information regarding all type and class data - -- about the requesting vehicle - position RequestorPositionVector OPTIONAL, - -- The location of the requesting vehicle - name DescriptiveName OPTIONAL, - -- A human readable name for debugging use - -- Support for Transit requests - routeName DescriptiveName OPTIONAL, - -- A string for transit operations use - transitStatus TransitVehicleStatus OPTIONAL, - -- current vehicle state (loading, etc.) - transitOccupancy TransitVehicleOccupancy OPTIONAL, - -- current vehicle occupancy - transitSchedule DeltaTime OPTIONAL, - -- current vehicle schedule adherence - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-RequestorDescription}} OPTIONAL, - ... - } + id VehicleID, + type RequestorType OPTIONAL, + position RequestorPositionVector OPTIONAL, + name DescriptiveName OPTIONAL, + routeName DescriptiveName OPTIONAL, + transitStatus TransitVehicleStatus OPTIONAL, + transitOccupancy TransitVehicleOccupancy OPTIONAL, + transitSchedule DeltaTime OPTIONAL, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-RequestorDescription}} OPTIONAL, + ... +} RequestorPositionVector ::= SEQUENCE { - position Position3D, - heading Angle OPTIONAL, - speed TransmissionAndSpeed OPTIONAL, - ... - } + position Position3D, + heading Angle OPTIONAL, + speed TransmissionAndSpeed OPTIONAL, + ... +} RequestorType ::= SEQUENCE { - -- Defines who is requesting - role BasicVehicleRole, -- Basic role of this user at this time - subrole RequestSubRole OPTIONAL, -- A local list with role based items - - -- Defines what kind of request (a level of importance in the Priority Scheme) - request RequestImportanceLevel OPTIONAL, -- A local list with request items - - -- Additional classification details - iso3883 Iso3833VehicleType OPTIONAL, - hpmsType VehicleType OPTIONAL, -- HPMS classification types - - regional RegionalExtension {{Reg-RequestorType}} OPTIONAL, - ... - } + role BasicVehicleRole, + subrole RequestSubRole OPTIONAL, + request RequestImportanceLevel OPTIONAL, + iso3883 Iso3833VehicleType OPTIONAL, + hpmsType VehicleType OPTIONAL, + regional RegionalExtension {{Reg-RequestorType}} OPTIONAL, + ... +} RestrictionClassAssignment ::= SEQUENCE { - id RestrictionClassID, - -- the unique value (within an intersection or local region) - -- that is assigned to this group of users - users RestrictionUserTypeList - -- The list of user types/classes - -- to which this restriction ID applies - } + id RestrictionClassID, + users RestrictionUserTypeList +} RestrictionClassList ::= SEQUENCE (SIZE(1..254)) OF RestrictionClassAssignment -RestrictionUserTypeList ::= SEQUENCE (SIZE(1..16)) OF RestrictionUserType - RestrictionUserType ::= CHOICE { - basicType RestrictionAppliesTo, - -- a set of the most commonly used types - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-RestrictionUserType}}, - ... - } + basicType RestrictionAppliesTo, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-RestrictionUserType}}, + ... +} + +RestrictionUserTypeList ::= SEQUENCE (SIZE(1..16)) OF RestrictionUserType RoadLaneSetList ::= SEQUENCE (SIZE(1..255)) OF GenericLane RoadSegmentReferenceID ::= SEQUENCE { - region RoadRegulatorID OPTIONAL, - -- a globally unique regional assignment value - -- typically assigned to a regional DOT authority - -- the value zero shall be used for testing needs - id RoadSegmentID - -- a unique mapping to the road segment - -- in question within the above region of use - -- during its period of assignment and use - -- note that unlike intersectionID values, - -- this value can be reused by the region - } + region RoadRegulatorID OPTIONAL, + id RoadSegmentID +} RoadSegment ::= SEQUENCE { - name DescriptiveName OPTIONAL, - id RoadSegmentReferenceID, - -- a globally unique value for the segment - revision MsgCount, - -- Required default values about the descriptions to follow - refPoint Position3D, -- the reference from which subsequent - -- data points are offset until a new - -- point is used. - laneWidth LaneWidth OPTIONAL, - -- Reference width used by all subsequent - -- lanes unless a new width is given - speedLimits SpeedLimitList OPTIONAL, - -- Reference regulatory speed limits - -- used by all subsequent - -- lanes unless a new speed is given - -- See Section 11 for converting and - -- translating speed expressed in mph - -- into units of m/s - - -- Data describing disruptions in the RoadSegment - -- such as work zones etc will be added here; - -- in the US the SAE ITIS codes would be used here - -- The details regarding each lane type in the RoadSegment - roadLaneSet RoadLaneSetList, + name DescriptiveName OPTIONAL, + id RoadSegmentReferenceID, + revision MsgCount, + refPoint Position3D, + laneWidth LaneWidth OPTIONAL, + speedLimits SpeedLimitList OPTIONAL, + roadLaneSet RoadLaneSetList, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-RoadSegment}} OPTIONAL, + ... +} - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-RoadSegment}} OPTIONAL, - ... +RoadSegmentList ::= SEQUENCE (SIZE(1..32)) OF RoadSegment + +RTCMheader ::= SEQUENCE { + status GNSSstatus, + offsetSet AntennaOffsetSet } -RoadSegmentList ::= SEQUENCE (SIZE(1..32)) OF RoadSegment +RTCMmessageList ::= SEQUENCE (SIZE(1..5)) OF RTCMmessage SegmentAttributeXYList ::= SEQUENCE (SIZE(1..8)) OF SegmentAttributeXY SignalControlZone ::= SEQUENCE { zone RegionalExtension {{Reg-SignalControlZone}}, ... - } +} SignalRequesterInfo ::= SEQUENCE { - -- These three items serve to uniquely identify the requester - -- and the specific request to all parties - id VehicleID, - request RequestID, - sequenceNumber MsgCount, - role BasicVehicleRole OPTIONAL, - - typeData RequestorType OPTIONAL, - -- Used when addition data besides the role - -- is needed, at which point the role entry - -- above is not sent. - ... - } + id VehicleID, + request RequestID, + sequenceNumber MsgCount, + role BasicVehicleRole OPTIONAL, + typeData RequestorType OPTIONAL, + ... +} + +SignalRequest ::= SEQUENCE { + id IntersectionReferenceID, + requestID RequestID, + requestType PriorityRequestType, + inBoundLane IntersectionAccessPoint, + outBoundLane IntersectionAccessPoint OPTIONAL, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalRequest}} OPTIONAL, + ... +} SignalRequestList ::= SEQUENCE (SIZE(1..32)) OF SignalRequestPackage SignalRequestPackage ::= SEQUENCE { - request SignalRequest, - -- The specific request to the intersection - -- contains IntersectionID, request type, - -- requested action (approach/lane request) - - -- The Estimated Time of Arrival (ETA) when the service is requested - minute MinuteOfTheYear OPTIONAL, - second DSecond OPTIONAL, - duration DSecond OPTIONAL, - -- The duration value is used to provide a short interval that - -- extends the ETA so that the requesting vehicle can arrive at - -- the point of service with uncertainty or with some desired - -- duration of service. This concept can be used to avoid needing - -- to frequently update the request. - -- The requester must update the ETA and duration values if the - -- period of services extends beyond the duration time. - -- It should be assumed that if the vehicle does not clear the - -- intersection when the duration is reached, the request will - -- be cancelled and the intersection will revert to - -- normal operation. - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalRequestPackage}} OPTIONAL, - ... - } + request SignalRequest, + minute MinuteOfTheYear OPTIONAL, + second DSecond OPTIONAL, + duration DSecond OPTIONAL, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalRequestPackage}} OPTIONAL, + ... +} -SignalRequest ::= SEQUENCE { - -- the unique ID of the target intersection - id IntersectionReferenceID, - - -- The unique requestID used by the requestor - requestID RequestID, - - -- The type of request or cancel for priority or preempt use - -- when a prior request is canceled, only the requestID is needed - requestType PriorityRequestType, - - -- In typical use either an approach or a lane number would - -- be given, this indicates the requested - -- path through the intersection to the degree it is known. - inBoundLane IntersectionAccessPoint, - -- desired entry approach or lane - outBoundLane IntersectionAccessPoint OPTIONAL, - -- desired exit approach or lane - -- the values zero is used to indicate - -- intent to stop within the intersection - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalRequest}} OPTIONAL, - ... - } +SignalStatus ::= SEQUENCE { + sequenceNumber MsgCount, + id IntersectionReferenceID, + sigStatus SignalStatusPackageList, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalStatus}} OPTIONAL, + ... +} SignalStatusList ::= SEQUENCE (SIZE(1..32)) OF SignalStatus SignalStatusPackageList ::= SEQUENCE (SIZE(1..32)) OF SignalStatusPackage SignalStatusPackage ::= SEQUENCE { - -- The party that made the initial SRM request - requester SignalRequesterInfo OPTIONAL, - -- The lanes or approaches used in the request - inboundOn IntersectionAccessPoint, -- estimated lane / approach of vehicle - outboundOn IntersectionAccessPoint OPTIONAL, - - -- The Estimated Time of Arrival (ETA) when the service is requested - -- This data echos the data of the request - minute MinuteOfTheYear OPTIONAL, - second DSecond OPTIONAL, - duration DSecond OPTIONAL, - - -- the SRM status for this request - status PrioritizationResponseStatus, - -- Status of request, this may include rejection - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalStatusPackage}} OPTIONAL, - ... - } + requester SignalRequesterInfo OPTIONAL, + inboundOn IntersectionAccessPoint, + outboundOn IntersectionAccessPoint OPTIONAL, + + minute MinuteOfTheYear OPTIONAL, + second DSecond OPTIONAL, + duration DSecond OPTIONAL, + status PrioritizationResponseStatus, + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalStatusPackage}} OPTIONAL, + ... +} -SignalStatus ::= SEQUENCE { - sequenceNumber MsgCount, - -- changed whenever the below contents have change - id IntersectionReferenceID, - -- this provides a unique mapping to the - -- intersection map in question - -- which provides complete location - -- and approach/movement/lane data - -- as well as zones for priority/preemption - sigStatus SignalStatusPackageList, - -- a list of detailed status containing all - -- priority or preemption state data, both - -- active and pending, and who requested it - -- requests which are denied are also listed - -- here for a short period of time - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalStatus}} OPTIONAL, - ... +SpeedandHeadingandThrottleConfidence ::= SEQUENCE { + heading HeadingConfidenceDSRC, + speed SpeedConfidenceDSRC, + throttle ThrottleConfidence } + SpeedLimitList ::= SEQUENCE (SIZE(1..9)) OF RegulatorySpeedLimit SpeedLimitType ::= ENUMERATED { - unknown, -- Speed limit type not available - maxSpeedInSchoolZone, -- Only sent when the limit is active - maxSpeedInSchoolZoneWhenChildrenArePresent, -- Sent at any time - maxSpeedInConstructionZone, -- Used for work zones, incident zones, etc. - -- where a reduced speed is present - vehicleMinSpeed, - vehicleMaxSpeed, -- Regulatory speed limit for general traffic - vehicleNightMaxSpeed, - - truckMinSpeed, - truckMaxSpeed, - truckNightMaxSpeed, - - vehiclesWithTrailersMinSpeed, - vehiclesWithTrailersMaxSpeed, - vehiclesWithTrailersNightMaxSpeed, - ... - } + unknown, + maxSpeedInSchoolZone, + maxSpeedInSchoolZoneWhenChildrenArePresent, + maxSpeedInConstructionZone, + vehicleMinSpeed, + vehicleMaxSpeed, + vehicleNightMaxSpeed, + truckMinSpeed, + truckMaxSpeed, + truckNightMaxSpeed, + vehiclesWithTrailersMinSpeed, + vehiclesWithTrailersMaxSpeed, + vehiclesWithTrailersNightMaxSpeed, + ... +} TimeChangeDetails ::= SEQUENCE { - startTime TimeMark OPTIONAL, - -- When this phase 1st started - minEndTime TimeMark, - -- Expected shortest end time - maxEndTime TimeMark OPTIONAL, - -- Expected longest end time - - likelyTime TimeMark OPTIONAL, - -- Best predicted value based on other data - confidence TimeIntervalConfidence OPTIONAL, - -- Applies to above time element only - - nextTime TimeMark OPTIONAL - -- A rough estimate of time when - -- this phase may next occur again - -- used to support various ECO driving power - -- management needs. - } + startTime TimeMark OPTIONAL, + minEndTime TimeMark, + maxEndTime TimeMark OPTIONAL, + likelyTime TimeMark OPTIONAL, + confidence TimeIntervalConfidence OPTIONAL, + nextTime TimeMark OPTIONAL +} TimeMark ::= INTEGER (0..36001) - -- Tenths of a second in the current or next hour - -- In units of 1/10th second from UTC time - -- A range of 0~36000 covers one hour - -- The values 35991..36000 are used when a leap second occurs - -- The value 36001 is used to indicate time >3600 seconds - -- 36002 is to be used when value undefined or unknown - -- Note that this is NOT expressed in GPS time - -- or in local time TransmissionAndSpeed ::= SEQUENCE { - transmisson TransmissionState, - speed Velocity - } + transmisson TransmissionState, + speed Velocity +} VehicleID ::= CHOICE { - entityID TemporaryID, - stationID StationID - } + entityID TemporaryID, + stationID StationID +} -- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- --- Start of entries from table Data_Elements... --- This table typicaly contains data element entries. +-- data elements -- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- AdvisorySpeedType ::= ENUMERATED { - none (0), - greenwave (1), - ecoDrive (2), - transit (3), - ... - } -- Note: subject to further growth + none (0), + greenwave (1), + ecoDrive (2), + transit (3), + ... +} AllowedManeuvers ::= BIT STRING { - -- With bits as defined: - -- Allowed maneuvers at path end (stop line) - -- All maneuvers with bits not set are therefore prohibited ! - -- A value of zero shall be used for unknown, indicating no Maneuver - maneuverStraightAllowed (0), - -- a Straight movement is allowed in this lane - maneuverLeftAllowed (1), - -- a Left Turn movement is allowed in this lane - maneuverRightAllowed (2), - -- a Right Turn movement is allowed in this lane - maneuverUTurnAllowed (3), - -- a U turn movement is allowed in this lane - maneuverLeftTurnOnRedAllowed (4), - -- a Stop, and then proceed when safe movement - -- is allowed in this lane - maneuverRightTurnOnRedAllowed (5), - -- a Stop, and then proceed when safe movement - -- is allowed in this lane - maneuverLaneChangeAllowed (6), - -- a movement which changes to an outer lane - -- on the egress side is allowed in this lane - -- (example: left into either outbound lane) - maneuverNoStoppingAllowed (7), - -- the vehicle should not stop at the stop line - -- (example: a flashing green arrow) - yieldAllwaysRequired (8), - -- the allowed movements above are not protected - -- (example: an permanent yellow condition) - goWithHalt (9), - -- after making a full stop, may proceed - caution (10), - -- proceed past stop line with caution - reserved1 (11) - -- used to align to 12 Bit Field - - } (SIZE(12)) + maneuverStraightAllowed (0), + maneuverLeftAllowed (1), + maneuverRightAllowed (2), + maneuverUTurnAllowed (3), + maneuverLeftTurnOnRedAllowed (4), + maneuverRightTurnOnRedAllowed (5), + maneuverLaneChangeAllowed (6), + maneuverNoStoppingAllowed (7), + yieldAllwaysRequired (8), + goWithHalt (9), + caution (10), + reserved1 (11) +} (SIZE(12)) Angle ::= INTEGER (0..28800) - -- LSB of 0.0125 degrees - -- A range of 0 to 359.9875 degrees -ApproachID ::= INTEGER (0..15) -- zero to be used when valid value is unknown +ApproachID ::= INTEGER (0..15) BasicVehicleRole ::= ENUMERATED { - -- Values used in the EU and in the US - basicVehicle (0), -- Light duty passenger vehicle type - publicTransport (1), -- Used in EU for Transit us - specialTransport (2), -- Used in EU (e.g. heavy load) - dangerousGoods (3), -- Used in EU for any HAZMAT - roadWork (4), -- Used in EU for State and Local DOT uses - roadRescue (5), -- Used in EU and in the US to include tow trucks. - emergency (6), -- Used in EU for Police, Fire and Ambulance units - safetyCar (7), -- Used in EU for Escort vehicles - -- Begin US unique numbering - none-unknown (8), -- added to follow current SAE style guidelines - truck (9), -- Heavy trucks with additional BSM rights and obligations - motorcycle (10), -- - roadSideSource (11), -- For infrastructure generated calls such as - -- fire house, rail infrastructure, roadwork site, etc. - police (12), -- - fire (13), -- - ambulance (14), -- (does not include private para-transit etc.) - dot (15), -- all roadwork vehicles - transit (16), -- all transit vehicles - slowMoving (17), -- to also include oversize etc. - stopNgo (18), -- to include trash trucks, school buses and others - -- that routinely disturb the free flow of traffic - cyclist (19), -- - pedestrian (20), -- also includes those with mobility limitations - nonMotorized (21), -- other, horse drawn, etc. - military (22), -- - ... - } + basicVehicle (0), + publicTransport (1), + specialTransport (2), + dangerousGoods (3), + roadWork (4), + roadRescue (5), + emergency (6), + safetyCar (7), + none-unknown (8), + truck (9), + motorcycle (10), + roadSideSource (11), + police (12), + fire (13), + ambulance (14), + dot (15), + transit (16), + slowMoving (17), + stopNgo (18), + cyclist (19), + pedestrian (20), + nonMotorized (21), + military (22), + ... +} + +DDay ::= INTEGER (0..31) DeltaAngle ::= INTEGER (-150..150) - -- With an angle range from - -- negative 150 to positive 150 - -- in one degree steps where zero is directly - -- along the axis or the lane center line as defined by the - -- two closest points DeltaTime ::= INTEGER (-122 .. 121) - -- Supporting a range of +/- 20 minute in steps of 10 seconds - -- the value of -121 shall be used when more than -20 minutes - -- the value of +120 shall be used when more than +20 minutes - -- the value -122 shall be used when the value is unavailable DescriptiveName ::= IA5String (SIZE(1..63)) +DHour ::= INTEGER (0..31) + +DMinute ::= INTEGER (0..60) + +DMonth ::= INTEGER (0..12) + +DOffset ::= INTEGER (-840..840) + DrivenLineOffsetLg ::= INTEGER (-32767..32767) - -- LSB units are 1 cm. DrivenLineOffsetSm ::= INTEGER (-2047..2047) - -- LSB units are 1 cm. -DSecond ::= INTEGER (0..65535) -- units of milliseconds +DSecond ::= INTEGER (0..65535) DSRCmsgID ::= INTEGER (0..32767) - mapData DSRCmsgID ::= 18 -- MAP, intersections - signalPhaseAndTimingMessage DSRCmsgID ::= 19 -- SPAT - signalRequestMessage DSRCmsgID ::= 29 -- SRM - signalStatusMessage DSRCmsgID ::= 30 -- SSM + mapData DSRCmsgID ::= 18 + rtcmCorrections DSRCmsgID ::= 28 + signalPhaseAndTimingMessage DSRCmsgID ::= 19 + signalRequestMessage DSRCmsgID ::= 29 + signalStatusMessage DSRCmsgID ::= 30 + +DYear ::= INTEGER (0..4095) Elevation ::= INTEGER (-4096..61439) - -- In units of 10 cm steps above or below the reference ellipsoid - -- Providing a range of -409.5 to + 6143.9 meters - -- The value -4096 shall be used when Unknown is to be sent + +ElevationConfidence ::= ENUMERATED { + unavailable (0), + elev-500-00 (1), + elev-200-00 (2), + elev-100-00 (3), + elev-050-00 (4), + elev-020-00 (5), + elev-010-00 (6), + elev-005-00 (7), + elev-002-00 (8), + elev-001-00 (9), + elev-000-50 (10), + elev-000-20 (11), + elev-000-10 (12), + elev-000-05 (13), + elev-000-02 (14), + elev-000-01 (15) + } + + +FuelType ::= INTEGER (0..15) + unknownFuel FuelType ::= 0 + gasoline FuelType ::= 1 + ethanol FuelType ::= 2 + diesel FuelType ::= 3 + electric FuelType ::= 4 + hybrid FuelType ::= 5 + hydrogen FuelType ::= 6 + natGasLiquid FuelType ::= 7 + natGasComp FuelType ::= 8 + propane FuelType ::= 9 + +GNSSstatus ::= BIT STRING { + unavailable (0), + isHealthy (1), + isMonitored (2), + baseStationType (3), + aPDOPofUnder5 (4), + inViewOfUnder5 (5), + localCorrectionsPresent (6), + networkCorrectionsPresent (7) + } (SIZE(8)) + +HeadingConfidenceDSRC ::= ENUMERATED { + unavailable (0), + prec10deg (1), + prec05deg (2), + prec01deg (3), + prec0-1deg (4), + prec0-05deg (5), + prec0-01deg (6), + prec0-0125deg (7) + } + +HeadingDSRC ::= INTEGER (0..28800) IntersectionID ::= INTEGER (0..65535) - -- The values zero through 255 are allocated for testing purposes - -- Note that the value assigned to an intersection will be - -- unique within a given regional ID only IntersectionStatusObject ::= BIT STRING { - manualControlIsEnabled (0), - -- Timing reported is per programmed values, etc. but person - -- at cabinet can manually request that certain intervals are - -- terminated early (e.g. green). - stopTimeIsActivated (1), - -- And all counting/timing has stopped. - failureFlash (2), - -- Above to be used for any detected hardware failures, - -- e.g. conflict monitor as well as for police flash - preemptIsActive (3), - signalPriorityIsActive (4), - - -- Additional states - fixedTimeOperation (5), - -- Schedule of signals is based on time only - -- (i.e. the state can be calculated) - trafficDependentOperation (6), - -- Operation is based on different levels of traffic parameters - -- (requests, duration of gaps or more complex parameters) - standbyOperation (7), - -- Controller: partially switched off or partially amber flashing - failureMode (8), - -- Controller has a problem or failure in operation - off (9), - -- Controller is switched off - - -- Related to MAP and SPAT bindings - recentMAPmessageUpdate (10), - -- Map revision with content changes - recentChangeInMAPassignedLanesIDsUsed (11), - -- Change in MAP's assigned lanes used (lane changes) - -- Changes in the active lane list description - noValidMAPisAvailableAtThisTime (12), - -- MAP (and various lanes indexes) not available - noValidSPATisAvailableAtThisTime (13) - -- SPAT system is not working at this time - - -- Bits 14,15 reserved at this time and shall be zero - } (SIZE(16)) - + manualControlIsEnabled (0), + stopTimeIsActivated (1), + failureFlash (2), + preemptIsActive (3), + signalPriorityIsActive (4), + fixedTimeOperation (5), + trafficDependentOperation (6), + standbyOperation (7), + failureMode (8), + off (9), + recentMAPmessageUpdate (10), + recentChangeInMAPassignedLanesIDsUsed (11), + noValidMAPisAvailableAtThisTime (12), + noValidSPATisAvailableAtThisTime (13) +} (SIZE(16)) LaneAttributes-Barrier ::= BIT STRING { - -- With bits as defined: - median-RevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - median (1), - whiteLineHashing (2), - stripedLines (3), - doubleStripedLines (4), - trafficCones (5), - constructionBarrier (6), - trafficChannels (7), - lowCurbs (8), - highCurbs (9) - -- Bits 10~15 reserved and set to zero - } (SIZE (16)) + median-RevocableLane (0), + median (1), + whiteLineHashing (2), + stripedLines (3), + doubleStripedLines (4), + trafficCones (5), + constructionBarrier (6), + trafficChannels (7), + lowCurbs (8), + highCurbs (9) +} (SIZE (16)) LaneAttributes-Bike ::= BIT STRING { - -- With bits as defined: - bikeRevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - pedestrianUseAllowed (1), - -- The path allows pedestrian traffic, - -- if not set, this mode is prohibited - isBikeFlyOverLane (2), - -- path of lane is not at grade - fixedCycleTime (3), - -- the phases use preset times - -- i.e. there is not a 'push to cross' button - biDirectionalCycleTimes (4), - -- ped walk phases use different SignalGroupID - -- for each direction. The first SignalGroupID - -- in the first Connection represents 'inbound' - -- flow (the direction of travel towards the first - -- node point) while second SignalGroupID in the - -- next Connection entry represents the 'outbound' - -- flow. And use of RestrictionClassID entries - -- in the Connect follow this same pattern in pairs. - isolatedByBarrier (5), - unsignalizedSegmentsPresent (6) - -- The lane path consists of one of more segments - -- which are not part of a signal group ID - - -- Bits 7~15 reserved and set to zero - } (SIZE (16)) + bikeRevocableLane (0), + pedestrianUseAllowed (1), + isBikeFlyOverLane (2), + fixedCycleTime (3), + biDirectionalCycleTimes (4), + isolatedByBarrier (5), + unsignalizedSegmentsPresent (6) +} (SIZE (16)) LaneAttributes-Crosswalk ::= BIT STRING { - -- With bits as defined: - -- MUTCD provides no suitable "types" to use here - crosswalkRevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - bicyleUseAllowed (1), - -- The path allows bicycle traffic, - -- if not set, this mode is prohibited - isXwalkFlyOverLane (2), - -- path of lane is not at grade - fixedCycleTime (3), - -- ped walk phases use preset times - -- i.e. there is not a 'push to cross' button - biDirectionalCycleTimes (4), - -- ped walk phases use different SignalGroupID - -- for each direction. The first SignalGroupID - -- in the first Connection represents 'inbound' - -- flow (the direction of travel towards the first - -- node point) while second SignalGroupID in the - -- next Connection entry represents the 'outbound' - -- flow. And use of RestrictionClassID entries - -- in the Connect follow this same pattern in pairs. - hasPushToWalkButton (5), - -- Has a demand input - audioSupport (6), - -- audio crossing cues present - rfSignalRequestPresent (7), - -- Supports RF push to walk technologies - unsignalizedSegmentsPresent (8) - -- The lane path consists of one of more segments - -- which are not part of a signal group ID - -- Bits 9~15 reserved and set to zero - } (SIZE (16)) + crosswalkRevocableLane (0), + bicyleUseAllowed (1), + isXwalkFlyOverLane (2), + fixedCycleTime (3), + biDirectionalCycleTimes (4), + hasPushToWalkButton (5), + audioSupport (6), + rfSignalRequestPresent (7), + unsignalizedSegmentsPresent (8) +} (SIZE (16)) LaneAttributes-Parking ::= BIT STRING { - -- With bits as defined: - -- Parking use details, note that detailed restrictions such as - -- allowed hours are sent by way of ITIS codes in the TIM message - parkingRevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - parallelParkingInUse (1), - headInParkingInUse (2), - doNotParkZone (3), - -- used to denote fire hydrants as well as - -- short disruptions in a parking zone - parkingForBusUse (4), - parkingForTaxiUse (5), - noPublicParkingUse (6) - -- private parking, as in front of - -- private property - -- Bits 7~15 reserved and set to zero - } (SIZE (16)) + parkingRevocableLane (0), + parallelParkingInUse (1), + headInParkingInUse (2), + doNotParkZone (3), + parkingForBusUse (4), + parkingForTaxiUse (5), + noPublicParkingUse (6) +} (SIZE (16)) LaneAttributes-Sidewalk ::= BIT STRING { - -- With bits as defined: - sidewalk-RevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - bicyleUseAllowed (1), - -- The path allows bicycle traffic, - -- if not set, this mode is prohibited - isSidewalkFlyOverLane (2), - -- path of lane is not at grade - walkBikes (3) - -- bike traffic must dismount and walk - -- Bits 4~15 reserved and set to zero - } (SIZE (16)) - + sidewalk-RevocableLane (0), + bicyleUseAllowed (1), + isSidewalkFlyOverLane (2), + walkBikes (3) +} (SIZE (16)) LaneAttributes-Striping ::= BIT STRING { - -- With bits as defined: - stripeToConnectingLanesRevocableLane (0), - -- this lane may be activated or not activated based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - stripeDrawOnLeft (1), - stripeDrawOnRight (2), - -- which side of lane to mark - stripeToConnectingLanesLeft (3), - stripeToConnectingLanesRight (4), - stripeToConnectingLanesAhead (5) - -- the stripe type should be - -- presented to the user visually - -- to reflect stripes in the - -- intersection for the type of - -- movement indicated - -- Bits 6~15 reserved and set to zero - } (SIZE (16)) - + stripeToConnectingLanesRevocableLane (0), + stripeDrawOnLeft (1), + stripeDrawOnRight (2), + stripeToConnectingLanesLeft (3), + stripeToConnectingLanesRight (4), + stripeToConnectingLanesAhead (5) +} (SIZE (16)) LaneAttributes-TrackedVehicle ::= BIT STRING { - -- With bits as defined: - spec-RevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - spec-commuterRailRoadTrack (1), - spec-lightRailRoadTrack (2), - spec-heavyRailRoadTrack (3), - spec-otherRailType (4) - -- Bits 5~15 reserved and set to zero - } (SIZE (16)) + spec-RevocableLane (0), + spec-commuterRailRoadTrack (1), + spec-lightRailRoadTrack (2), + spec-heavyRailRoadTrack (3), + spec-otherRailType (4) +} (SIZE (16)) LaneAttributes-Vehicle ::= BIT STRING { - -- With bits as defined: - isVehicleRevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - isVehicleFlyOverLane (1), - -- path of lane is not at grade - hovLaneUseOnly (2), - restrictedToBusUse (3), - restrictedToTaxiUse (4), - restrictedFromPublicUse (5), - hasIRbeaconCoverage (6), - permissionOnRequest (7) -- e.g. to inform about a lane for e-cars - - } (SIZE (8,...)) + isVehicleRevocableLane (0), + isVehicleFlyOverLane (1), + hovLaneUseOnly (2), + restrictedToBusUse (3), + restrictedToTaxiUse (4), + restrictedFromPublicUse (5), + hasIRbeaconCoverage (6), + permissionOnRequest (7) +} (SIZE (8,...)) LaneConnectionID ::= INTEGER (0..255) LaneDirection ::= BIT STRING { - -- With bits as defined: - -- Allowed directions of travel in the lane object - -- All lanes are described from the stop line outwards - ingressPath (0), - -- travel from rear of path to front - -- is allowed - egressPath (1) - -- travel from front of path to rear - -- is allowed - -- Notes: No Travel, i.e. the lane object type does not support - -- travel (medians, curbs, etc.) is indicated by not - -- asserting any bit value - -- Bi-Directional Travel (such as a ped crosswalk) is - -- indicated by asserting both of the bits - } (SIZE (2)) + ingressPath (0), + egressPath (1) +} (SIZE (2)) LaneID ::= INTEGER (0..255) - -- the value 0 shall be used when the lane ID is - -- not available or not known - -- the value 255 is reserved for future use LayerID ::= INTEGER (0..100) LayerType ::= ENUMERATED { - none, - mixedContent, -- two or more of the below types - generalMapData, - intersectionData, - curveData, - roadwaySectionData, - parkingAreaData, - sharedLaneData, - ... - } - -LaneWidth ::= INTEGER (0..32767) -- units of 1 cm + none, + mixedContent, + generalMapData, + intersectionData, + curveData, + roadwaySectionData, + parkingAreaData, + sharedLaneData, + ... +} + +LaneWidth ::= INTEGER (0..32767) MergeDivergeNodeAngle ::= INTEGER (-180..180) - -- In units of 1.5 degrees from north - -- the value -180 shall be used to represent - -- data is not available or unknown MinuteOfTheYear ::= INTEGER (0..527040) - -- the value 527040 shall be used for invalid MovementPhaseState ::= ENUMERATED { - -- Note that based on the regions and the operating mode not every - -- phase will be used in all transportation modes and that not - -- every phase will be used in all transportation modes - - unavailable (0), - -- This state is used for unknown or error - dark (1), - -- The signal head is dark (unlit) - - -- Reds - stop-Then-Proceed (2), - -- Often called 'flashing red' in US - -- Driver Action: - -- Stop vehicle at stop line. - -- Do not proceed unless it is safe. - -- Note that the right to proceed either right or left when - -- it is safe may be contained in the lane description to - -- handle what is called a 'right on red' - stop-And-Remain (3), - -- e.g. called 'red light' in US - -- Driver Action: - -- Stop vehicle at stop line. - -- Do not proceed. - -- Note that the right to proceed either right or left when - -- it is safe may be contained in the lane description to - -- handle what is called a 'right on red' - - -- Greens - pre-Movement (4), - -- Not used in the US, red+yellow partly in EU - -- Driver Action: - -- Stop vehicle. - -- Prepare to proceed (pending green) - -- (Prepare for transition to green/go) - permissive-Movement-Allowed (5), - -- Often called 'permissive green' in US - -- Driver Action: - -- Proceed with caution, - -- must yield to all conflicting traffic - -- Conflicting traffic may be present - -- in the intersection conflict area - protected-Movement-Allowed (6), - -- Often called 'protected green' in US - -- Driver Action: - -- Proceed, tossing caution to the wind, - -- in indicated (allowed) direction. - - -- Yellows / Ambers - -- The vehicle is not allowed to cross the stop bar if it is possible - -- to stop without danger. - permissive-clearance (7), - -- Often called 'permissive yellow' in US - -- Driver Action: - -- Prepare to stop. - -- Proceed if unable to stop, - -- Clear Intersection. - -- Conflicting traffic may be present - -- in the intersection conflict area - protected-clearance (8), - -- Often called 'protected yellow' in US - -- Driver Action: - -- Prepare to stop. - -- Proceed if unable to stop, - -- in indicated direction (to connected lane) - -- Clear Intersection. - - caution-Conflicting-Traffic (9) - -- Often called 'flashing yellow' in US - -- Often used for extended periods of time - -- Driver Action: - -- Proceed with caution, - -- Conflicting traffic may be present - -- in the intersection conflict area - } - -- The above number assignments are not used with UPER encoding - -- and are only to be used with DER or implicit encoding + unavailable (0), + dark (1), + stop-Then-Proceed (2), + stop-And-Remain (3), + pre-Movement (4), + permissive-Movement-Allowed (5), + protected-Movement-Allowed (6), + permissive-clearance (7), + protected-clearance (8), + caution-Conflicting-Traffic (9) +} MsgCount ::= INTEGER (0..127) +Offset-B09 ::= INTEGER (-256..255) + Offset-B10 ::= INTEGER (-512..511) - -- a range of +- 5.11 meters Offset-B11 ::= INTEGER (-1024..1023) - -- a range of +- 10.23 meters Offset-B12 ::= INTEGER (-2048..2047) - -- a range of +- 20.47 meters Offset-B13 ::= INTEGER (-4096..4095) - -- a range of +- 40.95 meters Offset-B14 ::= INTEGER (-8192..8191) - -- a range of +- 81.91 meters Offset-B16 ::= INTEGER (-32768..32767) - -- a range of +- 327.68 meters PedestrianBicycleDetect ::= BOOLEAN - -- true if ANY Pedestrians or Bicyclists are - -- detected crossing the target lane or lanes + +PositionConfidence ::= ENUMERATED { + unavailable (0), + a500m (1), + a200m (2), + a100m (3), + a50m (4), + a20m (5), + a10m (6), + a5m (7), + a2m (8), + a1m (9), + a50cm (10), + a20cm (11), + a10cm (12), + a5cm (13), + a2cm (14), + a1cm (15) + } PrioritizationResponseStatus ::= ENUMERATED { - unknown (0), - -- Unknown state - requested (1), - -- This prioritization request was detected - -- by the traffic controller - processing (2), - -- Checking request - -- (request is in queue, other requests are prior) - watchOtherTraffic (3), - -- Cannot give full permission, - -- therefore watch for other traffic - -- Note that other requests may be present - granted (4), - -- Intervention was successful - -- and now prioritization is active - rejected (5), - -- The prioritization or preemption request was - -- rejected by the traffic controller - maxPresence (6), - -- The Request has exceeded maxPresence time - -- Used when the controller has determined that - -- the requester should then back off and - -- request an alternative. - reserviceLocked (7), - -- Prior conditions have resulted in a reservice - -- locked event: the controller requires the - -- passage of time before another similar request - -- will be accepted - ... + unknown (0), + requested (1), + processing (2), + watchOtherTraffic (3), + granted (4), + rejected (5), + maxPresence (6), + reserviceLocked (7), + ... } PriorityRequestType ::= ENUMERATED { - priorityRequestTypeReserved (0), - priorityRequest (1), - priorityRequestUpdate (2), - priorityCancellation (3), - ... - } + priorityRequestTypeReserved (0), + priorityRequest (1), + priorityRequestUpdate (2), + priorityCancellation (3), + ... +} RegionId ::= INTEGER (0..255) - noRegion RegionId ::= 0 -- Use default supplied stubs - addGrpA RegionId ::= 1 -- USA - addGrpB RegionId ::= 2 -- Japan - addGrpC RegionId ::= 3 -- EU - -- NOTE: new registered regional IDs will be added here - -- The values 128 and above are for local region use + noRegion RegionId ::= 0 + addGrpA RegionId ::= 1 + addGrpB RegionId ::= 2 + addGrpC RegionId ::= 3 RequestID ::= INTEGER (0..255) RequestImportanceLevel ::= ENUMERATED { - requestImportanceLevelUnKnown (0), - requestImportanceLevel1 (1), -- The least important request - requestImportanceLevel2 (2), -- The values here shall be assigned - requestImportanceLevel3 (3), -- Meanings based on regional needs - requestImportanceLevel4 (4), -- for each of the basic roles which - requestImportanceLevel5 (5), -- are defined elsewhere - requestImportanceLevel6 (6), - requestImportanceLevel7 (7), - requestImportanceLevel8 (8), - requestImportanceLevel9 (9), - requestImportanceLevel10 (10), - requestImportanceLevel11 (11), - requestImportanceLevel12 (12), - requestImportanceLevel13 (13), - requestImportanceLevel14 (14), -- The most important request - requestImportanceReserved (15) -- Reserved for future use - } + requestImportanceLevelUnKnown (0), + requestImportanceLevel1 (1), + requestImportanceLevel2 (2), + requestImportanceLevel3 (3), + requestImportanceLevel4 (4), + requestImportanceLevel5 (5), + requestImportanceLevel6 (6), + requestImportanceLevel7 (7), + requestImportanceLevel8 (8), + requestImportanceLevel9 (9), + requestImportanceLevel10 (10), + requestImportanceLevel11 (11), + requestImportanceLevel12 (12), + requestImportanceLevel13 (13), + requestImportanceLevel14 (14), + requestImportanceReserved (15) +} RequestSubRole ::= ENUMERATED { - requestSubRoleUnKnown (0), - requestSubRole1 (1), -- The first type of sub role - requestSubRole2 (2), -- The values here shall be assigned - requestSubRole3 (3), -- Meanings based on regional needs - requestSubRole4 (4), -- to refine and expand the basic - requestSubRole5 (5), -- roles which are defined elsewhere - requestSubRole6 (6), - requestSubRole7 (7), - requestSubRole8 (8), - requestSubRole9 (9), - requestSubRole10 (10), - requestSubRole11 (11), - requestSubRole12 (12), - requestSubRole13 (13), - requestSubRole14 (14), -- The last type of sub role - requestSubRoleReserved (15) -- Reserved for future use - } + requestSubRoleUnKnown (0), + requestSubRole1 (1), + requestSubRole2 (2), + requestSubRole3 (3), + requestSubRole4 (4), + requestSubRole5 (5), + requestSubRole6 (6), + requestSubRole7 (7), + requestSubRole8 (8), + requestSubRole9 (9), + requestSubRole10 (10), + requestSubRole11 (11), + requestSubRole12 (12), + requestSubRole13 (13), + requestSubRole14 (14), + requestSubRoleReserved (15) +} RestrictionAppliesTo ::= ENUMERATED { - none, -- applies to nothing - equippedTransit, -- buses etc. - equippedTaxis, - equippedOther, -- other vehicle types with - -- necessary signal phase state - -- reception equipment - emissionCompliant, -- regional variants with more - -- definitive items also exist - equippedBicycle, - weightCompliant, - heightCompliant, - -- Items dealing with traveler needs serviced by the infrastructure - -- These end users (which are not vehicles) are presumed to be suitably equipped - pedestrians, - slowMovingPersons, - wheelchairUsers, - visualDisabilities, - audioDisabilities, -- hearing - otherUnknownDisabilities, - ... - } + none, + equippedTransit, + equippedTaxis, + equippedOther, + emissionCompliant, + equippedBicycle, + weightCompliant, + heightCompliant, + pedestrians, + slowMovingPersons, + wheelchairUsers, + visualDisabilities, + audioDisabilities, + otherUnknownDisabilities, + ... +} RestrictionClassID ::= INTEGER (0..255) - -- An index value to identify data about classes of users - -- the value used varies with each intersection's - -- needs and is defined in the map to the assigned - -- classes of supported users. RoadRegulatorID ::= INTEGER (0..65535) - -- The value zero shall be used for testing only RoadSegmentID ::= INTEGER (0..65535) - -- The values zero to 255 shall be used for testing only - -- Note that the value assigned to an RoadSegment will be - -- unique within a given regional ID only during its use RoadwayCrownAngle ::= INTEGER (-128..127) - -- In LSB units of 0.3 degrees of angle - -- over a range of -38.1 to + 38.1 degrees - -- The value -128 shall be used for unknown - -- The value zero shall be used for angles - -- which are between -0.15 and +0.15 -Scale-B12 ::= INTEGER (-2048..2047) -- in steps of 0.05 percent +RTCMmessage ::= OCTET STRING (SIZE(1..1023)) + +RTCM-Revision ::= ENUMERATED { + unknown (0), + rtcmRev2 (1), -- Std 10402.x et al + rtcmRev3 (2), -- Std 10403.x et al + reserved (3), + ... +} + +Scale-B12 ::= INTEGER (-2048..2047) SignalGroupID ::= INTEGER (0..255) - -- The value 0 shall be used when the ID is - -- not available or not known - -- the value 255 is reserved to indicate a - -- permanent green movement state - -- therefore a simple 8 phase signal controller - -- device might use 1..9 as its groupIDs SegmentAttributeXY ::= ENUMERATED { - -- Various values which can be Enabled and Disabled for a lane segment - - -- General Items - reserved , - doNotBlock , -- segment where a vehicle - -- may not come to a stop - whiteLine , -- segment where lane crossing not allowed - -- such as the final few meters of a lane - - -- Porous Lane states, merging, turn outs, parking etc. - - mergingLaneLeft , -- indicates porous lanes - mergingLaneRight , - - curbOnLeft , -- indicates presence of curbs - curbOnRight , - - loadingzoneOnLeft , -- loading or drop off zones - loadingzoneOnRight , - - turnOutPointOnLeft , -- opening to adjacent street/alley/road - turnOutPointOnRight , - - adjacentParkingOnLeft , -- side of road parking - adjacentParkingOnRight , - - -- Bike Lane Needs - adjacentBikeLaneOnLeft , -- presence of marked bike lanes - adjacentBikeLaneOnRight , - sharedBikeLane , -- right of way is shared with bikes - -- who may occupy entire lane width - bikeBoxInFront , - - -- Transit Needs - transitStopOnLeft , -- any form of bus/transit loading - -- with pull in-out access to lane on left - transitStopOnRight , -- any form of bus/transit loading - -- with pull in-out access to lane on right - transitStopInLane , -- any form of bus/transit loading - -- in mid path of the lane - sharedWithTrackedVehicle , -- lane is shared with train or trolley - -- not used for crossing tracks - - - -- Pedestrian Support Attributes - safeIsland , -- begin/end a safety island in path - lowCurbsPresent , -- for ADA support - rumbleStripPresent , -- for ADA support - audibleSignalingPresent , -- for ADA support - adaptiveTimingPresent , -- for ADA support - rfSignalRequestPresent , -- Supports RF push to walk technologies - partialCurbIntrusion , -- path is blocked by a median or curb - -- but at least 1 meter remains open for use - -- and at-grade passage - - -- Lane geometry details (see standard for defined shapes) - taperToLeft , -- Used to control final path shape - taperToRight , -- Used to control final path shape - taperToCenterLine , -- Used to control final path shape - - -- Parking Lane and Curb Attributes - parallelParking , -- - headInParking , -- Parking at an angle with the street - freeParking , -- no restriction on use of parking - timeRestrictionsOnParking , -- Parking is not permitted at all times - -- typically used when the 'parking' lane - -- becomes a driving lane at times - costToPark , -- Used where parking has a cost - midBlockCurbPresent , -- a protruding curb near lane edge - unEvenPavementPresent , -- a disjoint height at lane edge - ... - } + reserved , + doNotBlock , + whiteLine , + mergingLaneLeft , + mergingLaneRight , + curbOnLeft , + curbOnRight , + loadingzoneOnLeft , + loadingzoneOnRight , + turnOutPointOnLeft , + turnOutPointOnRight , + adjacentParkingOnLeft , + adjacentParkingOnRight , + adjacentBikeLaneOnLeft , + adjacentBikeLaneOnRight , + sharedBikeLane , + bikeBoxInFront , + transitStopOnLeft , + transitStopOnRight , + transitStopInLane , + sharedWithTrackedVehicle , + safeIsland , + lowCurbsPresent , + rumbleStripPresent , + audibleSignalingPresent , + adaptiveTimingPresent , + rfSignalRequestPresent , + partialCurbIntrusion , + taperToLeft , + taperToRight , + taperToCenterLine , + parallelParking , + headInParking , + freeParking , + timeRestrictionsOnParking , + costToPark , + midBlockCurbPresent , + unEvenPavementPresent , + ... +} + +SemiMajorAxisAccuracy ::= INTEGER (0..255) + +SemiMajorAxisOrientation ::= INTEGER (0..65535) + +SemiMinorAxisAccuracy ::= INTEGER (0..255) SpeedAdvice ::= INTEGER (0..500) - -- LSB units are 0.1 m/s^2 - -- the value 499 shall be used for values at or greater than 49.9 m/s - -- the value 500 shall be used to indicate that speed is unavailable +SpeedConfidenceDSRC ::= ENUMERATED { + unavailable (0), -- Not Equipped or unavailable + prec100ms (1), -- 100 meters / sec + prec10ms (2), -- 10 meters / sec + prec5ms (3), -- 5 meters / sec + prec1ms (4), -- 1 meters / sec + prec0-1ms (5), -- 0.1 meters / sec + prec0-05ms (6), -- 0.05 meters / sec + prec0-01ms (7) -- 0.01 meters / sec + } TemporaryID ::= OCTET STRING (SIZE(4)) +ThrottleConfidence ::= ENUMERATED { + unavailable (0), + prec10percent (1), + prec1percent (2), + prec0-5percent (3) + } + +TimeConfidence ::= ENUMERATED { + unavailable (0), + time-100-000 (1), + time-050-000 (2), + time-020-000 (3), + time-010-000 (4), + time-002-000 (5), + time-001-000 (6), + time-000-500 (7), + time-000-200 (8), + time-000-100 (9), + time-000-050 (10), + time-000-020 (11), + time-000-010 (12), + time-000-005 (13), + time-000-002 (14), + time-000-001 (15), + time-000-000-5 (16), + time-000-000-2 (17), + time-000-000-1 (18), + time-000-000-05 (19), + time-000-000-02 (20), + time-000-000-01 (21), + time-000-000-005 (22), + time-000-000-002 (23), + time-000-000-001 (24), + time-000-000-000-5 (25), + time-000-000-000-2 (26), + time-000-000-000-1 (27), + time-000-000-000-05 (28), + time-000-000-000-02 (29), + time-000-000-000-01 (30), + time-000-000-000-005 (31), + time-000-000-000-002 (32), + time-000-000-000-001 (33), + time-000-000-000-000-5 (34), + time-000-000-000-000-2 (35), + time-000-000-000-000-1 (36), + time-000-000-000-000-05 (37), + time-000-000-000-000-02 (38), + time-000-000-000-000-01 (39) +} + TimeIntervalConfidence ::= INTEGER (0..15) - -- Value Probability - -- 0 21% - -- 1 36% - -- 2 47% - -- 3 56% - -- 4 62% - -- 5 68% - -- 6 73% - -- 7 77% - -- 8 81% - -- 9 85% - -- 10 88% - -- 11 91% - -- 12 94% - -- 13 96% - -- 14 98% - -- 15 100% TransitVehicleOccupancy ::= ENUMERATED { - occupancyUnknown (0), - occupancyEmpty (1), - occupancyVeryLow (2), - occupancyLow (3), - occupancyMed (4), - occupancyHigh (5), - occupancyNearlyFull (6), - occupancyFull (7) - } + occupancyUnknown (0), + occupancyEmpty (1), + occupancyVeryLow (2), + occupancyLow (3), + occupancyMed (4), + occupancyHigh (5), + occupancyNearlyFull (6), + occupancyFull (7) +} TransitVehicleStatus ::= BIT STRING { - loading (0), -- parking and unable to move at this time - anADAuse (1), -- an ADA access is in progress (wheelchairs, kneeling, etc.) - aBikeLoad (2), -- loading of a bicycle is in progress - doorOpen (3), -- a vehicle door is open for passenger access - charging (4), -- a vehicle is connected to charging point - atStopLine (5) -- a vehicle is at the stop line for the lane it is in - } (SIZE(8)) + loading (0), + anADAuse (1), + aBikeLoad (2), + doorOpen (3), + charging (4), + atStopLine (5) +} (SIZE(8)) TransmissionState ::= ENUMERATED { - neutral (0), -- Neutral - park (1), -- Park - forwardGears (2), -- Forward gears - reverseGears (3), -- Reverse gears - reserved1 (4), - reserved2 (5), - reserved3 (6), - unavailable (7) -- not-equipped or unavailable value, - -- Any related speed is relative to the vehicle reference frame used - } + neutral (0), + park (1), + forwardGears (2), + reverseGears (3), + reserved1 (4), + reserved2 (5), + reserved3 (6), + unavailable (7) +} + +VehicleHeight ::= INTEGER (0..127) VehicleType ::= ENUMERATED { - none (0), -- Not Equipped, Not known or unavailable - unknown (1), -- Does not fit any other category - special (2), -- Special use - moto (3), -- Motorcycle - car (4), -- Passenger car - carOther (5), -- Four tire single units - bus (6), -- Buses - axleCnt2 (7), -- Two axle, six tire single units - axleCnt3 (8), -- Three axle, single units - axleCnt4 (9), -- Four or more axle, single unit - axleCnt4Trailer (10), -- Four or less axle, single trailer - axleCnt5Trailer (11), -- Five or less axle, single trailer - axleCnt6Trailer (12), -- Six or more axle, single trailer - axleCnt5MultiTrailer (13), -- Five or less axle, multi-trailer - axleCnt6MultiTrailer (14), -- Six axle, multi-trailer - axleCnt7MultiTrailer (15), -- Seven or more axle, multi-trailer - ... - } + none (0), + unknown (1), + special (2), + moto (3), + car (4), + carOther (5), + bus (6), + axleCnt2 (7), + axleCnt3 (8), + axleCnt4 (9), + axleCnt4Trailer (10), + axleCnt5Trailer (11), + axleCnt6Trailer (12), + axleCnt5MultiTrailer (13), + axleCnt6MultiTrailer (14), + axleCnt7MultiTrailer (15), + ... +} -Velocity ::= INTEGER (0..8191) -- Units of 0.02 m/s - -- The value 8191 indicates that - -- velocity is unavailable +Velocity ::= INTEGER (0..8191) -WaitOnStopline ::= BOOLEAN -- - -- True or False - -- If "true", the vehicles on this specific connecting - -- maneuver have to stop on the stop-line - -- and not to enter the collision area +WaitOnStopline ::= BOOLEAN ZoneLength ::= INTEGER (0..10000) - -- Unit = 1 meter, 0 = unknown, - -- The value 10000 to be used for Distances >=10000 m - -- (e.g. from known point to another point along a - -- known path, often against traffic flow direction - -- when used for measuring queues) END @@ -1874,108 +1274,195 @@ END -- module: AddGrpC -- -- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -AddGrpC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) addgrpc (0) version (1) } - +AddGrpC { + iso (1) standard (0) signalizedIntersection (19091) profilec (2) addgrpc (0) + version2 (2) + } DEFINITIONS AUTOMATIC TAGS::= BEGIN IMPORTS -NodeOffsetPointXY, NodeSetXY, PrioritizationResponseStatus, SignalGroupID, DeltaTime, LaneID FROM DSRC -Altitude, StationID, DeltaAltitude FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) }; - -ConnectionManeuverAssist-addGrpC ::= SEQUENCE { - itsStationPositions ItsStationPositionList OPTIONAL, - rsuGNSSOffset NodeOffsetPointXY OPTIONAL, - ... +DeltaTime, FuelType, IntersectionID, LaneConnectionID, LaneID, NodeOffsetPointXY, NodeSetXY, PrioritizationResponseStatus, SignalGroupID, VehicleHeight +FROM DSRC { + iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2) } -ConnectionTrajectory-addGrpC ::= SEQUENCE { - nodes NodeSetXY, - ... + +Altitude, DeltaAltitude, StationID, VehicleMass +FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2) }; + +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- AddGrpC data dictionary extensions to SAEJ2735 +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +ConnectionManeuverAssist-addGrpC ::= SEQUENCE { + itsStationPosition ItsStationPositionList OPTIONAL, + ... } -Control-addGrpC ::= SEQUENCE { - ptvRequest PtvRequestType, - ... +ConnectionTrajectory-addGrpC ::= SEQUENCE { + nodes NodeSetXY, + connectionID LaneConnectionID, + ... } -IntersectionState-addGrpC ::= SEQUENCE { - activePrioritizations PrioritizationResponseList OPTIONAL, - ... +IntersectionState-addGrpC ::= SEQUENCE { + activePrioritizations PrioritizationResponseList OPTIONAL, + ... } -MapData-addGrpC ::= SEQUENCE { - signalHeadLocations SignalHeadLocationList OPTIONAL, - ... +LaneAttributes-addGrpC ::= SEQUENCE { + maxVehicleHeight VehicleHeight OPTIONAL, + maxVehicleWeight VehicleMass OPTIONAL, + ... } -Position3D-addGrpC ::= SEQUENCE { - altitude Altitude, - ... +MapData-addGrpC ::= SEQUENCE { + signalHeadLocations SignalHeadLocationList OPTIONAL, + ... } -PrioritizationResponseList ::= SEQUENCE SIZE(1..10) OF PrioritizationResponse +MovementEvent-addGrpC ::= SEQUENCE { + stateChangeReason ExceptionalCondition OPTIONAL, + ... +} -PrioritizationResponse ::= SEQUENCE { - stationID StationID, - priorState PrioritizationResponseStatus, - signalGroup SignalGroupID, - ... +NodeAttributeSet-addGrpC ::= SEQUENCE { + ptvRequest PtvRequestType OPTIONAL, + nodeLink NodeLink OPTIONAL, + node Node OPTIONAL, + ... } -RestrictionUserType-addGrpC ::= SEQUENCE { - emission EmissionType OPTIONAL, - ... +Position3D-addGrpC ::= SEQUENCE { + altitude Altitude, + ... } -SignalHeadLocationList ::= SEQUENCE (SIZE(1..64)) OF SignalHeadLocation +RestrictionUserType-addGrpC ::= SEQUENCE { + emission EmissionType OPTIONAL, + fuel FuelType OPTIONAL, + ... +} -SignalHeadLocation ::= SEQUENCE { - nodeXY NodeOffsetPointXY, - nodeZ DeltaAltitude, - signalGroupID SignalGroupID, - ... +RequestorDescription-addGrpC ::= SEQUENCE { + fuel FuelType OPTIONAL, + batteryStatus BatteryStatus OPTIONAL, + ... } SignalStatusPackage-addGrpC ::= SEQUENCE { - synchToSchedule DeltaTime OPTIONAL, - ... + synchToSchedule DeltaTime OPTIONAL, + rejectedReason RejectedReason OPTIONAL, + ... } -ItsStationPositionList::= SEQUENCE SIZE(1..5) OF ItsStationPosition +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- Data frames +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +ItsStationPosition ::= SEQUENCE { + stationID StationID, + laneID LaneID OPTIONAL, + nodeXY NodeOffsetPointXY OPTIONAL, + timeReference TimeReference OPTIONAL, + ... +} + +ItsStationPositionList ::= SEQUENCE SIZE(1..5) OF ItsStationPosition -ItsStationPosition ::= SEQUENCE { - stationID StationID, - laneID LaneID OPTIONAL, - nodeXY NodeOffsetPointXY OPTIONAL, - timeReference TimeReference OPTIONAL, - ... +Node ::= SEQUENCE { + id INTEGER, + lane LaneID OPTIONAL, + connectionID LaneConnectionID OPTIONAL, + intersectionID IntersectionID OPTIONAL, + ... +} + +NodeLink ::= SEQUENCE SIZE (1..5) OF Node + +PrioritizationResponse ::= SEQUENCE { + stationID StationID, + priorState PrioritizationResponseStatus, + signalGroup SignalGroupID, + ... } + +PrioritizationResponseList ::= SEQUENCE SIZE(1..10) OF PrioritizationResponse + +SignalHeadLocation ::= SEQUENCE { + nodeXY NodeOffsetPointXY, + nodeZ DeltaAltitude, + signalGroupID SignalGroupID, + ... +} + +SignalHeadLocationList ::= SEQUENCE (SIZE(1..64)) OF SignalHeadLocation + + +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- Data elements +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BatteryStatus ::= ENUMERATED { + unknown, + critical, + low, + good, + ... +} + EmissionType ::= ENUMERATED { - euro1, - euro2, - euro3, - euro4, - euro5, - euro6, - ... + euro1, + euro2, + euro3, + euro4, + euro5, + euro6, + ... } -PtvRequestType ::= ENUMERATED { - preRequest, - mainRequest, - doorCloseRequest, - cancelRequest, - emergencyRequest, - ... +ExceptionalCondition ::= ENUMERATED { + unknown, + publicTransportPriority, + emergencyVehiclePriority, + trainPriority, + bridgeOpen, + vehicleHeight, + weather, + trafficJam, + tunnelClosure, + meteringActive, + truckPriority, + bicyclePlatoonPriority, + vehiclePlatoonPriority, + ... } -TimeReference ::= INTEGER { oneMilliSec(1) } (0..65535) +PtvRequestType ::= ENUMERATED { + preRequest, + mainRequest, + doorCloseRequest, + cancelRequest, + emergencyRequest, + ... +} -END +RejectedReason ::= ENUMERATED { + unknown, + exceptionalCondition, + maxWaitingTimeExceeded, + ptPriorityDisabled, + higherPTPriorityGranted, + vehicleTrackingUnknown, + ... +} +TimeReference ::= INTEGER { oneMilliSec(1) } (0..60000) + +END -- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- @@ -1983,96 +1470,113 @@ END -- module: REGION -- -- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -REGION { iso (1) standard (0) signalizedIntersection (19091) profilec(2) region (1) version (1) } + +REGION { + iso (1) standard (0) signalizedIntersection (19091) profilec (2) region (1) + version2 (2) +} DEFINITIONS AUTOMATIC TAGS::= BEGIN IMPORTS -addGrpC, REG-EXT-ID-AND-TYPE FROM DSRC -ConnectionManeuverAssist-addGrpC, ConnectionTrajectory-addGrpC, IntersectionState-addGrpC, Control-addGrpC, Position3D-addGrpC, RestrictionUserType-addGrpC, -SignalStatusPackage-addGrpC, MapData-addGrpC FROM AddGrpC {iso (1) standard (0) signalizedIntersection (19091) profilec(2) addgrpc (0) version (1)}; -Reg-AdvisorySpeed REG-EXT-ID-AND-TYPE ::= { ... } +addGrpC, REG-EXT-ID-AND-TYPE +FROM DSRC { + iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2) +} -Reg-ComputedLane REG-EXT-ID-AND-TYPE ::= { ... } +ConnectionManeuverAssist-addGrpC, ConnectionTrajectory-addGrpC, +IntersectionState-addGrpC, LaneAttributes-addGrpC, MapData-addGrpC, +MovementEvent-addGrpC, NodeAttributeSet-addGrpC, Position3D-addGrpC, RequestorDescription-addGrpC, RestrictionUserType-addGrpC, SignalStatusPackage-addGrpC +FROM AddGrpC {iso (1) standard (0) signalizedIntersection (19091) profilec(2) addgrpc (0) version2 (2)}; + +Reg-AdvisorySpeed REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-ComputedLane REG-EXT-ID-AND-TYPE ::= { ... } Reg-ConnectionManeuverAssist REG-EXT-ID-AND-TYPE ::= { - {ConnectionManeuverAssist-addGrpC IDENTIFIED BY addGrpC} , - ... + {ConnectionManeuverAssist-addGrpC IDENTIFIED BY addGrpC}, + ... } -Reg-GenericLane REG-EXT-ID-AND-TYPE ::= { - {ConnectionTrajectory-addGrpC IDENTIFIED BY addGrpC} , - ... +Reg-GenericLane REG-EXT-ID-AND-TYPE ::= { + {ConnectionTrajectory-addGrpC IDENTIFIED BY addGrpC} , + ... } -Reg-IntersectionGeometry REG-EXT-ID-AND-TYPE ::= { ... } +Reg-IntersectionGeometry REG-EXT-ID-AND-TYPE ::= { ... } -Reg-IntersectionState REG-EXT-ID-AND-TYPE ::= { - {IntersectionState-addGrpC IDENTIFIED BY addGrpC} , - ... +Reg-IntersectionState REG-EXT-ID-AND-TYPE ::= { + {IntersectionState-addGrpC IDENTIFIED BY addGrpC}, + ... } -Reg-LaneAttributes REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-LaneDataAttribute REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-MapData REG-EXT-ID-AND-TYPE ::= { - {MapData-addGrpC IDENTIFIED BY addGrpC}, - ... +Reg-LaneAttributes REG-EXT-ID-AND-TYPE ::= { + {LaneAttributes-addGrpC IDENTIFIED BY addGrpC} , + ... } +Reg-LaneDataAttribute REG-EXT-ID-AND-TYPE ::= { ... } -Reg-MovementEvent REG-EXT-ID-AND-TYPE ::= { ... } +Reg-MapData REG-EXT-ID-AND-TYPE ::= { + {MapData-addGrpC IDENTIFIED BY addGrpC}, + ... +} -Reg-MovementState REG-EXT-ID-AND-TYPE ::= { ... } +Reg-MovementEvent REG-EXT-ID-AND-TYPE ::= { + {MovementEvent-addGrpC IDENTIFIED BY addGrpC} , + ... +} +Reg-MovementState REG-EXT-ID-AND-TYPE ::= { ... } -Reg-NodeAttributeSetLL REG-EXT-ID-AND-TYPE ::= { ... } +-- Reg-NodeAttributeSetLL REG-EXT-ID-AND-TYPE ::= { ... } -Reg-NodeAttributeSetXY REG-EXT-ID-AND-TYPE ::= { - {Control-addGrpC IDENTIFIED BY addGrpC} , - ... +Reg-NodeAttributeSetXY REG-EXT-ID-AND-TYPE ::= { + {NodeAttributeSet-addGrpC IDENTIFIED BY addGrpC}, + ... } -Reg-NodeOffsetPointLL REG-EXT-ID-AND-TYPE ::= { ... } +-- Reg-NodeOffsetPointLL REG-EXT-ID-AND-TYPE ::= { ... } -Reg-NodeOffsetPointXY REG-EXT-ID-AND-TYPE ::= { ... } +Reg-NodeOffsetPointXY REG-EXT-ID-AND-TYPE ::= { ... } -Reg-Position3D REG-EXT-ID-AND-TYPE ::= { - {Position3D-addGrpC IDENTIFIED BY addGrpC} , - ... +Reg-Position3D REG-EXT-ID-AND-TYPE ::= { + {Position3D-addGrpC IDENTIFIED BY addGrpC} , + ... } -Reg-RequestorDescription REG-EXT-ID-AND-TYPE ::= { ... } +Reg-RequestorDescription REG-EXT-ID-AND-TYPE ::= { + { RequestorDescription-addGrpC IDENTIFIED BY addGrpC} , + ... +} -Reg-RequestorType REG-EXT-ID-AND-TYPE ::= { ... } +Reg-RequestorType REG-EXT-ID-AND-TYPE ::= { ... } -Reg-RestrictionUserType REG-EXT-ID-AND-TYPE ::= { - {RestrictionUserType-addGrpC IDENTIFIED BY addGrpC} , - ... +Reg-RestrictionUserType REG-EXT-ID-AND-TYPE ::= { + {RestrictionUserType-addGrpC IDENTIFIED BY addGrpC} , + ... } -Reg-RoadSegment REG-EXT-ID-AND-TYPE ::= { ... } +Reg-RoadSegment REG-EXT-ID-AND-TYPE ::= { ... } -Reg-SignalControlZone REG-EXT-ID-AND-TYPE ::= { ... } +Reg-RTCMcorrections REG-EXT-ID-AND-TYPE ::= { ... } -Reg-SignalRequest REG-EXT-ID-AND-TYPE ::= { ... } +Reg-SignalControlZone REG-EXT-ID-AND-TYPE ::= { ... } -Reg-SignalRequestMessage REG-EXT-ID-AND-TYPE ::= { ... } +Reg-SignalRequest REG-EXT-ID-AND-TYPE ::= { ... } -Reg-SignalRequestPackage REG-EXT-ID-AND-TYPE ::= { ... } +Reg-SignalRequestMessage REG-EXT-ID-AND-TYPE ::= { ... } -Reg-SignalStatus REG-EXT-ID-AND-TYPE ::= { ... } +Reg-SignalRequestPackage REG-EXT-ID-AND-TYPE ::= { ... } -Reg-SignalStatusMessage REG-EXT-ID-AND-TYPE ::= { ... } +Reg-SignalStatus REG-EXT-ID-AND-TYPE ::= { ... } -Reg-SignalStatusPackage REG-EXT-ID-AND-TYPE ::= { - { SignalStatusPackage-addGrpC IDENTIFIED BY addGrpC} , - ... +Reg-SignalStatusMessage REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-SignalStatusPackage REG-EXT-ID-AND-TYPE ::= { + { SignalStatusPackage-addGrpC IDENTIFIED BY addGrpC }, + ... } -Reg-SPAT REG-EXT-ID-AND-TYPE ::= { ... } +Reg-SPAT REG-EXT-ID-AND-TYPE ::= { ... } END - - - diff --git a/epan/dissectors/asn1/its/ISO_TS_19321.asn b/epan/dissectors/asn1/its/ISO_TS_19321.asn index 6a39657567..0299d71825 100644 --- a/epan/dissectors/asn1/its/ISO_TS_19321.asn +++ b/epan/dissectors/asn1/its/ISO_TS_19321.asn @@ -16,16 +16,21 @@ DEFINITIONS AUTOMATIC TAGS ::= BEGIN IMPORTS ItsPduHeader, Altitude, DangerousGoodsBasic , DeltaLatitude, DeltaLongitude, DeltaReferencePosition, Heading, HeadingValue, Latitude, LanePosition, Longitude, ReferencePosition, RoadType, SpecialTransportType, Speed, StationType, TimestampIts, VehicleRole -FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) } +FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2) } -AxleWeightLimits, DieselEmissionValues, ExhaustEmissionValues, EngineCharacteristics, EnvironmentalCharacteristics, PassengerCapacity , Provider, SoundLevel, VehicleDimensions, VehicleWeightLimits +AxleWeightLimits, DieselEmissionValues, ExhaustEmissionValues, EngineCharacteristics, EnvironmentalCharacteristics, PassengerCapacity , Provider, SoundLevel, VehicleDimensions, VehicleWeightLimits FROM EfcDsrcApplication {iso(1) standard(0) 14906 application(0) version5(5)} EuVehicleCategoryCode, Iso3833VehicleType -FROM ElectronicRegistrationIdentificationVehicleDataModule {iso(1) standard(0) iso24534 (24534) vehicleData (1) version (1)} +FROM ElectronicRegistrationIdentificationVehicleDataModule {iso(1) standard(0) iso24534 (24534) vehicleData (1) version1 (1)} + VarLengthNumber -FROM CITSapplMgmtIDs {iso(1) standard(0) cits-applMgmt (17419) ids (1) version1 (1)}; +FROM CITSapplMgmtIDs {iso(1) standard(0) cits-applMgmt (17419) ids (1) version1 (1)} + +; +-- End of IMPORTS + --Definition of IVI message to be send over the air is outside of the scope and given for information only: @@ -56,7 +61,7 @@ IviContainer::= CHOICE { -- Prefix IVI added due to naming collision with data element ManagementContainer of Module DENM-PDU-Descriptions IVIManagementContainer::= SEQUENCE { - serviceProviderId Provider, + serviceProviderId Provider, iviIdentificationNumber IviIdentificationNumber, timeStamp TimestampIts OPTIONAL, validFrom TimestampIts OPTIONAL, @@ -65,38 +70,38 @@ IVIManagementContainer::= SEQUENCE { iviStatus IviStatus, ... } - + GeographicLocationContainer::= SEQUENCE { referencePosition ReferencePosition, referencePositionTime TimestampIts OPTIONAL, - referencePositionHeading Heading OPTIONAL, + referencePositionHeading Heading OPTIONAL, referencePositionSpeed Speed OPTIONAL, - parts SEQUENCE (SIZE (1..16,...)) OF GlcPart, + parts SEQUENCE (SIZE (1..16,...)) OF GlcPart, ... } GlcPart::= SEQUENCE { - zoneId Zid, + zoneId Zid, laneNumber LanePosition OPTIONAL, zoneExtension INTEGER (0..255) OPTIONAL, zoneHeading HeadingValue OPTIONAL, zone Zone OPTIONAL, - ... + ... } -GeneralIviContainer::= SEQUENCE (SIZE (1..16,...)) OF GicPart +GeneralIviContainer::= SEQUENCE (SIZE (1..16,...)) OF GicPart GicPart::= SEQUENCE { - detectionZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid OPTIONAL, + detectionZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid OPTIONAL, its-Rrid VarLengthNumber OPTIONAL, - relevanceZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid OPTIONAL, + relevanceZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid OPTIONAL, direction Direction OPTIONAL, - driverAwarenessZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid OPTIONAL, + driverAwarenessZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid OPTIONAL, minimumAwarenessTime INTEGER (0..255) OPTIONAL, applicableLanes SEQUENCE (SIZE (1..8,...)) OF LanePosition OPTIONAL, iviType IviType, iviPurpose IviPurpose OPTIONAL, - laneStatus LaneStatus OPTIONAL, + laneStatus LaneStatus OPTIONAL, vehicleCharacteristics SEQUENCE (SIZE (1..8, ...)) OF CompleteVehicleCharacteristics OPTIONAL, driverCharacteristics DriverCharacteristics OPTIONAL, layoutId INTEGER(1..4,...) OPTIONAL, @@ -110,7 +115,7 @@ RoadConfigurationContainer::= SEQUENCE (SIZE (1..16,...)) OF RccPart RccPart::= SEQUENCE{ zoneIds SEQUENCE (SIZE (1..8,...)) OF Zid, - roadType RoadType, + roadType RoadType, laneConfiguration SEQUENCE (SIZE (1..16,...)) OF LaneInformation, ... } @@ -118,10 +123,10 @@ RccPart::= SEQUENCE{ TextContainer::= SEQUENCE (SIZE (1..16,...)) OF TcPart TcPart::= SEQUENCE { - detectionZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid OPTIONAL, - relevanceZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid, - direction Direction OPTIONAL, - driverAwarenessZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid OPTIONAL, + detectionZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid OPTIONAL, + relevanceZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid, + direction Direction OPTIONAL, + driverAwarenessZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid OPTIONAL, minimumAwarenessTime INTEGER (0..255) OPTIONAL, applicableLanes SEQUENCE (SIZE (1..8,...)) OF LanePosition OPTIONAL, layoutId INTEGER(1..4,...) OPTIONAL, @@ -133,10 +138,10 @@ TcPart::= SEQUENCE { LayoutContainer::=SEQUENCE{ layoutId INTEGER(1..4,...), - height INTEGER(10..73) OPTIONAL, + height INTEGER(10..73) OPTIONAL, width INTEGER(10..265) OPTIONAL, layoutComponents SEQUENCE SIZE (1..4,...) OF LayoutComponent, - ... + ... } -- Definition of Data Frames & Elements @@ -149,17 +154,17 @@ AbsolutePosition::= SEQUENCE{ AbsolutePositionWAltitude::= SEQUENCE{ latitude Latitude, longitude Longitude, - altitude Altitude + altitude Altitude } AnyCatalogue::=SEQUENCE{ owner Provider, version INTEGER(0..255), pictogramCode INTEGER(0..65535), - value INTEGER (0..65535) OPTIONAL, + value INTEGER (0..65535) OPTIONAL, unit RSCUnit OPTIONAL, attributes ISO14823Attributes OPTIONAL - } + } ComparisonOperator ::= INTEGER { greaterThan (0), @@ -175,11 +180,11 @@ CompleteVehicleCharacteristics::= SEQUENCE{ } ComputedSegment::= SEQUENCE { - zoneId Zid, - laneNumber LanePosition, + zoneId Zid, + laneNumber LanePosition, laneWidth IVILaneWidth, - offsetDistance INTEGER (-32768..32767) OPTIONAL, - offsetPosition DeltaReferencePosition OPTIONAL + offsetDistance INTEGER (-32768..32767) OPTIONAL, + offsetPosition DeltaReferencePosition OPTIONAL } DeltaPosition::=SEQUENCE{ @@ -202,12 +207,12 @@ Distance::= SEQUENCE { DistanceOrDuration::= SEQUENCE { value INTEGER(1..16384), unit RSCUnit (2..9) - } + } DriverCharacteristics::= INTEGER{ unexperiencedDrivers (0), experiencedDrivers (1), - rfu1 (2), + rfu1 (2), rfu2 (3) } (0..3) @@ -231,9 +236,9 @@ GoodsType::= INTEGER { ISO14823Attributes::= SEQUENCE (SIZE(1..8,...)) OF CHOICE{ - dtm DTM, -- Date/Time/Period - edt EDT, -- Exemption status of Date/Time/Period - dfl DFL, -- Directional Flow of Lane + dtm DTM, -- Date/Time/Period + edt EDT, -- Exemption status of Date/Time/Period + dfl DFL, -- Directional Flow of Lane ved VED, -- Vehicle Dimensions spe SPE, -- Speed roi ROI, -- Rate of Incline @@ -242,53 +247,53 @@ ISO14823Attributes::= SEQUENCE (SIZE(1..8,...)) OF CHOICE{ } ISO14823Code ::= SEQUENCE{ - pictogramCode SEQUENCE { - countryCode OCTET STRING (SIZE (2)) OPTIONAL, - serviceCategoryCode CHOICE { + pictogramCode SEQUENCE { + countryCode OCTET STRING (SIZE (2)) OPTIONAL, + serviceCategoryCode CHOICE { trafficSignPictogram ENUMERATED {dangerWarning, regulatory, informative,...}, - publicFacilitiesPictogram ENUMERATED {publicFacilities, ...}, + publicFacilitiesPictogram ENUMERATED {publicFacilities, ...}, ambientOrRoadConditionPictogram ENUMERATED {ambientCondition, roadCondition,...}, ...}, pictogramCategoryCode SEQUENCE { nature INTEGER (1..9), serialNumber INTEGER (0..99) }}, - attributes ISO14823Attributes OPTIONAL + attributes ISO14823Attributes OPTIONAL } IviIdentificationNumber::= INTEGER(1..32767,...) -IviPurpose::= INTEGER { - safety (0), - environmental (1), +IviPurpose::= INTEGER { + safety (0), + environmental (1), trafficOptimisation (2) - } (0..3) + } (0..3) IviStatus::= INTEGER { - new (0), - update (1), - cancellation (2), - negation (3) + new (0), + update (1), + cancellation (2), + negation (3) -- other values reserved for future use }(0..7) IviType::= INTEGER { immediateDangerWarningMessages (0), regulatoryMessages (1), - trafficRelatedInformationMessages (2), + trafficRelatedInformationMessages (2), pollutionMessages (3), notTrafficRelatedInformationMessages (4) -- other values reserved for future use } (0..7) LaneInformation::= SEQUENCE{ - laneNumber LanePosition, + laneNumber LanePosition, direction Direction, validity DTM OPTIONAL, - laneType LaneType, + laneType LaneType, laneTypeQualifier CompleteVehicleCharacteristics OPTIONAL, - laneStatus LaneStatus, - laneWidth IVILaneWidth OPTIONAL, + laneStatus LaneStatus, + laneWidth IVILaneWidth OPTIONAL, ... } @@ -299,8 +304,8 @@ LaneStatus::= INTEGER { mergeL (3), mergeLR (4), provisionallyOpen (5), - diverging (6) - -- value 7 reserved for future use + diverging (6) + -- value 7 reserved for future use } (0..7, ...) LaneType::= INTEGER{ @@ -318,13 +323,13 @@ LaneType::= INTEGER{ hot (11), pedestrian (12), bikeLane (13), - median (14), + median (14), striping (15), trackedVehicle (16), parking (17), emergency (18), verge (19) --- values 20 to 31 reserved for future use +-- values 20 to 31 reserved for future use }(0..31) -- Prefix IVI added due to naming collision with data element LaneWidth of Module DSRC @@ -332,12 +337,12 @@ IVILaneWidth::= INTEGER (0..1023) LayoutComponent::=SEQUENCE{ layoutComponentId INTEGER(1..8,...), - height INTEGER(10..73), - width INTEGER(10..265), + height INTEGER(10..73), + width INTEGER(10..265), x INTEGER(10..265), - y INTEGER(10..73), + y INTEGER(10..73), textScripting INTEGER {horizontal (0), vertical (1)}(0..1) - } + } LoadType::= SEQUENCE{ goodsType GoodsType, @@ -346,18 +351,18 @@ LoadType::= SEQUENCE{ } PolygonalLine::= CHOICE { - deltaPositions SEQUENCE (SIZE (1..32,...)) OF DeltaPosition, - deltaPositionsWithAltitude SEQUENCE (SIZE (1..32,...)) OF DeltaReferencePosition, - absolutePositions SEQUENCE (SIZE (1..8,...)) OF AbsolutePosition, - absolutePositionsWithAltitude SEQUENCE (SIZE (1..8,...)) OF AbsolutePositionWAltitude, + deltaPositions SEQUENCE (SIZE (1..32,...)) OF DeltaPosition, + deltaPositionsWithAltitude SEQUENCE (SIZE (1..32,...)) OF DeltaReferencePosition, + absolutePositions SEQUENCE (SIZE (1..8,...)) OF AbsolutePosition, + absolutePositionsWithAltitude SEQUENCE (SIZE (1..8,...)) OF AbsolutePositionWAltitude, ... } - + RSCode::= SEQUENCE{ layoutComponentId INTEGER(1..4,...) OPTIONAL, code CHOICE { viennaConvention VcCode, -- see Vienna Convention Annex A - iso14823 ISO14823Code, + iso14823 ISO14823Code, itisCodes INTEGER (0..65535), -- see SAE J2540 anyCatalogue AnyCatalogue, ... @@ -389,20 +394,20 @@ Segment::= SEQUENCE { Text::= SEQUENCE { layoutComponentId INTEGER(1..4,...) OPTIONAL, - language BIT STRING (SIZE(10)), + language BIT STRING (SIZE(10)), textContent UTF8String } TractorCharacteristics::=SEQUENCE{ equalTo SEQUENCE (SIZE (1..4,...)) OF VehicleCharacteristicsFixValues OPTIONAL, - notEqualTo SEQUENCE (SIZE (1..4,...)) OF VehicleCharacteristicsFixValues OPTIONAL, + notEqualTo SEQUENCE (SIZE (1..4,...)) OF VehicleCharacteristicsFixValues OPTIONAL, ranges SEQUENCE (SIZE (1..4,...)) OF VehicleCharacteristicsRanges OPTIONAL } - + TrailerCharacteristics::=SEQUENCE{ equalTo SEQUENCE (SIZE (1..4,...)) OF VehicleCharacteristicsFixValues (WITH COMPONENTS {..., euroAndCo2value ABSENT, engineCharacteristics ABSENT}) OPTIONAL, - notEqualTo SEQUENCE (SIZE (1..4,...)) OF VehicleCharacteristicsFixValues (WITH COMPONENTS {..., euroAndCo2value ABSENT, engineCharacteristics ABSENT}) OPTIONAL, - ranges SEQUENCE (SIZE (1..4,...)) OF VehicleCharacteristicsRanges (WITH COMPONENTS {comparisonOperator, limits (WITH COMPONENTS {..., exhaustEmissionValues ABSENT, dieselEmissionValues ABSENT, soundLevel ABSENT})}) OPTIONAL + notEqualTo SEQUENCE (SIZE (1..4,...)) OF VehicleCharacteristicsFixValues (WITH COMPONENTS {..., euroAndCo2value ABSENT, engineCharacteristics ABSENT}) OPTIONAL, + ranges SEQUENCE (SIZE (1..4,...)) OF VehicleCharacteristicsRanges (WITH COMPONENTS {comparisonOperator, limits (WITH COMPONENTS {..., exhaustEmissionValues ABSENT, dieselEmissionValues ABSENT, soundLevel ABSENT})}) OPTIONAL } TrainCharacteristics::= TractorCharacteristics @@ -419,12 +424,12 @@ VcClass::= INTEGER { } (0..7) VcCode::= SEQUENCE { - roadSignClass VcClass, -- see Vienna Convention + roadSignClass VcClass, -- see Vienna Convention roadSignCode INTEGER (1..64), vcOption VcOption, -- e.g. the "a" in H, 3a - validity SEQUENCE (SIZE (1..8,...)) OF DTM OPTIONAL, - value INTEGER (0..65535) OPTIONAL, - unit RSCUnit OPTIONAL + validity SEQUENCE (SIZE (1..8,...)) OF DTM OPTIONAL, + value INTEGER (0..65535) OPTIONAL, + unit RSCUnit OPTIONAL } VcOption::= INTEGER { @@ -439,7 +444,7 @@ VcOption::= INTEGER { } (0..7) VehicleCharacteristicsFixValues::= CHOICE{ - simpleVehicleType StationType, + simpleVehicleType StationType, euVehicleCategoryCode EuVehicleCategoryCode, iso3833VehicleType Iso3833VehicleType, euroAndCo2value EnvironmentalCharacteristics, @@ -455,16 +460,16 @@ VehicleCharacteristicsRanges::= SEQUENCE{ vehicleDimensions VehicleDimensions, vehicleWeightLimits VehicleWeightLimits, axleWeightLimits AxleWeightLimits, - passengerCapacity PassengerCapacity, + passengerCapacity PassengerCapacity, exhaustEmissionValues ExhaustEmissionValues, dieselEmissionValues DieselEmissionValues, - soundLevel SoundLevel, + soundLevel SoundLevel, ...}} Weight::= SEQUENCE { value INTEGER(1..16384), unit RSCUnit (10..12) - } + } Zid::= INTEGER (1..32,...) @@ -487,7 +492,7 @@ DTM ::= SEQUENCE { smd MonthDay, emd MonthDay } OPTIONAL, - pmd PMD OPTIONAL, + pmd PMD OPTIONAL, hourMinutes SEQUENCE { -- contains SHM and EHM shm HoursMinutes, ehm HoursMinutes @@ -498,7 +503,7 @@ DTM ::= SEQUENCE { MonthDay ::= SEQUENCE { month INTEGER (1..12), - day INTEGER (1..31) + day INTEGER (1..31) } PMD::= BIT STRING {national-holiday (0), even-days(1), odd-days(2), market-day(3) } (SIZE (4)) @@ -541,7 +546,7 @@ SPE::=SEQUENCE{ ROI::= INTEGER(1..32) -DBV::= Distance +DBV::= Distance -- changes: from DDD_IO to DDD-IO DDD::= SEQUENCE{ dcj INTEGER(1..128) OPTIONAL, @@ -550,15 +555,15 @@ DDD::= SEQUENCE{ ioList SEQUENCE (SIZE (1..8,...)) OF DDD-IO } -- changes: from DDD_IO to DDD-IO -DDD-IO::= SEQUENCE{ +DDD-IO::= SEQUENCE{ drn INTEGER(0..7), dp SEQUENCE (SIZE (1..4,...)) OF DestinationPlace OPTIONAL, dr SEQUENCE (SIZE (1..4,...)) OF DestinationRoad OPTIONAL, rne INTEGER(1..999) OPTIONAL, stnId INTEGER(1..999) OPTIONAL, - stnText UTF8String OPTIONAL, + stnText UTF8String OPTIONAL, dcp DistanceOrDuration OPTIONAL, - ddp DistanceOrDuration OPTIONAL + ddp DistanceOrDuration OPTIONAL } -- changes: from DDD_DEP to DDD-DEP DestinationPlace::= SEQUENCE{ @@ -566,41 +571,41 @@ DestinationPlace::= SEQUENCE{ -- Encoding problem: to be checked if the statement is ASN.1 compatible -- depRSCode ISO14823Code (WITH COMPONENTS {..., attributes ABSENT}) OPTIONAL, depRSCode ISO14823Code OPTIONAL, - depBlob OCTET STRING OPTIONAL, + depBlob OCTET STRING OPTIONAL, plnId INTEGER(1..999) OPTIONAL, plnText UTF8String OPTIONAL - } + } -- changes: from DDD_DER to DDD-DER DestinationRoad::=SEQUENCE{ derType DDD-DER, ronId INTEGER(1..999) OPTIONAL, - ronText UTF8String OPTIONAL + ronText UTF8String OPTIONAL } -- changes: from DDD_DER to DDD-DER -DDD-DER::= INTEGER { - none (0), - nationalHighway (1), - localHighway (2), +DDD-DER::= INTEGER { + none (0), + nationalHighway (1), + localHighway (2), tollExpresswayMotorway (3), - internationalHighway (4), + internationalHighway (4), highway (5), expressway (6), - nationalRoad (7), + nationalRoad (7), regionalProvincialRoad (8), - localRoad (9), + localRoad (9), motorwayJunction (10), diversion (11), rfu1 (12), rfu2 (13), rfu3 (14), rfu4 (15) - } (0..15, ...) + } (0..15, ...) -- changes: from DDD_DEP to DDD-DEP -DDD-DEP::= INTEGER { - none (0), - importantArea (1), - principalArea (2), - generalArea (3), +DDD-DEP::= INTEGER { + none (0), + importantArea (1), + principalArea (2), + generalArea (3), wellKnownPoint (4), country (5), city (6), @@ -609,11 +614,11 @@ DDD-DEP::= INTEGER { historicArea (9), touristicArea (10), culturalArea (11), - touristicRoute (12), - recommendedRoute (13), + touristicRoute (12), + recommendedRoute (13), touristicAttraction (14), geographicArea (15) - } (0..15, ...) + } (0..15, ...) diff --git a/epan/dissectors/asn1/its/ISO_TS_24534-3.asn b/epan/dissectors/asn1/its/ISO_TS_24534-3.asn index 80882fbae7..f106babcf8 100644 --- a/epan/dissectors/asn1/its/ISO_TS_24534-3.asn +++ b/epan/dissectors/asn1/its/ISO_TS_24534-3.asn @@ -1,10 +1,10 @@ -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- ISO TS 24534-3:2015 +-- ISO TS 24534-3:2015 -- -- This ASN.1 was generateds: 30.08.2016 -- -- This document contains only the data element needed for the encoding of an IVI message --- as defined in ISO TS 19321(2015) +-- as defined in ISO TS 19321(2015) -- -- Published version location: -- http://standards.iso.org/iso/24534/-3/ @@ -14,10 +14,11 @@ -- Version 29.4.2015 -ElectronicRegistrationIdentificationVehicleDataModule {iso(1) standard(0) iso24534 (24534) vehicleData (1) version1 (1)} +ElectronicRegistrationIdentificationVehicleDataModule {iso(1) standard(0) iso24534 (24534) vehicleData (1) version1 (1)} DEFINITIONS AUTOMATIC TAGS ::= BEGIN +IMPORTS; -- Electronic Registration Identification (ERI)- Vehicle Data diff --git a/epan/dissectors/asn1/its/ITS-Container.asn b/epan/dissectors/asn1/its/ITS-Container.asn index 17ec594e68..a1848b24cf 100644 --- a/epan/dissectors/asn1/its/ITS-Container.asn +++ b/epan/dissectors/asn1/its/ITS-Container.asn @@ -6,9 +6,11 @@ DEFINITIONS AUTOMATIC TAGS ::= BEGIN +IMPORTS; + ItsPduHeader ::= SEQUENCE { protocolVersion INTEGER (0..255), - messageID INTEGER{ denm(1), cam(2), poi(3), spatem(4), mapem(5), ivim(6), ev-rsr(7), tistpgtransaction(8), srem(9), ssem(10), evcsn(11), saem(12), rtcmem(13) } (0..255), -- Mantis #7209, #7005 + messageID INTEGER{ denm(1), cam(2), poi(3), spatem(4), mapem(5), ivim(6), ev-rsr(7), tistpgtransaction(8), srem(9), ssem(10), evcsn(11), saem(12), rtcmem(13) } (0..255), -- Mantis #7209, #7005 stationID StationID } @@ -32,8 +34,8 @@ Longitude ::= INTEGER {oneMicrodegreeEast (10), oneMicrodegreeWest (-10), unavai Latitude ::= INTEGER {oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10), unavailable(900000001)} (-900000000..900000001) Altitude ::= SEQUENCE { - altitudeValue AltitudeValue, - altitudeConfidence AltitudeConfidence + altitudeValue AltitudeValue, + altitudeConfidence AltitudeConfidence } AltitudeValue ::= INTEGER {referenceEllipsoidSurface(0), oneCentimeter(1), unavailable(800001)} (-100000..800001) @@ -59,7 +61,7 @@ AltitudeConfidence ::= ENUMERATED { DeltaLongitude ::= INTEGER {oneMicrodegreeEast (10), oneMicrodegreeWest (-10), unavailable(131072)} (-131071..131072) -DeltaLatitude ::= INTEGER {oneMicrodegreeNorth (10), oneMicrodegreeSouth (-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) @@ -95,13 +97,12 @@ AccelerationControl ::= BIT STRING { speedLimiterEngaged (6) } (SIZE(7)) - SemiAxisLength ::= INTEGER{oneCentimeter(1), outOfRange(4094), unavailable(4095)} (0..4095) CauseCode ::= SEQUENCE { causeCode CauseCodeType, subCauseCode SubCauseCodeType, - ... + ... } CauseCodeType ::= INTEGER { @@ -109,9 +110,9 @@ CauseCodeType ::= INTEGER { trafficCondition (1), accident (2), roadworks (3), - impassability (5), + impassability (5), adverseWeatherCondition-Adhesion (6), - aquaplannning (7), + aquaplannning (7), hazardousLocation-SurfaceCondition (9), hazardousLocation-ObstacleOnTheRoad (10), hazardousLocation-AnimalOnTheRoad (11), @@ -134,7 +135,7 @@ CauseCodeType ::= INTEGER { dangerousSituation (99) } (0..255) -SubCauseCodeType ::= INTEGER (0..255) +SubCauseCodeType ::= INTEGER (0..255) TrafficConditionSubCauseCode ::= INTEGER {unavailable(0), increasedVolumeOfTraffic(1), trafficJamSlowlyIncreasing(2), trafficJamIncreasing(3), trafficJamStronglyIncreasing(4), trafficStationary(5), trafficJamSlightlyDecreasing(6), trafficJamDecreasing(7), trafficJamStronglyDecreasing(8)} (0..255) @@ -178,18 +179,18 @@ RescueAndRecoveryWorkInProgressSubCauseCode ::= INTEGER {unavailable(0), emergen 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) +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), tyrePressureProblem(9)} (0..255) PostCrashSubCauseCode ::= INTEGER {unavailable(0), accidentWithoutECallTriggered (1), accidentWithECallManuallyTriggered (2), accidentWithECallAutomaticallyTriggered (3), accidentWithECallTriggeredWithoutAccessToCellularNetwork(4)} (0..255) Curvature ::= SEQUENCE { - curvatureValue CurvatureValue, - curvatureConfidence CurvatureConfidence + curvatureValue CurvatureValue, + curvatureConfidence CurvatureConfidence } -CurvatureValue ::= INTEGER {straight(0),unavailable(1023)} (-1023..1023) +CurvatureValue ::= INTEGER {straight(0), unavailable(1023)} (-1023..1023) CurvatureConfidence ::= ENUMERATED { onePerMeter-0-00002 (0), @@ -212,13 +213,11 @@ Heading ::= SEQUENCE { 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) +LanePosition::= INTEGER {offTheRoad(-1), innerHardShoulder(0), innermostDrivingLane(1), secondLaneFromInside(2), outerHardShoulder(14)} (-1..14) ClosedLanes ::= SEQUENCE { innerhardShoulderStatus HardShoulderStatus OPTIONAL, - outerhardShoulderStatus HardShoulderStatus OPTIONAL, + outerhardShoulderStatus HardShoulderStatus OPTIONAL, drivingLaneStatus DrivingLaneStatus OPTIONAL, ... } @@ -227,7 +226,6 @@ HardShoulderStatus ::= ENUMERATED {availableForStopping(0), closed(1), available DrivingLaneStatus ::= BIT STRING (SIZE (1..13)) - PerformanceClass ::= INTEGER {unavailable(0), performanceClassA(1), performanceClassB(2)} (0..7) SpeedValue ::= INTEGER {standstill(0), oneCentimeterPerSec(1), unavailable(16383)} (0..16383) @@ -247,7 +245,7 @@ EmbarkationStatus ::= BOOLEAN LongitudinalAcceleration ::= SEQUENCE { longitudinalAccelerationValue LongitudinalAccelerationValue, - longitudinalAccelerationConfidence AccelerationConfidence + longitudinalAccelerationConfidence AccelerationConfidence } LongitudinalAccelerationValue ::= INTEGER {pointOneMeterPerSecSquaredForward(1), pointOneMeterPerSecSquaredBackward(-1), unavailable(161)} (-160 .. 161) @@ -268,18 +266,17 @@ VerticalAcceleration ::= SEQUENCE { 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) +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) + lowBeamHeadlightsOn (0), + highBeamHeadlightsOn (1), + leftTurnSignalOn (2), + rightTurnSignalOn (3), + daytimeRunningLightsOn (4), + reverseLightOn (5), + fogLightOn (6), + parkingLightsOn (7) } (SIZE(8)) DangerousGoodsBasic::= ENUMERATED { @@ -314,13 +311,13 @@ DangerousGoodsExtended ::= SEQUENCE { emergencyActionCode IA5String (SIZE (1..24)) OPTIONAL, phoneNumber PhoneNumber 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), + lightBarActivated (0), sirenActivated (1) } (SIZE(2)) @@ -340,8 +337,7 @@ StationarySince ::= ENUMERATED {lessThan1Minute(0), lessThan2Minutes(1), lessTha Temperature ::= INTEGER {equalOrSmallerThanMinus60Deg (-60), oneDegreeCelsius(1), equalOrGreaterThan67Deg(67)} (-60..67) -TrafficRule ::= ENUMERATED {noPassing(0), noPassingForTrucks(1), passToRight(2), passToLeft(3), ... -} +TrafficRule ::= ENUMERATED {noPassing(0), noPassingForTrucks(1), passToRight(2), passToLeft(3), ... } WheelBaseVehicle ::= INTEGER {tenCentimeters(1), unavailable(127)} (1..127) @@ -369,7 +365,8 @@ PositionOfOccupants ::= BIT STRING { row4RightOccupied (16), row4MidOccupied (17), row4NotDetectable (18), - row4NotPresent (19)} (SIZE(20)) + row4NotPresent (19) +} (SIZE(20)) PositioningSolutionType ::= ENUMERATED {noPositioningSolution(0), sGNSS(1), dGNSS(2), sGNSSplusDR(3), dGNSSplusDR(4), dR(5), ...} @@ -390,7 +387,7 @@ VehicleLength ::= SEQUENCE { vehicleLengthConfidenceIndication VehicleLengthConfidenceIndication } -VehicleLengthValue ::= INTEGER {tenCentimeters(1), outOfRange(1022), unavailable(1023)} (1..1023) +VehicleLengthValue ::= INTEGER {tenCentimeters(1), outOfRange(1022), unavailable(1023)} (1..1023) VehicleLengthConfidenceIndication ::= ENUMERATED {noTrailerPresent(0), trailerPresentWithKnownLength(1), trailerPresentWithUnknownLength(2), trailerPresenceIsUnknown(3), unavailable(4)} @@ -406,7 +403,8 @@ RoadType ::= ENUMERATED { urban-NoStructuralSeparationToOppositeLanes(0), urban-WithStructuralSeparationToOppositeLanes(1), nonUrban-NoStructuralSeparationToOppositeLanes(2), - nonUrban-WithStructuralSeparationToOppositeLanes(3)} + nonUrban-WithStructuralSeparationToOppositeLanes(3) +} SteeringWheelAngle ::= SEQUENCE { steeringWheelAngleValue SteeringWheelAngleValue, @@ -417,9 +415,9 @@ SteeringWheelAngleValue ::= INTEGER {straight(0), onePointFiveDegreesToRight(-1) SteeringWheelAngleConfidence ::= INTEGER {equalOrWithinOnePointFiveDegree (1), outOfRange(126), unavailable(127)} (1..127) -TimestampIts ::= INTEGER (0..4398046511103) -- {utcStartOf2004(0), oneMillisecAfterUTCStartOf2004(1)} (0..4398046511103) PATCH +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)} +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, @@ -448,7 +446,7 @@ RelevanceTrafficDirection ::= ENUMERATED {allTrafficDirections(0), upstreamTraff TransmissionInterval ::= INTEGER {oneMilliSecond(1), tenSeconds(10000)} (1..10000) -ValidityDuration ::= INTEGER {timeOfDetection(0), oneSecondAfterDetection(1)} (0..86400) +ValidityDuration ::= INTEGER {timeOfDetection(0), oneSecondAfterDetection(1)} (0..86400) ActionID ::= SEQUENCE { originatingStationID StationID, @@ -458,20 +456,20 @@ ActionID ::= SEQUENCE { ItineraryPath ::= SEQUENCE SIZE(1..40) OF ReferencePosition ProtectedCommunicationZone ::= SEQUENCE { - protectedZoneType ProtectedZoneType, + protectedZoneType ProtectedZoneType, expiryTime TimestampIts OPTIONAL, - protectedZoneLatitude Latitude, - protectedZoneLongitude Longitude, + 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) +SequenceNumber ::= INTEGER (0..65535) PositionOfPillars ::= SEQUENCE (SIZE(1..3, ...)) OF PosPillar @@ -487,13 +485,11 @@ EventPoint ::= SEQUENCE { ProtectedCommunicationZonesRSU ::= SEQUENCE (SIZE(1..16)) OF ProtectedCommunicationZone - - CenDsrcTollingZone ::= SEQUENCE { protectedZoneLatitude Latitude, protectedZoneLongitude Longitude, cenDsrcTollingZoneID CenDsrcTollingZoneID OPTIONAL, - ... + ... } ProtectedZoneRadius ::= INTEGER {oneMeter(1)} (1..255,...) @@ -507,5 +503,4 @@ DigitalMap ::= SEQUENCE (SIZE(1..256)) OF ReferencePosition OpeningDaysHours ::= UTF8String PhoneNumber ::= NumericString (SIZE(1..16)) - -END +END diff --git a/epan/dissectors/asn1/its/its.cnf b/epan/dissectors/asn1/its/its.cnf index c93f5f055d..be986e3d97 100644 --- a/epan/dissectors/asn1/its/its.cnf +++ b/epan/dissectors/asn1/its/its.cnf @@ -31,7 +31,6 @@ StatusResponseCode CurrentVehicleConfiguration TpgLocation CS5 -MessageFrame IVI DSRCmsgID #.NO_EMIT @@ -57,6 +56,7 @@ CITSapplMgmtIDs csmid EfcDsrcApplication dsrc_app IVI ivi DSRC dsrc +RTCMEM-PDU-Descriptions rtcmem #.END #.PDU @@ -72,16 +72,20 @@ SPAT MapData SignalRequestMessage SignalStatusMessage +RTCMcorrections ItsPduHeader # AddGrpC regional extension ConnectionManeuverAssist-addGrpC ConnectionTrajectory-addGrpC -Control-addGrpC +NodeAttributeSet-addGrpC IntersectionState-addGrpC MapData-addGrpC Position3D-addGrpC RestrictionUserType-addGrpC SignalStatusPackage-addGrpC +LaneAttributes-addGrpC +MovementEvent-addGrpC +RequestorDescription-addGrpC #.TYPE_RENAME @@ -222,6 +226,19 @@ RegulatorySpeedLimit/speed rslSpeed TransmissionAndSpeed/speed tasSpeed RequestorPositionVector/speed rpvSpeed AdvisorySpeed/speed asSpeed +FullPositionVector/speed fpvSpeed +SpeedandHeadingandThrottleConfidence/speed shtcSpeed + +SignalRequestPackage/minute srpMinute +SignalStatusPackage/minute sspMinute + +FullPositionVector/heading fpvHeading +RequestorPositionVector/heading rpvHeading +SpeedandHeadingandThrottleConfidence/heading shtcheading + +FullPositionVector/elevation fpvElevation +PositionConfidenceSet/elevation pcsElevation +Position3D/elevation p3dElevation IntersectionState/status isStatus SignalStatusPackage/status sspStatus @@ -357,6 +374,15 @@ CauseCodeType #.END +#.FN_HDR RTCMcorrections + 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, "RTCMEM"); + col_set_str(actx->pinfo->cinfo, COL_INFO, "RTCMEM"); + regext->type = Reg_RTCMcorrections; +#.END + + #.FN_HDR ConnectionManeuverAssist-addGrpC actx->private_data = wmem_new0(wmem_packet_scope(), its_private_data_t); #.END @@ -367,7 +393,7 @@ CauseCodeType #.END -#.FN_HDR Control-addGrpC +#.FN_HDR NodeAttributeSet-addGrpC actx->private_data = wmem_new0(wmem_packet_scope(), its_private_data_t); #.END @@ -397,6 +423,21 @@ CauseCodeType #.END +#.FN_HDR LaneAttributes-addGrpC + actx->private_data = wmem_new0(wmem_packet_scope(), its_private_data_t); +#.END + + +#.FN_HDR MovementEvent-addGrpC + actx->private_data = wmem_new0(wmem_packet_scope(), its_private_data_t); +#.END + + +#.FN_HDR RequestorDescription-addGrpC + actx->private_data = wmem_new0(wmem_packet_scope(), its_private_data_t); +#.END + + #.FN_HDR AdvisorySpeed enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type; ((its_private_data_t*)actx->private_data)->type = Reg_AdvisorySpeed; diff --git a/epan/dissectors/asn1/its/packet-its-template.c b/epan/dissectors/asn1/its/packet-its-template.c index 4ffb1d5c29..b9a754961f 100644 --- a/epan/dissectors/asn1/its/packet-its-template.c +++ b/epan/dissectors/asn1/its/packet-its-template.c @@ -23,10 +23,10 @@ * EVCSN POI (EVCSN POI message) ETSI TS 101 556-1 * TPG (TRM, TCM, VDRM, VDPM, EOFM) ETSI TS 101 556-2 * Charging (EV-RSR, SRM, SCM) ETSI TS 101 556-3 + * GPC (RTCMEM) ETSI TS 103 301 * * Not supported: * SA (SAEM) ETSI TS 102 890-1 - * GPC (RTCMEM) ETSI TS 103 301 * CTL (CTLM) ETSI TS 102 941 * CRL (CRLM) ETSI TS 102 941 * Certificate request ETSI TS 102 941 @@ -123,6 +123,7 @@ static int proto_its_ivim = -1; static int proto_its_tistpg = -1; static int proto_its_ssem = -1; static int proto_its_srem = -1; +static int proto_its_rtcmem = -1; static int proto_its_mapem = -1; static int proto_its_spatem = -1; static int proto_addgrpc = -1; @@ -619,6 +620,7 @@ void proto_register_its(void) proto_its_evrsr = proto_register_protocol_in_name_only("ITS message - EVRSR", "EVRSR", "its.message.evrsr", proto_its, FT_BYTES); proto_its_srem = proto_register_protocol_in_name_only("ITS message - SREM", "SREM", "its.message.srem", proto_its, FT_BYTES); proto_its_ssem = proto_register_protocol_in_name_only("ITS message - SSEM", "SSEM", "its.message.ssem", proto_its, FT_BYTES); + proto_its_rtcmem = proto_register_protocol_in_name_only("ITS message - RTCMEM", "RTCMEM", "its.message.rtcmem", proto_its, FT_BYTES); proto_its_evcsn = proto_register_protocol_in_name_only("ITS message - EVCSN", "EVCSN", "its.message.evcsn", proto_its, FT_BYTES); proto_its_tistpg = proto_register_protocol_in_name_only("ITS message - TISTPG", "TISTPG", "its.message.tistpg", proto_its, FT_BYTES); @@ -634,7 +636,7 @@ void proto_register_its(void) } #define BTP_SUBDISS_SZ 2 -#define BTP_PORTS_SZ 10 +#define BTP_PORTS_SZ 11 #define ITS_CAM_PROT_VER 2 #define ITS_CAM_PROT_VERv1 1 @@ -645,11 +647,12 @@ void proto_register_its(void) #define ITS_IVIM_PROT_VER 2 #define ITS_SREM_PROT_VER 2 #define ITS_SSEM_PROT_VER 2 +#define ITS_RTCMEM_PROT_VER 2 void proto_reg_handoff_its(void) { const char *subdissector[BTP_SUBDISS_SZ] = { "btpa.port", "btpb.port" }; - const guint16 ports[BTP_PORTS_SZ] = { ITS_WKP_DEN, ITS_WKP_CA, ITS_WKP_EVCSN, ITS_WKP_CHARGING, ITS_WKP_IVI, ITS_WKP_TPG, ITS_WKP_TLC_SSEM, ITS_WKP_TLC_SREM, ITS_WKP_RLT, ITS_WKP_TLM }; + const guint16 ports[BTP_PORTS_SZ] = { ITS_WKP_DEN, ITS_WKP_CA, ITS_WKP_EVCSN, ITS_WKP_CHARGING, ITS_WKP_IVI, ITS_WKP_TPG, ITS_WKP_TLC_SSEM, ITS_WKP_GPC, ITS_WKP_TLC_SREM, ITS_WKP_RLT, ITS_WKP_TLM }; int sdIdx, pIdx; dissector_handle_t its_handle_; @@ -670,20 +673,24 @@ void proto_reg_handoff_its(void) 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_SSEM_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_RTCMEM_PROT_VER << 16) + ITS_RTCMEM, create_dissector_handle( dissect_dsrc_RTCMcorrections_PDU, proto_its_rtcmem )); 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 )); - /* Missing definitions: ITS_POI, ITS_SAEM, ITS_RTCMEM */ + /* Missing definitions: ITS_POI, ITS_SAEM */ dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_ConnectionManeuverAssist, create_dissector_handle(dissect_AddGrpC_ConnectionManeuverAssist_addGrpC_PDU, proto_addgrpc )); dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_GenericLane, create_dissector_handle(dissect_AddGrpC_ConnectionTrajectory_addGrpC_PDU, proto_addgrpc )); - dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_NodeAttributeSetXY, create_dissector_handle(dissect_AddGrpC_Control_addGrpC_PDU, proto_addgrpc )); + dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_NodeAttributeSetXY, create_dissector_handle(dissect_AddGrpC_NodeAttributeSet_addGrpC_PDU, proto_addgrpc )); dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_IntersectionState, create_dissector_handle(dissect_AddGrpC_IntersectionState_addGrpC_PDU, proto_addgrpc )); - dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_MapData, create_dissector_handle(dissect_AddGrpC_MapData_addGrpC_PDU, proto_addgrpc )); + dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_MapData,create_dissector_handle(dissect_AddGrpC_MapData_addGrpC_PDU, proto_addgrpc )); dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_Position3D, create_dissector_handle(dissect_AddGrpC_Position3D_addGrpC_PDU, proto_addgrpc )); dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_RestrictionUserType, create_dissector_handle(dissect_AddGrpC_RestrictionUserType_addGrpC_PDU, proto_addgrpc )); dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_SignalStatusPackage, create_dissector_handle(dissect_AddGrpC_SignalStatusPackage_addGrpC_PDU, proto_addgrpc )); + dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_LaneAttributes, create_dissector_handle(dissect_AddGrpC_LaneAttributes_addGrpC_PDU, proto_addgrpc )); + dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_MovementEvent, create_dissector_handle(dissect_AddGrpC_MovementEvent_addGrpC_PDU, proto_addgrpc )); + dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_RequestorDescription, create_dissector_handle(dissect_AddGrpC_RequestorDescription_addGrpC_PDU, proto_addgrpc )); dissector_add_uint("ieee1609dot2.ssp", psid_den_basic_services, create_dissector_handle(dissect_denmssp_pdu, proto_its_denm)); dissector_add_uint("ieee1609dot2.ssp", psid_ca_basic_services, create_dissector_handle(dissect_camssp_pdu, proto_its_cam)); diff --git a/epan/dissectors/asn1/its/packet-its-template.h b/epan/dissectors/asn1/its/packet-its-template.h index a77c9a24c2..12bf4f6991 100644 --- a/epan/dissectors/asn1/its/packet-its-template.h +++ b/epan/dissectors/asn1/its/packet-its-template.h @@ -52,6 +52,7 @@ enum regext_type_enum { Reg_SignalStatusMessage, Reg_SignalStatusPackage, Reg_SPAT, + Reg_RTCMcorrections, }; #endif /* __PACKET_ITS_H__ */ diff --git a/epan/dissectors/packet-its.c b/epan/dissectors/packet-its.c index 236cea6ec6..b13784d7f3 100644 --- a/epan/dissectors/packet-its.c +++ b/epan/dissectors/packet-its.c @@ -31,10 +31,10 @@ * EVCSN POI (EVCSN POI message) ETSI TS 101 556-1 * TPG (TRM, TCM, VDRM, VDPM, EOFM) ETSI TS 101 556-2 * Charging (EV-RSR, SRM, SCM) ETSI TS 101 556-3 + * GPC (RTCMEM) ETSI TS 103 301 * * Not supported: * SA (SAEM) ETSI TS 102 890-1 - * GPC (RTCMEM) ETSI TS 103 301 * CTL (CTLM) ETSI TS 102 941 * CRL (CRLM) ETSI TS 102 941 * Certificate request ETSI TS 102 941 @@ -131,6 +131,7 @@ static int proto_its_ivim = -1; static int proto_its_tistpg = -1; static int proto_its_ssem = -1; static int proto_its_srem = -1; +static int proto_its_rtcmem = -1; static int proto_its_mapem = -1; static int proto_its_spatem = -1; static int proto_addgrpc = -1; @@ -573,7 +574,7 @@ static int hf_dsrc_app_emissionHCNOX = -1; /* Int2 */ static int hf_dsrc_app_numberOfSeats = -1; /* Int1 */ static int hf_dsrc_app_numberOfStandingPlaces = -1; /* Int1 */ static int hf_dsrc_app_countryCode = -1; /* CountryCode */ -static int hf_dsrc_app_providerIdentifier = -1; /* IssuerIdentifier */ +static int hf_dsrc_app_providerIdentifier = -1; /* AVIAEIIssuerIdentifier */ static int hf_dsrc_app_soundstationary = -1; /* Int1 */ static int hf_dsrc_app_sounddriveby = -1; /* Int1 */ static int hf_dsrc_app_vehicleLengthOverall = -1; /* Int1 */ @@ -821,12 +822,31 @@ static int hf_ivi_DayOfWeek_sunday = -1; /* --- Module DSRC --- --- --- */ +static int hf_dsrc_dsrc_MapData_PDU = -1; /* MapData */ +static int hf_dsrc_dsrc_RTCMcorrections_PDU = -1; /* RTCMcorrections */ static int hf_dsrc_dsrc_SPAT_PDU = -1; /* SPAT */ static int hf_dsrc_dsrc_SignalRequestMessage_PDU = -1; /* SignalRequestMessage */ static int hf_dsrc_dsrc_SignalStatusMessage_PDU = -1; /* SignalStatusMessage */ -static int hf_dsrc_dsrc_MapData_PDU = -1; /* MapData */ static int hf_dsrc_regionId = -1; /* RegionId */ static int hf_dsrc_regExtValue = -1; /* T_regExtValue */ +static int hf_dsrc_mdTimeStamp = -1; /* MinuteOfTheYear */ +static int hf_dsrc_msgIssueRevision = -1; /* MsgCount */ +static int hf_dsrc_layerType = -1; /* LayerType */ +static int hf_dsrc_layerID = -1; /* LayerID */ +static int hf_dsrc_mdIntersections = -1; /* IntersectionGeometryList */ +static int hf_dsrc_roadSegments = -1; /* RoadSegmentList */ +static int hf_dsrc_dataParameters = -1; /* DataParameters */ +static int hf_dsrc_restrictionList = -1; /* RestrictionClassList */ +static int hf_dsrc_mapRegional = -1; /* T_MAPRegional */ +static int hf_dsrc_mapRegional_item = -1; /* RegionalExtension */ +static int hf_dsrc_msgCnt = -1; /* MsgCount */ +static int hf_dsrc_rev = -1; /* RTCM_Revision */ +static int hf_dsrc_timeStamp = -1; /* MinuteOfTheYear */ +static int hf_dsrc_anchorPoint = -1; /* FullPositionVector */ +static int hf_dsrc_rtcmHeader = -1; /* RTCMheader */ +static int hf_dsrc_msgs = -1; /* RTCMmessageList */ +static int hf_dsrc_regional = -1; /* SEQUENCE_SIZE_1_4_OF_RegionalExtension */ +static int hf_dsrc_regional_item = -1; /* RegionalExtension */ static int hf_dsrc_spatTimeStamp = -1; /* MinuteOfTheYear */ static int hf_dsrc_name = -1; /* DescriptiveName */ static int hf_dsrc_spatIntersections = -1; /* IntersectionStateList */ @@ -843,24 +863,17 @@ static int hf_dsrc_ssmTimeStamp = -1; /* MinuteOfTheYear */ static int hf_dsrc_ssmStatus = -1; /* SignalStatusList */ static int hf_dsrc_ssmRegional = -1; /* T_SSMRegional */ static int hf_dsrc_ssmRegional_item = -1; /* RegionalExtension */ -static int hf_dsrc_mdTimeStamp = -1; /* MinuteOfTheYear */ -static int hf_dsrc_msgIssueRevision = -1; /* MsgCount */ -static int hf_dsrc_layerType = -1; /* LayerType */ -static int hf_dsrc_layerID = -1; /* LayerID */ -static int hf_dsrc_mdIntersections = -1; /* IntersectionGeometryList */ -static int hf_dsrc_roadSegments = -1; /* RoadSegmentList */ -static int hf_dsrc_dataParameters = -1; /* DataParameters */ -static int hf_dsrc_restrictionList = -1; /* RestrictionClassList */ -static int hf_dsrc_mapRegional = -1; /* T_MAPRegional */ -static int hf_dsrc_mapRegional_item = -1; /* RegionalExtension */ static int hf_dsrc_asType = -1; /* AdvisorySpeedType */ static int hf_dsrc_asSpeed = -1; /* SpeedAdvice */ -static int hf_dsrc_asConfidence = -1; /* SpeedConfidence */ +static int hf_dsrc_asConfidence = -1; /* SpeedConfidenceDSRC */ static int hf_dsrc_distance = -1; /* ZoneLength */ static int hf_dsrc_class = -1; /* RestrictionClassID */ static int hf_dsrc_asRegional = -1; /* T_AdvisorySpeedRegional */ static int hf_dsrc_asRegional_item = -1; /* RegionalExtension */ static int hf_dsrc_AdvisorySpeedList_item = -1; /* AdvisorySpeed */ +static int hf_dsrc_antOffsetX = -1; /* Offset_B12 */ +static int hf_dsrc_antOffsetY = -1; /* Offset_B09 */ +static int hf_dsrc_antOffsetZ = -1; /* Offset_B10 */ static int hf_dsrc_referenceLaneId = -1; /* LaneID */ static int hf_dsrc_offsetXaxis = -1; /* T_offsetXaxis */ static int hf_dsrc_small = -1; /* DrivenLineOffsetSm */ @@ -889,7 +902,23 @@ static int hf_dsrc_processMethod = -1; /* IA5String_SIZE_1_255 */ static int hf_dsrc_processAgency = -1; /* IA5String_SIZE_1_255 */ static int hf_dsrc_lastCheckedDate = -1; /* IA5String_SIZE_1_255 */ static int hf_dsrc_geoidUsed = -1; /* IA5String_SIZE_1_255 */ +static int hf_dsrc_year = -1; /* DYear */ +static int hf_dsrc_month = -1; /* DMonth */ +static int hf_dsrc_day = -1; /* DDay */ +static int hf_dsrc_hour = -1; /* DHour */ +static int hf_dsrc_minute = -1; /* DMinute */ +static int hf_dsrc_offset = -1; /* DOffset */ static int hf_dsrc_EnabledLaneList_item = -1; /* LaneID */ +static int hf_dsrc_utcTime = -1; /* DDateTime */ +static int hf_dsrc_long = -1; /* Longitude */ +static int hf_dsrc_lat = -1; /* Latitude */ +static int hf_dsrc_fpvElevation = -1; /* Elevation */ +static int hf_dsrc_fpvHeading = -1; /* HeadingDSRC */ +static int hf_dsrc_fpvSpeed = -1; /* TransmissionAndSpeed */ +static int hf_dsrc_posAccuracy = -1; /* PositionalAccuracy */ +static int hf_dsrc_timeConfidence = -1; /* TimeConfidence */ +static int hf_dsrc_posConfidence = -1; /* PositionConfidenceSet */ +static int hf_dsrc_speedConfidence = -1; /* SpeedandHeadingandThrottleConfidence */ static int hf_dsrc_laneID = -1; /* LaneID */ static int hf_dsrc_ingressApproach = -1; /* ApproachID */ static int hf_dsrc_egressApproach = -1; /* ApproachID */ @@ -946,12 +975,12 @@ static int hf_dsrc_striping = -1; /* LaneAttributes_Striping */ static int hf_dsrc_trackedVehicle = -1; /* LaneAttributes_TrackedVehicle */ static int hf_dsrc_parking = -1; /* LaneAttributes_Parking */ static int hf_dsrc_ManeuverAssistList_item = -1; /* ConnectionManeuverAssist */ -static int hf_dsrc_MovementEventList_item = -1; /* MovementEvent */ static int hf_dsrc_eventState = -1; /* MovementPhaseState */ static int hf_dsrc_timing = -1; /* TimeChangeDetails */ static int hf_dsrc_speeds = -1; /* AdvisorySpeedList */ static int hf_dsrc_meRegional = -1; /* T_MovementEventRegional */ static int hf_dsrc_meRegional_item = -1; /* RegionalExtension */ +static int hf_dsrc_MovementEventList_item = -1; /* MovementEvent */ static int hf_dsrc_MovementList_item = -1; /* MovementState */ static int hf_dsrc_movementName = -1; /* DescriptiveName */ static int hf_dsrc_state_time_speed = -1; /* MovementEventList */ @@ -967,7 +996,6 @@ static int hf_dsrc_nasxyRegional = -1; /* T_NodeAttributeSetXYRegiona static int hf_dsrc_nasxyRegional_item = -1; /* RegionalExtension */ static int hf_dsrc_NodeAttributeXYList_item = -1; /* NodeAttributeXY */ static int hf_dsrc_lon = -1; /* Longitude */ -static int hf_dsrc_lat = -1; /* Latitude */ static int hf_dsrc_n20bX = -1; /* Offset_B10 */ static int hf_dsrc_n20bY = -1; /* Offset_B10 */ static int hf_dsrc_n22bX = -1; /* Offset_B11 */ @@ -990,12 +1018,16 @@ static int hf_dsrc_node_XY5 = -1; /* Node_XY_28b */ static int hf_dsrc_node_XY6 = -1; /* Node_XY_32b */ static int hf_dsrc_node_LatLon = -1; /* Node_LLmD_64b */ static int hf_dsrc_nopxyRegional = -1; /* RegionalExtension */ -static int hf_dsrc_NodeSetXY_item = -1; /* NodeXY */ static int hf_dsrc_delta = -1; /* NodeOffsetPointXY */ static int hf_dsrc_attributes = -1; /* NodeAttributeSetXY */ +static int hf_dsrc_NodeSetXY_item = -1; /* NodeXY */ static int hf_dsrc_OverlayLaneList_item = -1; /* LaneID */ -static int hf_dsrc_long = -1; /* Longitude */ -static int hf_dsrc_elevation = -1; /* Elevation */ +static int hf_dsrc_semiMajor = -1; /* SemiMajorAxisAccuracy */ +static int hf_dsrc_semiMinor = -1; /* SemiMinorAxisAccuracy */ +static int hf_dsrc_orientation = -1; /* SemiMajorAxisOrientation */ +static int hf_dsrc_pos = -1; /* PositionConfidence */ +static int hf_dsrc_pcsElevation = -1; /* ElevationConfidence */ +static int hf_dsrc_p3dElevation = -1; /* Elevation */ static int hf_dsrc_p3dRegional = -1; /* T_Position3DRegional */ static int hf_dsrc_p3dRegional_item = -1; /* RegionalExtension */ static int hf_dsrc_PreemptPriorityList_item = -1; /* SignalControlZone */ @@ -1011,7 +1043,7 @@ static int hf_dsrc_transitSchedule = -1; /* DeltaTime */ static int hf_dsrc_rdRegional = -1; /* T_RequestorDescriptionRegional */ static int hf_dsrc_rdRegional_item = -1; /* RegionalExtension */ static int hf_dsrc_rpvPosition = -1; /* Position3D */ -static int hf_dsrc_heading = -1; /* Angle */ +static int hf_dsrc_rpvHeading = -1; /* Angle */ static int hf_dsrc_rpvSpeed = -1; /* TransmissionAndSpeed */ static int hf_dsrc_role = -1; /* BasicVehicleRole */ static int hf_dsrc_subrole = -1; /* RequestSubRole */ @@ -1022,10 +1054,10 @@ static int hf_dsrc_rtRegional = -1; /* RegionalExtension */ static int hf_dsrc_scaId = -1; /* RestrictionClassID */ static int hf_dsrc_users = -1; /* RestrictionUserTypeList */ static int hf_dsrc_RestrictionClassList_item = -1; /* RestrictionClassAssignment */ -static int hf_dsrc_RestrictionUserTypeList_item = -1; /* RestrictionUserType */ static int hf_dsrc_basicType = -1; /* RestrictionAppliesTo */ static int hf_dsrc_rutRegional = -1; /* T_RestrictionUserTypeRegional */ static int hf_dsrc_rutRegional_item = -1; /* RegionalExtension */ +static int hf_dsrc_RestrictionUserTypeList_item = -1; /* RestrictionUserType */ static int hf_dsrc_RoadLaneSetList_item = -1; /* GenericLane */ static int hf_dsrc_rsrId = -1; /* RoadSegmentID */ static int hf_dsrc_rsId = -1; /* RoadSegmentReferenceID */ @@ -1033,17 +1065,14 @@ static int hf_dsrc_roadLaneSet = -1; /* RoadLaneSetList */ static int hf_dsrc_rsRegional = -1; /* T_RoadSegmentRegional */ static int hf_dsrc_rsRegional_item = -1; /* RegionalExtension */ static int hf_dsrc_RoadSegmentList_item = -1; /* RoadSegment */ +static int hf_dsrc_status = -1; /* GNSSstatus */ +static int hf_dsrc_offsetSet = -1; /* AntennaOffsetSet */ +static int hf_dsrc_RTCMmessageList_item = -1; /* RTCMmessage */ static int hf_dsrc_SegmentAttributeXYList_item = -1; /* SegmentAttributeXY */ static int hf_dsrc_zone = -1; /* RegionalExtension */ static int hf_dsrc_sriId = -1; /* VehicleID */ static int hf_dsrc_sriRequest = -1; /* RequestID */ static int hf_dsrc_typeData = -1; /* RequestorType */ -static int hf_dsrc_SignalRequestList_item = -1; /* SignalRequestPackage */ -static int hf_dsrc_srpRequest = -1; /* SignalRequest */ -static int hf_dsrc_minute = -1; /* MinuteOfTheYear */ -static int hf_dsrc_duration = -1; /* DSecond */ -static int hf_dsrc_srpRegional = -1; /* T_SignalRequestPackageRegional */ -static int hf_dsrc_srpRegional_item = -1; /* RegionalExtension */ static int hf_dsrc_srId = -1; /* IntersectionReferenceID */ static int hf_dsrc_requestID = -1; /* RequestID */ static int hf_dsrc_requestType = -1; /* PriorityRequestType */ @@ -1051,18 +1080,28 @@ static int hf_dsrc_inBoundLane = -1; /* IntersectionAccessPoint */ static int hf_dsrc_outBoundLane = -1; /* IntersectionAccessPoint */ static int hf_dsrc_srRegional = -1; /* T_SignalRequestRegional */ static int hf_dsrc_srRegional_item = -1; /* RegionalExtension */ +static int hf_dsrc_SignalRequestList_item = -1; /* SignalRequestPackage */ +static int hf_dsrc_srpRequest = -1; /* SignalRequest */ +static int hf_dsrc_srpMinute = -1; /* MinuteOfTheYear */ +static int hf_dsrc_duration = -1; /* DSecond */ +static int hf_dsrc_srpRegional = -1; /* T_SignalRequestPackageRegional */ +static int hf_dsrc_srpRegional_item = -1; /* RegionalExtension */ +static int hf_dsrc_ssId = -1; /* IntersectionReferenceID */ +static int hf_dsrc_sigStatus = -1; /* SignalStatusPackageList */ +static int hf_dsrc_ssRegional = -1; /* T_SignalStatusRegional */ +static int hf_dsrc_ssRegional_item = -1; /* RegionalExtension */ static int hf_dsrc_SignalStatusList_item = -1; /* SignalStatus */ static int hf_dsrc_SignalStatusPackageList_item = -1; /* SignalStatusPackage */ static int hf_dsrc_requester = -1; /* SignalRequesterInfo */ static int hf_dsrc_inboundOn = -1; /* IntersectionAccessPoint */ static int hf_dsrc_outboundOn = -1; /* IntersectionAccessPoint */ +static int hf_dsrc_sspMinute = -1; /* MinuteOfTheYear */ static int hf_dsrc_sspStatus = -1; /* PrioritizationResponseStatus */ static int hf_dsrc_sspRegional = -1; /* T_SignalStatusPackageRegional */ static int hf_dsrc_sspRegional_item = -1; /* RegionalExtension */ -static int hf_dsrc_ssId = -1; /* IntersectionReferenceID */ -static int hf_dsrc_sigStatus = -1; /* SignalStatusPackageList */ -static int hf_dsrc_ssRegional = -1; /* T_SignalStatusRegional */ -static int hf_dsrc_ssRegional_item = -1; /* RegionalExtension */ +static int hf_dsrc_shtcheading = -1; /* HeadingConfidenceDSRC */ +static int hf_dsrc_shtcSpeed = -1; /* SpeedConfidenceDSRC */ +static int hf_dsrc_throttle = -1; /* ThrottleConfidence */ static int hf_dsrc_SpeedLimitList_item = -1; /* RegulatorySpeedLimit */ static int hf_dsrc_startTime = -1; /* TimeMark */ static int hf_dsrc_minEndTime = -1; /* TimeMark */ @@ -1097,6 +1136,14 @@ static int hf_dsrc_AllowedManeuvers_yieldAllwaysRequired = -1; static int hf_dsrc_AllowedManeuvers_goWithHalt = -1; static int hf_dsrc_AllowedManeuvers_caution = -1; static int hf_dsrc_AllowedManeuvers_reserved1 = -1; +static int hf_dsrc_GNSSstatus_unavailable = -1; +static int hf_dsrc_GNSSstatus_isHealthy = -1; +static int hf_dsrc_GNSSstatus_isMonitored = -1; +static int hf_dsrc_GNSSstatus_baseStationType = -1; +static int hf_dsrc_GNSSstatus_aPDOPofUnder5 = -1; +static int hf_dsrc_GNSSstatus_inViewOfUnder5 = -1; +static int hf_dsrc_GNSSstatus_localCorrectionsPresent = -1; +static int hf_dsrc_GNSSstatus_networkCorrectionsPresent = -1; static int hf_dsrc_IntersectionStatusObject_manualControlIsEnabled = -1; static int hf_dsrc_IntersectionStatusObject_stopTimeIsActivated = -1; static int hf_dsrc_IntersectionStatusObject_failureFlash = -1; @@ -1180,32 +1227,47 @@ static int hf_dsrc_TransitVehicleStatus_atStopLine = -1; static int hf_AddGrpC_AddGrpC_ConnectionManeuverAssist_addGrpC_PDU = -1; /* ConnectionManeuverAssist_addGrpC */ static int hf_AddGrpC_AddGrpC_ConnectionTrajectory_addGrpC_PDU = -1; /* ConnectionTrajectory_addGrpC */ -static int hf_AddGrpC_AddGrpC_Control_addGrpC_PDU = -1; /* Control_addGrpC */ static int hf_AddGrpC_AddGrpC_IntersectionState_addGrpC_PDU = -1; /* IntersectionState_addGrpC */ +static int hf_AddGrpC_AddGrpC_LaneAttributes_addGrpC_PDU = -1; /* LaneAttributes_addGrpC */ static int hf_AddGrpC_AddGrpC_MapData_addGrpC_PDU = -1; /* MapData_addGrpC */ +static int hf_AddGrpC_AddGrpC_MovementEvent_addGrpC_PDU = -1; /* MovementEvent_addGrpC */ +static int hf_AddGrpC_AddGrpC_NodeAttributeSet_addGrpC_PDU = -1; /* NodeAttributeSet_addGrpC */ static int hf_AddGrpC_AddGrpC_Position3D_addGrpC_PDU = -1; /* Position3D_addGrpC */ static int hf_AddGrpC_AddGrpC_RestrictionUserType_addGrpC_PDU = -1; /* RestrictionUserType_addGrpC */ +static int hf_AddGrpC_AddGrpC_RequestorDescription_addGrpC_PDU = -1; /* RequestorDescription_addGrpC */ static int hf_AddGrpC_AddGrpC_SignalStatusPackage_addGrpC_PDU = -1; /* SignalStatusPackage_addGrpC */ -static int hf_AddGrpC_itsStationPositions = -1; /* ItsStationPositionList */ -static int hf_AddGrpC_rsuGNSSOffset = -1; /* NodeOffsetPointXY */ +static int hf_AddGrpC_itsStationPosition = -1; /* ItsStationPositionList */ static int hf_AddGrpC_nodes = -1; /* NodeSetXY */ -static int hf_AddGrpC_ptvRequest = -1; /* PtvRequestType */ +static int hf_AddGrpC_connectionID = -1; /* LaneConnectionID */ static int hf_AddGrpC_activePrioritizations = -1; /* PrioritizationResponseList */ +static int hf_AddGrpC_maxVehicleHeight = -1; /* VehicleHeight */ +static int hf_AddGrpC_maxVehicleWeight = -1; /* VehicleMass */ static int hf_AddGrpC_signalHeadLocations = -1; /* SignalHeadLocationList */ +static int hf_AddGrpC_stateChangeReason = -1; /* ExceptionalCondition */ +static int hf_AddGrpC_ptvRequest = -1; /* PtvRequestType */ +static int hf_AddGrpC_nodeLink = -1; /* NodeLink */ +static int hf_AddGrpC_node = -1; /* Node */ static int hf_AddGrpC_altitude = -1; /* Altitude */ -static int hf_AddGrpC_PrioritizationResponseList_item = -1; /* PrioritizationResponse */ +static int hf_AddGrpC_emission = -1; /* EmissionType */ +static int hf_AddGrpC_fuel = -1; /* FuelType */ +static int hf_AddGrpC_batteryStatus = -1; /* BatteryStatus */ +static int hf_AddGrpC_synchToSchedule = -1; /* DeltaTime */ +static int hf_AddGrpC_rejectedReason = -1; /* RejectedReason */ static int hf_AddGrpC_stationID = -1; /* StationID */ +static int hf_AddGrpC_laneID = -1; /* LaneID */ +static int hf_AddGrpC_nodeXY = -1; /* NodeOffsetPointXY */ +static int hf_AddGrpC_timeReference = -1; /* TimeReference */ +static int hf_AddGrpC_ItsStationPositionList_item = -1; /* ItsStationPosition */ +static int hf_AddGrpC_id = -1; /* INTEGER */ +static int hf_AddGrpC_lane = -1; /* LaneID */ +static int hf_AddGrpC_intersectionID = -1; /* IntersectionID */ +static int hf_AddGrpC_NodeLink_item = -1; /* Node */ static int hf_AddGrpC_priorState = -1; /* PrioritizationResponseStatus */ static int hf_AddGrpC_signalGroup = -1; /* SignalGroupID */ -static int hf_AddGrpC_emission = -1; /* EmissionType */ -static int hf_AddGrpC_SignalHeadLocationList_item = -1; /* SignalHeadLocation */ -static int hf_AddGrpC_nodeXY = -1; /* NodeOffsetPointXY */ +static int hf_AddGrpC_PrioritizationResponseList_item = -1; /* PrioritizationResponse */ static int hf_AddGrpC_nodeZ = -1; /* DeltaAltitude */ static int hf_AddGrpC_signalGroupID = -1; /* SignalGroupID */ -static int hf_AddGrpC_synchToSchedule = -1; /* DeltaTime */ -static int hf_AddGrpC_ItsStationPositionList_item = -1; /* ItsStationPosition */ -static int hf_AddGrpC_laneID = -1; /* LaneID */ -static int hf_AddGrpC_timeReference = -1; /* TimeReference */ +static int hf_AddGrpC_SignalHeadLocationList_item = -1; /* SignalHeadLocation */ /* --- Module CAMv1-PDU-Descriptions --- --- --- */ @@ -1635,7 +1697,7 @@ static int hf_evrsr_SupportedPaymentTypes_contract = -1; static int hf_evrsr_SupportedPaymentTypes_externalIdentification = -1; /*--- End of included file: packet-its-hf.c ---*/ -#line 276 "./asn1/its/packet-its-template.c" +#line 277 "./asn1/its/packet-its-template.c" // CauseCode/SubCauseCode management static int hf_its_trafficConditionSubCauseCode = -1; @@ -1871,17 +1933,20 @@ static gint ett_ivi_DestinationRoad = -1; /* --- Module DSRC --- --- --- */ static gint ett_dsrc_RegionalExtension = -1; +static gint ett_dsrc_MapData = -1; +static gint ett_dsrc_T_MAPRegional = -1; +static gint ett_dsrc_RTCMcorrections = -1; +static gint ett_dsrc_SEQUENCE_SIZE_1_4_OF_RegionalExtension = -1; static gint ett_dsrc_SPAT = -1; static gint ett_dsrc_T_SPATRegional = -1; static gint ett_dsrc_SignalRequestMessage = -1; static gint ett_dsrc_T_SRMRegional = -1; static gint ett_dsrc_SignalStatusMessage = -1; static gint ett_dsrc_T_SSMRegional = -1; -static gint ett_dsrc_MapData = -1; -static gint ett_dsrc_T_MAPRegional = -1; static gint ett_dsrc_AdvisorySpeed = -1; static gint ett_dsrc_T_AdvisorySpeedRegional = -1; static gint ett_dsrc_AdvisorySpeedList = -1; +static gint ett_dsrc_AntennaOffsetSet = -1; static gint ett_dsrc_ComputedLane = -1; static gint ett_dsrc_T_offsetXaxis = -1; static gint ett_dsrc_T_offsetYaxis = -1; @@ -1892,7 +1957,9 @@ static gint ett_dsrc_Connection = -1; static gint ett_dsrc_ConnectionManeuverAssist = -1; static gint ett_dsrc_T_ConnectionManeuverAssistRegional = -1; static gint ett_dsrc_DataParameters = -1; +static gint ett_dsrc_DDateTime = -1; static gint ett_dsrc_EnabledLaneList = -1; +static gint ett_dsrc_FullPositionVector = -1; static gint ett_dsrc_GenericLane = -1; static gint ett_dsrc_T_GenericLaneRegional = -1; static gint ett_dsrc_IntersectionAccessPoint = -1; @@ -1911,9 +1978,9 @@ static gint ett_dsrc_LaneList = -1; static gint ett_dsrc_LaneSharing = -1; static gint ett_dsrc_LaneTypeAttributes = -1; static gint ett_dsrc_ManeuverAssistList = -1; -static gint ett_dsrc_MovementEventList = -1; static gint ett_dsrc_MovementEvent = -1; static gint ett_dsrc_T_MovementEventRegional = -1; +static gint ett_dsrc_MovementEventList = -1; static gint ett_dsrc_MovementList = -1; static gint ett_dsrc_MovementState = -1; static gint ett_dsrc_T_MovementStateRegional = -1; @@ -1929,9 +1996,11 @@ static gint ett_dsrc_Node_XY_28b = -1; static gint ett_dsrc_Node_XY_32b = -1; static gint ett_dsrc_NodeListXY = -1; static gint ett_dsrc_NodeOffsetPointXY = -1; -static gint ett_dsrc_NodeSetXY = -1; static gint ett_dsrc_NodeXY = -1; +static gint ett_dsrc_NodeSetXY = -1; static gint ett_dsrc_OverlayLaneList = -1; +static gint ett_dsrc_PositionalAccuracy = -1; +static gint ett_dsrc_PositionConfidenceSet = -1; static gint ett_dsrc_Position3D = -1; static gint ett_dsrc_T_Position3DRegional = -1; static gint ett_dsrc_PreemptPriorityList = -1; @@ -1942,33 +2011,37 @@ static gint ett_dsrc_RequestorPositionVector = -1; static gint ett_dsrc_RequestorType = -1; static gint ett_dsrc_RestrictionClassAssignment = -1; static gint ett_dsrc_RestrictionClassList = -1; -static gint ett_dsrc_RestrictionUserTypeList = -1; static gint ett_dsrc_RestrictionUserType = -1; static gint ett_dsrc_T_RestrictionUserTypeRegional = -1; +static gint ett_dsrc_RestrictionUserTypeList = -1; static gint ett_dsrc_RoadLaneSetList = -1; static gint ett_dsrc_RoadSegmentReferenceID = -1; static gint ett_dsrc_RoadSegment = -1; static gint ett_dsrc_T_RoadSegmentRegional = -1; static gint ett_dsrc_RoadSegmentList = -1; +static gint ett_dsrc_RTCMheader = -1; +static gint ett_dsrc_RTCMmessageList = -1; static gint ett_dsrc_SegmentAttributeXYList = -1; static gint ett_dsrc_SignalControlZone = -1; static gint ett_dsrc_SignalRequesterInfo = -1; +static gint ett_dsrc_SignalRequest = -1; +static gint ett_dsrc_T_SignalRequestRegional = -1; static gint ett_dsrc_SignalRequestList = -1; static gint ett_dsrc_SignalRequestPackage = -1; static gint ett_dsrc_T_SignalRequestPackageRegional = -1; -static gint ett_dsrc_SignalRequest = -1; -static gint ett_dsrc_T_SignalRequestRegional = -1; +static gint ett_dsrc_SignalStatus = -1; +static gint ett_dsrc_T_SignalStatusRegional = -1; static gint ett_dsrc_SignalStatusList = -1; static gint ett_dsrc_SignalStatusPackageList = -1; static gint ett_dsrc_SignalStatusPackage = -1; static gint ett_dsrc_T_SignalStatusPackageRegional = -1; -static gint ett_dsrc_SignalStatus = -1; -static gint ett_dsrc_T_SignalStatusRegional = -1; +static gint ett_dsrc_SpeedandHeadingandThrottleConfidence = -1; static gint ett_dsrc_SpeedLimitList = -1; static gint ett_dsrc_TimeChangeDetails = -1; static gint ett_dsrc_TransmissionAndSpeed = -1; static gint ett_dsrc_VehicleID = -1; static gint ett_dsrc_AllowedManeuvers = -1; +static gint ett_dsrc_GNSSstatus = -1; static gint ett_dsrc_IntersectionStatusObject = -1; static gint ett_dsrc_LaneAttributes_Barrier = -1; static gint ett_dsrc_LaneAttributes_Bike = -1; @@ -1985,18 +2058,23 @@ static gint ett_dsrc_TransitVehicleStatus = -1; static gint ett_AddGrpC_ConnectionManeuverAssist_addGrpC = -1; static gint ett_AddGrpC_ConnectionTrajectory_addGrpC = -1; -static gint ett_AddGrpC_Control_addGrpC = -1; static gint ett_AddGrpC_IntersectionState_addGrpC = -1; +static gint ett_AddGrpC_LaneAttributes_addGrpC = -1; static gint ett_AddGrpC_MapData_addGrpC = -1; +static gint ett_AddGrpC_MovementEvent_addGrpC = -1; +static gint ett_AddGrpC_NodeAttributeSet_addGrpC = -1; static gint ett_AddGrpC_Position3D_addGrpC = -1; -static gint ett_AddGrpC_PrioritizationResponseList = -1; -static gint ett_AddGrpC_PrioritizationResponse = -1; static gint ett_AddGrpC_RestrictionUserType_addGrpC = -1; -static gint ett_AddGrpC_SignalHeadLocationList = -1; -static gint ett_AddGrpC_SignalHeadLocation = -1; +static gint ett_AddGrpC_RequestorDescription_addGrpC = -1; static gint ett_AddGrpC_SignalStatusPackage_addGrpC = -1; -static gint ett_AddGrpC_ItsStationPositionList = -1; static gint ett_AddGrpC_ItsStationPosition = -1; +static gint ett_AddGrpC_ItsStationPositionList = -1; +static gint ett_AddGrpC_Node = -1; +static gint ett_AddGrpC_NodeLink = -1; +static gint ett_AddGrpC_PrioritizationResponse = -1; +static gint ett_AddGrpC_PrioritizationResponseList = -1; +static gint ett_AddGrpC_SignalHeadLocation = -1; +static gint ett_AddGrpC_SignalHeadLocationList = -1; /* --- Module REGION --- --- --- */ @@ -2152,7 +2230,7 @@ static gint ett_evrsr_RechargingType = -1; static gint ett_evrsr_SupportedPaymentTypes = -1; /*--- End of included file: packet-its-ett.c ---*/ -#line 306 "./asn1/its/packet-its-template.c" +#line 307 "./asn1/its/packet-its-template.c" // Deal with cause/subcause code management struct { CauseCodeType_enum cause; int* hf; } cause_to_subcause[] = { @@ -2257,7 +2335,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 604 "./asn1/its/its.cnf" +#line 645 "./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; @@ -2648,7 +2726,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 705 "./asn1/its/its.cnf" +#line 746 "./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, @@ -3066,9 +3144,10 @@ dissect_its_Heading(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro static const value_string its_LanePosition_vals[] = { { -1, "offTheRoad" }, - { 0, "hardShoulder" }, - { 1, "outermostDrivingLane" }, - { 2, "secondLaneFromOutside" }, + { 0, "innerHardShoulder" }, + { 1, "innermostDrivingLane" }, + { 2, "secondLaneFromInside" }, + { 14, "outerHardShoulder" }, { 0, NULL } }; @@ -4017,6 +4096,12 @@ dissect_its_SteeringWheelAngle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac } +static const val64_string its_TimestampIts_vals[] = { + { 0, "utcStartOf2004" }, + { 1, "oneMillisecAfterUTCStartOf2004" }, + { 0, NULL } +}; + static int dissect_its_TimestampIts(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -6335,7 +6420,7 @@ dissect_anads_CountryCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int -dissect_anads_IssuerIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_anads_AVIAEIIssuerIdentifier(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); @@ -6846,7 +6931,7 @@ dissect_dsrc_app_PassengerCapacity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static const per_sequence_t dsrc_app_Provider_sequence[] = { { &hf_dsrc_app_countryCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_anads_CountryCode }, - { &hf_dsrc_app_providerIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_anads_IssuerIdentifier }, + { &hf_dsrc_app_providerIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_anads_AVIAEIIssuerIdentifier }, { NULL, 0, 0, NULL } }; @@ -9102,7 +9187,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 322 "./asn1/its/its.cnf" +#line 339 "./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"); @@ -9182,51 +9267,6 @@ dissect_dsrc_MinuteOfTheYear(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int -dissect_dsrc_DescriptiveName(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, 63, FALSE); - - return offset; -} - - - -static int -dissect_dsrc_RoadRegulatorID(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 int -dissect_dsrc_IntersectionID(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 dsrc_IntersectionReferenceID_sequence[] = { - { &hf_dsrc_region , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_RoadRegulatorID }, - { &hf_dsrc_irId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionID }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_dsrc_IntersectionReferenceID(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_dsrc_IntersectionReferenceID, dsrc_IntersectionReferenceID_sequence); - - return offset; -} - - - -static int dissect_dsrc_MsgCount(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); @@ -9235,289 +9275,23 @@ dissect_dsrc_MsgCount(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p } -static const int * dsrc_IntersectionStatusObject_bits[] = { - &hf_dsrc_IntersectionStatusObject_manualControlIsEnabled, - &hf_dsrc_IntersectionStatusObject_stopTimeIsActivated, - &hf_dsrc_IntersectionStatusObject_failureFlash, - &hf_dsrc_IntersectionStatusObject_preemptIsActive, - &hf_dsrc_IntersectionStatusObject_signalPriorityIsActive, - &hf_dsrc_IntersectionStatusObject_fixedTimeOperation, - &hf_dsrc_IntersectionStatusObject_trafficDependentOperation, - &hf_dsrc_IntersectionStatusObject_standbyOperation, - &hf_dsrc_IntersectionStatusObject_failureMode, - &hf_dsrc_IntersectionStatusObject_off, - &hf_dsrc_IntersectionStatusObject_recentMAPmessageUpdate, - &hf_dsrc_IntersectionStatusObject_recentChangeInMAPassignedLanesIDsUsed, - &hf_dsrc_IntersectionStatusObject_noValidMAPisAvailableAtThisTime, - &hf_dsrc_IntersectionStatusObject_noValidSPATisAvailableAtThisTime, - NULL -}; - -static int -dissect_dsrc_IntersectionStatusObject(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, - 16, 16, FALSE, dsrc_IntersectionStatusObject_bits, 14, NULL, NULL); - - return offset; -} - - - -static int -dissect_dsrc_DSecond(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 int -dissect_dsrc_LaneID(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 dsrc_EnabledLaneList_sequence_of[1] = { - { &hf_dsrc_EnabledLaneList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneID }, -}; - -static int -dissect_dsrc_EnabledLaneList(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_dsrc_EnabledLaneList, dsrc_EnabledLaneList_sequence_of, - 1, 16, FALSE); - - return offset; -} - - - -static int -dissect_dsrc_SignalGroupID(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 dsrc_MovementPhaseState_vals[] = { - { 0, "unavailable" }, - { 1, "dark" }, - { 2, "stop-Then-Proceed" }, - { 3, "stop-And-Remain" }, - { 4, "pre-Movement" }, - { 5, "permissive-Movement-Allowed" }, - { 6, "protected-Movement-Allowed" }, - { 7, "permissive-clearance" }, - { 8, "protected-clearance" }, - { 9, "caution-Conflicting-Traffic" }, - { 0, NULL } -}; - - -static int -dissect_dsrc_MovementPhaseState(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, - 10, NULL, FALSE, 0, NULL); - - return offset; -} - - - -static int -dissect_dsrc_TimeMark(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, 36001U, NULL, FALSE); - - return offset; -} - - - -static int -dissect_dsrc_TimeIntervalConfidence(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, 15U, NULL, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_TimeChangeDetails_sequence[] = { - { &hf_dsrc_startTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_TimeMark }, - { &hf_dsrc_minEndTime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_TimeMark }, - { &hf_dsrc_maxEndTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_TimeMark }, - { &hf_dsrc_likelyTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_TimeMark }, - { &hf_dsrc_tcdConfidence , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_TimeIntervalConfidence }, - { &hf_dsrc_nextTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_TimeMark }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_dsrc_TimeChangeDetails(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_dsrc_TimeChangeDetails, dsrc_TimeChangeDetails_sequence); - - return offset; -} - - -static const value_string dsrc_AdvisorySpeedType_vals[] = { +static const value_string dsrc_LayerType_vals[] = { { 0, "none" }, - { 1, "greenwave" }, - { 2, "ecoDrive" }, - { 3, "transit" }, + { 1, "mixedContent" }, + { 2, "generalMapData" }, + { 3, "intersectionData" }, + { 4, "curveData" }, + { 5, "roadwaySectionData" }, + { 6, "parkingAreaData" }, + { 7, "sharedLaneData" }, { 0, NULL } }; static int -dissect_dsrc_AdvisorySpeedType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_dsrc_LayerType(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 int -dissect_dsrc_SpeedAdvice(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, 500U, NULL, FALSE); - - return offset; -} - - - -static int -dissect_dsrc_ZoneLength(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, 10000U, NULL, FALSE); - - return offset; -} - - - -static int -dissect_dsrc_RestrictionClassID(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 dsrc_T_AdvisorySpeedRegional_sequence_of[1] = { - { &hf_dsrc_asRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, -}; - -static int -dissect_dsrc_T_AdvisorySpeedRegional(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_dsrc_T_AdvisorySpeedRegional, dsrc_T_AdvisorySpeedRegional_sequence_of, - 1, 4, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_AdvisorySpeed_sequence[] = { - { &hf_dsrc_asType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_AdvisorySpeedType }, - { &hf_dsrc_asSpeed , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SpeedAdvice }, - { &hf_dsrc_asConfidence , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_SpeedConfidence }, - { &hf_dsrc_distance , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ZoneLength }, - { &hf_dsrc_class , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RestrictionClassID }, - { &hf_dsrc_asRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_AdvisorySpeedRegional }, - { NULL, 0, 0, NULL } -}; - -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 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 405 "./asn1/its/its.cnf" - ((its_private_data_t*)actx->private_data)->type = save; - - return offset; -} - - -static const per_sequence_t dsrc_AdvisorySpeedList_sequence_of[1] = { - { &hf_dsrc_AdvisorySpeedList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_AdvisorySpeed }, -}; - -static int -dissect_dsrc_AdvisorySpeedList(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_dsrc_AdvisorySpeedList, dsrc_AdvisorySpeedList_sequence_of, - 1, 16, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_T_MovementEventRegional_sequence_of[1] = { - { &hf_dsrc_meRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, -}; - -static int -dissect_dsrc_T_MovementEventRegional(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_dsrc_T_MovementEventRegional, dsrc_T_MovementEventRegional_sequence_of, - 1, 4, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_MovementEvent_sequence[] = { - { &hf_dsrc_eventState , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MovementPhaseState }, - { &hf_dsrc_timing , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TimeChangeDetails }, - { &hf_dsrc_speeds , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_AdvisorySpeedList }, - { &hf_dsrc_meRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_MovementEventRegional }, - { NULL, 0, 0, NULL } -}; - -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 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 477 "./asn1/its/its.cnf" - ((its_private_data_t*)actx->private_data)->type = save; - - return offset; -} - - -static const per_sequence_t dsrc_MovementEventList_sequence_of[1] = { - { &hf_dsrc_MovementEventList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_MovementEvent }, -}; - -static int -dissect_dsrc_MovementEventList(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_dsrc_MovementEventList, dsrc_MovementEventList_sequence_of, - 1, 16, FALSE); + 8, NULL, TRUE, 0, NULL); return offset; } @@ -9525,230 +9299,19 @@ dissect_dsrc_MovementEventList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int -dissect_dsrc_LaneConnectionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_dsrc_LayerID(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_dsrc_WaitOnStopline(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_dsrc_PedestrianBicycleDetect(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 per_sequence_t dsrc_T_ConnectionManeuverAssistRegional_sequence_of[1] = { - { &hf_dsrc_cmaRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, -}; - -static int -dissect_dsrc_T_ConnectionManeuverAssistRegional(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_dsrc_T_ConnectionManeuverAssistRegional, dsrc_T_ConnectionManeuverAssistRegional_sequence_of, - 1, 4, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_ConnectionManeuverAssist_sequence[] = { - { &hf_dsrc_connectionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneConnectionID }, - { &hf_dsrc_queueLength , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ZoneLength }, - { &hf_dsrc_availableStorageLength, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ZoneLength }, - { &hf_dsrc_waitOnStop , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_WaitOnStopline }, - { &hf_dsrc_pedBicycleDetect, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_PedestrianBicycleDetect }, - { &hf_dsrc_cmaRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_ConnectionManeuverAssistRegional }, - { NULL, 0, 0, NULL } -}; - -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 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 423 "./asn1/its/its.cnf" - ((its_private_data_t*)actx->private_data)->type = save; - - return offset; -} - - -static const per_sequence_t dsrc_ManeuverAssistList_sequence_of[1] = { - { &hf_dsrc_ManeuverAssistList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_ConnectionManeuverAssist }, -}; - -static int -dissect_dsrc_ManeuverAssistList(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_dsrc_ManeuverAssistList, dsrc_ManeuverAssistList_sequence_of, - 1, 16, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_T_MovementStateRegional_sequence_of[1] = { - { &hf_dsrc_msRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, -}; - -static int -dissect_dsrc_T_MovementStateRegional(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_dsrc_T_MovementStateRegional, dsrc_T_MovementStateRegional_sequence_of, - 1, 4, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_MovementState_sequence[] = { - { &hf_dsrc_movementName , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName }, - { &hf_dsrc_signalGroup , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalGroupID }, - { &hf_dsrc_state_time_speed, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MovementEventList }, - { &hf_dsrc_maneuverAssistList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ManeuverAssistList }, - { &hf_dsrc_msRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_MovementStateRegional }, - { NULL, 0, 0, NULL } -}; - -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 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 486 "./asn1/its/its.cnf" - ((its_private_data_t*)actx->private_data)->type = save; - - return offset; -} - - -static const per_sequence_t dsrc_MovementList_sequence_of[1] = { - { &hf_dsrc_MovementList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_MovementState }, -}; - -static int -dissect_dsrc_MovementList(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_dsrc_MovementList, dsrc_MovementList_sequence_of, - 1, 255, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_T_IntersectionStateRegional_sequence_of[1] = { - { &hf_dsrc_isRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, -}; - -static int -dissect_dsrc_T_IntersectionStateRegional(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_dsrc_T_IntersectionStateRegional, dsrc_T_IntersectionStateRegional_sequence_of, - 1, 4, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_IntersectionState_sequence[] = { - { &hf_dsrc_name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName }, - { &hf_dsrc_isId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionReferenceID }, - { &hf_dsrc_revision , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MsgCount }, - { &hf_dsrc_isStatus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionStatusObject }, - { &hf_dsrc_moy , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear }, - { &hf_dsrc_isTimeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DSecond }, - { &hf_dsrc_enabledLanes , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_EnabledLaneList }, - { &hf_dsrc_states , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MovementList }, - { &hf_dsrc_maneuverAssistList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ManeuverAssistList }, - { &hf_dsrc_isRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_IntersectionStateRegional }, - { NULL, 0, 0, NULL } -}; - -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 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 450 "./asn1/its/its.cnf" - ((its_private_data_t*)actx->private_data)->type = save; - - return offset; -} - - -static const per_sequence_t dsrc_IntersectionStateList_sequence_of[1] = { - { &hf_dsrc_IntersectionStateList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionState }, -}; - -static int -dissect_dsrc_IntersectionStateList(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_dsrc_IntersectionStateList, dsrc_IntersectionStateList_sequence_of, - 1, 32, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_T_SPATRegional_sequence_of[1] = { - { &hf_dsrc_spatRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, -}; - -static int -dissect_dsrc_T_SPATRegional(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_dsrc_T_SPATRegional, dsrc_T_SPATRegional_sequence_of, - 1, 4, FALSE); + 0U, 100U, NULL, FALSE); return offset; } -static const per_sequence_t dsrc_SPAT_sequence[] = { - { &hf_dsrc_spatTimeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear }, - { &hf_dsrc_name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName }, - { &hf_dsrc_spatIntersections, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionStateList }, - { &hf_dsrc_spatRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SPATRegional }, - { NULL, 0, 0, NULL } -}; 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 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"); - col_set_str(actx->pinfo->cinfo, COL_INFO, "SPATEM"); - regext->type = Reg_SPAT; - - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_dsrc_SPAT, dsrc_SPAT_sequence); +dissect_dsrc_DescriptiveName(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, 63, FALSE); return offset; } @@ -9756,27 +9319,9 @@ dissect_dsrc_SPAT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto static int -dissect_dsrc_RequestID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_dsrc_RoadRegulatorID(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 dsrc_PriorityRequestType_vals[] = { - { 0, "priorityRequestTypeReserved" }, - { 1, "priorityRequest" }, - { 2, "priorityRequestUpdate" }, - { 3, "priorityCancellation" }, - { 0, NULL } -}; - - -static int -dissect_dsrc_PriorityRequestType(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); + 0U, 65535U, NULL, FALSE); return offset; } @@ -9784,311 +9329,24 @@ dissect_dsrc_PriorityRequestType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * static int -dissect_dsrc_ApproachID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_dsrc_IntersectionID(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, 15U, NULL, FALSE); - - return offset; -} - - -static const value_string dsrc_IntersectionAccessPoint_vals[] = { - { 0, "lane" }, - { 1, "approach" }, - { 2, "connection" }, - { 0, NULL } -}; - -static const per_choice_t dsrc_IntersectionAccessPoint_choice[] = { - { 0, &hf_dsrc_lane , ASN1_EXTENSION_ROOT , dissect_dsrc_LaneID }, - { 1, &hf_dsrc_approach , ASN1_EXTENSION_ROOT , dissect_dsrc_ApproachID }, - { 2, &hf_dsrc_connection , ASN1_EXTENSION_ROOT , dissect_dsrc_LaneConnectionID }, - { 0, NULL, 0, NULL } -}; - -static int -dissect_dsrc_IntersectionAccessPoint(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_dsrc_IntersectionAccessPoint, dsrc_IntersectionAccessPoint_choice, - NULL); - - return offset; -} - - -static const per_sequence_t dsrc_T_SignalRequestRegional_sequence_of[1] = { - { &hf_dsrc_srRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, -}; - -static int -dissect_dsrc_T_SignalRequestRegional(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_dsrc_T_SignalRequestRegional, dsrc_T_SignalRequestRegional_sequence_of, - 1, 4, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_SignalRequest_sequence[] = { - { &hf_dsrc_srId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionReferenceID }, - { &hf_dsrc_requestID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RequestID }, - { &hf_dsrc_requestType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_PriorityRequestType }, - { &hf_dsrc_inBoundLane , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionAccessPoint }, - { &hf_dsrc_outBoundLane , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_IntersectionAccessPoint }, - { &hf_dsrc_srRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SignalRequestRegional }, - { NULL, 0, 0, NULL } -}; - -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 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 567 "./asn1/its/its.cnf" - ((its_private_data_t*)actx->private_data)->type = save; - - return offset; -} - - -static const per_sequence_t dsrc_T_SignalRequestPackageRegional_sequence_of[1] = { - { &hf_dsrc_srpRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, -}; - -static int -dissect_dsrc_T_SignalRequestPackageRegional(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_dsrc_T_SignalRequestPackageRegional, dsrc_T_SignalRequestPackageRegional_sequence_of, - 1, 4, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_SignalRequestPackage_sequence[] = { - { &hf_dsrc_srpRequest , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalRequest }, - { &hf_dsrc_minute , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear }, - { &hf_dsrc_second , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DSecond }, - { &hf_dsrc_duration , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DSecond }, - { &hf_dsrc_srpRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SignalRequestPackageRegional }, - { NULL, 0, 0, NULL } -}; - -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 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 558 "./asn1/its/its.cnf" - ((its_private_data_t*)actx->private_data)->type = save; - - return offset; -} - - -static const per_sequence_t dsrc_SignalRequestList_sequence_of[1] = { - { &hf_dsrc_SignalRequestList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalRequestPackage }, -}; - -static int -dissect_dsrc_SignalRequestList(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_dsrc_SignalRequestList, dsrc_SignalRequestList_sequence_of, - 1, 32, FALSE); - - return offset; -} - - - -static int -dissect_dsrc_TemporaryID(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, - 4, 4, FALSE, NULL); - - return offset; -} - - -static const value_string dsrc_VehicleID_vals[] = { - { 0, "entityID" }, - { 1, "stationID" }, - { 0, NULL } -}; - -static const per_choice_t dsrc_VehicleID_choice[] = { - { 0, &hf_dsrc_entityID , ASN1_NO_EXTENSIONS , dissect_dsrc_TemporaryID }, - { 1, &hf_dsrc_stationID , ASN1_NO_EXTENSIONS , dissect_its_StationID }, - { 0, NULL, 0, NULL } -}; - -static int -dissect_dsrc_VehicleID(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_dsrc_VehicleID, dsrc_VehicleID_choice, - NULL); - - return offset; -} - - -static const value_string dsrc_BasicVehicleRole_vals[] = { - { 0, "basicVehicle" }, - { 1, "publicTransport" }, - { 2, "specialTransport" }, - { 3, "dangerousGoods" }, - { 4, "roadWork" }, - { 5, "roadRescue" }, - { 6, "emergency" }, - { 7, "safetyCar" }, - { 8, "none-unknown" }, - { 9, "truck" }, - { 10, "motorcycle" }, - { 11, "roadSideSource" }, - { 12, "police" }, - { 13, "fire" }, - { 14, "ambulance" }, - { 15, "dot" }, - { 16, "transit" }, - { 17, "slowMoving" }, - { 18, "stopNgo" }, - { 19, "cyclist" }, - { 20, "pedestrian" }, - { 21, "nonMotorized" }, - { 22, "military" }, - { 0, NULL } -}; - - -static int -dissect_dsrc_BasicVehicleRole(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, - 23, NULL, TRUE, 0, NULL); - - return offset; -} - - -static const value_string dsrc_RequestSubRole_vals[] = { - { 0, "requestSubRoleUnKnown" }, - { 1, "requestSubRole1" }, - { 2, "requestSubRole2" }, - { 3, "requestSubRole3" }, - { 4, "requestSubRole4" }, - { 5, "requestSubRole5" }, - { 6, "requestSubRole6" }, - { 7, "requestSubRole7" }, - { 8, "requestSubRole8" }, - { 9, "requestSubRole9" }, - { 10, "requestSubRole10" }, - { 11, "requestSubRole11" }, - { 12, "requestSubRole12" }, - { 13, "requestSubRole13" }, - { 14, "requestSubRole14" }, - { 15, "requestSubRoleReserved" }, - { 0, NULL } -}; - - -static int -dissect_dsrc_RequestSubRole(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 dsrc_RequestImportanceLevel_vals[] = { - { 0, "requestImportanceLevelUnKnown" }, - { 1, "requestImportanceLevel1" }, - { 2, "requestImportanceLevel2" }, - { 3, "requestImportanceLevel3" }, - { 4, "requestImportanceLevel4" }, - { 5, "requestImportanceLevel5" }, - { 6, "requestImportanceLevel6" }, - { 7, "requestImportanceLevel7" }, - { 8, "requestImportanceLevel8" }, - { 9, "requestImportanceLevel9" }, - { 10, "requestImportanceLevel10" }, - { 11, "requestImportanceLevel11" }, - { 12, "requestImportanceLevel12" }, - { 13, "requestImportanceLevel13" }, - { 14, "requestImportanceLevel14" }, - { 15, "requestImportanceReserved" }, - { 0, NULL } -}; - - -static int -dissect_dsrc_RequestImportanceLevel(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 dsrc_VehicleType_vals[] = { - { 0, "none" }, - { 1, "unknown" }, - { 2, "special" }, - { 3, "moto" }, - { 4, "car" }, - { 5, "carOther" }, - { 6, "bus" }, - { 7, "axleCnt2" }, - { 8, "axleCnt3" }, - { 9, "axleCnt4" }, - { 10, "axleCnt4Trailer" }, - { 11, "axleCnt5Trailer" }, - { 12, "axleCnt6Trailer" }, - { 13, "axleCnt5MultiTrailer" }, - { 14, "axleCnt6MultiTrailer" }, - { 15, "axleCnt7MultiTrailer" }, - { 0, NULL } -}; - - -static int -dissect_dsrc_VehicleType(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, TRUE, 0, NULL); + 0U, 65535U, NULL, FALSE); return offset; } -static const per_sequence_t dsrc_RequestorType_sequence[] = { - { &hf_dsrc_role , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_BasicVehicleRole }, - { &hf_dsrc_subrole , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RequestSubRole }, - { &hf_dsrc_rtRequest , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RequestImportanceLevel }, - { &hf_dsrc_iso3883 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_erivdm_Iso3833VehicleType }, - { &hf_dsrc_hpmsType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_VehicleType }, - { &hf_dsrc_rtRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RegionalExtension }, +static const per_sequence_t dsrc_IntersectionReferenceID_sequence[] = { + { &hf_dsrc_region , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_RoadRegulatorID }, + { &hf_dsrc_irId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionID }, { NULL, 0, 0, NULL } }; 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 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; - +dissect_dsrc_IntersectionReferenceID(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_dsrc_RequestorType, dsrc_RequestorType_sequence); - -#line 531 "./asn1/its/its.cnf" - ((its_private_data_t*)actx->private_data)->type = save; + ett_dsrc_IntersectionReferenceID, dsrc_IntersectionReferenceID_sequence); return offset; } @@ -10121,453 +9379,27 @@ dissect_dsrc_T_Position3DRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static const per_sequence_t dsrc_Position3D_sequence[] = { { &hf_dsrc_lat , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Latitude }, { &hf_dsrc_long , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Longitude }, - { &hf_dsrc_elevation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_Elevation }, + { &hf_dsrc_p3dElevation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_Elevation }, { &hf_dsrc_p3dRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_Position3DRegional }, { NULL, 0, 0, NULL } }; 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 509 "./asn1/its/its.cnf" +#line 550 "./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 513 "./asn1/its/its.cnf" - ((its_private_data_t*)actx->private_data)->type = save; - - return offset; -} - - - -static int -dissect_dsrc_Angle(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, 28800U, NULL, FALSE); - - return offset; -} - - -static const value_string dsrc_TransmissionState_vals[] = { - { 0, "neutral" }, - { 1, "park" }, - { 2, "forwardGears" }, - { 3, "reverseGears" }, - { 4, "reserved1" }, - { 5, "reserved2" }, - { 6, "reserved3" }, - { 7, "unavailable" }, - { 0, NULL } -}; - - -static int -dissect_dsrc_TransmissionState(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 int -dissect_dsrc_Velocity(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, 8191U, NULL, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_TransmissionAndSpeed_sequence[] = { - { &hf_dsrc_transmisson , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_TransmissionState }, - { &hf_dsrc_tasSpeed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Velocity }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_dsrc_TransmissionAndSpeed(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_dsrc_TransmissionAndSpeed, dsrc_TransmissionAndSpeed_sequence); - - return offset; -} - - -static const per_sequence_t dsrc_RequestorPositionVector_sequence[] = { - { &hf_dsrc_rpvPosition , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_Position3D }, - { &hf_dsrc_heading , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_Angle }, - { &hf_dsrc_rpvSpeed , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TransmissionAndSpeed }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_dsrc_RequestorPositionVector(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_dsrc_RequestorPositionVector, dsrc_RequestorPositionVector_sequence); - - return offset; -} - - -static const int * dsrc_TransitVehicleStatus_bits[] = { - &hf_dsrc_TransitVehicleStatus_loading, - &hf_dsrc_TransitVehicleStatus_anADAuse, - &hf_dsrc_TransitVehicleStatus_aBikeLoad, - &hf_dsrc_TransitVehicleStatus_doorOpen, - &hf_dsrc_TransitVehicleStatus_charging, - &hf_dsrc_TransitVehicleStatus_atStopLine, - NULL -}; - -static int -dissect_dsrc_TransitVehicleStatus(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, dsrc_TransitVehicleStatus_bits, 6, NULL, NULL); - - return offset; -} - - -static const value_string dsrc_TransitVehicleOccupancy_vals[] = { - { 0, "occupancyUnknown" }, - { 1, "occupancyEmpty" }, - { 2, "occupancyVeryLow" }, - { 3, "occupancyLow" }, - { 4, "occupancyMed" }, - { 5, "occupancyHigh" }, - { 6, "occupancyNearlyFull" }, - { 7, "occupancyFull" }, - { 0, NULL } -}; - - -static int -dissect_dsrc_TransitVehicleOccupancy(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 int -dissect_dsrc_DeltaTime(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, - -122, 121U, NULL, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_T_RequestorDescriptionRegional_sequence_of[1] = { - { &hf_dsrc_rdRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, -}; - -static int -dissect_dsrc_T_RequestorDescriptionRegional(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_dsrc_T_RequestorDescriptionRegional, dsrc_T_RequestorDescriptionRegional_sequence_of, - 1, 4, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_RequestorDescription_sequence[] = { - { &hf_dsrc_rdId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_VehicleID }, - { &hf_dsrc_rdType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RequestorType }, - { &hf_dsrc_rdPosition , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RequestorPositionVector }, - { &hf_dsrc_name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName }, - { &hf_dsrc_routeName , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName }, - { &hf_dsrc_transitStatus , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TransitVehicleStatus }, - { &hf_dsrc_transitOccupancy, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TransitVehicleOccupancy }, - { &hf_dsrc_transitSchedule, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DeltaTime }, - { &hf_dsrc_rdRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_RequestorDescriptionRegional }, - { NULL, 0, 0, NULL } -}; - -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 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 522 "./asn1/its/its.cnf" - ((its_private_data_t*)actx->private_data)->type = save; - - return offset; -} - - -static const per_sequence_t dsrc_T_SRMRegional_sequence_of[1] = { - { &hf_dsrc_srmRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, -}; - -static int -dissect_dsrc_T_SRMRegional(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_dsrc_T_SRMRegional, dsrc_T_SRMRegional_sequence_of, - 1, 4, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_SignalRequestMessage_sequence[] = { - { &hf_dsrc_srmTimeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear }, - { &hf_dsrc_second , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_DSecond }, - { &hf_dsrc_sequenceNumber , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MsgCount }, - { &hf_dsrc_requests , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SignalRequestList }, - { &hf_dsrc_requestor , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RequestorDescription }, - { &hf_dsrc_srmRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SRMRegional }, - { NULL, 0, 0, NULL } -}; - -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 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"); - col_set_str(actx->pinfo->cinfo, COL_INFO, "SREM"); - regext->type = Reg_SignalRequestMessage; - - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_dsrc_SignalRequestMessage, dsrc_SignalRequestMessage_sequence); - - return offset; -} - - -static const per_sequence_t dsrc_SignalRequesterInfo_sequence[] = { - { &hf_dsrc_sriId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_VehicleID }, - { &hf_dsrc_sriRequest , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RequestID }, - { &hf_dsrc_sequenceNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MsgCount }, - { &hf_dsrc_role , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_BasicVehicleRole }, - { &hf_dsrc_typeData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RequestorType }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_dsrc_SignalRequesterInfo(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_dsrc_SignalRequesterInfo, dsrc_SignalRequesterInfo_sequence); - - return offset; -} - - -static const value_string dsrc_PrioritizationResponseStatus_vals[] = { - { 0, "unknown" }, - { 1, "requested" }, - { 2, "processing" }, - { 3, "watchOtherTraffic" }, - { 4, "granted" }, - { 5, "rejected" }, - { 6, "maxPresence" }, - { 7, "reserviceLocked" }, - { 0, NULL } -}; - - -static int -dissect_dsrc_PrioritizationResponseStatus(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, TRUE, 0, NULL); - - return offset; -} - - -static const per_sequence_t dsrc_T_SignalStatusPackageRegional_sequence_of[1] = { - { &hf_dsrc_sspRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, -}; - -static int -dissect_dsrc_T_SignalStatusPackageRegional(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_dsrc_T_SignalStatusPackageRegional, dsrc_T_SignalStatusPackageRegional_sequence_of, - 1, 4, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_SignalStatusPackage_sequence[] = { - { &hf_dsrc_requester , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SignalRequesterInfo }, - { &hf_dsrc_inboundOn , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionAccessPoint }, - { &hf_dsrc_outboundOn , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_IntersectionAccessPoint }, - { &hf_dsrc_minute , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear }, - { &hf_dsrc_second , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DSecond }, - { &hf_dsrc_duration , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DSecond }, - { &hf_dsrc_sspStatus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_PrioritizationResponseStatus }, - { &hf_dsrc_sspRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SignalStatusPackageRegional }, - { NULL, 0, 0, NULL } -}; - -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 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 576 "./asn1/its/its.cnf" - ((its_private_data_t*)actx->private_data)->type = save; - - return offset; -} - - -static const per_sequence_t dsrc_SignalStatusPackageList_sequence_of[1] = { - { &hf_dsrc_SignalStatusPackageList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalStatusPackage }, -}; - -static int -dissect_dsrc_SignalStatusPackageList(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_dsrc_SignalStatusPackageList, dsrc_SignalStatusPackageList_sequence_of, - 1, 32, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_T_SignalStatusRegional_sequence_of[1] = { - { &hf_dsrc_ssRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, -}; - -static int -dissect_dsrc_T_SignalStatusRegional(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_dsrc_T_SignalStatusRegional, dsrc_T_SignalStatusRegional_sequence_of, - 1, 4, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_SignalStatus_sequence[] = { - { &hf_dsrc_sequenceNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MsgCount }, - { &hf_dsrc_ssId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionReferenceID }, - { &hf_dsrc_sigStatus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalStatusPackageList }, - { &hf_dsrc_ssRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SignalStatusRegional }, - { NULL, 0, 0, NULL } -}; - -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 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 585 "./asn1/its/its.cnf" +#line 554 "./asn1/its/its.cnf" ((its_private_data_t*)actx->private_data)->type = save; return offset; } -static const per_sequence_t dsrc_SignalStatusList_sequence_of[1] = { - { &hf_dsrc_SignalStatusList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalStatus }, -}; - -static int -dissect_dsrc_SignalStatusList(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_dsrc_SignalStatusList, dsrc_SignalStatusList_sequence_of, - 1, 32, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_T_SSMRegional_sequence_of[1] = { - { &hf_dsrc_ssmRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, -}; - -static int -dissect_dsrc_T_SSMRegional(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_dsrc_T_SSMRegional, dsrc_T_SSMRegional_sequence_of, - 1, 4, FALSE); - - return offset; -} - - -static const per_sequence_t dsrc_SignalStatusMessage_sequence[] = { - { &hf_dsrc_ssmTimeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear }, - { &hf_dsrc_second , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_DSecond }, - { &hf_dsrc_sequenceNumber , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MsgCount }, - { &hf_dsrc_ssmStatus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalStatusList }, - { &hf_dsrc_ssmRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SSMRegional }, - { NULL, 0, 0, NULL } -}; - -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 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"); - col_set_str(actx->pinfo->cinfo, COL_INFO, "SSEM"); - regext->type = Reg_SignalStatusMessage; - - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_dsrc_SignalStatusMessage, dsrc_SignalStatusMessage_sequence); - - return offset; -} - - -static const value_string dsrc_LayerType_vals[] = { - { 0, "none" }, - { 1, "mixedContent" }, - { 2, "generalMapData" }, - { 3, "intersectionData" }, - { 4, "curveData" }, - { 5, "roadwaySectionData" }, - { 6, "parkingAreaData" }, - { 7, "sharedLaneData" }, - { 0, NULL } -}; - - -static int -dissect_dsrc_LayerType(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, TRUE, 0, NULL); - - return offset; -} - - - -static int -dissect_dsrc_LayerID(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, 100U, NULL, FALSE); - - return offset; -} - - static int dissect_dsrc_LaneWidth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -10605,6 +9437,16 @@ dissect_dsrc_SpeedLimitType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx } + +static int +dissect_dsrc_Velocity(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, 8191U, NULL, FALSE); + + return offset; +} + + static const per_sequence_t dsrc_RegulatorySpeedLimit_sequence[] = { { &hf_dsrc_rslType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SpeedLimitType }, { &hf_dsrc_rslSpeed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Velocity }, @@ -10634,6 +9476,26 @@ dissect_dsrc_SpeedLimitList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx } + +static int +dissect_dsrc_LaneID(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_dsrc_ApproachID(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, 15U, NULL, FALSE); + + return offset; +} + + static const int * dsrc_LaneDirection_bits[] = { &hf_dsrc_LaneDirection_ingressPath, &hf_dsrc_LaneDirection_egressPath, @@ -10876,14 +9738,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 455 "./asn1/its/its.cnf" +#line 496 "./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 459 "./asn1/its/its.cnf" +#line 500 "./asn1/its/its.cnf" ((its_private_data_t*)actx->private_data)->type = save; return offset; @@ -11106,7 +9968,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 500 "./asn1/its/its.cnf" +#line 541 "./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; @@ -11114,7 +9976,7 @@ dissect_dsrc_NodeOffsetPointXY(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac ett_dsrc_NodeOffsetPointXY, dsrc_NodeOffsetPointXY_choice, NULL); -#line 504 "./asn1/its/its.cnf" +#line 545 "./asn1/its/its.cnf" ((its_private_data_t*)actx->private_data)->type = save; return offset; @@ -11295,7 +10157,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 464 "./asn1/its/its.cnf" +#line 505 "./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; @@ -11303,7 +10165,7 @@ dissect_dsrc_LaneDataAttribute(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac ett_dsrc_LaneDataAttribute, dsrc_LaneDataAttribute_choice, NULL); -#line 468 "./asn1/its/its.cnf" +#line 509 "./asn1/its/its.cnf" ((its_private_data_t*)actx->private_data)->type = save; return offset; @@ -11351,14 +10213,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 491 "./asn1/its/its.cnf" +#line 532 "./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 495 "./asn1/its/its.cnf" +#line 536 "./asn1/its/its.cnf" ((its_private_data_t*)actx->private_data)->type = save; return offset; @@ -11460,6 +10322,16 @@ dissect_dsrc_T_offsetYaxis(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ static int +dissect_dsrc_Angle(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, 28800U, NULL, FALSE); + + return offset; +} + + + +static int dissect_dsrc_Scale_B12(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, -2048, 2047U, NULL, FALSE); @@ -11495,14 +10367,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 410 "./asn1/its/its.cnf" +#line 451 "./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 414 "./asn1/its/its.cnf" +#line 455 "./asn1/its/its.cnf" ((its_private_data_t*)actx->private_data)->type = save; return offset; @@ -11546,6 +10418,36 @@ dissect_dsrc_ConnectingLane(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx } + +static int +dissect_dsrc_SignalGroupID(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_dsrc_RestrictionClassID(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_dsrc_LaneConnectionID(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 dsrc_Connection_sequence[] = { { &hf_dsrc_connectingLane , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_ConnectingLane }, { &hf_dsrc_remoteIntersection, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_IntersectionReferenceID }, @@ -11622,14 +10524,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 428 "./asn1/its/its.cnf" +#line 469 "./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 432 "./asn1/its/its.cnf" +#line 473 "./asn1/its/its.cnf" ((its_private_data_t*)actx->private_data)->type = save; return offset; @@ -11657,14 +10559,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 590 "./asn1/its/its.cnf" +#line 631 "./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 594 "./asn1/its/its.cnf" +#line 635 "./asn1/its/its.cnf" ((its_private_data_t*)actx->private_data)->type = save; return offset; @@ -11714,14 +10616,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 437 "./asn1/its/its.cnf" +#line 478 "./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 441 "./asn1/its/its.cnf" +#line 482 "./asn1/its/its.cnf" ((its_private_data_t*)actx->private_data)->type = save; return offset; @@ -11809,14 +10711,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 545 "./asn1/its/its.cnf" +#line 586 "./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 549 "./asn1/its/its.cnf" +#line 590 "./asn1/its/its.cnf" ((its_private_data_t*)actx->private_data)->type = save; return offset; @@ -11920,7 +10822,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 536 "./asn1/its/its.cnf" +#line 577 "./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; @@ -11928,7 +10830,7 @@ dissect_dsrc_RestrictionUserType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * ett_dsrc_RestrictionUserType, dsrc_RestrictionUserType_choice, NULL); -#line 540 "./asn1/its/its.cnf" +#line 581 "./asn1/its/its.cnf" ((its_private_data_t*)actx->private_data)->type = save; return offset; @@ -12007,7 +10909,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 344 "./asn1/its/its.cnf" +#line 361 "./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"); @@ -12020,37 +10922,1773 @@ dissect_dsrc_MapData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr return offset; } + +static const value_string dsrc_RTCM_Revision_vals[] = { + { 0, "unknown" }, + { 1, "rtcmRev2" }, + { 2, "rtcmRev3" }, + { 3, "reserved" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_RTCM_Revision(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 int +dissect_dsrc_DYear(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 int +dissect_dsrc_DMonth(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, 12U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_dsrc_DDay(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, 31U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_dsrc_DHour(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, 31U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_dsrc_DMinute(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, 60U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_dsrc_DSecond(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 int +dissect_dsrc_DOffset(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, + -840, 840U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_DDateTime_sequence[] = { + { &hf_dsrc_year , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_DYear }, + { &hf_dsrc_month , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_DMonth }, + { &hf_dsrc_day , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_DDay }, + { &hf_dsrc_hour , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_DHour }, + { &hf_dsrc_minute , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_DMinute }, + { &hf_dsrc_second , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_DSecond }, + { &hf_dsrc_offset , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_DOffset }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_dsrc_DDateTime(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_dsrc_DDateTime, dsrc_DDateTime_sequence); + + return offset; +} + + + +static int +dissect_dsrc_HeadingDSRC(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, 28800U, NULL, FALSE); + + return offset; +} + + +static const value_string dsrc_TransmissionState_vals[] = { + { 0, "neutral" }, + { 1, "park" }, + { 2, "forwardGears" }, + { 3, "reverseGears" }, + { 4, "reserved1" }, + { 5, "reserved2" }, + { 6, "reserved3" }, + { 7, "unavailable" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_TransmissionState(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 dsrc_TransmissionAndSpeed_sequence[] = { + { &hf_dsrc_transmisson , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_TransmissionState }, + { &hf_dsrc_tasSpeed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Velocity }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_dsrc_TransmissionAndSpeed(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_dsrc_TransmissionAndSpeed, dsrc_TransmissionAndSpeed_sequence); + + return offset; +} + + + +static int +dissect_dsrc_SemiMajorAxisAccuracy(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_dsrc_SemiMinorAxisAccuracy(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_dsrc_SemiMajorAxisOrientation(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 dsrc_PositionalAccuracy_sequence[] = { + { &hf_dsrc_semiMajor , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SemiMajorAxisAccuracy }, + { &hf_dsrc_semiMinor , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SemiMinorAxisAccuracy }, + { &hf_dsrc_orientation , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SemiMajorAxisOrientation }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_dsrc_PositionalAccuracy(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_dsrc_PositionalAccuracy, dsrc_PositionalAccuracy_sequence); + + return offset; +} + + +static const value_string dsrc_TimeConfidence_vals[] = { + { 0, "unavailable" }, + { 1, "time-100-000" }, + { 2, "time-050-000" }, + { 3, "time-020-000" }, + { 4, "time-010-000" }, + { 5, "time-002-000" }, + { 6, "time-001-000" }, + { 7, "time-000-500" }, + { 8, "time-000-200" }, + { 9, "time-000-100" }, + { 10, "time-000-050" }, + { 11, "time-000-020" }, + { 12, "time-000-010" }, + { 13, "time-000-005" }, + { 14, "time-000-002" }, + { 15, "time-000-001" }, + { 16, "time-000-000-5" }, + { 17, "time-000-000-2" }, + { 18, "time-000-000-1" }, + { 19, "time-000-000-05" }, + { 20, "time-000-000-02" }, + { 21, "time-000-000-01" }, + { 22, "time-000-000-005" }, + { 23, "time-000-000-002" }, + { 24, "time-000-000-001" }, + { 25, "time-000-000-000-5" }, + { 26, "time-000-000-000-2" }, + { 27, "time-000-000-000-1" }, + { 28, "time-000-000-000-05" }, + { 29, "time-000-000-000-02" }, + { 30, "time-000-000-000-01" }, + { 31, "time-000-000-000-005" }, + { 32, "time-000-000-000-002" }, + { 33, "time-000-000-000-001" }, + { 34, "time-000-000-000-000-5" }, + { 35, "time-000-000-000-000-2" }, + { 36, "time-000-000-000-000-1" }, + { 37, "time-000-000-000-000-05" }, + { 38, "time-000-000-000-000-02" }, + { 39, "time-000-000-000-000-01" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_TimeConfidence(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, + 40, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const value_string dsrc_PositionConfidence_vals[] = { + { 0, "unavailable" }, + { 1, "a500m" }, + { 2, "a200m" }, + { 3, "a100m" }, + { 4, "a50m" }, + { 5, "a20m" }, + { 6, "a10m" }, + { 7, "a5m" }, + { 8, "a2m" }, + { 9, "a1m" }, + { 10, "a50cm" }, + { 11, "a20cm" }, + { 12, "a10cm" }, + { 13, "a5cm" }, + { 14, "a2cm" }, + { 15, "a1cm" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_PositionConfidence(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 dsrc_ElevationConfidence_vals[] = { + { 0, "unavailable" }, + { 1, "elev-500-00" }, + { 2, "elev-200-00" }, + { 3, "elev-100-00" }, + { 4, "elev-050-00" }, + { 5, "elev-020-00" }, + { 6, "elev-010-00" }, + { 7, "elev-005-00" }, + { 8, "elev-002-00" }, + { 9, "elev-001-00" }, + { 10, "elev-000-50" }, + { 11, "elev-000-20" }, + { 12, "elev-000-10" }, + { 13, "elev-000-05" }, + { 14, "elev-000-02" }, + { 15, "elev-000-01" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_ElevationConfidence(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 dsrc_PositionConfidenceSet_sequence[] = { + { &hf_dsrc_pos , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_PositionConfidence }, + { &hf_dsrc_pcsElevation , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_ElevationConfidence }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_dsrc_PositionConfidenceSet(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_dsrc_PositionConfidenceSet, dsrc_PositionConfidenceSet_sequence); + + return offset; +} + + +static const value_string dsrc_HeadingConfidenceDSRC_vals[] = { + { 0, "unavailable" }, + { 1, "prec10deg" }, + { 2, "prec05deg" }, + { 3, "prec01deg" }, + { 4, "prec0-1deg" }, + { 5, "prec0-05deg" }, + { 6, "prec0-01deg" }, + { 7, "prec0-0125deg" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_HeadingConfidenceDSRC(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 dsrc_SpeedConfidenceDSRC_vals[] = { + { 0, "unavailable" }, + { 1, "prec100ms" }, + { 2, "prec10ms" }, + { 3, "prec5ms" }, + { 4, "prec1ms" }, + { 5, "prec0-1ms" }, + { 6, "prec0-05ms" }, + { 7, "prec0-01ms" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_SpeedConfidenceDSRC(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 dsrc_ThrottleConfidence_vals[] = { + { 0, "unavailable" }, + { 1, "prec10percent" }, + { 2, "prec1percent" }, + { 3, "prec0-5percent" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_ThrottleConfidence(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 per_sequence_t dsrc_SpeedandHeadingandThrottleConfidence_sequence[] = { + { &hf_dsrc_shtcheading , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_HeadingConfidenceDSRC }, + { &hf_dsrc_shtcSpeed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SpeedConfidenceDSRC }, + { &hf_dsrc_throttle , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_ThrottleConfidence }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_dsrc_SpeedandHeadingandThrottleConfidence(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_dsrc_SpeedandHeadingandThrottleConfidence, dsrc_SpeedandHeadingandThrottleConfidence_sequence); + + return offset; +} + + +static const per_sequence_t dsrc_FullPositionVector_sequence[] = { + { &hf_dsrc_utcTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DDateTime }, + { &hf_dsrc_long , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Longitude }, + { &hf_dsrc_lat , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Latitude }, + { &hf_dsrc_fpvElevation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_Elevation }, + { &hf_dsrc_fpvHeading , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_HeadingDSRC }, + { &hf_dsrc_fpvSpeed , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TransmissionAndSpeed }, + { &hf_dsrc_posAccuracy , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_PositionalAccuracy }, + { &hf_dsrc_timeConfidence , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TimeConfidence }, + { &hf_dsrc_posConfidence , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_PositionConfidenceSet }, + { &hf_dsrc_speedConfidence, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SpeedandHeadingandThrottleConfidence }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_dsrc_FullPositionVector(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_dsrc_FullPositionVector, dsrc_FullPositionVector_sequence); + + return offset; +} + + +static const int * dsrc_GNSSstatus_bits[] = { + &hf_dsrc_GNSSstatus_unavailable, + &hf_dsrc_GNSSstatus_isHealthy, + &hf_dsrc_GNSSstatus_isMonitored, + &hf_dsrc_GNSSstatus_baseStationType, + &hf_dsrc_GNSSstatus_aPDOPofUnder5, + &hf_dsrc_GNSSstatus_inViewOfUnder5, + &hf_dsrc_GNSSstatus_localCorrectionsPresent, + &hf_dsrc_GNSSstatus_networkCorrectionsPresent, + NULL +}; + +static int +dissect_dsrc_GNSSstatus(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, dsrc_GNSSstatus_bits, 8, NULL, NULL); + + return offset; +} + + + +static int +dissect_dsrc_Offset_B09(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, + -256, 255U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_AntennaOffsetSet_sequence[] = { + { &hf_dsrc_antOffsetX , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B12 }, + { &hf_dsrc_antOffsetY , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B09 }, + { &hf_dsrc_antOffsetZ , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B10 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_dsrc_AntennaOffsetSet(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_dsrc_AntennaOffsetSet, dsrc_AntennaOffsetSet_sequence); + + return offset; +} + + +static const per_sequence_t dsrc_RTCMheader_sequence[] = { + { &hf_dsrc_status , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_GNSSstatus }, + { &hf_dsrc_offsetSet , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_AntennaOffsetSet }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_dsrc_RTCMheader(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_dsrc_RTCMheader, dsrc_RTCMheader_sequence); + + return offset; +} + + + +static int +dissect_dsrc_RTCMmessage(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, 1023, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t dsrc_RTCMmessageList_sequence_of[1] = { + { &hf_dsrc_RTCMmessageList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RTCMmessage }, +}; + +static int +dissect_dsrc_RTCMmessageList(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_dsrc_RTCMmessageList, dsrc_RTCMmessageList_sequence_of, + 1, 5, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_SEQUENCE_SIZE_1_4_OF_RegionalExtension_sequence_of[1] = { + { &hf_dsrc_regional_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, +}; + +static int +dissect_dsrc_SEQUENCE_SIZE_1_4_OF_RegionalExtension(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_dsrc_SEQUENCE_SIZE_1_4_OF_RegionalExtension, dsrc_SEQUENCE_SIZE_1_4_OF_RegionalExtension_sequence_of, + 1, 4, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_RTCMcorrections_sequence[] = { + { &hf_dsrc_msgCnt , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MsgCount }, + { &hf_dsrc_rev , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RTCM_Revision }, + { &hf_dsrc_timeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear }, + { &hf_dsrc_anchorPoint , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_FullPositionVector }, + { &hf_dsrc_rtcmHeader , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RTCMheader }, + { &hf_dsrc_msgs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RTCMmessageList }, + { &hf_dsrc_regional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SEQUENCE_SIZE_1_4_OF_RegionalExtension }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_dsrc_RTCMcorrections(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 378 "./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, "RTCMEM"); + col_set_str(actx->pinfo->cinfo, COL_INFO, "RTCMEM"); + regext->type = Reg_RTCMcorrections; + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_dsrc_RTCMcorrections, dsrc_RTCMcorrections_sequence); + + return offset; +} + + +static const int * dsrc_IntersectionStatusObject_bits[] = { + &hf_dsrc_IntersectionStatusObject_manualControlIsEnabled, + &hf_dsrc_IntersectionStatusObject_stopTimeIsActivated, + &hf_dsrc_IntersectionStatusObject_failureFlash, + &hf_dsrc_IntersectionStatusObject_preemptIsActive, + &hf_dsrc_IntersectionStatusObject_signalPriorityIsActive, + &hf_dsrc_IntersectionStatusObject_fixedTimeOperation, + &hf_dsrc_IntersectionStatusObject_trafficDependentOperation, + &hf_dsrc_IntersectionStatusObject_standbyOperation, + &hf_dsrc_IntersectionStatusObject_failureMode, + &hf_dsrc_IntersectionStatusObject_off, + &hf_dsrc_IntersectionStatusObject_recentMAPmessageUpdate, + &hf_dsrc_IntersectionStatusObject_recentChangeInMAPassignedLanesIDsUsed, + &hf_dsrc_IntersectionStatusObject_noValidMAPisAvailableAtThisTime, + &hf_dsrc_IntersectionStatusObject_noValidSPATisAvailableAtThisTime, + NULL +}; + +static int +dissect_dsrc_IntersectionStatusObject(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, + 16, 16, FALSE, dsrc_IntersectionStatusObject_bits, 14, NULL, NULL); + + return offset; +} + + +static const per_sequence_t dsrc_EnabledLaneList_sequence_of[1] = { + { &hf_dsrc_EnabledLaneList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneID }, +}; + +static int +dissect_dsrc_EnabledLaneList(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_dsrc_EnabledLaneList, dsrc_EnabledLaneList_sequence_of, + 1, 16, FALSE); + + return offset; +} + + +static const value_string dsrc_MovementPhaseState_vals[] = { + { 0, "unavailable" }, + { 1, "dark" }, + { 2, "stop-Then-Proceed" }, + { 3, "stop-And-Remain" }, + { 4, "pre-Movement" }, + { 5, "permissive-Movement-Allowed" }, + { 6, "protected-Movement-Allowed" }, + { 7, "permissive-clearance" }, + { 8, "protected-clearance" }, + { 9, "caution-Conflicting-Traffic" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_MovementPhaseState(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, + 10, NULL, FALSE, 0, NULL); + + return offset; +} + + + +static int +dissect_dsrc_TimeMark(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, 36001U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_dsrc_TimeIntervalConfidence(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, 15U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_TimeChangeDetails_sequence[] = { + { &hf_dsrc_startTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_TimeMark }, + { &hf_dsrc_minEndTime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_TimeMark }, + { &hf_dsrc_maxEndTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_TimeMark }, + { &hf_dsrc_likelyTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_TimeMark }, + { &hf_dsrc_tcdConfidence , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_TimeIntervalConfidence }, + { &hf_dsrc_nextTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_TimeMark }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_dsrc_TimeChangeDetails(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_dsrc_TimeChangeDetails, dsrc_TimeChangeDetails_sequence); + + return offset; +} + + +static const value_string dsrc_AdvisorySpeedType_vals[] = { + { 0, "none" }, + { 1, "greenwave" }, + { 2, "ecoDrive" }, + { 3, "transit" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_AdvisorySpeedType(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 int +dissect_dsrc_SpeedAdvice(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, 500U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_dsrc_ZoneLength(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, 10000U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_T_AdvisorySpeedRegional_sequence_of[1] = { + { &hf_dsrc_asRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, +}; + +static int +dissect_dsrc_T_AdvisorySpeedRegional(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_dsrc_T_AdvisorySpeedRegional, dsrc_T_AdvisorySpeedRegional_sequence_of, + 1, 4, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_AdvisorySpeed_sequence[] = { + { &hf_dsrc_asType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_AdvisorySpeedType }, + { &hf_dsrc_asSpeed , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SpeedAdvice }, + { &hf_dsrc_asConfidence , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SpeedConfidenceDSRC }, + { &hf_dsrc_distance , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ZoneLength }, + { &hf_dsrc_class , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RestrictionClassID }, + { &hf_dsrc_asRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_AdvisorySpeedRegional }, + { NULL, 0, 0, NULL } +}; + +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 442 "./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 446 "./asn1/its/its.cnf" + ((its_private_data_t*)actx->private_data)->type = save; + + return offset; +} + + +static const per_sequence_t dsrc_AdvisorySpeedList_sequence_of[1] = { + { &hf_dsrc_AdvisorySpeedList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_AdvisorySpeed }, +}; + +static int +dissect_dsrc_AdvisorySpeedList(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_dsrc_AdvisorySpeedList, dsrc_AdvisorySpeedList_sequence_of, + 1, 16, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_T_MovementEventRegional_sequence_of[1] = { + { &hf_dsrc_meRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, +}; + +static int +dissect_dsrc_T_MovementEventRegional(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_dsrc_T_MovementEventRegional, dsrc_T_MovementEventRegional_sequence_of, + 1, 4, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_MovementEvent_sequence[] = { + { &hf_dsrc_eventState , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MovementPhaseState }, + { &hf_dsrc_timing , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TimeChangeDetails }, + { &hf_dsrc_speeds , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_AdvisorySpeedList }, + { &hf_dsrc_meRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_MovementEventRegional }, + { NULL, 0, 0, NULL } +}; + +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 514 "./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 518 "./asn1/its/its.cnf" + ((its_private_data_t*)actx->private_data)->type = save; + + return offset; +} + + +static const per_sequence_t dsrc_MovementEventList_sequence_of[1] = { + { &hf_dsrc_MovementEventList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_MovementEvent }, +}; + +static int +dissect_dsrc_MovementEventList(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_dsrc_MovementEventList, dsrc_MovementEventList_sequence_of, + 1, 16, FALSE); + + return offset; +} + + + +static int +dissect_dsrc_WaitOnStopline(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_dsrc_PedestrianBicycleDetect(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 per_sequence_t dsrc_T_ConnectionManeuverAssistRegional_sequence_of[1] = { + { &hf_dsrc_cmaRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, +}; + +static int +dissect_dsrc_T_ConnectionManeuverAssistRegional(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_dsrc_T_ConnectionManeuverAssistRegional, dsrc_T_ConnectionManeuverAssistRegional_sequence_of, + 1, 4, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_ConnectionManeuverAssist_sequence[] = { + { &hf_dsrc_connectionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneConnectionID }, + { &hf_dsrc_queueLength , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ZoneLength }, + { &hf_dsrc_availableStorageLength, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ZoneLength }, + { &hf_dsrc_waitOnStop , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_WaitOnStopline }, + { &hf_dsrc_pedBicycleDetect, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_PedestrianBicycleDetect }, + { &hf_dsrc_cmaRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_ConnectionManeuverAssistRegional }, + { NULL, 0, 0, NULL } +}; + +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 460 "./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 464 "./asn1/its/its.cnf" + ((its_private_data_t*)actx->private_data)->type = save; + + return offset; +} + + +static const per_sequence_t dsrc_ManeuverAssistList_sequence_of[1] = { + { &hf_dsrc_ManeuverAssistList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_ConnectionManeuverAssist }, +}; + +static int +dissect_dsrc_ManeuverAssistList(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_dsrc_ManeuverAssistList, dsrc_ManeuverAssistList_sequence_of, + 1, 16, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_T_MovementStateRegional_sequence_of[1] = { + { &hf_dsrc_msRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, +}; + +static int +dissect_dsrc_T_MovementStateRegional(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_dsrc_T_MovementStateRegional, dsrc_T_MovementStateRegional_sequence_of, + 1, 4, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_MovementState_sequence[] = { + { &hf_dsrc_movementName , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName }, + { &hf_dsrc_signalGroup , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalGroupID }, + { &hf_dsrc_state_time_speed, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MovementEventList }, + { &hf_dsrc_maneuverAssistList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ManeuverAssistList }, + { &hf_dsrc_msRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_MovementStateRegional }, + { NULL, 0, 0, NULL } +}; + +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 523 "./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 527 "./asn1/its/its.cnf" + ((its_private_data_t*)actx->private_data)->type = save; + + return offset; +} + + +static const per_sequence_t dsrc_MovementList_sequence_of[1] = { + { &hf_dsrc_MovementList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_MovementState }, +}; + +static int +dissect_dsrc_MovementList(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_dsrc_MovementList, dsrc_MovementList_sequence_of, + 1, 255, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_T_IntersectionStateRegional_sequence_of[1] = { + { &hf_dsrc_isRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, +}; + +static int +dissect_dsrc_T_IntersectionStateRegional(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_dsrc_T_IntersectionStateRegional, dsrc_T_IntersectionStateRegional_sequence_of, + 1, 4, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_IntersectionState_sequence[] = { + { &hf_dsrc_name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName }, + { &hf_dsrc_isId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionReferenceID }, + { &hf_dsrc_revision , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MsgCount }, + { &hf_dsrc_isStatus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionStatusObject }, + { &hf_dsrc_moy , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear }, + { &hf_dsrc_isTimeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DSecond }, + { &hf_dsrc_enabledLanes , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_EnabledLaneList }, + { &hf_dsrc_states , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MovementList }, + { &hf_dsrc_maneuverAssistList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ManeuverAssistList }, + { &hf_dsrc_isRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_IntersectionStateRegional }, + { NULL, 0, 0, NULL } +}; + +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 487 "./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 491 "./asn1/its/its.cnf" + ((its_private_data_t*)actx->private_data)->type = save; + + return offset; +} + + +static const per_sequence_t dsrc_IntersectionStateList_sequence_of[1] = { + { &hf_dsrc_IntersectionStateList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionState }, +}; + +static int +dissect_dsrc_IntersectionStateList(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_dsrc_IntersectionStateList, dsrc_IntersectionStateList_sequence_of, + 1, 32, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_T_SPATRegional_sequence_of[1] = { + { &hf_dsrc_spatRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, +}; + +static int +dissect_dsrc_T_SPATRegional(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_dsrc_T_SPATRegional, dsrc_T_SPATRegional_sequence_of, + 1, 4, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_SPAT_sequence[] = { + { &hf_dsrc_spatTimeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear }, + { &hf_dsrc_name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName }, + { &hf_dsrc_spatIntersections, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionStateList }, + { &hf_dsrc_spatRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SPATRegional }, + { NULL, 0, 0, NULL } +}; + +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 369 "./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"); + col_set_str(actx->pinfo->cinfo, COL_INFO, "SPATEM"); + regext->type = Reg_SPAT; + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_dsrc_SPAT, dsrc_SPAT_sequence); + + return offset; +} + + + +static int +dissect_dsrc_RequestID(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 dsrc_PriorityRequestType_vals[] = { + { 0, "priorityRequestTypeReserved" }, + { 1, "priorityRequest" }, + { 2, "priorityRequestUpdate" }, + { 3, "priorityCancellation" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_PriorityRequestType(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 dsrc_IntersectionAccessPoint_vals[] = { + { 0, "lane" }, + { 1, "approach" }, + { 2, "connection" }, + { 0, NULL } +}; + +static const per_choice_t dsrc_IntersectionAccessPoint_choice[] = { + { 0, &hf_dsrc_lane , ASN1_EXTENSION_ROOT , dissect_dsrc_LaneID }, + { 1, &hf_dsrc_approach , ASN1_EXTENSION_ROOT , dissect_dsrc_ApproachID }, + { 2, &hf_dsrc_connection , ASN1_EXTENSION_ROOT , dissect_dsrc_LaneConnectionID }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_dsrc_IntersectionAccessPoint(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_dsrc_IntersectionAccessPoint, dsrc_IntersectionAccessPoint_choice, + NULL); + + return offset; +} + + +static const per_sequence_t dsrc_T_SignalRequestRegional_sequence_of[1] = { + { &hf_dsrc_srRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, +}; + +static int +dissect_dsrc_T_SignalRequestRegional(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_dsrc_T_SignalRequestRegional, dsrc_T_SignalRequestRegional_sequence_of, + 1, 4, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_SignalRequest_sequence[] = { + { &hf_dsrc_srId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionReferenceID }, + { &hf_dsrc_requestID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RequestID }, + { &hf_dsrc_requestType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_PriorityRequestType }, + { &hf_dsrc_inBoundLane , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionAccessPoint }, + { &hf_dsrc_outBoundLane , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_IntersectionAccessPoint }, + { &hf_dsrc_srRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SignalRequestRegional }, + { NULL, 0, 0, NULL } +}; + +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 604 "./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 608 "./asn1/its/its.cnf" + ((its_private_data_t*)actx->private_data)->type = save; + + return offset; +} + + +static const per_sequence_t dsrc_T_SignalRequestPackageRegional_sequence_of[1] = { + { &hf_dsrc_srpRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, +}; + +static int +dissect_dsrc_T_SignalRequestPackageRegional(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_dsrc_T_SignalRequestPackageRegional, dsrc_T_SignalRequestPackageRegional_sequence_of, + 1, 4, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_SignalRequestPackage_sequence[] = { + { &hf_dsrc_srpRequest , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalRequest }, + { &hf_dsrc_srpMinute , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear }, + { &hf_dsrc_second , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DSecond }, + { &hf_dsrc_duration , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DSecond }, + { &hf_dsrc_srpRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SignalRequestPackageRegional }, + { NULL, 0, 0, NULL } +}; + +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 595 "./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 599 "./asn1/its/its.cnf" + ((its_private_data_t*)actx->private_data)->type = save; + + return offset; +} + + +static const per_sequence_t dsrc_SignalRequestList_sequence_of[1] = { + { &hf_dsrc_SignalRequestList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalRequestPackage }, +}; + +static int +dissect_dsrc_SignalRequestList(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_dsrc_SignalRequestList, dsrc_SignalRequestList_sequence_of, + 1, 32, FALSE); + + return offset; +} + + + +static int +dissect_dsrc_TemporaryID(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, + 4, 4, FALSE, NULL); + + return offset; +} + + +static const value_string dsrc_VehicleID_vals[] = { + { 0, "entityID" }, + { 1, "stationID" }, + { 0, NULL } +}; + +static const per_choice_t dsrc_VehicleID_choice[] = { + { 0, &hf_dsrc_entityID , ASN1_NO_EXTENSIONS , dissect_dsrc_TemporaryID }, + { 1, &hf_dsrc_stationID , ASN1_NO_EXTENSIONS , dissect_its_StationID }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_dsrc_VehicleID(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_dsrc_VehicleID, dsrc_VehicleID_choice, + NULL); + + return offset; +} + + +static const value_string dsrc_BasicVehicleRole_vals[] = { + { 0, "basicVehicle" }, + { 1, "publicTransport" }, + { 2, "specialTransport" }, + { 3, "dangerousGoods" }, + { 4, "roadWork" }, + { 5, "roadRescue" }, + { 6, "emergency" }, + { 7, "safetyCar" }, + { 8, "none-unknown" }, + { 9, "truck" }, + { 10, "motorcycle" }, + { 11, "roadSideSource" }, + { 12, "police" }, + { 13, "fire" }, + { 14, "ambulance" }, + { 15, "dot" }, + { 16, "transit" }, + { 17, "slowMoving" }, + { 18, "stopNgo" }, + { 19, "cyclist" }, + { 20, "pedestrian" }, + { 21, "nonMotorized" }, + { 22, "military" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_BasicVehicleRole(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, + 23, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string dsrc_RequestSubRole_vals[] = { + { 0, "requestSubRoleUnKnown" }, + { 1, "requestSubRole1" }, + { 2, "requestSubRole2" }, + { 3, "requestSubRole3" }, + { 4, "requestSubRole4" }, + { 5, "requestSubRole5" }, + { 6, "requestSubRole6" }, + { 7, "requestSubRole7" }, + { 8, "requestSubRole8" }, + { 9, "requestSubRole9" }, + { 10, "requestSubRole10" }, + { 11, "requestSubRole11" }, + { 12, "requestSubRole12" }, + { 13, "requestSubRole13" }, + { 14, "requestSubRole14" }, + { 15, "requestSubRoleReserved" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_RequestSubRole(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 dsrc_RequestImportanceLevel_vals[] = { + { 0, "requestImportanceLevelUnKnown" }, + { 1, "requestImportanceLevel1" }, + { 2, "requestImportanceLevel2" }, + { 3, "requestImportanceLevel3" }, + { 4, "requestImportanceLevel4" }, + { 5, "requestImportanceLevel5" }, + { 6, "requestImportanceLevel6" }, + { 7, "requestImportanceLevel7" }, + { 8, "requestImportanceLevel8" }, + { 9, "requestImportanceLevel9" }, + { 10, "requestImportanceLevel10" }, + { 11, "requestImportanceLevel11" }, + { 12, "requestImportanceLevel12" }, + { 13, "requestImportanceLevel13" }, + { 14, "requestImportanceLevel14" }, + { 15, "requestImportanceReserved" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_RequestImportanceLevel(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 dsrc_VehicleType_vals[] = { + { 0, "none" }, + { 1, "unknown" }, + { 2, "special" }, + { 3, "moto" }, + { 4, "car" }, + { 5, "carOther" }, + { 6, "bus" }, + { 7, "axleCnt2" }, + { 8, "axleCnt3" }, + { 9, "axleCnt4" }, + { 10, "axleCnt4Trailer" }, + { 11, "axleCnt5Trailer" }, + { 12, "axleCnt6Trailer" }, + { 13, "axleCnt5MultiTrailer" }, + { 14, "axleCnt6MultiTrailer" }, + { 15, "axleCnt7MultiTrailer" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_VehicleType(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, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t dsrc_RequestorType_sequence[] = { + { &hf_dsrc_role , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_BasicVehicleRole }, + { &hf_dsrc_subrole , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RequestSubRole }, + { &hf_dsrc_rtRequest , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RequestImportanceLevel }, + { &hf_dsrc_iso3883 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_erivdm_Iso3833VehicleType }, + { &hf_dsrc_hpmsType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_VehicleType }, + { &hf_dsrc_rtRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RegionalExtension }, + { NULL, 0, 0, NULL } +}; + +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 568 "./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 572 "./asn1/its/its.cnf" + ((its_private_data_t*)actx->private_data)->type = save; + + return offset; +} + + +static const per_sequence_t dsrc_RequestorPositionVector_sequence[] = { + { &hf_dsrc_rpvPosition , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_Position3D }, + { &hf_dsrc_rpvHeading , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_Angle }, + { &hf_dsrc_rpvSpeed , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TransmissionAndSpeed }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_dsrc_RequestorPositionVector(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_dsrc_RequestorPositionVector, dsrc_RequestorPositionVector_sequence); + + return offset; +} + + +static const int * dsrc_TransitVehicleStatus_bits[] = { + &hf_dsrc_TransitVehicleStatus_loading, + &hf_dsrc_TransitVehicleStatus_anADAuse, + &hf_dsrc_TransitVehicleStatus_aBikeLoad, + &hf_dsrc_TransitVehicleStatus_doorOpen, + &hf_dsrc_TransitVehicleStatus_charging, + &hf_dsrc_TransitVehicleStatus_atStopLine, + NULL +}; + +static int +dissect_dsrc_TransitVehicleStatus(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, dsrc_TransitVehicleStatus_bits, 6, NULL, NULL); + + return offset; +} + + +static const value_string dsrc_TransitVehicleOccupancy_vals[] = { + { 0, "occupancyUnknown" }, + { 1, "occupancyEmpty" }, + { 2, "occupancyVeryLow" }, + { 3, "occupancyLow" }, + { 4, "occupancyMed" }, + { 5, "occupancyHigh" }, + { 6, "occupancyNearlyFull" }, + { 7, "occupancyFull" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_TransitVehicleOccupancy(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 int +dissect_dsrc_DeltaTime(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, + -122, 121U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_T_RequestorDescriptionRegional_sequence_of[1] = { + { &hf_dsrc_rdRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, +}; + +static int +dissect_dsrc_T_RequestorDescriptionRegional(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_dsrc_T_RequestorDescriptionRegional, dsrc_T_RequestorDescriptionRegional_sequence_of, + 1, 4, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_RequestorDescription_sequence[] = { + { &hf_dsrc_rdId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_VehicleID }, + { &hf_dsrc_rdType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RequestorType }, + { &hf_dsrc_rdPosition , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RequestorPositionVector }, + { &hf_dsrc_name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName }, + { &hf_dsrc_routeName , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName }, + { &hf_dsrc_transitStatus , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TransitVehicleStatus }, + { &hf_dsrc_transitOccupancy, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TransitVehicleOccupancy }, + { &hf_dsrc_transitSchedule, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DeltaTime }, + { &hf_dsrc_rdRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_RequestorDescriptionRegional }, + { NULL, 0, 0, NULL } +}; + +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 559 "./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 563 "./asn1/its/its.cnf" + ((its_private_data_t*)actx->private_data)->type = save; + + return offset; +} + + +static const per_sequence_t dsrc_T_SRMRegional_sequence_of[1] = { + { &hf_dsrc_srmRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, +}; + +static int +dissect_dsrc_T_SRMRegional(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_dsrc_T_SRMRegional, dsrc_T_SRMRegional_sequence_of, + 1, 4, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_SignalRequestMessage_sequence[] = { + { &hf_dsrc_srmTimeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear }, + { &hf_dsrc_second , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_DSecond }, + { &hf_dsrc_sequenceNumber , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MsgCount }, + { &hf_dsrc_requests , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SignalRequestList }, + { &hf_dsrc_requestor , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RequestorDescription }, + { &hf_dsrc_srmRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SRMRegional }, + { NULL, 0, 0, NULL } +}; + +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 353 "./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"); + col_set_str(actx->pinfo->cinfo, COL_INFO, "SREM"); + regext->type = Reg_SignalRequestMessage; + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_dsrc_SignalRequestMessage, dsrc_SignalRequestMessage_sequence); + + return offset; +} + + +static const per_sequence_t dsrc_SignalRequesterInfo_sequence[] = { + { &hf_dsrc_sriId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_VehicleID }, + { &hf_dsrc_sriRequest , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RequestID }, + { &hf_dsrc_sequenceNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MsgCount }, + { &hf_dsrc_role , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_BasicVehicleRole }, + { &hf_dsrc_typeData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RequestorType }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_dsrc_SignalRequesterInfo(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_dsrc_SignalRequesterInfo, dsrc_SignalRequesterInfo_sequence); + + return offset; +} + + +static const value_string dsrc_PrioritizationResponseStatus_vals[] = { + { 0, "unknown" }, + { 1, "requested" }, + { 2, "processing" }, + { 3, "watchOtherTraffic" }, + { 4, "granted" }, + { 5, "rejected" }, + { 6, "maxPresence" }, + { 7, "reserviceLocked" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_PrioritizationResponseStatus(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, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t dsrc_T_SignalStatusPackageRegional_sequence_of[1] = { + { &hf_dsrc_sspRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, +}; + +static int +dissect_dsrc_T_SignalStatusPackageRegional(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_dsrc_T_SignalStatusPackageRegional, dsrc_T_SignalStatusPackageRegional_sequence_of, + 1, 4, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_SignalStatusPackage_sequence[] = { + { &hf_dsrc_requester , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SignalRequesterInfo }, + { &hf_dsrc_inboundOn , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionAccessPoint }, + { &hf_dsrc_outboundOn , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_IntersectionAccessPoint }, + { &hf_dsrc_sspMinute , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear }, + { &hf_dsrc_second , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DSecond }, + { &hf_dsrc_duration , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DSecond }, + { &hf_dsrc_sspStatus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_PrioritizationResponseStatus }, + { &hf_dsrc_sspRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SignalStatusPackageRegional }, + { NULL, 0, 0, NULL } +}; + +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 613 "./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 617 "./asn1/its/its.cnf" + ((its_private_data_t*)actx->private_data)->type = save; + + return offset; +} + + +static const per_sequence_t dsrc_SignalStatusPackageList_sequence_of[1] = { + { &hf_dsrc_SignalStatusPackageList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalStatusPackage }, +}; + +static int +dissect_dsrc_SignalStatusPackageList(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_dsrc_SignalStatusPackageList, dsrc_SignalStatusPackageList_sequence_of, + 1, 32, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_T_SignalStatusRegional_sequence_of[1] = { + { &hf_dsrc_ssRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, +}; + +static int +dissect_dsrc_T_SignalStatusRegional(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_dsrc_T_SignalStatusRegional, dsrc_T_SignalStatusRegional_sequence_of, + 1, 4, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_SignalStatus_sequence[] = { + { &hf_dsrc_sequenceNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MsgCount }, + { &hf_dsrc_ssId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionReferenceID }, + { &hf_dsrc_sigStatus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalStatusPackageList }, + { &hf_dsrc_ssRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SignalStatusRegional }, + { NULL, 0, 0, NULL } +}; + +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 622 "./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 626 "./asn1/its/its.cnf" + ((its_private_data_t*)actx->private_data)->type = save; + + return offset; +} + + +static const per_sequence_t dsrc_SignalStatusList_sequence_of[1] = { + { &hf_dsrc_SignalStatusList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalStatus }, +}; + +static int +dissect_dsrc_SignalStatusList(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_dsrc_SignalStatusList, dsrc_SignalStatusList_sequence_of, + 1, 32, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_T_SSMRegional_sequence_of[1] = { + { &hf_dsrc_ssmRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension }, +}; + +static int +dissect_dsrc_T_SSMRegional(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_dsrc_T_SSMRegional, dsrc_T_SSMRegional_sequence_of, + 1, 4, FALSE); + + return offset; +} + + +static const per_sequence_t dsrc_SignalStatusMessage_sequence[] = { + { &hf_dsrc_ssmTimeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear }, + { &hf_dsrc_second , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_DSecond }, + { &hf_dsrc_sequenceNumber , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MsgCount }, + { &hf_dsrc_ssmStatus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalStatusList }, + { &hf_dsrc_ssmRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SSMRegional }, + { NULL, 0, 0, NULL } +}; + +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 345 "./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"); + col_set_str(actx->pinfo->cinfo, COL_INFO, "SSEM"); + regext->type = Reg_SignalStatusMessage; + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_dsrc_SignalStatusMessage, dsrc_SignalStatusMessage_sequence); + + return offset; +} + + +static const value_string dsrc_FuelType_vals[] = { + { 0, "unknownFuel" }, + { 1, "gasoline" }, + { 2, "ethanol" }, + { 3, "diesel" }, + { 4, "electric" }, + { 5, "hybrid" }, + { 6, "hydrogen" }, + { 7, "natGasLiquid" }, + { 8, "natGasComp" }, + { 9, "propane" }, + { 0, NULL } +}; + + +static int +dissect_dsrc_FuelType(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, 15U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_dsrc_VehicleHeight(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; +} + /*--- PDUs ---*/ -static int dissect_dsrc_SPAT_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { +static int dissect_dsrc_MapData_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_dsrc_SPAT(tvb, offset, &asn1_ctx, tree, hf_dsrc_dsrc_SPAT_PDU); + offset = dissect_dsrc_MapData(tvb, offset, &asn1_ctx, tree, hf_dsrc_dsrc_MapData_PDU); offset += 7; offset >>= 3; return offset; } -static int dissect_dsrc_SignalRequestMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { +static int dissect_dsrc_RTCMcorrections_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_dsrc_SignalRequestMessage(tvb, offset, &asn1_ctx, tree, hf_dsrc_dsrc_SignalRequestMessage_PDU); + offset = dissect_dsrc_RTCMcorrections(tvb, offset, &asn1_ctx, tree, hf_dsrc_dsrc_RTCMcorrections_PDU); offset += 7; offset >>= 3; return offset; } -static int dissect_dsrc_SignalStatusMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { +static int dissect_dsrc_SPAT_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_dsrc_SignalStatusMessage(tvb, offset, &asn1_ctx, tree, hf_dsrc_dsrc_SignalStatusMessage_PDU); + offset = dissect_dsrc_SPAT(tvb, offset, &asn1_ctx, tree, hf_dsrc_dsrc_SPAT_PDU); offset += 7; offset >>= 3; return offset; } -static int dissect_dsrc_MapData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { +static int dissect_dsrc_SignalRequestMessage_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_dsrc_MapData(tvb, offset, &asn1_ctx, tree, hf_dsrc_dsrc_MapData_PDU); + offset = dissect_dsrc_SignalRequestMessage(tvb, offset, &asn1_ctx, tree, hf_dsrc_dsrc_SignalRequestMessage_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_dsrc_SignalStatusMessage_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_dsrc_SignalStatusMessage(tvb, offset, &asn1_ctx, tree, hf_dsrc_dsrc_SignalStatusMessage_PDU); offset += 7; offset >>= 3; return offset; } @@ -12068,7 +12706,7 @@ static const value_string AddGrpC_TimeReference_vals[] = { static int dissect_AddGrpC_TimeReference(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); + 0U, 60000U, NULL, FALSE); return offset; } @@ -12106,14 +12744,13 @@ dissect_AddGrpC_ItsStationPositionList(tvbuff_t *tvb _U_, int offset _U_, asn1_c static const per_sequence_t AddGrpC_ConnectionManeuverAssist_addGrpC_sequence[] = { - { &hf_AddGrpC_itsStationPositions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_ItsStationPositionList }, - { &hf_AddGrpC_rsuGNSSOffset, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_NodeOffsetPointXY }, + { &hf_AddGrpC_itsStationPosition, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_ItsStationPositionList }, { NULL, 0, 0, NULL } }; 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 361 "./asn1/its/its.cnf" +#line 387 "./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, @@ -12125,12 +12762,13 @@ dissect_AddGrpC_ConnectionManeuverAssist_addGrpC(tvbuff_t *tvb _U_, int offset _ static const per_sequence_t AddGrpC_ConnectionTrajectory_addGrpC_sequence[] = { { &hf_AddGrpC_nodes , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_NodeSetXY }, + { &hf_AddGrpC_connectionID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneConnectionID }, { NULL, 0, 0, NULL } }; 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 366 "./asn1/its/its.cnf" +#line 392 "./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, @@ -12140,42 +12778,6 @@ dissect_AddGrpC_ConnectionTrajectory_addGrpC(tvbuff_t *tvb _U_, int offset _U_, } -static const value_string AddGrpC_PtvRequestType_vals[] = { - { 0, "preRequest" }, - { 1, "mainRequest" }, - { 2, "doorCloseRequest" }, - { 3, "cancelRequest" }, - { 4, "emergencyRequest" }, - { 0, NULL } -}; - - -static int -dissect_AddGrpC_PtvRequestType(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, TRUE, 0, NULL); - - return offset; -} - - -static const per_sequence_t AddGrpC_Control_addGrpC_sequence[] = { - { &hf_AddGrpC_ptvRequest , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_AddGrpC_PtvRequestType }, - { NULL, 0, 0, NULL } -}; - -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 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, - ett_AddGrpC_Control_addGrpC, AddGrpC_Control_addGrpC_sequence); - - return offset; -} - - static const per_sequence_t AddGrpC_PrioritizationResponse_sequence[] = { { &hf_AddGrpC_stationID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_StationID }, { &hf_AddGrpC_priorState , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_PrioritizationResponseStatus }, @@ -12213,7 +12815,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 376 "./asn1/its/its.cnf" +#line 402 "./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, @@ -12223,6 +12825,24 @@ dissect_AddGrpC_IntersectionState_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn } +static const per_sequence_t AddGrpC_LaneAttributes_addGrpC_sequence[] = { + { &hf_AddGrpC_maxVehicleHeight, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_VehicleHeight }, + { &hf_AddGrpC_maxVehicleWeight, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_VehicleMass }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_AddGrpC_LaneAttributes_addGrpC(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" + actx->private_data = wmem_new0(wmem_packet_scope(), its_private_data_t); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_AddGrpC_LaneAttributes_addGrpC, AddGrpC_LaneAttributes_addGrpC_sequence); + + return offset; +} + + static const per_sequence_t AddGrpC_SignalHeadLocation_sequence[] = { { &hf_AddGrpC_nodeXY , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_NodeOffsetPointXY }, { &hf_AddGrpC_nodeZ , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_DeltaAltitude }, @@ -12260,7 +12880,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 381 "./asn1/its/its.cnf" +#line 407 "./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, @@ -12270,6 +12890,128 @@ dissect_AddGrpC_MapData_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a } +static const value_string AddGrpC_ExceptionalCondition_vals[] = { + { 0, "unknown" }, + { 1, "publicTransportPriority" }, + { 2, "emergencyVehiclePriority" }, + { 3, "trainPriority" }, + { 4, "bridgeOpen" }, + { 5, "vehicleHeight" }, + { 6, "weather" }, + { 7, "trafficJam" }, + { 8, "tunnelClosure" }, + { 9, "meteringActive" }, + { 10, "truckPriority" }, + { 11, "bicyclePlatoonPriority" }, + { 12, "vehiclePlatoonPriority" }, + { 0, NULL } +}; + + +static int +dissect_AddGrpC_ExceptionalCondition(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, + 13, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t AddGrpC_MovementEvent_addGrpC_sequence[] = { + { &hf_AddGrpC_stateChangeReason, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_ExceptionalCondition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_AddGrpC_MovementEvent_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 432 "./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, + ett_AddGrpC_MovementEvent_addGrpC, AddGrpC_MovementEvent_addGrpC_sequence); + + return offset; +} + + +static const value_string AddGrpC_PtvRequestType_vals[] = { + { 0, "preRequest" }, + { 1, "mainRequest" }, + { 2, "doorCloseRequest" }, + { 3, "cancelRequest" }, + { 4, "emergencyRequest" }, + { 0, NULL } +}; + + +static int +dissect_AddGrpC_PtvRequestType(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, TRUE, 0, NULL); + + return offset; +} + + + +static int +dissect_AddGrpC_INTEGER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL); + + return offset; +} + + +static const per_sequence_t AddGrpC_Node_sequence[] = { + { &hf_AddGrpC_id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_AddGrpC_INTEGER }, + { &hf_AddGrpC_lane , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_LaneID }, + { &hf_AddGrpC_connectionID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_LaneConnectionID }, + { &hf_AddGrpC_intersectionID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_IntersectionID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_AddGrpC_Node(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_AddGrpC_Node, AddGrpC_Node_sequence); + + return offset; +} + + +static const per_sequence_t AddGrpC_NodeLink_sequence_of[1] = { + { &hf_AddGrpC_NodeLink_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_AddGrpC_Node }, +}; + +static int +dissect_AddGrpC_NodeLink(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_AddGrpC_NodeLink, AddGrpC_NodeLink_sequence_of, + 1, 5, FALSE); + + return offset; +} + + +static const per_sequence_t AddGrpC_NodeAttributeSet_addGrpC_sequence[] = { + { &hf_AddGrpC_ptvRequest , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_PtvRequestType }, + { &hf_AddGrpC_nodeLink , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_NodeLink }, + { &hf_AddGrpC_node , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_Node }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_AddGrpC_NodeAttributeSet_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 397 "./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, + ett_AddGrpC_NodeAttributeSet_addGrpC, AddGrpC_NodeAttributeSet_addGrpC_sequence); + + return offset; +} + + static const per_sequence_t AddGrpC_Position3D_addGrpC_sequence[] = { { &hf_AddGrpC_altitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Altitude }, { NULL, 0, 0, NULL } @@ -12277,7 +13019,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 386 "./asn1/its/its.cnf" +#line 412 "./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, @@ -12309,12 +13051,13 @@ dissect_AddGrpC_EmissionType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static const per_sequence_t AddGrpC_RestrictionUserType_addGrpC_sequence[] = { { &hf_AddGrpC_emission , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_EmissionType }, + { &hf_AddGrpC_fuel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_FuelType }, { NULL, 0, 0, NULL } }; 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 391 "./asn1/its/its.cnf" +#line 417 "./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, @@ -12324,14 +13067,71 @@ dissect_AddGrpC_RestrictionUserType_addGrpC(tvbuff_t *tvb _U_, int offset _U_, a } +static const value_string AddGrpC_BatteryStatus_vals[] = { + { 0, "unknown" }, + { 1, "critical" }, + { 2, "low" }, + { 3, "good" }, + { 0, NULL } +}; + + +static int +dissect_AddGrpC_BatteryStatus(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 per_sequence_t AddGrpC_RequestorDescription_addGrpC_sequence[] = { + { &hf_AddGrpC_fuel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_FuelType }, + { &hf_AddGrpC_batteryStatus, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_BatteryStatus }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_AddGrpC_RequestorDescription_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 437 "./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, + ett_AddGrpC_RequestorDescription_addGrpC, AddGrpC_RequestorDescription_addGrpC_sequence); + + return offset; +} + + +static const value_string AddGrpC_RejectedReason_vals[] = { + { 0, "unknown" }, + { 1, "exceptionalCondition" }, + { 2, "maxWaitingTimeExceeded" }, + { 3, "ptPriorityDisabled" }, + { 4, "higherPTPriorityGranted" }, + { 5, "vehicleTrackingUnknown" }, + { 0, NULL } +}; + + +static int +dissect_AddGrpC_RejectedReason(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 const per_sequence_t AddGrpC_SignalStatusPackage_addGrpC_sequence[] = { { &hf_AddGrpC_synchToSchedule, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DeltaTime }, + { &hf_AddGrpC_rejectedReason, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_RejectedReason }, { NULL, 0, 0, NULL } }; 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 396 "./asn1/its/its.cnf" +#line 422 "./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, @@ -12358,19 +13158,19 @@ static int dissect_AddGrpC_ConnectionTrajectory_addGrpC_PDU(tvbuff_t *tvb _U_, p offset += 7; offset >>= 3; return offset; } -static int dissect_AddGrpC_Control_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { +static int dissect_AddGrpC_IntersectionState_addGrpC_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_AddGrpC_Control_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_Control_addGrpC_PDU); + offset = dissect_AddGrpC_IntersectionState_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_IntersectionState_addGrpC_PDU); offset += 7; offset >>= 3; return offset; } -static int dissect_AddGrpC_IntersectionState_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { +static int dissect_AddGrpC_LaneAttributes_addGrpC_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_AddGrpC_IntersectionState_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_IntersectionState_addGrpC_PDU); + offset = dissect_AddGrpC_LaneAttributes_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_LaneAttributes_addGrpC_PDU); offset += 7; offset >>= 3; return offset; } @@ -12382,6 +13182,22 @@ static int dissect_AddGrpC_MapData_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *p offset += 7; offset >>= 3; return offset; } +static int dissect_AddGrpC_MovementEvent_addGrpC_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_AddGrpC_MovementEvent_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_MovementEvent_addGrpC_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_AddGrpC_NodeAttributeSet_addGrpC_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_AddGrpC_NodeAttributeSet_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_NodeAttributeSet_addGrpC_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_AddGrpC_Position3D_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -12398,6 +13214,14 @@ static int dissect_AddGrpC_RestrictionUserType_addGrpC_PDU(tvbuff_t *tvb _U_, pa offset += 7; offset >>= 3; return offset; } +static int dissect_AddGrpC_RequestorDescription_addGrpC_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_AddGrpC_RequestorDescription_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_RequestorDescription_addGrpC_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_AddGrpC_SignalStatusPackage_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -12727,7 +13551,7 @@ static const per_sequence_t camv1_CoopAwarenessV1_sequence[] = { 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" +#line 303 "./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"); @@ -13048,7 +13872,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 280 "./asn1/its/its.cnf" +#line 297 "./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"); @@ -13256,7 +14080,7 @@ static const per_sequence_t denmv1_DecentralizedEnvironmentalNotificationMessage 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" +#line 315 "./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"); @@ -13464,7 +14288,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 292 "./asn1/its/its.cnf" +#line 309 "./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"); @@ -14568,7 +15392,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 316 "./asn1/its/its.cnf" +#line 333 "./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"); @@ -14701,7 +15525,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 638 "./asn1/its/its.cnf" +#line 679 "./asn1/its/its.cnf" tvbuff_t *parameter_tvb = NULL; int len; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, @@ -14875,7 +15699,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 304 "./asn1/its/its.cnf" +#line 321 "./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"); @@ -15379,7 +16203,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 310 "./asn1/its/its.cnf" +#line 327 "./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"); @@ -15404,7 +16228,7 @@ static int dissect_evrsr_EV_RSR_MessageBody_PDU(tvbuff_t *tvb _U_, packet_info * /*--- End of included file: packet-its-fn.c ---*/ -#line 348 "./asn1/its/packet-its-template.c" +#line 349 "./asn1/its/packet-its-template.c" static int dissect_its_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) @@ -15680,7 +16504,7 @@ void proto_register_its(void) NULL, HFILL }}, { &hf_its_expiryTime, { "expiryTime", "its.expiryTime", - FT_UINT64, BASE_DEC, NULL, 0, + FT_UINT64, BASE_DEC|BASE_VAL64_STRING, VALS64(its_TimestampIts_vals), 0, "TimestampIts", HFILL }}, { &hf_its_protectedZoneLatitude, { "protectedZoneLatitude", "its.protectedZoneLatitude", @@ -16553,7 +17377,7 @@ void proto_register_its(void) { &hf_dsrc_app_providerIdentifier, { "providerIdentifier", "dsrc_app.providerIdentifier", FT_UINT32, BASE_DEC, NULL, 0, - "IssuerIdentifier", HFILL }}, + "AVIAEIIssuerIdentifier", HFILL }}, { &hf_dsrc_app_soundstationary, { "soundstationary", "dsrc_app.soundstationary", FT_UINT32, BASE_DEC, NULL, 0, @@ -16635,15 +17459,15 @@ void proto_register_its(void) NULL, HFILL }}, { &hf_ivi_timeStamp, { "timeStamp", "ivi.timeStamp", - FT_UINT64, BASE_DEC, NULL, 0, + FT_UINT64, BASE_DEC|BASE_VAL64_STRING|BASE_VAL64_STRING, VALS64(its_TimestampIts_vals), 0, "TimestampIts", HFILL }}, { &hf_ivi_validFrom, { "validFrom", "ivi.validFrom", - FT_UINT64, BASE_DEC, NULL, 0, + FT_UINT64, BASE_DEC|BASE_VAL64_STRING|BASE_VAL64_STRING, VALS64(its_TimestampIts_vals), 0, "TimestampIts", HFILL }}, { &hf_ivi_validTo, { "validTo", "ivi.validTo", - FT_UINT64, BASE_DEC, NULL, 0, + FT_UINT64, BASE_DEC|BASE_VAL64_STRING|BASE_VAL64_STRING, VALS64(its_TimestampIts_vals), 0, "TimestampIts", HFILL }}, { &hf_ivi_connectedIviStructures, { "connectedIviStructures", "ivi.connectedIviStructures", @@ -16663,7 +17487,7 @@ void proto_register_its(void) NULL, HFILL }}, { &hf_ivi_referencePositionTime, { "referencePositionTime", "ivi.referencePositionTime", - FT_UINT64, BASE_DEC, NULL, 0, + FT_UINT64, BASE_DEC|BASE_VAL64_STRING|BASE_VAL64_STRING, VALS64(its_TimestampIts_vals), 0, "TimestampIts", HFILL }}, { &hf_ivi_referencePositionHeading, { "referencePositionHeading", "ivi.referencePositionHeading_element", @@ -17520,6 +18344,14 @@ void proto_register_its(void) /* --- Module DSRC --- --- --- */ + { &hf_dsrc_dsrc_MapData_PDU, + { "MapData", "dsrc.MapData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_dsrc_dsrc_RTCMcorrections_PDU, + { "RTCMcorrections", "dsrc.RTCMcorrections_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_dsrc_dsrc_SPAT_PDU, { "SPAT", "dsrc.SPAT_element", FT_NONE, BASE_NONE, NULL, 0, @@ -17532,10 +18364,6 @@ void proto_register_its(void) { "SignalStatusMessage", "dsrc.SignalStatusMessage_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_dsrc_dsrc_MapData_PDU, - { "MapData", "dsrc.MapData_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, { &hf_dsrc_regionId, { "regionId", "dsrc.regionId", FT_UINT32, BASE_DEC, VALS(dsrc_RegionId_vals), 0, @@ -17544,6 +18372,78 @@ void proto_register_its(void) { "regExtValue", "dsrc.regExtValue_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_dsrc_mdTimeStamp, + { "timeStamp", "dsrc.timeStamp", + FT_UINT32, BASE_DEC, NULL, 0, + "MinuteOfTheYear", HFILL }}, + { &hf_dsrc_msgIssueRevision, + { "msgIssueRevision", "dsrc.msgIssueRevision", + FT_UINT32, BASE_DEC, NULL, 0, + "MsgCount", HFILL }}, + { &hf_dsrc_layerType, + { "layerType", "dsrc.layerType", + FT_UINT32, BASE_DEC, VALS(dsrc_LayerType_vals), 0, + NULL, HFILL }}, + { &hf_dsrc_layerID, + { "layerID", "dsrc.layerID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_dsrc_mdIntersections, + { "intersections", "dsrc.intersections", + FT_UINT32, BASE_DEC, NULL, 0, + "IntersectionGeometryList", HFILL }}, + { &hf_dsrc_roadSegments, + { "roadSegments", "dsrc.roadSegments", + FT_UINT32, BASE_DEC, NULL, 0, + "RoadSegmentList", HFILL }}, + { &hf_dsrc_dataParameters, + { "dataParameters", "dsrc.dataParameters_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_dsrc_restrictionList, + { "restrictionList", "dsrc.restrictionList", + FT_UINT32, BASE_DEC, NULL, 0, + "RestrictionClassList", HFILL }}, + { &hf_dsrc_mapRegional, + { "regional", "dsrc.regional", + FT_UINT32, BASE_DEC, NULL, 0, + "T_MAPRegional", HFILL }}, + { &hf_dsrc_mapRegional_item, + { "RegionalExtension", "dsrc.RegionalExtension_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_dsrc_msgCnt, + { "msgCnt", "dsrc.msgCnt", + FT_UINT32, BASE_DEC, NULL, 0, + "MsgCount", HFILL }}, + { &hf_dsrc_rev, + { "rev", "dsrc.rev", + FT_UINT32, BASE_DEC, VALS(dsrc_RTCM_Revision_vals), 0, + "RTCM_Revision", HFILL }}, + { &hf_dsrc_timeStamp, + { "timeStamp", "dsrc.timeStamp", + FT_UINT32, BASE_DEC, NULL, 0, + "MinuteOfTheYear", HFILL }}, + { &hf_dsrc_anchorPoint, + { "anchorPoint", "dsrc.anchorPoint_element", + FT_NONE, BASE_NONE, NULL, 0, + "FullPositionVector", HFILL }}, + { &hf_dsrc_rtcmHeader, + { "rtcmHeader", "dsrc.rtcmHeader_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_dsrc_msgs, + { "msgs", "dsrc.msgs", + FT_UINT32, BASE_DEC, NULL, 0, + "RTCMmessageList", HFILL }}, + { &hf_dsrc_regional, + { "regional", "dsrc.regional", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_4_OF_RegionalExtension", HFILL }}, + { &hf_dsrc_regional_item, + { "RegionalExtension", "dsrc.RegionalExtension_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_dsrc_spatTimeStamp, { "timeStamp", "dsrc.timeStamp", FT_UINT32, BASE_DEC, NULL, 0, @@ -17608,46 +18508,6 @@ void proto_register_its(void) { "RegionalExtension", "dsrc.RegionalExtension_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_dsrc_mdTimeStamp, - { "timeStamp", "dsrc.timeStamp", - FT_UINT32, BASE_DEC, NULL, 0, - "MinuteOfTheYear", HFILL }}, - { &hf_dsrc_msgIssueRevision, - { "msgIssueRevision", "dsrc.msgIssueRevision", - FT_UINT32, BASE_DEC, NULL, 0, - "MsgCount", HFILL }}, - { &hf_dsrc_layerType, - { "layerType", "dsrc.layerType", - FT_UINT32, BASE_DEC, VALS(dsrc_LayerType_vals), 0, - NULL, HFILL }}, - { &hf_dsrc_layerID, - { "layerID", "dsrc.layerID", - FT_UINT32, BASE_DEC, NULL, 0, - NULL, HFILL }}, - { &hf_dsrc_mdIntersections, - { "intersections", "dsrc.intersections", - FT_UINT32, BASE_DEC, NULL, 0, - "IntersectionGeometryList", HFILL }}, - { &hf_dsrc_roadSegments, - { "roadSegments", "dsrc.roadSegments", - FT_UINT32, BASE_DEC, NULL, 0, - "RoadSegmentList", HFILL }}, - { &hf_dsrc_dataParameters, - { "dataParameters", "dsrc.dataParameters_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_dsrc_restrictionList, - { "restrictionList", "dsrc.restrictionList", - FT_UINT32, BASE_DEC, NULL, 0, - "RestrictionClassList", HFILL }}, - { &hf_dsrc_mapRegional, - { "regional", "dsrc.regional", - FT_UINT32, BASE_DEC, NULL, 0, - "T_MAPRegional", HFILL }}, - { &hf_dsrc_mapRegional_item, - { "RegionalExtension", "dsrc.RegionalExtension_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, { &hf_dsrc_asType, { "type", "dsrc.type", FT_UINT32, BASE_DEC, VALS(dsrc_AdvisorySpeedType_vals), 0, @@ -17658,8 +18518,8 @@ void proto_register_its(void) "SpeedAdvice", HFILL }}, { &hf_dsrc_asConfidence, { "confidence", "dsrc.confidence", - FT_UINT32, BASE_DEC, VALS(its_SpeedConfidence_vals), 0, - "SpeedConfidence", HFILL }}, + FT_UINT32, BASE_DEC, VALS(dsrc_SpeedConfidenceDSRC_vals), 0, + "SpeedConfidenceDSRC", HFILL }}, { &hf_dsrc_distance, { "distance", "dsrc.distance", FT_UINT32, BASE_DEC, NULL, 0, @@ -17680,6 +18540,18 @@ void proto_register_its(void) { "AdvisorySpeed", "dsrc.AdvisorySpeed_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_dsrc_antOffsetX, + { "antOffsetX", "dsrc.antOffsetX", + FT_INT32, BASE_DEC, NULL, 0, + "Offset_B12", HFILL }}, + { &hf_dsrc_antOffsetY, + { "antOffsetY", "dsrc.antOffsetY", + FT_INT32, BASE_DEC, NULL, 0, + "Offset_B09", HFILL }}, + { &hf_dsrc_antOffsetZ, + { "antOffsetZ", "dsrc.antOffsetZ", + FT_INT32, BASE_DEC, NULL, 0, + "Offset_B10", HFILL }}, { &hf_dsrc_referenceLaneId, { "referenceLaneId", "dsrc.referenceLaneId", FT_UINT32, BASE_DEC, NULL, 0, @@ -17792,10 +18664,74 @@ void proto_register_its(void) { "geoidUsed", "dsrc.geoidUsed", FT_STRING, BASE_NONE, NULL, 0, "IA5String_SIZE_1_255", HFILL }}, + { &hf_dsrc_year, + { "year", "dsrc.year", + FT_UINT32, BASE_DEC, NULL, 0, + "DYear", HFILL }}, + { &hf_dsrc_month, + { "month", "dsrc.month", + FT_UINT32, BASE_DEC, NULL, 0, + "DMonth", HFILL }}, + { &hf_dsrc_day, + { "day", "dsrc.day", + FT_UINT32, BASE_DEC, NULL, 0, + "DDay", HFILL }}, + { &hf_dsrc_hour, + { "hour", "dsrc.hour", + FT_UINT32, BASE_DEC, NULL, 0, + "DHour", HFILL }}, + { &hf_dsrc_minute, + { "minute", "dsrc.minute", + FT_UINT32, BASE_DEC, NULL, 0, + "DMinute", HFILL }}, + { &hf_dsrc_offset, + { "offset", "dsrc.offset", + FT_INT32, BASE_DEC, NULL, 0, + "DOffset", HFILL }}, { &hf_dsrc_EnabledLaneList_item, { "LaneID", "dsrc.LaneID", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_dsrc_utcTime, + { "utcTime", "dsrc.utcTime_element", + FT_NONE, BASE_NONE, NULL, 0, + "DDateTime", HFILL }}, + { &hf_dsrc_long, + { "long", "dsrc.long", + FT_INT32, BASE_DEC, VALS(its_Longitude_vals), 0, + "Longitude", HFILL }}, + { &hf_dsrc_lat, + { "lat", "dsrc.lat", + FT_INT32, BASE_DEC, VALS(its_Latitude_vals), 0, + "Latitude", HFILL }}, + { &hf_dsrc_fpvElevation, + { "elevation", "dsrc.elevation", + FT_INT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_dsrc_fpvHeading, + { "heading", "dsrc.heading", + FT_UINT32, BASE_DEC, NULL, 0, + "HeadingDSRC", HFILL }}, + { &hf_dsrc_fpvSpeed, + { "speed", "dsrc.speed_element", + FT_NONE, BASE_NONE, NULL, 0, + "TransmissionAndSpeed", HFILL }}, + { &hf_dsrc_posAccuracy, + { "posAccuracy", "dsrc.posAccuracy_element", + FT_NONE, BASE_NONE, NULL, 0, + "PositionalAccuracy", HFILL }}, + { &hf_dsrc_timeConfidence, + { "timeConfidence", "dsrc.timeConfidence", + FT_UINT32, BASE_DEC, VALS(dsrc_TimeConfidence_vals), 0, + NULL, HFILL }}, + { &hf_dsrc_posConfidence, + { "posConfidence", "dsrc.posConfidence_element", + FT_NONE, BASE_NONE, NULL, 0, + "PositionConfidenceSet", HFILL }}, + { &hf_dsrc_speedConfidence, + { "speedConfidence", "dsrc.speedConfidence_element", + FT_NONE, BASE_NONE, NULL, 0, + "SpeedandHeadingandThrottleConfidence", HFILL }}, { &hf_dsrc_laneID, { "laneID", "dsrc.laneID", FT_UINT32, BASE_DEC, NULL, 0, @@ -18020,10 +18956,6 @@ void proto_register_its(void) { "ConnectionManeuverAssist", "dsrc.ConnectionManeuverAssist_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_dsrc_MovementEventList_item, - { "MovementEvent", "dsrc.MovementEvent_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, { &hf_dsrc_eventState, { "eventState", "dsrc.eventState", FT_UINT32, BASE_DEC, VALS(dsrc_MovementPhaseState_vals), 0, @@ -18044,6 +18976,10 @@ void proto_register_its(void) { "RegionalExtension", "dsrc.RegionalExtension_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_dsrc_MovementEventList_item, + { "MovementEvent", "dsrc.MovementEvent_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_dsrc_MovementList_item, { "MovementState", "dsrc.MovementState_element", FT_NONE, BASE_NONE, NULL, 0, @@ -18104,10 +19040,6 @@ void proto_register_its(void) { "lon", "dsrc.lon", FT_INT32, BASE_DEC, VALS(its_Longitude_vals), 0, "Longitude", HFILL }}, - { &hf_dsrc_lat, - { "lat", "dsrc.lat", - FT_INT32, BASE_DEC, VALS(its_Latitude_vals), 0, - "Latitude", HFILL }}, { &hf_dsrc_n20bX, { "x", "dsrc.x", FT_INT32, BASE_DEC, NULL, 0, @@ -18196,10 +19128,6 @@ void proto_register_its(void) { "regional", "dsrc.regional_element", FT_NONE, BASE_NONE, NULL, 0, "RegionalExtension", HFILL }}, - { &hf_dsrc_NodeSetXY_item, - { "NodeXY", "dsrc.NodeXY_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, { &hf_dsrc_delta, { "delta", "dsrc.delta", FT_UINT32, BASE_DEC, VALS(dsrc_NodeOffsetPointXY_vals), 0, @@ -18208,15 +19136,35 @@ void proto_register_its(void) { "attributes", "dsrc.attributes_element", FT_NONE, BASE_NONE, NULL, 0, "NodeAttributeSetXY", HFILL }}, + { &hf_dsrc_NodeSetXY_item, + { "NodeXY", "dsrc.NodeXY_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_dsrc_OverlayLaneList_item, { "LaneID", "dsrc.LaneID", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_dsrc_long, - { "long", "dsrc.long", - FT_INT32, BASE_DEC, VALS(its_Longitude_vals), 0, - "Longitude", HFILL }}, - { &hf_dsrc_elevation, + { &hf_dsrc_semiMajor, + { "semiMajor", "dsrc.semiMajor", + FT_UINT32, BASE_DEC, NULL, 0, + "SemiMajorAxisAccuracy", HFILL }}, + { &hf_dsrc_semiMinor, + { "semiMinor", "dsrc.semiMinor", + FT_UINT32, BASE_DEC, NULL, 0, + "SemiMinorAxisAccuracy", HFILL }}, + { &hf_dsrc_orientation, + { "orientation", "dsrc.orientation", + FT_UINT32, BASE_DEC, NULL, 0, + "SemiMajorAxisOrientation", HFILL }}, + { &hf_dsrc_pos, + { "pos", "dsrc.pos", + FT_UINT32, BASE_DEC, VALS(dsrc_PositionConfidence_vals), 0, + "PositionConfidence", HFILL }}, + { &hf_dsrc_pcsElevation, + { "elevation", "dsrc.elevation", + FT_UINT32, BASE_DEC, VALS(dsrc_ElevationConfidence_vals), 0, + "ElevationConfidence", HFILL }}, + { &hf_dsrc_p3dElevation, { "elevation", "dsrc.elevation", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, @@ -18280,7 +19228,7 @@ void proto_register_its(void) { "position", "dsrc.position_element", FT_NONE, BASE_NONE, NULL, 0, "Position3D", HFILL }}, - { &hf_dsrc_heading, + { &hf_dsrc_rpvHeading, { "heading", "dsrc.heading", FT_UINT32, BASE_DEC, NULL, 0, "Angle", HFILL }}, @@ -18324,10 +19272,6 @@ void proto_register_its(void) { "RestrictionClassAssignment", "dsrc.RestrictionClassAssignment_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_dsrc_RestrictionUserTypeList_item, - { "RestrictionUserType", "dsrc.RestrictionUserType", - FT_UINT32, BASE_DEC, VALS(dsrc_RestrictionUserType_vals), 0, - NULL, HFILL }}, { &hf_dsrc_basicType, { "basicType", "dsrc.basicType", FT_UINT32, BASE_DEC, VALS(dsrc_RestrictionAppliesTo_vals), 0, @@ -18340,6 +19284,10 @@ void proto_register_its(void) { "RegionalExtension", "dsrc.RegionalExtension_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_dsrc_RestrictionUserTypeList_item, + { "RestrictionUserType", "dsrc.RestrictionUserType", + FT_UINT32, BASE_DEC, VALS(dsrc_RestrictionUserType_vals), 0, + NULL, HFILL }}, { &hf_dsrc_RoadLaneSetList_item, { "GenericLane", "dsrc.GenericLane_element", FT_NONE, BASE_NONE, NULL, 0, @@ -18368,6 +19316,18 @@ void proto_register_its(void) { "RoadSegment", "dsrc.RoadSegment_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_dsrc_status, + { "status", "dsrc.status", + FT_BYTES, BASE_NONE, NULL, 0, + "GNSSstatus", HFILL }}, + { &hf_dsrc_offsetSet, + { "offsetSet", "dsrc.offsetSet_element", + FT_NONE, BASE_NONE, NULL, 0, + "AntennaOffsetSet", HFILL }}, + { &hf_dsrc_RTCMmessageList_item, + { "RTCMmessage", "dsrc.RTCMmessage", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_dsrc_SegmentAttributeXYList_item, { "SegmentAttributeXY", "dsrc.SegmentAttributeXY", FT_UINT32, BASE_DEC, VALS(dsrc_SegmentAttributeXY_vals), 0, @@ -18388,6 +19348,34 @@ void proto_register_its(void) { "typeData", "dsrc.typeData_element", FT_NONE, BASE_NONE, NULL, 0, "RequestorType", HFILL }}, + { &hf_dsrc_srId, + { "id", "dsrc.id_element", + FT_NONE, BASE_NONE, NULL, 0, + "IntersectionReferenceID", HFILL }}, + { &hf_dsrc_requestID, + { "requestID", "dsrc.requestID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_dsrc_requestType, + { "requestType", "dsrc.requestType", + FT_UINT32, BASE_DEC, VALS(dsrc_PriorityRequestType_vals), 0, + "PriorityRequestType", HFILL }}, + { &hf_dsrc_inBoundLane, + { "inBoundLane", "dsrc.inBoundLane", + FT_UINT32, BASE_DEC, VALS(dsrc_IntersectionAccessPoint_vals), 0, + "IntersectionAccessPoint", HFILL }}, + { &hf_dsrc_outBoundLane, + { "outBoundLane", "dsrc.outBoundLane", + FT_UINT32, BASE_DEC, VALS(dsrc_IntersectionAccessPoint_vals), 0, + "IntersectionAccessPoint", HFILL }}, + { &hf_dsrc_srRegional, + { "regional", "dsrc.regional", + FT_UINT32, BASE_DEC, NULL, 0, + "T_SignalRequestRegional", HFILL }}, + { &hf_dsrc_srRegional_item, + { "RegionalExtension", "dsrc.RegionalExtension_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_dsrc_SignalRequestList_item, { "SignalRequestPackage", "dsrc.SignalRequestPackage_element", FT_NONE, BASE_NONE, NULL, 0, @@ -18396,7 +19384,7 @@ void proto_register_its(void) { "request", "dsrc.request_element", FT_NONE, BASE_NONE, NULL, 0, "SignalRequest", HFILL }}, - { &hf_dsrc_minute, + { &hf_dsrc_srpMinute, { "minute", "dsrc.minute", FT_UINT32, BASE_DEC, NULL, 0, "MinuteOfTheYear", HFILL }}, @@ -18412,31 +19400,19 @@ void proto_register_its(void) { "RegionalExtension", "dsrc.RegionalExtension_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_dsrc_srId, + { &hf_dsrc_ssId, { "id", "dsrc.id_element", FT_NONE, BASE_NONE, NULL, 0, "IntersectionReferenceID", HFILL }}, - { &hf_dsrc_requestID, - { "requestID", "dsrc.requestID", + { &hf_dsrc_sigStatus, + { "sigStatus", "dsrc.sigStatus", FT_UINT32, BASE_DEC, NULL, 0, - NULL, HFILL }}, - { &hf_dsrc_requestType, - { "requestType", "dsrc.requestType", - FT_UINT32, BASE_DEC, VALS(dsrc_PriorityRequestType_vals), 0, - "PriorityRequestType", HFILL }}, - { &hf_dsrc_inBoundLane, - { "inBoundLane", "dsrc.inBoundLane", - FT_UINT32, BASE_DEC, VALS(dsrc_IntersectionAccessPoint_vals), 0, - "IntersectionAccessPoint", HFILL }}, - { &hf_dsrc_outBoundLane, - { "outBoundLane", "dsrc.outBoundLane", - FT_UINT32, BASE_DEC, VALS(dsrc_IntersectionAccessPoint_vals), 0, - "IntersectionAccessPoint", HFILL }}, - { &hf_dsrc_srRegional, + "SignalStatusPackageList", HFILL }}, + { &hf_dsrc_ssRegional, { "regional", "dsrc.regional", FT_UINT32, BASE_DEC, NULL, 0, - "T_SignalRequestRegional", HFILL }}, - { &hf_dsrc_srRegional_item, + "T_SignalStatusRegional", HFILL }}, + { &hf_dsrc_ssRegional_item, { "RegionalExtension", "dsrc.RegionalExtension_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, @@ -18460,6 +19436,10 @@ void proto_register_its(void) { "outboundOn", "dsrc.outboundOn", FT_UINT32, BASE_DEC, VALS(dsrc_IntersectionAccessPoint_vals), 0, "IntersectionAccessPoint", HFILL }}, + { &hf_dsrc_sspMinute, + { "minute", "dsrc.minute", + FT_UINT32, BASE_DEC, NULL, 0, + "MinuteOfTheYear", HFILL }}, { &hf_dsrc_sspStatus, { "status", "dsrc.status", FT_UINT32, BASE_DEC, VALS(dsrc_PrioritizationResponseStatus_vals), 0, @@ -18472,22 +19452,18 @@ void proto_register_its(void) { "RegionalExtension", "dsrc.RegionalExtension_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_dsrc_ssId, - { "id", "dsrc.id_element", - FT_NONE, BASE_NONE, NULL, 0, - "IntersectionReferenceID", HFILL }}, - { &hf_dsrc_sigStatus, - { "sigStatus", "dsrc.sigStatus", - FT_UINT32, BASE_DEC, NULL, 0, - "SignalStatusPackageList", HFILL }}, - { &hf_dsrc_ssRegional, - { "regional", "dsrc.regional", - FT_UINT32, BASE_DEC, NULL, 0, - "T_SignalStatusRegional", HFILL }}, - { &hf_dsrc_ssRegional_item, - { "RegionalExtension", "dsrc.RegionalExtension_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, + { &hf_dsrc_shtcheading, + { "heading", "dsrc.heading", + FT_UINT32, BASE_DEC, VALS(dsrc_HeadingConfidenceDSRC_vals), 0, + "HeadingConfidenceDSRC", HFILL }}, + { &hf_dsrc_shtcSpeed, + { "speed", "dsrc.speed", + FT_UINT32, BASE_DEC, VALS(dsrc_SpeedConfidenceDSRC_vals), 0, + "SpeedConfidenceDSRC", HFILL }}, + { &hf_dsrc_throttle, + { "throttle", "dsrc.throttle", + FT_UINT32, BASE_DEC, VALS(dsrc_ThrottleConfidence_vals), 0, + "ThrottleConfidence", HFILL }}, { &hf_dsrc_SpeedLimitList_item, { "RegulatorySpeedLimit", "dsrc.RegulatorySpeedLimit_element", FT_NONE, BASE_NONE, NULL, 0, @@ -18620,6 +19596,38 @@ void proto_register_its(void) { "reserved1", "dsrc.AllowedManeuvers.reserved1", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }}, + { &hf_dsrc_GNSSstatus_unavailable, + { "unavailable", "dsrc.GNSSstatus.unavailable", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_dsrc_GNSSstatus_isHealthy, + { "isHealthy", "dsrc.GNSSstatus.isHealthy", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_dsrc_GNSSstatus_isMonitored, + { "isMonitored", "dsrc.GNSSstatus.isMonitored", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_dsrc_GNSSstatus_baseStationType, + { "baseStationType", "dsrc.GNSSstatus.baseStationType", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_dsrc_GNSSstatus_aPDOPofUnder5, + { "aPDOPofUnder5", "dsrc.GNSSstatus.aPDOPofUnder5", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_dsrc_GNSSstatus_inViewOfUnder5, + { "inViewOfUnder5", "dsrc.GNSSstatus.inViewOfUnder5", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_dsrc_GNSSstatus_localCorrectionsPresent, + { "localCorrectionsPresent", "dsrc.GNSSstatus.localCorrectionsPresent", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_dsrc_GNSSstatus_networkCorrectionsPresent, + { "networkCorrectionsPresent", "dsrc.GNSSstatus.networkCorrectionsPresent", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, { &hf_dsrc_IntersectionStatusObject_manualControlIsEnabled, { "manualControlIsEnabled", "dsrc.IntersectionStatusObject.manualControlIsEnabled", FT_BOOLEAN, 8, NULL, 0x80, @@ -18943,18 +19951,26 @@ void proto_register_its(void) { "ConnectionTrajectory-addGrpC", "AddGrpC.ConnectionTrajectory_addGrpC_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_AddGrpC_AddGrpC_Control_addGrpC_PDU, - { "Control-addGrpC", "AddGrpC.Control_addGrpC_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, { &hf_AddGrpC_AddGrpC_IntersectionState_addGrpC_PDU, { "IntersectionState-addGrpC", "AddGrpC.IntersectionState_addGrpC_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_AddGrpC_AddGrpC_LaneAttributes_addGrpC_PDU, + { "LaneAttributes-addGrpC", "AddGrpC.LaneAttributes_addGrpC_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_AddGrpC_AddGrpC_MapData_addGrpC_PDU, { "MapData-addGrpC", "AddGrpC.MapData_addGrpC_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_AddGrpC_AddGrpC_MovementEvent_addGrpC_PDU, + { "MovementEvent-addGrpC", "AddGrpC.MovementEvent_addGrpC_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_AddGrpC_AddGrpC_NodeAttributeSet_addGrpC_PDU, + { "NodeAttributeSet-addGrpC", "AddGrpC.NodeAttributeSet_addGrpC_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_AddGrpC_AddGrpC_Position3D_addGrpC_PDU, { "Position3D-addGrpC", "AddGrpC.Position3D_addGrpC_element", FT_NONE, BASE_NONE, NULL, 0, @@ -18963,46 +19979,118 @@ void proto_register_its(void) { "RestrictionUserType-addGrpC", "AddGrpC.RestrictionUserType_addGrpC_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_AddGrpC_AddGrpC_RequestorDescription_addGrpC_PDU, + { "RequestorDescription-addGrpC", "AddGrpC.RequestorDescription_addGrpC_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_AddGrpC_AddGrpC_SignalStatusPackage_addGrpC_PDU, { "SignalStatusPackage-addGrpC", "AddGrpC.SignalStatusPackage_addGrpC_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_AddGrpC_itsStationPositions, - { "itsStationPositions", "AddGrpC.itsStationPositions", + { &hf_AddGrpC_itsStationPosition, + { "itsStationPosition", "AddGrpC.itsStationPosition", FT_UINT32, BASE_DEC, NULL, 0, "ItsStationPositionList", HFILL }}, - { &hf_AddGrpC_rsuGNSSOffset, - { "rsuGNSSOffset", "AddGrpC.rsuGNSSOffset", - FT_UINT32, BASE_DEC, VALS(dsrc_NodeOffsetPointXY_vals), 0, - "NodeOffsetPointXY", HFILL }}, { &hf_AddGrpC_nodes, { "nodes", "AddGrpC.nodes", FT_UINT32, BASE_DEC, NULL, 0, "NodeSetXY", HFILL }}, - { &hf_AddGrpC_ptvRequest, - { "ptvRequest", "AddGrpC.ptvRequest", - FT_UINT32, BASE_DEC, VALS(AddGrpC_PtvRequestType_vals), 0, - "PtvRequestType", HFILL }}, + { &hf_AddGrpC_connectionID, + { "connectionID", "AddGrpC.connectionID", + FT_UINT32, BASE_DEC, NULL, 0, + "LaneConnectionID", HFILL }}, { &hf_AddGrpC_activePrioritizations, { "activePrioritizations", "AddGrpC.activePrioritizations", FT_UINT32, BASE_DEC, NULL, 0, "PrioritizationResponseList", HFILL }}, + { &hf_AddGrpC_maxVehicleHeight, + { "maxVehicleHeight", "AddGrpC.maxVehicleHeight", + FT_UINT32, BASE_DEC, NULL, 0, + "VehicleHeight", HFILL }}, + { &hf_AddGrpC_maxVehicleWeight, + { "maxVehicleWeight", "AddGrpC.maxVehicleWeight", + FT_UINT32, BASE_DEC, VALS(its_VehicleMass_vals), 0, + "VehicleMass", HFILL }}, { &hf_AddGrpC_signalHeadLocations, { "signalHeadLocations", "AddGrpC.signalHeadLocations", FT_UINT32, BASE_DEC, NULL, 0, "SignalHeadLocationList", HFILL }}, + { &hf_AddGrpC_stateChangeReason, + { "stateChangeReason", "AddGrpC.stateChangeReason", + FT_UINT32, BASE_DEC, VALS(AddGrpC_ExceptionalCondition_vals), 0, + "ExceptionalCondition", HFILL }}, + { &hf_AddGrpC_ptvRequest, + { "ptvRequest", "AddGrpC.ptvRequest", + FT_UINT32, BASE_DEC, VALS(AddGrpC_PtvRequestType_vals), 0, + "PtvRequestType", HFILL }}, + { &hf_AddGrpC_nodeLink, + { "nodeLink", "AddGrpC.nodeLink", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_AddGrpC_node, + { "node", "AddGrpC.node_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_AddGrpC_altitude, { "altitude", "AddGrpC.altitude_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_AddGrpC_PrioritizationResponseList_item, - { "PrioritizationResponse", "AddGrpC.PrioritizationResponse_element", - FT_NONE, BASE_NONE, NULL, 0, + { &hf_AddGrpC_emission, + { "emission", "AddGrpC.emission", + FT_UINT32, BASE_DEC, VALS(AddGrpC_EmissionType_vals), 0, + "EmissionType", HFILL }}, + { &hf_AddGrpC_fuel, + { "fuel", "AddGrpC.fuel", + FT_UINT32, BASE_DEC, VALS(dsrc_FuelType_vals), 0, + "FuelType", HFILL }}, + { &hf_AddGrpC_batteryStatus, + { "batteryStatus", "AddGrpC.batteryStatus", + FT_UINT32, BASE_DEC, VALS(AddGrpC_BatteryStatus_vals), 0, + NULL, HFILL }}, + { &hf_AddGrpC_synchToSchedule, + { "synchToSchedule", "AddGrpC.synchToSchedule", + FT_INT32, BASE_DEC, NULL, 0, + "DeltaTime", HFILL }}, + { &hf_AddGrpC_rejectedReason, + { "rejectedReason", "AddGrpC.rejectedReason", + FT_UINT32, BASE_DEC, VALS(AddGrpC_RejectedReason_vals), 0, NULL, HFILL }}, { &hf_AddGrpC_stationID, { "stationID", "AddGrpC.stationID", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_AddGrpC_laneID, + { "laneID", "AddGrpC.laneID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_AddGrpC_nodeXY, + { "nodeXY", "AddGrpC.nodeXY", + FT_UINT32, BASE_DEC, VALS(dsrc_NodeOffsetPointXY_vals), 0, + "NodeOffsetPointXY", HFILL }}, + { &hf_AddGrpC_timeReference, + { "timeReference", "AddGrpC.timeReference", + FT_UINT32, BASE_DEC, VALS(AddGrpC_TimeReference_vals), 0, + NULL, HFILL }}, + { &hf_AddGrpC_ItsStationPositionList_item, + { "ItsStationPosition", "AddGrpC.ItsStationPosition_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_AddGrpC_id, + { "id", "AddGrpC.id", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_AddGrpC_lane, + { "lane", "AddGrpC.lane", + FT_UINT32, BASE_DEC, NULL, 0, + "LaneID", HFILL }}, + { &hf_AddGrpC_intersectionID, + { "intersectionID", "AddGrpC.intersectionID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_AddGrpC_NodeLink_item, + { "Node", "AddGrpC.Node_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_AddGrpC_priorState, { "priorState", "AddGrpC.priorState", FT_UINT32, BASE_DEC, VALS(dsrc_PrioritizationResponseStatus_vals), 0, @@ -19011,18 +20099,10 @@ void proto_register_its(void) { "signalGroup", "AddGrpC.signalGroup", FT_UINT32, BASE_DEC, NULL, 0, "SignalGroupID", HFILL }}, - { &hf_AddGrpC_emission, - { "emission", "AddGrpC.emission", - FT_UINT32, BASE_DEC, VALS(AddGrpC_EmissionType_vals), 0, - "EmissionType", HFILL }}, - { &hf_AddGrpC_SignalHeadLocationList_item, - { "SignalHeadLocation", "AddGrpC.SignalHeadLocation_element", + { &hf_AddGrpC_PrioritizationResponseList_item, + { "PrioritizationResponse", "AddGrpC.PrioritizationResponse_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_AddGrpC_nodeXY, - { "nodeXY", "AddGrpC.nodeXY", - FT_UINT32, BASE_DEC, VALS(dsrc_NodeOffsetPointXY_vals), 0, - "NodeOffsetPointXY", HFILL }}, { &hf_AddGrpC_nodeZ, { "nodeZ", "AddGrpC.nodeZ", FT_INT32, BASE_DEC, VALS(its_DeltaAltitude_vals), 0, @@ -19031,22 +20111,10 @@ void proto_register_its(void) { "signalGroupID", "AddGrpC.signalGroupID", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_AddGrpC_synchToSchedule, - { "synchToSchedule", "AddGrpC.synchToSchedule", - FT_INT32, BASE_DEC, NULL, 0, - "DeltaTime", HFILL }}, - { &hf_AddGrpC_ItsStationPositionList_item, - { "ItsStationPosition", "AddGrpC.ItsStationPosition_element", + { &hf_AddGrpC_SignalHeadLocationList_item, + { "SignalHeadLocation", "AddGrpC.SignalHeadLocation_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_AddGrpC_laneID, - { "laneID", "AddGrpC.laneID", - FT_UINT32, BASE_DEC, NULL, 0, - NULL, HFILL }}, - { &hf_AddGrpC_timeReference, - { "timeReference", "AddGrpC.timeReference", - FT_UINT32, BASE_DEC, VALS(AddGrpC_TimeReference_vals), 0, - NULL, HFILL }}, /* --- Module CAMv1-PDU-Descriptions --- --- --- */ @@ -19713,11 +20781,11 @@ void proto_register_its(void) NULL, HFILL }}, { &hf_denm_detectionTime, { "detectionTime", "denm.detectionTime", - FT_UINT64, BASE_DEC, NULL, 0, + FT_UINT64, BASE_DEC|BASE_VAL64_STRING|BASE_VAL64_STRING, VALS64(its_TimestampIts_vals), 0, "TimestampIts", HFILL }}, { &hf_denm_referenceTime, { "referenceTime", "denm.referenceTime", - FT_UINT64, BASE_DEC, NULL, 0, + FT_UINT64, BASE_DEC|BASE_VAL64_STRING|BASE_VAL64_STRING, VALS64(its_TimestampIts_vals), 0, "TimestampIts", HFILL }}, { &hf_denm_termination, { "termination", "denm.termination", @@ -19964,7 +21032,7 @@ void proto_register_its(void) "TisTpgDRM_Location", HFILL }}, { &hf_tistpg_generationTime, { "generationTime", "tistpg.generationTime", - FT_UINT64, BASE_DEC, NULL, 0, + FT_UINT64, BASE_DEC|BASE_VAL64_STRING|BASE_VAL64_STRING, VALS64(its_TimestampIts_vals), 0, "TimestampIts", HFILL }}, { &hf_tistpg_vehicleType, { "vehicleType", "tistpg.vehicleType", @@ -20048,7 +21116,7 @@ void proto_register_its(void) NULL, HFILL }}, { &hf_tistpg_estArrivalTime, { "estArrivalTime", "tistpg.estArrivalTime", - FT_UINT64, BASE_DEC, NULL, 0, + FT_UINT64, BASE_DEC|BASE_VAL64_STRING|BASE_VAL64_STRING, VALS64(its_TimestampIts_vals), 0, "TimestampIts", HFILL }}, { &hf_tistpg_proposedPairingID, { "proposedPairingID", "tistpg.proposedPairingID", @@ -20080,7 +21148,7 @@ void proto_register_its(void) NULL, HFILL }}, { &hf_tistpg_reservationTimeLimit, { "reservationTimeLimit", "tistpg.reservationTimeLimit", - FT_UINT64, BASE_DEC, NULL, 0, + FT_UINT64, BASE_DEC|BASE_VAL64_STRING|BASE_VAL64_STRING, VALS64(its_TimestampIts_vals), 0, "TimestampIts", HFILL }}, { &hf_tistpg_cancellationCondition, { "cancellationCondition", "tistpg.cancellationCondition", @@ -20343,7 +21411,7 @@ void proto_register_its(void) NULL, HFILL }}, { &hf_evcsn_timeStamp, { "timeStamp", "evcsn.timeStamp", - FT_UINT64, BASE_DEC, NULL, 0, + FT_UINT64, BASE_DEC|BASE_VAL64_STRING|BASE_VAL64_STRING, VALS64(its_TimestampIts_vals), 0, "TimestampIts", HFILL }}, { &hf_evcsn_relayCapable, { "relayCapable", "evcsn.relayCapable", @@ -20682,7 +21750,7 @@ void proto_register_its(void) NULL, HFILL }}, /*--- End of included file: packet-its-hfarr.c ---*/ -#line 384 "./asn1/its/packet-its-template.c" +#line 385 "./asn1/its/packet-its-template.c" { &hf_its_roadworksSubCauseCode, { "roadworksSubCauseCode", "its.subCauseCode", @@ -21091,17 +22159,20 @@ void proto_register_its(void) /* --- Module DSRC --- --- --- */ &ett_dsrc_RegionalExtension, + &ett_dsrc_MapData, + &ett_dsrc_T_MAPRegional, + &ett_dsrc_RTCMcorrections, + &ett_dsrc_SEQUENCE_SIZE_1_4_OF_RegionalExtension, &ett_dsrc_SPAT, &ett_dsrc_T_SPATRegional, &ett_dsrc_SignalRequestMessage, &ett_dsrc_T_SRMRegional, &ett_dsrc_SignalStatusMessage, &ett_dsrc_T_SSMRegional, - &ett_dsrc_MapData, - &ett_dsrc_T_MAPRegional, &ett_dsrc_AdvisorySpeed, &ett_dsrc_T_AdvisorySpeedRegional, &ett_dsrc_AdvisorySpeedList, + &ett_dsrc_AntennaOffsetSet, &ett_dsrc_ComputedLane, &ett_dsrc_T_offsetXaxis, &ett_dsrc_T_offsetYaxis, @@ -21112,7 +22183,9 @@ void proto_register_its(void) &ett_dsrc_ConnectionManeuverAssist, &ett_dsrc_T_ConnectionManeuverAssistRegional, &ett_dsrc_DataParameters, + &ett_dsrc_DDateTime, &ett_dsrc_EnabledLaneList, + &ett_dsrc_FullPositionVector, &ett_dsrc_GenericLane, &ett_dsrc_T_GenericLaneRegional, &ett_dsrc_IntersectionAccessPoint, @@ -21131,9 +22204,9 @@ void proto_register_its(void) &ett_dsrc_LaneSharing, &ett_dsrc_LaneTypeAttributes, &ett_dsrc_ManeuverAssistList, - &ett_dsrc_MovementEventList, &ett_dsrc_MovementEvent, &ett_dsrc_T_MovementEventRegional, + &ett_dsrc_MovementEventList, &ett_dsrc_MovementList, &ett_dsrc_MovementState, &ett_dsrc_T_MovementStateRegional, @@ -21149,9 +22222,11 @@ void proto_register_its(void) &ett_dsrc_Node_XY_32b, &ett_dsrc_NodeListXY, &ett_dsrc_NodeOffsetPointXY, - &ett_dsrc_NodeSetXY, &ett_dsrc_NodeXY, + &ett_dsrc_NodeSetXY, &ett_dsrc_OverlayLaneList, + &ett_dsrc_PositionalAccuracy, + &ett_dsrc_PositionConfidenceSet, &ett_dsrc_Position3D, &ett_dsrc_T_Position3DRegional, &ett_dsrc_PreemptPriorityList, @@ -21162,33 +22237,37 @@ void proto_register_its(void) &ett_dsrc_RequestorType, &ett_dsrc_RestrictionClassAssignment, &ett_dsrc_RestrictionClassList, - &ett_dsrc_RestrictionUserTypeList, &ett_dsrc_RestrictionUserType, &ett_dsrc_T_RestrictionUserTypeRegional, + &ett_dsrc_RestrictionUserTypeList, &ett_dsrc_RoadLaneSetList, &ett_dsrc_RoadSegmentReferenceID, &ett_dsrc_RoadSegment, &ett_dsrc_T_RoadSegmentRegional, &ett_dsrc_RoadSegmentList, + &ett_dsrc_RTCMheader, + &ett_dsrc_RTCMmessageList, &ett_dsrc_SegmentAttributeXYList, &ett_dsrc_SignalControlZone, &ett_dsrc_SignalRequesterInfo, + &ett_dsrc_SignalRequest, + &ett_dsrc_T_SignalRequestRegional, &ett_dsrc_SignalRequestList, &ett_dsrc_SignalRequestPackage, &ett_dsrc_T_SignalRequestPackageRegional, - &ett_dsrc_SignalRequest, - &ett_dsrc_T_SignalRequestRegional, + &ett_dsrc_SignalStatus, + &ett_dsrc_T_SignalStatusRegional, &ett_dsrc_SignalStatusList, &ett_dsrc_SignalStatusPackageList, &ett_dsrc_SignalStatusPackage, &ett_dsrc_T_SignalStatusPackageRegional, - &ett_dsrc_SignalStatus, - &ett_dsrc_T_SignalStatusRegional, + &ett_dsrc_SpeedandHeadingandThrottleConfidence, &ett_dsrc_SpeedLimitList, &ett_dsrc_TimeChangeDetails, &ett_dsrc_TransmissionAndSpeed, &ett_dsrc_VehicleID, &ett_dsrc_AllowedManeuvers, + &ett_dsrc_GNSSstatus, &ett_dsrc_IntersectionStatusObject, &ett_dsrc_LaneAttributes_Barrier, &ett_dsrc_LaneAttributes_Bike, @@ -21205,18 +22284,23 @@ void proto_register_its(void) &ett_AddGrpC_ConnectionManeuverAssist_addGrpC, &ett_AddGrpC_ConnectionTrajectory_addGrpC, - &ett_AddGrpC_Control_addGrpC, &ett_AddGrpC_IntersectionState_addGrpC, + &ett_AddGrpC_LaneAttributes_addGrpC, &ett_AddGrpC_MapData_addGrpC, + &ett_AddGrpC_MovementEvent_addGrpC, + &ett_AddGrpC_NodeAttributeSet_addGrpC, &ett_AddGrpC_Position3D_addGrpC, - &ett_AddGrpC_PrioritizationResponseList, - &ett_AddGrpC_PrioritizationResponse, &ett_AddGrpC_RestrictionUserType_addGrpC, - &ett_AddGrpC_SignalHeadLocationList, - &ett_AddGrpC_SignalHeadLocation, + &ett_AddGrpC_RequestorDescription_addGrpC, &ett_AddGrpC_SignalStatusPackage_addGrpC, - &ett_AddGrpC_ItsStationPositionList, &ett_AddGrpC_ItsStationPosition, + &ett_AddGrpC_ItsStationPositionList, + &ett_AddGrpC_Node, + &ett_AddGrpC_NodeLink, + &ett_AddGrpC_PrioritizationResponse, + &ett_AddGrpC_PrioritizationResponseList, + &ett_AddGrpC_SignalHeadLocation, + &ett_AddGrpC_SignalHeadLocationList, /* --- Module REGION --- --- --- */ @@ -21372,7 +22456,7 @@ void proto_register_its(void) &ett_evrsr_SupportedPaymentTypes, /*--- End of included file: packet-its-ettarr.c ---*/ -#line 587 "./asn1/its/packet-its-template.c" +#line 588 "./asn1/its/packet-its-template.c" }; static ei_register_info ei[] = { @@ -21408,6 +22492,7 @@ void proto_register_its(void) proto_its_evrsr = proto_register_protocol_in_name_only("ITS message - EVRSR", "EVRSR", "its.message.evrsr", proto_its, FT_BYTES); proto_its_srem = proto_register_protocol_in_name_only("ITS message - SREM", "SREM", "its.message.srem", proto_its, FT_BYTES); proto_its_ssem = proto_register_protocol_in_name_only("ITS message - SSEM", "SSEM", "its.message.ssem", proto_its, FT_BYTES); + proto_its_rtcmem = proto_register_protocol_in_name_only("ITS message - RTCMEM", "RTCMEM", "its.message.rtcmem", proto_its, FT_BYTES); proto_its_evcsn = proto_register_protocol_in_name_only("ITS message - EVCSN", "EVCSN", "its.message.evcsn", proto_its, FT_BYTES); proto_its_tistpg = proto_register_protocol_in_name_only("ITS message - TISTPG", "TISTPG", "its.message.tistpg", proto_its, FT_BYTES); @@ -21423,7 +22508,7 @@ void proto_register_its(void) } #define BTP_SUBDISS_SZ 2 -#define BTP_PORTS_SZ 10 +#define BTP_PORTS_SZ 11 #define ITS_CAM_PROT_VER 2 #define ITS_CAM_PROT_VERv1 1 @@ -21434,11 +22519,12 @@ void proto_register_its(void) #define ITS_IVIM_PROT_VER 2 #define ITS_SREM_PROT_VER 2 #define ITS_SSEM_PROT_VER 2 +#define ITS_RTCMEM_PROT_VER 2 void proto_reg_handoff_its(void) { const char *subdissector[BTP_SUBDISS_SZ] = { "btpa.port", "btpb.port" }; - const guint16 ports[BTP_PORTS_SZ] = { ITS_WKP_DEN, ITS_WKP_CA, ITS_WKP_EVCSN, ITS_WKP_CHARGING, ITS_WKP_IVI, ITS_WKP_TPG, ITS_WKP_TLC_SSEM, ITS_WKP_TLC_SREM, ITS_WKP_RLT, ITS_WKP_TLM }; + const guint16 ports[BTP_PORTS_SZ] = { ITS_WKP_DEN, ITS_WKP_CA, ITS_WKP_EVCSN, ITS_WKP_CHARGING, ITS_WKP_IVI, ITS_WKP_TPG, ITS_WKP_TLC_SSEM, ITS_WKP_GPC, ITS_WKP_TLC_SREM, ITS_WKP_RLT, ITS_WKP_TLM }; int sdIdx, pIdx; dissector_handle_t its_handle_; @@ -21459,20 +22545,24 @@ void proto_reg_handoff_its(void) 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_SSEM_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_RTCMEM_PROT_VER << 16) + ITS_RTCMEM, create_dissector_handle( dissect_dsrc_RTCMcorrections_PDU, proto_its_rtcmem )); 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 )); - /* Missing definitions: ITS_POI, ITS_SAEM, ITS_RTCMEM */ + /* Missing definitions: ITS_POI, ITS_SAEM */ dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_ConnectionManeuverAssist, create_dissector_handle(dissect_AddGrpC_ConnectionManeuverAssist_addGrpC_PDU, proto_addgrpc )); dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_GenericLane, create_dissector_handle(dissect_AddGrpC_ConnectionTrajectory_addGrpC_PDU, proto_addgrpc )); - dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_NodeAttributeSetXY, create_dissector_handle(dissect_AddGrpC_Control_addGrpC_PDU, proto_addgrpc )); + dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_NodeAttributeSetXY, create_dissector_handle(dissect_AddGrpC_NodeAttributeSet_addGrpC_PDU, proto_addgrpc )); dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_IntersectionState, create_dissector_handle(dissect_AddGrpC_IntersectionState_addGrpC_PDU, proto_addgrpc )); - dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_MapData, create_dissector_handle(dissect_AddGrpC_MapData_addGrpC_PDU, proto_addgrpc )); + dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_MapData,create_dissector_handle(dissect_AddGrpC_MapData_addGrpC_PDU, proto_addgrpc )); dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_Position3D, create_dissector_handle(dissect_AddGrpC_Position3D_addGrpC_PDU, proto_addgrpc )); dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_RestrictionUserType, create_dissector_handle(dissect_AddGrpC_RestrictionUserType_addGrpC_PDU, proto_addgrpc )); dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_SignalStatusPackage, create_dissector_handle(dissect_AddGrpC_SignalStatusPackage_addGrpC_PDU, proto_addgrpc )); + dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_LaneAttributes, create_dissector_handle(dissect_AddGrpC_LaneAttributes_addGrpC_PDU, proto_addgrpc )); + dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_MovementEvent, create_dissector_handle(dissect_AddGrpC_MovementEvent_addGrpC_PDU, proto_addgrpc )); + dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_RequestorDescription, create_dissector_handle(dissect_AddGrpC_RequestorDescription_addGrpC_PDU, proto_addgrpc )); dissector_add_uint("ieee1609dot2.ssp", psid_den_basic_services, create_dissector_handle(dissect_denmssp_pdu, proto_its_denm)); dissector_add_uint("ieee1609dot2.ssp", psid_ca_basic_services, create_dissector_handle(dissect_camssp_pdu, proto_its_cam)); diff --git a/epan/dissectors/packet-its.h b/epan/dissectors/packet-its.h index 6e1f9906f3..ff9f3c58f9 100644 --- a/epan/dissectors/packet-its.h +++ b/epan/dissectors/packet-its.h @@ -170,6 +170,7 @@ typedef enum _CauseCodeType_enum { /* --- Module DSRC --- --- --- */ #define mapData 18 +#define rtcmCorrections 28 #define signalPhaseAndTimingMessage 19 #define signalRequestMessage 29 #define signalStatusMessage 30 @@ -266,6 +267,7 @@ enum regext_type_enum { Reg_SignalStatusMessage, Reg_SignalStatusPackage, Reg_SPAT, + Reg_RTCMcorrections, }; #endif /* __PACKET_ITS_H__ */ |