DSRC.asn 182 KB
Newer Older
Thomas Ritter's avatar
Thomas Ritter committed
*
ritterth's avatar
ritterth committed
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
NodeAttributeSetXY ::= SEQUENCE {
  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,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DE is an enumerated list of attributes which can pertain to the current node
* point. The 'scope' of these values is limited to the node itself. That is, unlike other types of attributes which can be
* switched on or off at any given node (and hence pertains to one or more segments), the DE_NodeAttribute is local to the
* node in which it is found. These attributes are all binary flags in that they do not need to convey any additional data. Other
* attributes allow sending short data values to reflect a setting which is set and persists in a similar fashion.
*
ritterth's avatar
ritterth committed
*  - reserved:             do not use
ritterth's avatar
ritterth committed
*  - stopLine:             point where a mid-path stop line exists. See also 'do not block' for segments
*  - 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
*  - mergePoint:           merge with 1 or more lanes
*  - divergePoint:         diverge with 1 or more lanes
*  - downstreamStopLine:   downstream intersection (a 2nd intersection) stop line
*  - downstreamStartNode:  downstream intersection (a 2nd intersection) start node
ritterth's avatar
ritterth committed
*  - 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)
*  - hydrantPresent:       Or other services access
*
* @note: See usage examples in [ISO TS 19091] G.8.2.8
ritterth's avatar
ritterth committed
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
NodeAttributeXY ::= ENUMERATED {
  reserved,
  stopLine,
  roundedCapStyleA,
  roundedCapStyleB,
  mergePoint,
  divergePoint,
  downstreamStopLine,
  downstreamStartNode,
  closedToTraffic,
  safeIsland,
  curbPresentAtStepOff,
  hydrantPresent,
  ...
}

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

