DSRC.asn 182 KB
Newer Older
Thomas Ritter's avatar
Thomas Ritter committed
/** draft 001 of the ETSI-ITS-DSRC module for TS 103 301 V2.2.1 integrating:
* initial revision based on ASN.1 files of [ISO TS 19091] and [SAE J2735]
*/
-- Note: the above information will be deleted before publication

ritterth's avatar
ritterth committed
--! @options: no-fields-header
ritterth's avatar
ritterth committed

ETSI-ITS-DSRC {
  itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts103301 (103301) dsrc (6) major-version-2 (2) minor-version-1 (1)
ritterth's avatar
ritterth committed
}

DEFINITIONS AUTOMATIC TAGS::= BEGIN

IMPORTS

Longitude, Latitude, StationID, Iso3833VehicleType
ritterth's avatar
ritterth committed
FROM ETSI-ITS-CDD {
  itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) 102894 cdd (2) major-version-4 (4) minor-version-1 (1)
ritterth's avatar
ritterth committed
}
WITH SUCCESSORS

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 ETSI-ITS-DSRC-REGION {
  itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts103301 (103301) dsrc (6) region (1) major-version-2 (2) minor-version-1 (1)
ritterth's avatar
ritterth committed
}
WITH SUCCESSORS;
ritterth's avatar
ritterth committed
/**
* This information object class is an abstract template to instantiate region extension.
*
* @field &id: the identifier of the region type.
* @field &Type: the extension content
*
* @category: Basic Information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
REG-EXT-ID-AND-TYPE ::= CLASS {
  &id     RegionId UNIQUE,
  &Type
} WITH SYNTAX {&Type IDENTIFIED BY &id}

ritterth's avatar
ritterth committed
/**
* This DF represents a Region extension preceded by its type identifier and a lenght indicator.
*
* It shall include the following components:
*
* @field regionId: the identifier of the region.
* @field regExtValue: the extension content consistent with the region type.
*
* @category: Basic Information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
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} )
}

ritterth's avatar
ritterth committed
/**
ritterth's avatar
ritterth committed
* This DF is used to convey many types of geographic road information. At the current time its primary
ritterth's avatar
ritterth committed
* use is to convey one or more intersection lane geometry maps within a single message. The map message content
* includes such items as complex intersection descriptions, road segment descriptions, high speed curve outlines (used in
* curve safety messages), and segments of roadway (used in some safety applications). A given single MapData message
* may convey descriptions of one or more geographic areas or intersections. The contents of this message involve defining
* the details of indexing systems that are in turn used by other messages to relate additional information (for example, the
* signal phase and timing via the SPAT message) to events at specific geographic locations on the roadway.
*
Thomas Ritter's avatar
Thomas Ritter committed
* @field timeStamp: time reference
ritterth's avatar
ritterth committed
* @field msgIssueRevision: The MapData revision is defined by the data element `revision` for each intersection
Thomas Ritter's avatar
Thomas Ritter committed
*                          geometry (see [ISO TS 19091] G.8.2.4.1). Therefore, an additional revision indication of the overall
ritterth's avatar
ritterth committed
*                          MapData message is not used in this profile. It shall be set to "0" for this profile.
* @field layerType: There is no need to additionally identify the topological content by an additional identifier. The ASN.1
*                   definition of the data frames `intersections` and `roadSegments` are clearly defined and need no
*                   additional identifier. Therefore, this optional data element shall not be used in this profile.
Thomas Ritter's avatar
Thomas Ritter committed
* @field layerID: This profile extends the purpose of the `layerID` data element as defined in SAE J2735 as follows: For
ritterth's avatar
ritterth committed
*                 large intersections, the length of a MapData description may exceed the maximum data length of the
*                 communication message. Therefore, a fragmentation of the MapData message (at application layer) in
*                 two or more MapData fragments may be executed. If no MapData fragmentation is needed, the `layerID`
*                 shall not be used. For more details, see the definition of the data element @ref LayerID.
Thomas Ritter's avatar
Thomas Ritter committed
* @field intersections: All Intersection definitions.
* @field roadSegments: All roadway descriptions.
* @field dataParameters: Any meta data regarding the map contents.
* @field restrictionList: Any restriction ID tables which have established for these map entries
ritterth's avatar
ritterth committed
* @field regional: This profile extends the MapData message with the regional data element @ref MapData-addGrpC
*
* @category: Road topology information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
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,
  ...
}

ritterth's avatar
ritterth committed
/**
ritterth's avatar
ritterth committed
* This DF is used to encapsulate RTCM differential corrections for GPS and other radio
ritterth's avatar
ritterth committed
* navigation signals as defined by the RTCM (Radio Technical Commission For Maritime Services) special committee
* number 104 in its various standards. Here, in the work of DSRC, these messages are "wrapped" for transport on the
* DSRC media, and then can be re-constructed back into the final expected formats defined by the RTCM standard and
* used directly by various positioning systems to increase the absolute and relative accuracy estimates produced.
*
Thomas Ritter's avatar
Thomas Ritter committed
* @field msgCnt: monotonic incrementing identifier.
ritterth's avatar
ritterth committed
* @field rev: the specific edition of the standard that is being sent.
Thomas Ritter's avatar
Thomas Ritter committed
* @field timeStamp: time reference
ritterth's avatar
ritterth committed
* @field anchorPoint: Observer position, if needed.
Thomas Ritter's avatar
Thomas Ritter committed
* @field rtcmHeader: Precise antenna position and noise data for a rover
ritterth's avatar
ritterth committed
* @field msgs: one or more RTCM messages.
Thomas Ritter's avatar
Thomas Ritter committed
* @field regional: optional region specific data.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
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,
   ...
}

ritterth's avatar
ritterth committed
/**
ritterth's avatar
ritterth committed
* This DF is used to convey the current status of one or more signalized
ritterth's avatar
ritterth committed
* intersections. Along with the MapData message (which describes a full geometric layout of an intersection) the
* receiver of this message can determine the state of the signal phasing and when the next expected phase will occur.
* The SPAT message sends the current movement state of each active phase in the system as needed (such as values of
* what states are active and values at what time a state has begun/does begin earliest, is expected to begin most likely and
* will end latest). The state of inactive movements is not normally transmitted. Movements are mapped to specific
* approaches and connections of ingress to egress lanes and by use of the SignalGroupID in the MapData message
*
* The current signal preemption and priority status values (when present or active) are also sent. A more complete
* summary of any pending priority or preemption events can be found in the Signal Status message.
*
Thomas Ritter's avatar
Thomas Ritter committed
* @field timeStamp: time reference
* @field name: human readable name for this collection. to be used only in debug mode.
* @field intersections: sets of SPAT data (one per intersection)
* @field regional: optional region specific data.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
SPAT ::= SEQUENCE {
  timeStamp     MinuteOfTheYear OPTIONAL,
  name          DescriptiveName OPTIONAL,
  intersections IntersectionStateList,
  regional      SEQUENCE (SIZE(1..4)) OF
                RegionalExtension {{Reg-SPAT}} OPTIONAL,
  ...
}

ritterth's avatar
ritterth committed
/**
ritterth's avatar
ritterth committed
* This DF is a message sent by a DSRC equipped entity (such as a vehicle) to the RSU in a
ritterth's avatar
ritterth committed
* signalized intersection. It is used for either a priority signal request or a preemption signal request depending on the way
* each request is set. Each request defines a path through the intersection which is desired in terms of lanes and
* approaches to be used. Each request can also contain the time of arrival and the expected duration of the service.
* Multiple requests to multiple intersections are supported. The requestor identifies itself in various ways (using methods
* supported by the @refRequestorDescription data frame), and its current speed, heading and location can be placed in this
ritterth's avatar
ritterth committed
* structure as well. The specific request for service is typically based on previously decoding and examining the list of lanes
* and approaches for that intersection (sent in MAP messages). The outcome of all of the pending requests to a signal can
* be found in the Signal Status Message (SSM), and may be reflected in the SPAT message contents if successful.
*
Thomas Ritter's avatar
Thomas Ritter committed
* @field timeStamp: time reference
* @field second: time reference
* @field sequenceNumber: monotonic incrementing identifier
* @field requests: Request Data for one or more signalized intersections that support SRM dialogs
* @field requestor: 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
* @field regional: optional region specific data.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
SignalRequestMessage ::= SEQUENCE {
  timeStamp       MinuteOfTheYear  OPTIONAL,
  second          DSecond,
  sequenceNumber  MsgCount         OPTIONAL,
  requests        SignalRequestList OPTIONAL,
  requestor       RequestorDescription,
  regional        SEQUENCE (SIZE(1..4)) OF
                  RegionalExtension {{Reg-SignalRequestMessage}} OPTIONAL,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF is a message sent by an RSU in a signalized intersection. It is used to relate the current
* status of the signal and the collection of pending or active preemption or priority requests acknowledged by the controller.
* It is also used to send information about preemption or priority requests which were denied. This in turn allows a dialog
* acknowledgment mechanism between any requester and the signal controller. The data contained in this message allows
* other users to determine their "ranking" for any request they have made as well as to see the currently active events.
* When there have been no recently received requests for service messages, this message may not be sent. While the
* outcome of all pending requests to a signal can be found in the Signal Status Message, the current active event (if any)
* will be reflected in the SPAT message contents.
*
Thomas Ritter's avatar
Thomas Ritter committed
* @field timeStamp: time reference
* @field second: time reference
* @field sequenceNumber: monotonic incrementing identifier
* @field status: Status Data for one of more signalized intersections.
* @field regional: optional region specific data.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
SignalStatusMessage ::= SEQUENCE {
  timeStamp       MinuteOfTheYear  OPTIONAL,
  second          DSecond,
  sequenceNumber  MsgCount         OPTIONAL,
  status          SignalStatusList,
  regional        SEQUENCE (SIZE(1..4)) OF
                  RegionalExtension {{Reg-SignalStatusMessage}} OPTIONAL,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF is used to convey a recommended traveling approach speed to an intersection
* from the message issuer to various travelers and vehicle types. Besides support for various eco-driving applications, this
* allows transmitting recommended speeds for specialty vehicles such as transit buses.
*
Thomas Ritter's avatar
Thomas Ritter committed
* @field type: the type of advisory which this is.
* @field speed: See @ref SpeedAdvice 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
* @field confidence: A confidence value for the above speed
* @field distance: 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. Unit = 1 meter 
* @field class: the vehicle types to which it applies when absent, the AdvisorySpeed applies to all motor vehicle types
* @field regional: optional region specific data.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
AdvisorySpeed ::= SEQUENCE {
  type        AdvisorySpeedType,
  speed       SpeedAdvice OPTIONAL,
  confidence  SpeedConfidenceDSRC OPTIONAL,
  distance    ZoneLength OPTIONAL,
  class       RestrictionClassID OPTIONAL,
  regional    SEQUENCE (SIZE(1..4)) OF
              RegionalExtension {{Reg-AdvisorySpeed}} OPTIONAL,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF consists of a list of @ref AdvisorySpeed entries.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
AdvisorySpeedList ::= SEQUENCE (SIZE(1..16)) OF AdvisorySpeed

ritterth's avatar
ritterth committed
/**
* This DF is a collection of three offset values in an orthogonal coordinate system
* which describe how far the electrical phase center of an antenna is in each axis from a nearby known anchor point in units of 1 cm.
*
* When the antenna being described is on a vehicle, the signed offset shall be in the coordinate system defined in section 11.4.
ritterth's avatar
ritterth committed
*
* @field antOffsetX: a range of +- 20.47 meters.
* @field antOffsetY: a range of +- 2.55 meters.
* @field antOffsetZ: a range of +- 5.11 meters.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
AntennaOffsetSet ::= SEQUENCE {
   antOffsetX  Offset-B12,
   antOffsetY  Offset-B09,
   antOffsetZ  Offset-B10
ritterth's avatar
ritterth committed
}
ritterth's avatar
ritterth committed
/**
* This DE is used to contain information needed to compute one lane from another
* (hence the name). This concept is used purely as a means of saving size in the message payload. The new lane is
* expressed as an X,Y offset from the first point of the source lane. It can be optionally rotated and scaled. Any attribute
* information found within the node of the source lane list cannot be changed and must be reused.
*
* @field referenceLaneId: the lane ID upon which this computed lane will be based Lane Offset in X and Y direction
ritterth's avatar
ritterth committed
* @field offsetXaxis: A path X offset value for translations of the path's points when creating translated lanes.
* @field offsetYaxis: 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.
* @field rotateXY: 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.
* @field scaleXaxis: value for translations or zooming of the path's points. The values found in the reference lane
* @field scaleYaxis: 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.
Thomas Ritter's avatar
Thomas Ritter committed
* @field regional: optional region specific data.
ritterth's avatar
ritterth committed
*
* @note: The specified transformation shall be applied to the reference lane without any intermediary loss of precision
*        (truncation). The order of the transformations shall be: the East-West and North-South offsets, the scaling factors, and
*        finally the rotation.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
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,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF is used in the generic lane descriptions to provide a sequence of other defined
ritterth's avatar
ritterth committed
* lanes to which each lane connects beyond its stop point. See the Connection data frame entry for details. Note that this
* data frame is not used in some lane object types.
*
* @note: The assignment of lanes in the Connection structure shall start with the leftmost lane from the vehicle
*   perspective (the u-turn lane in some cases) followed by subsequent lanes in a clockwise assignment order. Therefore, the
*   rightmost lane to which this lane connects would always be listed last. Note that this order is observed regardless of which
*   side of the road vehicles use. If this structure is used in the lane description, then all valid lanes to which the subject lane
*   connects shall be listed.
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
ConnectsToList ::= SEQUENCE (SIZE(1..16)) OF Connection

ritterth's avatar
ritterth committed
/**
* The data concept ties a single lane to a single maneuver needed to reach it from another lane.
* It is typically used to connect the allowed maneuver from the end of a lane to the outbound lane so that these can be
* mapped to the SPAT message to which both lanes apply.
*
* @field lane: Index of the connecting lane.
*
* @field maneuver: This data element allows only the description of a subset of possible manoeuvres and therefore
*    represents an incomplete list of possible travel directions. The connecting `lane` data element gives the
*    exact information about the manoeuvre relation from ingress to egress lane. Therefore the "maneuver"
*    data element may be used only additionally if the travel direction of the manoeuvre is unanmbigoulsy
*    represented (e.g. left, right, straight, etc.).
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
ConnectingLane ::= SEQUENCE {
  lane      LaneID,
  maneuver  AllowedManeuvers OPTIONAL
}

ritterth's avatar
ritterth committed
/**
* This DF is used to combine/connect multiple physical lanes (i.e. within intersections or road
* segments). For signalized movements, the `connectsTo` data frame defines e.g. the relation between
* ingress and egress lanes within an intersection. It describes the allowed manoeuvres and includes the
* link (`signalGroup` identifier) between the @ref MapData and the @ref PAT message. The data frame is also used
* to describe the relation of lanes within a non signalized intersection (e.g. ingress lanes which are
* bypassing the conflict area and ending in an egress lane without signalization). Within a road segment,
* it is used to combine two or multiple physical lanes into a single lane object.
*
* @field connectingLane: 
ritterth's avatar
ritterth committed
* @field remoteIntersection: When the data element `remoteIntersection` is used, it indicates
*                            that the connecting lane belongs to another intersection. 
*                            (see clause [ISO TS 19091] G.9.1 for further explainations).
* @field signalGroup: 
* @field userClass: 
* @field connectionID: 
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
Connection ::= SEQUENCE {
  connectingLane     ConnectingLane,
  remoteIntersection IntersectionReferenceID OPTIONAL,
  signalGroup        SignalGroupID OPTIONAL,
  userClass          RestrictionClassID OPTIONAL,
  connectionID       LaneConnectionID OPTIONAL
}

ritterth's avatar
ritterth committed
/**
* This DF contains information about the the dynamic flow of traffic for the lane(s)
* and maneuvers in question (as determined by the @ref LaneConnectionID). Note that this information can be sent regarding
ritterth's avatar
ritterth committed
* any lane-to-lane movement; it need not be limited to the lanes with active (non-red) phases when sent.
*
* @field connectionID: the common connectionID used by all lanes to which this data applies
*                     (this value traces to ConnectsTo entries in lanes)
*
* @field queueLength: The distance from the stop line to the back edge of the last vehicle in the queue,
*                     as measured along the lane center line. (Unit = 1 meter, 0 = no queue)
*
* @field availableStorageLength: 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
ritterth's avatar
ritterth committed
*                     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
ritterth's avatar
ritterth committed
*                     of a red light (downstream).
*                     The element nextTime in @ref TimeChangeDetails in the containing data frame contains the next
*                     timemark at which an active phase is expected, a form of storage flush interval.
Thomas Ritter's avatar
Thomas Ritter committed
*                     (Unit = 1 meter, 0 = no space remains)
ritterth's avatar
ritterth committed
*
* @field waitOnStop:  If true, the vehicles on this specific connecting
*                     maneuver have to stop on the stop-line and not to enter the collision area
ritterth's avatar
ritterth committed
*
* @field pedBicycleDetect: 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.
ritterth's avatar
ritterth committed
*
* @field regional:    This data element includes additional data content @ref ConnectionManeuverAssist-addGrpC defined in
Thomas Ritter's avatar
Thomas Ritter committed
*                     this profile (see [ISO TS 19091] G.5.1.1). The content is included using the regional extension framework as defined in
ritterth's avatar
ritterth committed
*                     @ref ConnectionManeuverAssist-addGrpC is used for position feedback to moving ITS stations for executing
*                     safe manoeuvres and is included for this purpose in the data element "intersectionState"
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
ConnectionManeuverAssist ::= SEQUENCE {
  connectionID         LaneConnectionID,
  queueLength          ZoneLength OPTIONAL,
  availableStorageLength ZoneLength OPTIONAL,
  waitOnStop           WaitOnStopline OPTIONAL,
  pedBicycleDetect     PedestrianBicycleDetect OPTIONAL,
  regional  SEQUENCE (SIZE(1..4)) OF
            RegionalExtension {{Reg-ConnectionManeuverAssist}} OPTIONAL,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF is used to provide basic (static) information on how a map fragment was processed or determined.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
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,
  ...
}

ritterth's avatar
ritterth committed
/**
* The DSRC style date is a compound value consisting of finite-length sequences of integers (not characters) of the
* form: "yyyy, mm, dd, hh, mm, ss (sss+)" - as defined below.
*
* @note: Note that some elements of this structure may not be sent when not needed. At least one element shall be present.
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
DDateTime ::= SEQUENCE {
   year    DYear    OPTIONAL,
   month   DMonth   OPTIONAL,
   day     DDay     OPTIONAL,
   hour    DHour    OPTIONAL,
   minute  DMinute  OPTIONAL,
   second  DSecond  OPTIONAL,
   offset  DOffset  OPTIONAL
ritterth's avatar
ritterth committed
 }

/**
* This DF is a sequence of lane IDs for lane objects that are activated in the current map
* configuration. These lanes, unlike most lanes, have their RevocableLane bit set to one (asserted). Such lanes are not
* considered to be part of the current map unless they are in the Enabled Lane List. This concept is used to describe all the
* possible regulatory states for a given physical lane. For example, it is not uncommon to enable or disable the ability to
* make a right hand turn on red during different periods of a day. Another similar example would be a lane which is used for
* driving during one period and where parking is allowed at another. Traditionally, this information is conveyed to the vehicle
* driver by local signage. By using the Enabled Lane List data frame in conjunction with the RevocableLane bit and
* constructing a separate lane object in the intersection map for each different configuration, a single unified map can be
* developed and used.
*
* Contents are the unique ID numbers for each lane object which is 'active' as part of the dynamic map contents.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
EnabledLaneList ::= SEQUENCE (SIZE(1..16)) OF LaneID

ritterth's avatar
ritterth committed
/**
* A complete report of the vehicle's position, speed, and heading at an instant in time. Used in the probe vehicle
* message (and elsewhere) as the initial position information. Often followed by other data frames that may provide offset
* path data.
*
* @field utcTime:   time with mSec precision
* @field long:      Longitude in 1/10th microdegree
* @field lat:       Latitude in 1/10th microdegree
* @field elevation: Elevation in units of 0.1 m
* @field heading:   Heading value 
* @field speed:     Speed value
* @field posAccuracy:      position accuracy
* @field timeConfidence:   time confidence
* @field posConfidence:    position confidence
* @field speedConfidence:  speed confidence 
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
FullPositionVector ::= SEQUENCE {
   utcTime             DDateTime OPTIONAL,
ritterth's avatar
ritterth committed
   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,
   ...
ritterth's avatar
ritterth committed
}
ritterth's avatar
ritterth committed
/**
* This DF is used for all types of lanes, e.g. motorized vehicle lanes, crosswalks, medians. The
* GenericLane describes the basic attribute information of the lane. The LaneID value for each lane is unique within an
* intersection. One use for the LaneID is in the SPAT message, where a given signal or movement phase is mapped to a
* set of applicable lanes using their respective LaneIDs. The NodeList2 data frame includes a sequence of offset points (or
* node points) representing the center line path of the lane. As described in this standard, node points are sets of variable
* sized delta orthogonal offsets from the prior point in the node path. (The initial point is offset from the LLH anchor point
* used in the intersection.) Each node point may convey optional attribute data as well. The use of attributes is described
* further in the Node definition, and in a later clause, but an example use would be to indicate a node point where the lane
* width changes.
*
* It should be noted that a "lane" is an abstract concept that can describe objects other than motorized vehicle lanes, and
* that the generic lane structure (using features drawn from Japanese usage) also allows combining multiple physical lanes
* into a single lane object. In addition, such lanes can describe connectivity points with other lanes beyond a single
* intersection, extending such a lane description over multiple nearby physical intersections and side streets which
* themselves may not be equipped or assigned an index number in the regional intersection numbering system. (See the
* ConnectsTo entry for details) This has value when describing a broader service area in terms of the roadway network,
* probably with less precision and detail.
*
* @field laneID:  The unique ID number assigned to this lane object
* @field name:    often for debug use only but at times used to name ped crossings
* @field ingressApproach:  inbound Approach ID to which this lane belongs
* @field egressApproach: outbound Approach ID to which this lane belongs
* @field 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
* @field maneuvers: This data element allows only the description of a subset of possible manoeuvres and therefore
*                    reperesents an incomplete list of possible travel directions. The connecting `lane` data element gives
*                    the exact information about the manoeuvre relation from ingress to egress lane. Therefore the
*                    "maneuver" data element is used only additionally if the travel direction of the manoeuvre is
* @field nodeList: 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.
* @field connectsTo: 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.
* @field overlays: 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
Thomas Ritter's avatar
Thomas Ritter committed
* @field regional: optional region specific data.
ritterth's avatar
ritterth committed
*
* @note: The data elements `ingressApproach` and `egressApproach` are used for grouping lanes whin an
*       approach (e.g. lanes defined in travel direction towards the intersection, lanes in exiting direction and
*       cross walks). For a bidirectrional lane (e.g. bike lane) both dataelements are used for the same lane. The
*       integer value used for identifying the `ingressApproach` and the `egressAproach`, based on the
*       topology, may be e.g. the same for all lanes within an approach of an intersection.
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
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,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF is used to specify the index of either a single approach or a single lane at
* which a service is needed. This is used, for example, with the Signal Request Message (SRM) to indicate the inbound
* and outbound points by which the requestor (such as a public safety vehicle) can traverse an intersection.
*
Thomas Ritter's avatar
Thomas Ritter committed
* @field lane: the representation of the point as lane identifier.
* @field approach: the representation of the point as approach identifier.
* @field connection: the representation of the point as connection identifier.
*
ritterth's avatar
ritterth committed
* @note: Note that the value of zero has a reserved meaning for these two indexing systems. In both cases, this value
*    is used to indicate the concept of "none" in use. When the value is of zero is used here, it implies the center of the
*    intersection itself. For example, requesting an outbound point of zero implies the requestor wishes to have the intersection
*    itself be the destination. Alternatively, an inbound value of zero implies the requestor is within the intersection itself and
*    wishes to depart for the outbound value provided. This special meaning for the value zero can be used in either the lane
*    or approach with the same results.
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
IntersectionAccessPoint ::= CHOICE {
  lane       LaneID,
  approach   ApproachID,
  connection LaneConnectionID,
  ...
}

ritterth's avatar
ritterth committed
/**
* A complete description of an intersection's roadway geometry and its allowed navigational paths (independent of
* any additional regulatory restrictions that may apply over time or from user classification).
*
* @field name: For debug use only
* @field id: A globally unique value set, consisting of a regionID and intersection ID assignment
Thomas Ritter's avatar
Thomas Ritter committed
* @field revision: This profile extends the purpose of the `revision` data element as defined in SAE J2735 as follows.
ritterth's avatar
ritterth committed
*           The revision data element is used to communicate the valid release of the intersection geometry
*           description. If there are no changes in the deployed intersection description, the same revision counter
*           is transmitted. Due to a revised deployment of the intersection description (e.g. new lane added, ID's
*           changed, etc.), the revision is increased by one. After revision equal to 127, the increment restarts by 0.
*           The intersection geometry and the signal phase and timing information is related each other. Therefore,
*           the revision of the intersection geometry of the MapData message shall be the same as the revision of
Thomas Ritter's avatar
Thomas Ritter committed
*           the intersection state of the SPAT (see data element `revision` of `DF_IntersectionState` in [ISO TS 19091] G.8.2.9)
ritterth's avatar
ritterth committed
* @field refPoint: The reference from which subsequent data points are offset until a new point is used.
* @field laneWidth: Reference width used by all subsequent lanes unless a new width is given
* @field speedLimits: Reference regulatory speed limits used by all subsequent lanes unless a new speed is given
* @field laneSet: 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)
* @field preemptPriorityData: This DF is not used.
Thomas Ritter's avatar
Thomas Ritter committed
* @field regional: optional region specific data.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
IntersectionGeometry ::= SEQUENCE {
  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,
  ...
}

ritterth's avatar
ritterth committed
/**
ritterth's avatar
ritterth committed
* This DF consists of a list of IntersectionGeometry entries.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
IntersectionGeometryList ::= SEQUENCE (SIZE(1..32)) OF IntersectionGeometry

ritterth's avatar
ritterth committed
/**
ritterth's avatar
ritterth committed
* This DF conveys the combination of an optional RoadRegulatorID and of an
ritterth's avatar
ritterth committed
* IntersectionID that is unique within that region. When the RoadRegulatorID is present the IntersectionReferenceID is
* guaranteed to be globally unique.
*
* @field region: a globally unique regional assignment value typical assigned to a regional DOT authority
*                the value zero shall be used for testing needs
* @field id: a unique mapping to the intersection in question within the above region of use
*
* @note: A fully qualified intersection consists of its regionally unique ID (the IntersectionID) and its region ID (the
*        RoadRegulatorID). Taken together these form a unique value which is never repeated.
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
IntersectionReferenceID ::= SEQUENCE {
  region  RoadRegulatorID OPTIONAL,
  id      IntersectionID
}

ritterth's avatar
ritterth committed
/**
ritterth's avatar
ritterth committed
* This DF is used to convey all the SPAT information for a single intersection. Both current
ritterth's avatar
ritterth committed
* and future data can be sent.
*
* @field name: human readable name for intersection to be used only in debug mode
* @field id: 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
* @field revision: The data element `revision` is used to communicate the actual valid release of the intersection
*                  description. If there are no changes in the deployed intersection description, almost the same revision
*                  counter is transmitted. Due to a revised deployment of the intersection description (e.g. introduction of
*                  additional signal state element), the revision is increased by one. After revision equal to 127, the
*                  increment leads to 0 (due to the element range).
*                  The intersection state and the intersection geometry is related to each other. Therefore, the revision of
*                  the intersection state shall be the same as the revision of the intersection geometry (see the data
Thomas Ritter's avatar
Thomas Ritter committed
*                  element `revision` of `DF_IntersectionGeometry` in [ISO TS 19091] G.8.2.6).
ritterth's avatar
ritterth committed
* @field status: general status of the controller(s)
* @field moy: Minute of current UTC year, used only with messages to be archived.
* @field timeStamp: the mSec point in the current UTC minute that this message was constructed.
* @field enabledLanes: a list of lanes where the RevocableLane bit has been set which are now active and
*                      therefore part of the current intersection
* @field states: 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
* @field maneuverAssistList: Assist data
Thomas Ritter's avatar
Thomas Ritter committed
* @field regional: optional region specific data.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
IntersectionState ::= SEQUENCE {
  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,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF consists of a list of IntersectionState entries.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
IntersectionStateList ::= SEQUENCE (SIZE(1..32)) OF  IntersectionState

ritterth's avatar
ritterth committed
/**
* This DF holds all of the constant attribute information of any lane object (as well as
* denoting the basic lane type itself) within a single structure. Constant attribute information are those values which do not
* change over the path of the lane, such as the direction of allowed travel. Other lane attribute information can change at or
* between each node.
* The structure consists of three element parts as follows: LaneDirection specifies the allowed directions of travel, if any.
* LaneSharing indicates whether this lane type is shared with other types of travel modes or users. The lane type is defined
* in LaneTypeAttributes, along with additional attributes specific to that type.
* The fundamental type of lane object is described by the element selected in the LaneTypeAttributes data concept.
* Additional information specific or unique to a given lane type can be found there as well. A regional extension is provided
* as well.
* Note that combinations of regulatory maneuver information such as "both a left turn and straight ahead movement are
* allowed, but never a u-turn," are expressed by the AllowedManeuvers data concept which typically follows after this
* element and in the same structure. Note that not all lane objects require this information (for example a median). The
* various values are set via bit flags to indicate the assertion of a value. Each defined lane type contains the bit flags
* suitable for its application area.
* Note that the concept of LaneSharing is used to indicate that there are other users of this lane with equal regulatory rights
* to occupy the lane (which is a term this standard does not formally define since it varies by world region). A typical case is
* a light rail vehicle running along the same lane path as motorized traffic. In such a case, motor traffic may be allowed
* equal access to the lane when a train is not present. Another case would be those intersection lanes (at the time of writing
* rather unusual) where bicycle traffic is given full and equal right of way to an entire width of motorized vehicle lane. This
* example would not be a bike lane or bike box in the traditional sense.
*
Thomas Ritter's avatar
Thomas Ritter committed
* @field directionalUse: directions of lane use
* @field sharedWith: co-users of the lane path
* @field laneType: specific lane type data
Thomas Ritter's avatar
Thomas Ritter committed
* @field regional: optional region specific data.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
LaneAttributes ::= SEQUENCE {
  directionalUse  LaneDirection,
  sharedWith      LaneSharing,
  laneType        LaneTypeAttributes,
  regional        RegionalExtension {{Reg-LaneAttributes}} OPTIONAL
}

ritterth's avatar
ritterth committed
/**
* This DF is used to relate an attribute and a control value at a node point or along a
* lane segment from an enumerated list of defined choices. It is then followed by a defined data value associated with it and
* which is defined elsewhere in this standard.
*
* @field pathEndPointAngle: adjusts final point/width slant of the lane to align with the stop line
* @field laneCrownPointCenter: sets the canter of the road bed from centerline point
* @field laneCrownPointLeft: sets the canter of the road bed from left edge
* @field laneCrownPointRight: sets the canter of the road bed from right edge
* @field laneAngle: the angle or direction of another lane this is required when a merge point angle is required
ritterth's avatar
ritterth committed
* @field speedLimits: Reference regulatory speed limits used by all segments
Thomas Ritter's avatar
Thomas Ritter committed
* @field regional: optional region specific data.
*
ritterth's avatar
ritterth committed
* @note: This data concept handles a variety of use case needs with a common and consistent message pattern. The
*     typical use of this data concept (and several similar others) is to inject the selected Attribute into the spatial description of
*     a lane's center line path (the segment list). In this way, attribute information which is true for a portion of the overall lane
*     can be described when needed. This attribute information applies from the node point in the stream of segment data until
*     changed again. Denoting the porous aspects of a lane along its path as it merges with another lane would be an example
*     of this use case. In this case the start and end node points would be followed by suitable segment attributes. Re-using a
*     lane path (previously called a computed lane) is another example. In this case the reference lane to be re-used appears
*     as a segment attribute followed by the lane value. It is then followed by one or more segment attributes which relate the
*     positional translation factors to be used (offset, rotate, scale) and any further segment attribute changes.
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
LaneDataAttribute ::= CHOICE {
   pathEndPointAngle        DeltaAngle,
   laneCrownPointCenter     RoadwayCrownAngle,
   laneCrownPointLeft       RoadwayCrownAngle,
   laneCrownPointRight      RoadwayCrownAngle,
   laneAngle                MergeDivergeNodeAngle,
   speedLimits              SpeedLimitList,
   regional  SEQUENCE (SIZE(1..4)) OF
             RegionalExtension {{Reg-LaneDataAttribute}},
   ...
}

ritterth's avatar
ritterth committed
/**
ritterth's avatar
ritterth committed
* This DF consists of a list of LaneDataAttribute entries.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
LaneDataAttributeList ::= SEQUENCE (SIZE(1..8)) OF LaneDataAttribute

ritterth's avatar
ritterth committed
/**
* This DF consists of a list of GenericLane entries.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
LaneList ::= SEQUENCE (SIZE(1..255)) OF GenericLane

ritterth's avatar
ritterth committed
/**
* This DE is used to denote the presence of other user types (travel modes) who have an
* equal right to access and use the lane. There may also be another lane object describing their use of a lane. This data
* concept is used to indicate lanes and/or users that travel along the same path, and not those that simply cross over the
* lane's segments path (such as a pedestrian crosswalk crossing a lane for motor vehicle use). The typical use is to alert
* the user of the MAP data that additional traffic of another mode may be present in the same spatial lane.
*
* Bits used:
* - 0 - overlappingLaneDescriptionProvided: 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
* - 1 - multipleLanesTreatedAsOneLane: 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:
* - 2 - otherNonMotorizedTrafficTypes: horse drawn etc.
* - 3 - individualMotorizedVehicleTraffic:
* - 4 - busVehicleTraffic:
* - 5 - taxiVehicleTraffic:
* - 6 - pedestriansTraffic:
* - 7 - cyclistVehicleTraffic:
* - 8 - trackedVehicleTraffic:
* - 9 - pedestrianTraffic:
*
* @note: All zeros would indicate `not shared` and `not overlapping`
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
LaneSharing ::= BIT STRING {
   overlappingLaneDescriptionProvided  (0),
   multipleLanesTreatedAsOneLane       (1),
   otherNonMotorizedTrafficTypes       (2),
   individualMotorizedVehicleTraffic   (3),
   busVehicleTraffic                   (4),
   taxiVehicleTraffic                  (5),
   pedestriansTraffic                  (6),
   cyclistVehicleTraffic               (7),
   trackedVehicleTraffic               (8),
   pedestrianTraffic                   (9)
} (SIZE (10))

ritterth's avatar
ritterth committed
/**
* This DF is used to hold attribute information specific to a given lane type. It is typically
* used in the DE_LaneAttributes data frame as part of an overall description of a lane object. Information unique to the
* specific type of lane is found here. Information common to lanes is expressed in other entries. The various values are set
* by bit flags to indicate the assertion of a value. Each defined lane type contains bit flags suitable for its application area.
*
* @field vehicle:         motor vehicle lanes
*
* @field crosswalk:       pedestrian crosswalks
*
* @field bikeLane:        bike lanes
*
* @field sidewalk:        pedestrian sidewalk paths
*
* @field median:          medians & channelization
*
* @field striping:        roadway markings
*
* @field trackedVehicle:  trains and trolleys
*
* @field parking:         parking and stopping lanes
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
LaneTypeAttributes ::= CHOICE {
  vehicle        LaneAttributes-Vehicle,
  crosswalk      LaneAttributes-Crosswalk,
  bikeLane       LaneAttributes-Bike,
  sidewalk       LaneAttributes-Sidewalk,
  median         LaneAttributes-Barrier,
  striping       LaneAttributes-Striping,
  trackedVehicle LaneAttributes-TrackedVehicle,
  parking        LaneAttributes-Parking,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF consists of a list of @ref ConnectionManeuverAssist entries.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
ManeuverAssistList ::= SEQUENCE (SIZE(1..16)) OF ConnectionManeuverAssist

ritterth's avatar
ritterth committed
/**
* This DF contains details about a single movement. It is used by the movement state to
* convey one of number of movements (typically occurring over a sequence of times) for a SignalGroupID.
*
Thomas Ritter's avatar
Thomas Ritter committed
* @field eventState: Consisting of: Phase state (the basic 11 states), Directional, protected, or permissive state
* @field timing: Timing Data in UTC time stamps for event includes start and min/max end times of phase confidence and estimated next occurrence
* @field speeds: various speed advisories for use by general and specific types of vehicles supporting green-wave and other flow needs
* @field regional: optional region specific data.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
MovementEvent ::= SEQUENCE {
  eventState   MovementPhaseState,
  timing       TimeChangeDetails OPTIONAL,
  speeds       AdvisorySpeedList OPTIONAL,
  regional     SEQUENCE (SIZE(1..4)) OF
               RegionalExtension {{Reg-MovementEvent}} OPTIONAL,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF consists of a list of @ref MovementEvent entries.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
MovementEventList ::= SEQUENCE (SIZE(1..16)) OF MovementEvent

ritterth's avatar
ritterth committed
/**
* This DF consists of a list of @ref MovementState entries.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
MovementList ::= SEQUENCE (SIZE(1..255)) OF MovementState

ritterth's avatar
ritterth committed
/**
* This DF is used to convey various information about the current or future movement state of
* a designated collection of one or more lanes of a common type. This is referred to as the GroupID. Note that lane object
* types supported include both motorized vehicle lanes as well as pedestrian lanes and dedicated rail and transit lanes. Of
* the reported data elements, the time to change (the time remaining in the current state) is often of the most value. Lanes
* with a common state (typically adjacent sets of lanes in an approach) in a signalized intersection will have individual lane
* values such as total vehicle counts, summed. It is used in the SPAT message to convey every active movement in a
* given intersection so that vehicles, when combined with certain map information, can determine the state of the signal phases.
ritterth's avatar
ritterth committed
*
Thomas Ritter's avatar
Thomas Ritter committed
* @field movementName: uniquely defines movement by name human readable name for intersection to be used only in debug mode.
* @field signalGroup: is used to map to lists of lanes (and their descriptions) which this MovementState data applies to.
* @field state-time-speed: Consisting of sets of movement data with @ref SignalPhaseState, @ref TimeChangeDetail and @ref AdvisorySpeed
*                          *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.
* @field maneuverAssistList: This information may also be placed in the @ref IntersectionState when common information applies to different lanes in the same way
* @field regional: optional region specific data.
ritterth's avatar
ritterth committed
*
* @note: Note that the value given for the time to change will vary in many actuated signalized intersections based on
ritterth's avatar
ritterth committed
*      the sensor data received during the phase. The data transmitted always reflects the then most current timemark value
*      (which is the point in UTC time when the change will occur). As an example, in a phase which may vary from 15 to 25
*      seconds of duration based on observed traffic flows, a time to change value of 15 seconds in the future might be
*      transmitted for many consecutive seconds (and the time mark value extended for as much as 10 seconds depending on
*      the extension time logic used by the controller before it either times out or gaps out), followed by a final time mark value
*      reflecting the decreasing values as the time runs out, presuming the value was not again extended to a new time mark
*      due to other detection events. The time to change element can therefore generally be regarded as a guaranteed minimum
*      value of the time that will elapse unless a preemption event occurs.
ritterth's avatar
ritterth committed
*      In use, the @ref SignalGroupID element is matched to lanes that are members of that ID. The type of lane (vehicle, crosswalk,
*      etc.) is known by the lane description as well as its allowed maneuvers and any vehicle class restrictions. Every lane type
*      is treated the same way (cross walks map to suitable meanings, etc.). Lane objects which are not part of the sequence of
*      signalized lanes do not appear in any GroupID. The visual details of how a given signal phase is presented to a mobile
*      user will vary based on lane type and with regional conventions. Not all signal states will be used in all regional
*      deployments. For example, a pre-green visual indication is not generally found in US deployments. Under such operating
*      conditions, the unused phase states are simply skipped.
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
MovementState ::= SEQUENCE {
  movementName       DescriptiveName OPTIONAL,
  signalGroup        SignalGroupID,
  state-time-speed   MovementEventList,
  maneuverAssistList ManeuverAssistList OPTIONAL,
  regional           SEQUENCE (SIZE(1..4)) OF
                     RegionalExtension {{Reg-MovementState}} OPTIONAL,
  ...
}

ritterth's avatar
ritterth committed
/**
* All the node attributes defined in this DF are valid in the direction of
* node declaration and not in driving direction (i.e. along the sequence of the declared nodes). E.g. node
* attributes of an `ingress` or an `egress` lane are defined from the conflict area (first node) to the
* outside of the intersection (last node). Node attributes with ‘left’ and ‘right’ in their name are also
* defined in the direction of the node declaration. This allows using attributes in a unambigious way also
* for lanes with biderctional driving. See the following attribuets examples for additianl explanations.
*
Thomas Ritter's avatar
Thomas Ritter committed
* @field localNode: Attribute states which pertain to this node point
* @field disabled: Attribute states which are disabled at this node point
* @field enabled: Attribute states which are enabled at this node point and which remain enabled until disabled or the lane ends
* @field data: 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
* @field dWidth: 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.
* @field dElevation: 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
* @field regional: optional region specific data.