aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/asn1/its/EV-RSR-PDU-Descriptions.asn10
-rw-r--r--epan/dissectors/asn1/its/EVCSN-PDU-Descriptions.asn2
-rw-r--r--epan/dissectors/asn1/its/ISO_TS_14816.asn9
-rw-r--r--epan/dissectors/asn1/its/ISO_TS_14906_Application.asn13
-rw-r--r--epan/dissectors/asn1/its/ISO_TS_19091.asn2846
-rw-r--r--epan/dissectors/asn1/its/ISO_TS_19321.asn213
-rw-r--r--epan/dissectors/asn1/its/ISO_TS_24534-3.asn7
-rw-r--r--epan/dissectors/asn1/its/ITS-Container.asn93
-rw-r--r--epan/dissectors/asn1/its/its.cnf47
-rw-r--r--epan/dissectors/asn1/its/packet-its-template.c21
-rw-r--r--epan/dissectors/asn1/its/packet-its-template.h1
-rw-r--r--epan/dissectors/packet-its.c4322
-rw-r--r--epan/dissectors/packet-its.h2
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__ */