ritterth's avatar
ritterth committed
/**
* A 64-bit node type with lat-long values expressed in one tenth of a micro degree.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
Node-LLmD-64b ::= SEQUENCE {
  lon  Longitude,
  lat  Latitude
}

ritterth's avatar
ritterth committed
/**
* A 20-bit node type with offset values from the last point in X and Y.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
Node-XY-20b ::= SEQUENCE {
  x  Offset-B10,
  y  Offset-B10
}

ritterth's avatar
ritterth committed
/**
* A 22-bit node type with offset values from the last point in X and Y.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
Node-XY-22b ::= SEQUENCE {
  x  Offset-B11,
  y  Offset-B11
}

ritterth's avatar
ritterth committed
/**
* A 24-bit node type with offset values from the last point in X and Y.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
Node-XY-24b ::= SEQUENCE {
  x  Offset-B12,
  y  Offset-B12
}

ritterth's avatar
ritterth committed
/**
* A 26-bit node type with offset values from the last point in X and Y.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
Node-XY-26b ::= SEQUENCE {
  x  Offset-B13,
  y  Offset-B13
}

ritterth's avatar
ritterth committed
/**
* A 28-bit node type with offset values from the last point in X and Y.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
Node-XY-28b ::= SEQUENCE {
  x  Offset-B14,
  y  Offset-B14
}

ritterth's avatar
ritterth committed
/**
* A 32-bit node type with offset values from the last point in X and Y.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
Node-XY-32b ::= SEQUENCE {
  x  Offset-B16,
  y  Offset-B16
}

ritterth's avatar
ritterth committed
/**
* This DF provides the sequence of signed offset node point values for determining the Xs and Ys
* (and possibly Width or Zs when present), using the then current Position3D object to build a path for the centerline of
* the subject lane type. Each X,Y point is referred to as a Node Point. The straight line paths between these points are
* referred to as Segments.
* All nodes may have various optional attributes the state of which can vary along the path and which are enabled and
* disabled by the sequence of objects found in the list of node structures. Refer to the explanatory text in Section 11 for a
* description of how to correctly encode and decode this type of the data element. As a simple example, a motor vehicle
* lane may have a section of the overall lane path marked "do not block", indicating that vehicles should not come to a stop
* and remain in that region. This is encoded in the Node data structures by an element in one node to indicate the start of
* the "do not block" lane attributes at a given offset, and then by a termination element when this attribute is set false. Other
* types of elements in the segment choice allow inserting attributes containing data values affecting the segment or the
* node.
*
* @field nodes: a lane made up of two or more XY node points and any attributes defined in those nodes
* @field computed: a lane path computed by translating the data defined by another lane
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
NodeListXY ::= CHOICE {
  nodes     NodeSetXY,
  computed  ComputedLane,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF presents a structure to hold different sized data frames for a single node
* point in a lane. Nodes are described in terms of X and Y offsets in units of 1 centimeter (when zoom is 1:1). Changes in
* elevation and in the lane width can be expressed in a similar way with the optional Attributes data entry which appears
* alongside the NodeOffsetPoint in use.
*
* The choice of which node type is driven by the magnitude (size) of the offset data to be encoded. When the distance from
* the last node point is smaller, the smaller entries can (and should) be chosen
* Each single selected node is computed as an X and Y offset from the prior node point unless one of the entries reflecting
* a complete lat-long representation is selected. In this case, subsequent entries become offsets from that point. This ability
* was added for assistance with the development, storage, and back office exchange of messages where message size is
* not a concern and should not be sent over the air due to its additional message payload size.
*
* The general usage guidance is to construct the content of each lane node point with the smallest possible element to
* conserve message size. However, using an element which is larger than needed is not a violation of the ASN.1 rules.
*
* @field node-XY1:    node is within 5.11m of last node
* @field node-XY2:    node is within 10.23m of last node
* @field node-XY3:    node is within 20.47m of last node
* @field node-XY4:    node is within 40.96m of last node
* @field node-XY5:    node is within 81.91m of last node
* @field node-XY6:    node is within 327.67m of last node
* @field node-LatLon: node is a full 32b Lat/Lon range
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
NodeOffsetPointXY ::= CHOICE {
  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}}
}

ritterth's avatar
ritterth committed
/**
* This DF presents a structure to hold data for a single node point in a path. Each selected node
* has an X and Y offset from the prior node point (or a complete lat-long representation in some cases) as well as optional
* attribute information. The node list for a lane (or other object) is made up of a sequence of these to describe the desired
* path. The X,Y points are selected to reflect the centerline of the path with sufficient accuracy for the intended applications.
* Simple lanes can be adequately described with only two node points, while lanes with curvature may require more points.
* Changes to the lane width and elevation can be expressed in the NodeAttributes entry, as well as various attributes that
* pertain to either the current node point or to one of more subsequent segments along the list of lane node points. As a
* broad concept, NodeAttributes are used to describe aspects of the lane that persist for only a portion of the overall lane
* path (either at a node or over a set of segments).
* A further description of the use of the NodeOffsetPoint and the Attributes data concepts can be found in the data
* dictionary entries for each one. Note that each allows regional variants to be supported as well.
*
* @field delta:      A choice of which X,Y offset value to use this includes various delta values as well a regional choices.
* @field attributes: Any optional Attributes which are needed. This includes changes to the current lane width and elevation.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
NodeXY ::= SEQUENCE {
  delta       NodeOffsetPointXY,
  attributes  NodeAttributeSetXY OPTIONAL,
  ...
}

ritterth's avatar
ritterth committed
/**
ritterth's avatar
ritterth committed
* This DF consists of a list of Node entries using XY offsets.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
NodeSetXY ::= SEQUENCE (SIZE(2..63)) OF NodeXY

/** This DF is the ODG Addition for Legancy R09 telegrams.
* 
* @field reportingPoint: reporting point as of R09 (maps to R09 field M Meldepunktnummer)
* @field priorityLevel:  priority level as of R09 (maps to R09 field P Prioritaet)
* @field length:         train length point as of R09 (maps to R09 field A Zuglaenge)
* @field route:          route as of R09 (maps to R09 field K Kursnummer)
* @field line:           line as of R09 (maps to R09 field L Liniennummer)
* @field direction:      direction as of R09 (maps to R09 field H Richtung von Hand)
* @field tour:           tour as of R09 (maps to R09 field Z Zielnummer)
* @field version:        version of R09
*
* @category: Infrastructure information
* @revision: V2.2.1
*/
OcitRequestorDescriptionContainer ::= SEQUENCE {
  reportingPoint      ReportingPoint OPTIONAL,
  priorityLevel       PriorityLevel OPTIONAL,
  length              TrainLength OPTIONAL,
  route               RouteNumber OPTIONAL,
  line                LineNumber OPTIONAL,
  direction           TransitDirection OPTIONAL,
  tour                TourNumber OPTIONAL,
  version             VersionId OPTIONAL,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF is a sequence of lane IDs which refers to lane objects that overlap or overlay the current lane's spatial path.
*
* Contains 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.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
OverlayLaneList ::= SEQUENCE (SIZE(1..5)) OF LaneID

ritterth's avatar
ritterth committed
/**
* This DF consists of various parameters of quality used to model the accuracy of the
* positional determination with respect to each given axis.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
PositionalAccuracy ::= SEQUENCE {
   semiMajor     SemiMajorAxisAccuracy,
   semiMinor     SemiMinorAxisAccuracy,
   orientation   SemiMajorAxisOrientation
}

ritterth's avatar
ritterth committed
/**
* This DF combines multiple related bit fields into a single concept.
*
* @field pos:       confidence for both horizontal directions
* @field elevation: confidence for vertical direction
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
PositionConfidenceSet ::= SEQUENCE {
ritterth's avatar
ritterth committed
   pos        PositionConfidence,
ritterth's avatar
ritterth committed
   elevation  ElevationConfidence
ritterth's avatar
ritterth committed
}
ritterth's avatar
ritterth committed
/**
* This DF provides a precise location in the WGS-84 coordinate system, from which short
* offsets may be used to create additional data using a flat earth projection centered on this location. Position3D is typically
* used in the description of maps and intersections, as well as signs and traveler data.
*
Thomas Ritter's avatar
Thomas Ritter committed
* @field lat: Latitude in 1/10th microdegrees
* @field long: Longitude in 1/10th microdegrees
* @field elevation: The elevation information is defined by the regional extension (see module ETSI-ITS-DSRC-AddGrpC). 
*                   Therefore, the `elevation` data element of `DF_Position3D` 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
Position3D ::= SEQUENCE {
  lat        Latitude,
  long       Longitude,
  elevation  Elevation  OPTIONAL,
  regional   SEQUENCE (SIZE(1..4)) OF
             RegionalExtension {{Reg-Position3D}} OPTIONAL,
  ...
}

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

ritterth's avatar
ritterth committed
/**
* This DF is used to convey a regulatory speed about a lane, lanes, or roadway segment.
*
* @field type: The type of regulatory speed which follows
* @field speed: The speed in units of 0.02 m/s
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
RegulatorySpeedLimit ::= SEQUENCE {
  type        SpeedLimitType,
  speed       Velocity
}

ritterth's avatar
ritterth committed
/**
* This DF is used to provide identity information about a selected vehicle or users.
* This data frame is typically used with fleet type vehicles which can (or which must) safely release such information for use
* with probe measurements or with other interactions (such as a signal request).
*
* @field id:               The ID used in the CAM of the requestor. This ID is presumed not to change during the exchange.
* @field type:             Information regarding all type and class data about the requesting vehicle
* @field position:         The location of the requesting vehicle
* @field name:             A human readable name for debugging use
* @field routeName:        A string for transit operations use
* @field transitStatus:    current vehicle state (loading, etc.)
* @field transitOccupancy: current vehicle occupancy
* @field transitSchedule:  current vehicle schedule adherence
* @field regional:         optional region specific data.
* @field ocit:             Extension container for Legacy R09 data (as defined by [OCIT]).
ritterth's avatar
ritterth committed
*
* @note: Note that the requestor description elements which are used when the request (the req) is made differ from
*        those used when the status of an active or pending request is reported (the ack). Typically, when reporting the status to
*        other parties, less information is required and only the temporaryID (contained in the VehicleID) and request number (a
*        unique ID used in the orginal request) are used.
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
RequestorDescription ::= SEQUENCE {
  id                VehicleID,
  type              RequestorType OPTIONAL,
  position          RequestorPositionVector OPTIONAL,
  name              DescriptiveName OPTIONAL,
  routeName         DescriptiveName OPTIONAL,
  transitStatus     TransitVehicleStatus OPTIONAL,
  transitOccupancy  TransitVehicleOccupancy OPTIONAL,
  transitSchedule   DeltaTime OPTIONAL,
Thomas Ritter's avatar
Thomas Ritter committed
  regional          SEQUENCE (SIZE(1..4)) OF RegionalExtension {{Reg-RequestorDescription}} OPTIONAL,
Thomas Ritter's avatar
Thomas Ritter committed
  ocit OcitRequestorDescriptionContainer -- Extension for OCIT in V2.2.1
ritterth's avatar
ritterth committed
/**
* This DF provides a report of the requestor's position, speed, and heading.
* Used by a vehicle or other type of user to request services and at other times when the larger FullPositionVector is not required.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
RequestorPositionVector ::= SEQUENCE {
  position           Position3D,
  heading            Angle OPTIONAL,
  speed              TransmissionAndSpeed OPTIONAL,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF is used when a DSRC-equipped device is requesting service from another
* device. The most common use case is when a vehicle is requesting a signal preemption or priority service call from the
* signal controller in an intersection. This data frame provides the details of the requestor class taxonomy required to
* support the request. Depending on the precise use case and the local implementation, these details can vary
* considerably. As a result, besides the basic role of the vehicle, the other classification systems supported are optional. It
* should also be observed that often only a subset of the information in the RequestorType data frame is used to report the
* "results" of such a request to others. As an example, a police vehicle might request service based on being in a police
* vehicle role (and any further sub-type if required) and on the type of service call to which the vehicle is then responding
* (perhaps a greater degree of emergency than another type of call), placing these information elements in the
* RequestorType, which is then part of the Signal Request Message (SRM). This allows the roadway operator to define
* suitable business rules regarding how to reply. When informing the requestor and other nearby drivers of the outcome,
* using the Signal Status Message (SSM) message, only the fact that the preemption was granted or denied to some
* vehicle with a unique request ID is conveyed.
*
* @field role:     Basic role of this user at this time.
* @field subrole:  A local list with role based items.
* @field request:  A local list with request items
* @field iso3883:  Additional classification details
* @field hpmsType: HPMS classification types
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
RequestorType ::= SEQUENCE {
  role         BasicVehicleRole,
  subrole      RequestSubRole OPTIONAL,
  request      RequestImportanceLevel OPTIONAL,
  iso3883      Iso3833VehicleType OPTIONAL,
  hpmsType     VehicleType OPTIONAL,
  regional     RegionalExtension {{Reg-RequestorType}} OPTIONAL,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF is used to assign (or bind) a single RestrictionClassID data
* element to a list of all user classes to which it applies. A collection of these bindings is conveyed in the
* RestrictionClassList data frame in the MAP message to travelers. The established index is then used in the lane object of
* the MAP message, in the ConnectTo data frame, to qualify to whom a signal group ID applies when it is sent by the SPAT
* message about a movement.
*
* @field id: the unique value (within an intersection or local region) that is assigned to this group of users.
* @field users: The list of user types/classes to which this restriction ID applies.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
RestrictionClassAssignment ::= SEQUENCE {
  id       RestrictionClassID,
  users    RestrictionUserTypeList
}

ritterth's avatar
ritterth committed
/**
* This DF is used to enumerate a list of user classes which belong to a given
* assigned index. The resulting collection is treated as a group by the signal controller when it issues movement data
* (signal phase information) with the GroupID for this group. This data frame is typically static for long periods of time
* (months) and conveyed to the user by means of the MAP message.
*
* @note: The overall restriction class assignment process allows dynamic support within the framework of the common
*        message set for the various special cases that some signalized intersections must support. While the assigned value
*        needs to be unique only within the scope of the intersection that uses it, the resulting assignment lists will tend to be static
*        and stable for regional deployment areas such as a metropolitan area based on their operational practices and needs.
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
RestrictionClassList ::= SEQUENCE (SIZE(1..254)) OF RestrictionClassAssignment

ritterth's avatar
ritterth committed
/**
* This DF is used to provide a means to select one, and only one, user type or class
* from a number of well-known lists. The selected entry is then used in the overall Restriction Class assignment process to
* indicate that a given GroupID (a way of expressing a movement in the SPAT/MAP system) applies to (is restricted to) this
* class of user.
*
* @field basicType: a set of the most commonly used types.
* @field regional:  optional region specific data.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
RestrictionUserType ::= CHOICE {
  basicType   RestrictionAppliesTo,
  regional    SEQUENCE (SIZE(1..4)) OF
              RegionalExtension {{Reg-RestrictionUserType}},
  ...
}

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

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

ritterth's avatar
ritterth committed
/**
* This DF is used to convey theRoadSegmentID which is unique to a given road segment of interest,
* and also the RoadRegulatorID assigned to the region in which it is operating (when required).
*
* @field region: a globally unique regional assignment value typically assigned to a regional DOT authority the value zero shall be used for testing needs.
* @field id:     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.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
RoadSegmentReferenceID ::= SEQUENCE {
  region  RoadRegulatorID OPTIONAL,
  id      RoadSegmentID
}

ritterth's avatar
ritterth committed
/**
* This DF is a complete description of a RoadSegment including its geometry and its
* allowed navigational paths (independent of any additional regulatory restrictions that may apply over time or from user
* classification) and any current disruptions such as a work zone or incident event.
*
* @field name: some descriptive text.
* @field id: a globally unique value for the segment.
* @field revision: .
* @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 roadLaneSet: Data describing disruptions in the RoadSegment such as work zones etc will be added here.
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
RoadSegment ::= SEQUENCE {
  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,
  ...
}

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

ritterth's avatar
ritterth committed
/**
* This DF is a collection of data values used to convey RTCM information between users. It
* is not required or used when sending RTCM data from a corrections source to end users (from a base station to devices
* deployed in the field which are called rovers).
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
RTCMheader ::= SEQUENCE {
   status     GNSSstatus,
   offsetSet  AntennaOffsetSet
ritterth's avatar
ritterth committed
}
ritterth's avatar
ritterth committed
/**
* This DF consists of a list of @ref RTCMmessage entries.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
RTCMmessageList ::= SEQUENCE (SIZE(1..5)) OF RTCMmessage

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

ritterth's avatar
ritterth committed
/**
* This DF is a dummy placeholder to contain a regional SignalControlZone DF.
* It is not used, yet here for backwards compatibility.
*
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
SignalControlZone ::=  SEQUENCE {
  zone  RegionalExtension {{Reg-SignalControlZone}},
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF is used to contain information regarding the entity that requested a given
* signal behavior. In addition to the VehicleID, the data frame also contains a request reference number used to uniquely
* refer to the request and some basic type information about the request maker which may be used by other parties.
*
* @field id: to uniquely identify the requester and the specific request to all parties.
* @field request: to uniquely identify the requester and the specific request to all parties.
* @field sequenceNumber: to uniquely identify the requester and the specific request to all parties.
* @field role: vehicle role
* @field typeData: Used when addition data besides the role is needed, at which point the role entry above is not sent.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
SignalRequesterInfo ::= SEQUENCE {
  id             VehicleID,
  request        RequestID,
  sequenceNumber MsgCount,
  role           BasicVehicleRole OPTIONAL,
  typeData       RequestorType OPTIONAL,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF is used (as part of a request message) to request either a priority or a preemption service
* from a signalized intersection. It relates the intersection ID as well as the specific request information. Additional
* information includes the approach and egress values or lanes to be used.
*
* @field id: the unique ID of the target intersection
* @field requestID: The unique requestID used by the requestor
* @field requestType: The type of request or cancel for priority or preempt use when a prior request is canceled, only the requestID is needed.
* @field inBoundLane: desired entry approach or lane.
* @field outBoundLane: desired exit approach or lane. the value zero is used to indicate intent to stop within the intersection.
Thomas Ritter's avatar
Thomas Ritter committed
* @field regional: optional region specific data.
ritterth's avatar
ritterth committed
*
* @note: 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.
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
SignalRequest ::= SEQUENCE {
  id            IntersectionReferenceID,
  requestID     RequestID,
  requestType   PriorityRequestType,
  inBoundLane   IntersectionAccessPoint,
  outBoundLane  IntersectionAccessPoint OPTIONAL,
  regional      SEQUENCE (SIZE(1..4)) OF
                RegionalExtension {{Reg-SignalRequest}} OPTIONAL,
  ...
}
ritterth's avatar
ritterth committed
/**
* This DF consists of a list of @ref SignalRequest entries.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
SignalRequestList ::= SEQUENCE (SIZE(1..32)) OF SignalRequestPackage

ritterth's avatar
ritterth committed
/**
* This DF contains both the service request itself (the preemption and priority
* details and the inbound-outbound path details for an intersection) and the time period (start and end time) over which this
* service is sought from one single intersection. One or more of these packages are contained in a list in the Signal
* Request Message (SREM).
*
* @field request:  The specific request to the intersection contains IntersectionID, request type, requested action (approach/lane request).
* @field minute:   Time period start.
* @field second:   Time period start.
* @field duration: 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.
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
SignalRequestPackage ::= SEQUENCE {
  request        SignalRequest,
  minute         MinuteOfTheYear OPTIONAL,
  second         DSecond OPTIONAL,
  duration       DSecond OPTIONAL,
  regional       SEQUENCE (SIZE(1..4)) OF
                 RegionalExtension {{Reg-SignalRequestPackage}} OPTIONAL,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF is used to provide the status of a single intersection to others, including any active
* preemption or priority state in effect.
*
* @field sequenceNumber: changed whenever the below contents have change
* @field id:             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.
* @field sigStatus:      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.
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
SignalStatus ::= SEQUENCE {
  sequenceNumber MsgCount,
  id             IntersectionReferenceID,
  sigStatus      SignalStatusPackageList,
  regional       SEQUENCE (SIZE(1..4)) OF
                 RegionalExtension {{Reg-SignalStatus}} OPTIONAL,
  ...
}

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

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

ritterth's avatar
ritterth committed
/**
ritterth's avatar
ritterth committed
* This DF contains all the data needed to describe the preemption or priority state
ritterth's avatar
ritterth committed
* of the signal controller with respect to a given request and to uniquely identify the party who requested that state to occur.
* It should be noted that this data frame describes both active and anticipated states of the controller. A requested service
* may not be active when the message is created and issued. A requested service may be rejected. This structure allows
* the description of pending requests that have been granted (accepted rather than rejected) but are not yet active and
* being serviced. It also provides for the description of rejected requests so that the initial message is acknowledged
* (completing a dialog using the broadcast messages).
*
* @field requester:  The party that made the initial SREM request.
* @field inboundOn:  estimated lane / approach of vehicle.
* @field outboundOn: estimated lane / approach of vehicle.
* @field minute:     The Estimated Time of Arrival (ETA) when the service is requested. This data echos the data of the request.
* @field second:     seconds part of ETA.
* @field duration:   duration part of ETA.
* @field status:     Status of request, this may include rejection.
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
SignalStatusPackage ::= SEQUENCE {
  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,
  ...
}

ritterth's avatar
ritterth committed
/**
* This DF is a single data frame combining multiple related bit fields into one concept.
*
* @field heading: confidence for heading values
* @field speed: confidence for speed values
* @field throttle: confidence for throttle values 
*
ritterth's avatar
ritterth committed
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
SpeedandHeadingandThrottleConfidence ::= SEQUENCE {
   heading   HeadingConfidenceDSRC,
   speed     SpeedConfidenceDSRC,
   throttle  ThrottleConfidence
ritterth's avatar
ritterth committed
}
ritterth's avatar
ritterth committed
/**
* This DF consists of a list of SpeedLimit entries.
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
SpeedLimitList ::= SEQUENCE (SIZE(1..9)) OF RegulatorySpeedLimit

ritterth's avatar
ritterth committed
/**
* This DE relates the type of speed limit to which a given speed refers.
*
* - 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: Regulatory speed limit for general traffic
* - vehicleMaxSpeed: Regulatory speed limit for general traffic
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
SpeedLimitType ::= ENUMERATED {
   unknown,
   maxSpeedInSchoolZone,
   maxSpeedInSchoolZoneWhenChildrenArePresent,
   maxSpeedInConstructionZone,
   vehicleMinSpeed,
   vehicleMaxSpeed,
   vehicleNightMaxSpeed,
   truckMinSpeed,
   truckMaxSpeed,
   truckNightMaxSpeed,
   vehiclesWithTrailersMinSpeed,
   vehiclesWithTrailersMaxSpeed,
   vehiclesWithTrailersNightMaxSpeed,
   ...
}

ritterth's avatar
ritterth committed
/**
* This DF conveys details about the timing of a phase within a movement. The core
* data concept expressed is the time stamp (time mark) at which the related phase will change to the next state. This is
* often found in the MinEndTime element, but the other elements may be needed to convey the full concept when adaptive
* timing is employed.
*
* @field startTime: is used to relate when the phase itself started or is expected to start. This in turn allows the
*                   indication that a set of time change details refers to a future phase, rather than a currently active phase.
*                   By this method, timing information about "pre" phase events (which are the short transitional phase used to alert OBUs to
ritterth's avatar
ritterth committed
*                   an impending green/go or yellow/caution phase) and the longer yellow-caution phase data is supported in the same form
*                   as various green/go phases. In theory, the time change details could be sent for a large sequence of phases if the signal
*                   timing was not adaptive and the operator wished to do so. In practice, it is expected only the "next" future phase will
*                   commonly be sent. It should be noted that this also supports the sending of time periods regarding various red phases;
*                   however, this is not expected to be done commonly.
* @field minEndTime: is used to convey the earliest time possible at which the phase could change, except when
*                   unpredictable events relating to a preemption or priority call disrupt a currently active timing plan. In a phase where the
*                   time is fixed (as in a fixed yellow or clearance time), this element shall be used alone. This value can be viewed as the
*                   earliest possible time at which the phase could change, except when unpredictable events relating to a preemption or
*                   priority call come into play and disrupt a currently active timing plan.
* @field maxEndTime: is used to convey the latest time possible which the phase could change,
*                   except when unpredictable events relating to a preemption or priority
*                   call come into play and disrupt a currently active timing plan. In a phase where the time is fixed (as in a fixed yellow or
*                   clearance time), this element shall be used alone.
* @field likelyTime: is used to convey the most likely time the phase changes. This occurs between MinEndTime and
*                   MaxEndTime and is only relevant for traffic-actuated control programs. This time might be calculated out of logged
*                   historical values, detected events (e.g., from inductive loops), or from other sources.
* @field confidence: is used to convey basic confidence data about the likelyTime.
* @field nextTime:   is used to express a general (and presumably less precise) value regarding when this phase will
*                   next occur. This is intended to be used to alert the OBU when the next green/go may occur so that various ECO driving
ritterth's avatar
ritterth committed
*                   applications can better manage the vehicle during the intervening stopped time.
*
* @note: Remarks: It should be noted that all times are expressed as absolute values and not as countdown timer values. When
*          the stated time mark is reached, the state changes to the next state. Several technical reasons led to this choice; among
*          these was that with a countdown embodiment, there is an inherent need to update the remaining time every time a SPAT
*          message is issued. This would require re-formulating the message content as as well as cryptographically signing the
*          message each time. With the use of absolute values (time marks) chosen here, the current count down time when the
*          message is created is added to the then-current time to create an absolute value and can be used thereafter without
*          change. The message content need only change when the signal controller makes a timing decision to be published. This
*          allows a clean separation of the logical functions of message creation from the logical functions of message scheduling
*          and sending, and fulfills the need to minimize further real time processing when possible. This Standard sets no limits on
*          where each of these functions is performed in the overall roadside system.
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
TimeChangeDetails ::= SEQUENCE {
  startTime   TimeMark               OPTIONAL,
ritterth's avatar
ritterth committed
  minEndTime  TimeMark,
  maxEndTime  TimeMark               OPTIONAL,
  likelyTime  TimeMark               OPTIONAL,
ritterth's avatar
ritterth committed
  confidence  TimeIntervalConfidence OPTIONAL,
  nextTime    TimeMark               OPTIONAL
ritterth's avatar
ritterth committed
/**
* This DE is used to relate a moment in UTC (Coordinated Universal Time)-based time when a
* signal phase is predicted to change, with a precision of 1/10 of a second. A range of 60 full minutes is supported and it
* can be presumed that the receiver shares a common sense of time with the sender which is kept aligned to within a
* fraction of a second or better.
*
* If there is a need to send a value greater than the range allowed by the data element (over one hour in the future), the
* value 36000 shall be sent and shall be interpreted to indicate an indefinite future time value. When the value to be used is
* undefined or unknown a value of 36001 shall be sent. Note that leap seconds are also supported.
*
* The value is 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
ritterth's avatar
ritterth committed
* - The values 35991..35999 are used when a leap second occurs
* - The value 36000 is used to indicate time >3600 seconds
* - 36001 is to be used when value undefined or unknown
*
* @note: Note that this is NOT expressed in GPS time or in local time
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
TimeMark ::= INTEGER (0..36001)

ritterth's avatar
ritterth committed
/**
* This DF expresses the speed of the vehicle and the state of the transmission.
* The transmission state of 'reverse' can be used as a sign value for the speed element when needed.
*
* @field transmisson: state of the transmission
* @field speed: speed of the vehicle
*
ritterth's avatar
ritterth committed
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
TransmissionAndSpeed ::= SEQUENCE {
  transmisson   TransmissionState,
  speed         Velocity
}

ritterth's avatar
ritterth committed
/**
* This DF is used to contain either a (US) TemporaryID or an (EU) StationID in a simple frame.
* These two different value domains are used to uniquely identify a vehicle or other object in these two regional DSRC
* value is unavailable but needed by another type of user (such as the roadside infrastructure sending data about an
* environments. In normal use cases, this value changes over time to prevent tracking of the subject vehicle. When this
* unequipped vehicle), the value zero shall be used. A typical restriction on the use of this value during a dialog or other
* exchange is that the value remains constant for the duration of that exchange. Refer to the performance requirements for
* a given application for details.
*
* @field entityID: representation for US stations
* @field stationID: representation for EU stations
*
ritterth's avatar
ritterth committed
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
VehicleID ::= CHOICE {
  entityID     TemporaryID,
  stationID    StationID
}

ritterth's avatar
ritterth committed
/**
* This DE relates the type of travel to which a given speed refers. This element is
ritterth's avatar
ritterth committed
* typically used as part of an @ref AdvisorySpeed data frame for signal phase and timing data.
ritterth's avatar
ritterth committed
*
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
AdvisorySpeedType ::= ENUMERATED {
  none       (0),
  greenwave  (1),
  ecoDrive   (2),
  transit    (3),
  ...
}

ritterth's avatar
ritterth committed
/**
* This DE relates the allowed (possible) maneuvers from a lane, typically a
* motorized vehicle lane. It should be noted that in practice these values may be further restricted by vehicle class, local
* regulatory environment and other changing conditions.
*
* @note: When used by data frames, the AllowedManeuvers data concept is used in two places: optionally in the
*    generic lane structure to list all possible maneuvers (as in what that lane can do at its stop line point); and within each
*    ConnectsTo structure. Each ConnectsTo structure contains a list used to provide a single valid maneuver in the context of
*    one lane connecting to another in the context of a signal phase that applies to that maneuver. It should be noted that, in
*    some intersections, multiple outbound lanes can be reached by the same maneuver (for example two independent left
*    turns might be found in a 5-legged intersection) but that to reach any given lane from the stop line of another lane is
*    always a single maneuver item (hence the use of a list). Not all intersection descriptions may contain an exhaustive set of
*    ConnectsTo information (unsignalized intersections for example) and in such cases the AllowedManeuvers in the generic
*    lane structure can be used. If present in both places, the data expressed in the generic lane shall not conflict with the data
*    found in the collection of ConnectsTo entries.
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
AllowedManeuvers ::= BIT STRING {
  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))

ritterth's avatar
ritterth committed
/**
* This DE is used to describe an angular measurement in units of degrees. This data
* element is often used as a heading direction when in motion. In this use, the current heading of the sending device is
* expressed in unsigned units of 0.0125 degrees from North, such that 28799 such degrees represent 359.9875 degrees.
* North shall be defined as the axis defined by the WGS-84 coordinate system and its reference ellipsoid. Any angle "to the
* east" is defined as the positive direction. A value of 28800 shall be used when Angle is unavailable.
*
* @note: Note that other heading and angle data elements of various sizes and precisions are found in other parts of this standard and in ITS.
* @unit: 0.0125 degrees
* @category: Infrastructure information
* @revision: V1.3.1
*/
ritterth's avatar
ritterth committed
Angle ::= INTEGER (0..28800)

ritterth's avatar
ritterth committed
/**
* This DE is used to relate the index of an approach, either ingress or egress within the
* subject lane. In general, an approach index in the context of a timing movement is not of value in the MAP and SPAT
* process because the lane ID and signal group ID concepts handle this with more precision. This value can also be useful
* as an aid as it can be used to indicate the gross position of a moving object (vehicle) when its lane level accuracy is
* unknown. This value can also be used when a deployment represents sets of lanes as groups without further details (as is
* done in Japan).
*
* @note: zero to be used when valid value is unknown
* @category: Infrastructure information
* @revision: V1.3.1
*/