DSRC.asn 180 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

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.
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,
  regional          SEQUENCE (SIZE(1..4)) OF
                    RegionalExtension {{Reg-RequestorDescription}} OPTIONAL,
  ...
}

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
*/
ritterth's avatar
ritterth committed
ApproachID ::= INTEGER (0..15)

ritterth's avatar
ritterth committed
/**
* This DE provides a means to indicate the current role that a DSRC device is playing
* This is most commonly employed when a vehicle needs to take on another role in order to send certain DSRC message
* types. As an example, when a public safety vehicle such as a police car wishes to send a signal request message (SRM)
* to an intersection to request a preemption service, the vehicle takes on the role "police" from the below list in both the
* SRM message itself and also in the type of security CERT which is sent (the SSP in the CERT it used to identify the
* requester as being of type "police" and that they are allowed to send this message in this way). The BasicVehicleRole
* entry is often used and combined with other information about the requester as well, such as details of why the request is
* being made.
*
* - 0 - `basicVehicle`     - Light duty passenger vehicle type
* - 1 - `publicTransport`  - Used in EU for Transit us
* - 2 - `specialTransport` - Used in EU (e.g. heavy load)
* - 3 - `dangerousGoods`   - Used in EU for any HAZMAT
* - 4 - `roadWork`         - Used in EU for State and Local DOT uses
* - 5 - `roadRescue`       - Used in EU and in the US to include tow trucks.
* - 6 - `emergency`        - Used in EU for Police, Fire and Ambulance units
* - 7 - `safetyCar`        - Used in EU for Escort vehicles
* - 8 - `none-unknown`     - added to follow current SAE style guidelines
* - 9 - `truck`            - Heavy trucks with additional BSM rights and obligations
* - 10 - `motorcycle`      - Motorcycle
* - 11 - `roadSideSource`  - For infrastructure generated calls such as fire house, rail infrastructure, roadwork site, etc.
* - 12 - `police`          - Police vehicle
* - 13 - `fire`            - Firebrigade
* - 14 - `ambulance`       - (does not include private para-transit etc.)