Skip to content
DSRC.asn 78.5 KiB
Newer Older
filatov's avatar
filatov committed
   id             IntersectionReferenceID,
                  -- this provides a unique mapping to the 
                  -- intersection map in question
                  -- which provides complete location 
                  -- and approach/movement/lane data
                  -- as well as zones for priority/preemption
   sigStatus      SignalStatusPackageList,
                  -- a list of detailed status containing all
                  -- priority or preemption state data, both
                  -- active and pending, and who requested it
                  -- requests which are denied are also listed
                  -- here for a short period of time
   regional       SEQUENCE (SIZE(1..4)) OF 
                  RegionalExtension {{Reg-SignalStatus}} OPTIONAL,
   ...  
   }
   
/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop
filatov's avatar
filatov committed
SpeedLimitList ::= SEQUENCE (SIZE(1..9)) OF RegulatorySpeedLimit

SpeedLimitType ::= ENUMERATED {
    unknown,                    -- Speed limit type not available
    maxSpeedInSchoolZone,       -- Only sent when the limit is active
    maxSpeedInSchoolZoneWhenChildrenArePresent, -- Sent at any time
    maxSpeedInConstructionZone, -- Used for work zones, incident zones, etc.
                                -- where a reduced speed is present
    vehicleMinSpeed,
    vehicleMaxSpeed,            -- Regulatory speed limit for general traffic
    vehicleNightMaxSpeed,

    truckMinSpeed,
    truckMaxSpeed,
    truckNightMaxSpeed,

    vehiclesWithTrailersMinSpeed,
    vehiclesWithTrailersMaxSpeed,
    vehiclesWithTrailersNightMaxSpeed,
    ...
    }
filatov's avatar
filatov committed

TimeChangeDetails ::= SEQUENCE {
   startTime   TimeMark           OPTIONAL,
               -- When this phase 1st started
   minEndTime  TimeMark,
               -- Expected shortest end time
   maxEndTime  TimeMark           OPTIONAL,
               -- Expected longest end time
   
   likelyTime  TimeMark           OPTIONAL,
               -- Best predicted value based on other data              
   confidence  TimeIntervalConfidence OPTIONAL,
               -- Applies to above time element only
   
   nextTime    TimeMark           OPTIONAL
               -- A rough estimate of time when 
               -- this phase may next occur again
               -- used to support various ECO driving power 
               -- management needs.
   }

garciay's avatar
garciay committed
TimeMark ::= INTEGER (0..36001)
   -- Tenths of a second in the current or next hour
   -- In units of 1/10th second from UTC time
   -- A range of 0~36000 covers one hour
   -- The values 35991..36000 are used when a leap second occurs
   -- The value 36001 is used to indicate time >3600 seconds
   -- 36002 is to be used when value undefined or unknown
   -- Note that this is NOT expressed in GPS time
   -- or in local time
filatov's avatar
filatov committed

TransmissionAndSpeed ::= SEQUENCE {
   transmisson   TransmissionState,
   speed         Velocity
   }

VehicleID ::= CHOICE {
   entityID     TemporaryID,
   stationID    StationID
filatov's avatar
filatov committed
   }

   
-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
-- 
-- Start of entries from table Data_Elements...
-- This table typicaly contains data element entries.
-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
--    

AdvisorySpeedType ::= ENUMERATED {
    none       (0),
    greenwave  (1),
    ecoDrive   (2),
    transit    (3),
    ...  
    } -- Note: subject to further growth

AllowedManeuvers ::= BIT STRING {
    -- With bits as defined:
    -- Allowed maneuvers at path end (stop line)
    -- All maneuvers with bits not set are therefore prohibited !
    -- A value of zero shall be used for unknown, indicating no Maneuver
    maneuverStraightAllowed      (0), 
                                  -- a Straight movement is allowed in this lane
    maneuverLeftAllowed          (1),  
                                 -- a Left Turn movement is allowed in this lane
    maneuverRightAllowed         (2), 
                                 -- a Right Turn movement is allowed in this lane
    maneuverUTurnAllowed         (3), 
                                 -- a U turn movement is allowed in this lane
    maneuverLeftTurnOnRedAllowed (4), 
                                 -- a Stop, and then proceed when safe movement 
                                 -- is allowed in this lane  
    maneuverRightTurnOnRedAllowed (5), 
                                 -- a Stop, and then proceed when safe movement 
                                 -- is allowed in this lane  
    maneuverLaneChangeAllowed    (6), 
                                 -- a movement which changes to an outer lane 
                                 -- on the egress side is allowed in this lane
                                 -- (example: left into either outbound lane)
    maneuverNoStoppingAllowed    (7), 
                                 -- the vehicle should not stop at the stop line
                                 -- (example: a flashing green arrow)
    yieldAllwaysRequired         (8), 
                                 -- the allowed movements above are not protected 
                                 -- (example: an permanent yellow condition)
    goWithHalt                   (9), 
                                 -- after making a full stop, may proceed
    caution                      (10), 
                                 -- proceed past stop line with caution
    reserved1                    (11)
                                 -- used to align to 12 Bit Field
   
   } (SIZE(12))

Angle ::= INTEGER (0..28800) 
   -- LSB of 0.0125 degrees
   -- A range of 0 to 359.9875 degrees

ApproachID ::= INTEGER (0..15) -- zero to be used when valid value is unknown
   
BasicVehicleRole ::= ENUMERATED {
    -- Values used in the EU and in the US
    basicVehicle     (0), -- Light duty passenger vehicle type
    publicTransport  (1), -- Used in EU for Transit us
    specialTransport (2), -- Used in EU (e.g. heavy load)
    dangerousGoods   (3), -- Used in EU for any HAZMAT
    roadWork         (4), -- Used in EU for State and Local DOT uses
    roadRescue       (5), -- Used in EU and in the US to include tow trucks.
    emergency        (6), -- Used in EU for Police, Fire and Ambulance units
    safetyCar        (7), -- Used in EU for Escort vehicles
    -- Begin US unique numbering
    none-unknown     (8), -- added to follow current SAE style guidelines
    truck            (9), -- Heavy trucks with additional BSM rights and obligations
    motorcycle      (10), --
    roadSideSource  (11), -- For infrastructure generated calls such as
                          -- fire house, rail infrastructure, roadwork site, etc.
    police          (12), --
    fire            (13), --
    ambulance       (14), -- (does not include private para-transit etc.)
    dot             (15), -- all roadwork vehicles
    transit         (16), -- all transit vehicles 
    slowMoving      (17), -- to also include oversize etc.
    stopNgo         (18), -- to include trash trucks, school buses and others
                          -- that routinely disturb the free flow of traffic
    cyclist         (19), --
    pedestrian      (20), -- also includes those with mobility limitations
    nonMotorized    (21), -- other, horse drawn, etc.
    military        (22), --
    ...   
    }  

/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop
filatov's avatar
filatov committed
DeltaAngle ::= INTEGER (-150..150) 
   -- With an angle range from 
   -- negative 150 to positive 150 
   -- in one degree steps where zero is directly
   -- along the axis or the lane center line as defined by the
   -- two closest points

DeltaTime ::= INTEGER (-122 .. 121) 
   -- Supporting a range of +/- 20 minute in steps of 10 seconds
   -- the value of -121 shall be used when more than -20 minutes
   -- the value of +120 shall be used when more than +20 minutes
   -- the value -122 shall be used when the value is unavailable
filatov's avatar
filatov committed

DescriptiveName ::= IA5String (SIZE(1..63))

DrivenLineOffsetLg ::= INTEGER (-32767..32767) 
   -- LSB units are 1 cm.

DrivenLineOffsetSm ::= INTEGER (-2047..2047) 
   -- LSB units are 1 cm.

DSecond ::= INTEGER (0..65535) -- units of milliseconds
   
DSRCmsgID ::= INTEGER (0..32767)
   mapData                           DSRCmsgID ::=   18 -- MAP, intersections 
   signalPhaseAndTimingMessage       DSRCmsgID ::=   19 -- SPAT
   signalRequestMessage              DSRCmsgID ::=   29 -- SRM
   signalStatusMessage               DSRCmsgID ::=   30 -- SSM

Elevation ::= INTEGER (-4096..61439) 
  -- In units of 10 cm steps above or below the reference ellipsoid 
  -- Providing a range of -409.5 to + 6143.9 meters 
  -- The value -4096 shall be used when Unknown is to be sent
filatov's avatar
filatov committed

IntersectionID ::= INTEGER (0..65535)
   -- The values zero through 255 are allocated for testing purposes
   -- Note that the value assigned to an intersection will be
   -- unique within a given regional ID only

IntersectionStatusObject ::= BIT STRING {
    manualControlIsEnabled                (0),
      -- Timing reported is per programmed values, etc. but person
      -- at cabinet can manually request that certain intervals are
      -- terminated early (e.g. green).
    stopTimeIsActivated                   (1),
      -- And all counting/timing has stopped.
    failureFlash                          (2), 
      -- Above to be used for any detected hardware failures, 
      -- e.g. conflict monitor as well as for police flash 
    preemptIsActive                       (3),
    signalPriorityIsActive                (4),   
	 
   -- Additional states
    fixedTimeOperation                    (5),
      -- Schedule of signals is based on time only 
      -- (i.e. the state can be calculated)
    trafficDependentOperation             (6),
      -- Operation is based on different levels of traffic parameters 
      -- (requests, duration of gaps or more complex parameters)
    standbyOperation                      (7),
      -- Controller: partially switched off or partially amber flashing
    failureMode                           (8),
      -- Controller has a problem or failure in operation
    off                                   (9),
      -- Controller is switched off
	 
   -- Related to MAP and SPAT bindings
    recentMAPmessageUpdate                (10),
      -- Map revision with content changes
    recentChangeInMAPassignedLanesIDsUsed (11),
      -- Change in MAP's assigned lanes used (lane changes)
      -- Changes in the active lane list description
    noValidMAPisAvailableAtThisTime       (12),
      -- MAP (and various lanes indexes) not available
    noValidSPATisAvailableAtThisTime      (13)
      -- SPAT system is not working at this time
    
    -- Bits 14,15 reserved at this time and shall be zero
    } (SIZE(16))


LaneAttributes-Barrier ::= BIT STRING {
   -- With bits as defined:
   median-RevocableLane     (0),
                            -- this lane may be activated or not based
                            -- on the current SPAT message contents
                            -- if not asserted, the lane is ALWAYS present
   median                   (1),
   whiteLineHashing         (2),
   stripedLines             (3),
   doubleStripedLines       (4),
   trafficCones             (5),
   constructionBarrier      (6),
   trafficChannels          (7),
   lowCurbs                 (8),
   highCurbs                (9)
   -- Bits 10~15 reserved and set to zero
   } (SIZE (16))

LaneAttributes-Bike ::= BIT STRING {
   -- With bits as defined:
   bikeRevocableLane       (0),
                           -- this lane may be activated or not based
                           -- on the current SPAT message contents
                           -- if not asserted, the lane is ALWAYS present
   pedestrianUseAllowed    (1),
                           -- The path allows pedestrian traffic, 
                           -- if not set, this mode is prohibited
   isBikeFlyOverLane       (2),
                           -- path of lane is not at grade
   fixedCycleTime          (3),
                           -- the phases use preset times
                           -- i.e. there is not a 'push to cross' button
   biDirectionalCycleTimes (4),
                           -- ped walk phases use different SignalGroupID
                           -- for each direction. The first SignalGroupID
                           -- in the first Connection represents 'inbound'
                           -- flow (the direction of travel towards the first 
                           -- node point) while second SignalGroupID in the 
                           -- next Connection entry represents the 'outbound'
                           -- flow. And use of RestrictionClassID entries
                           -- in the Connect follow this same pattern in pairs.
   isolatedByBarrier       (5),
   unsignalizedSegmentsPresent  (6)
                           -- The lane path consists of one of more segments
                           -- which are not part of a signal group ID

   -- Bits 7~15 reserved and set to zero
   } (SIZE (16))

LaneAttributes-Crosswalk ::= BIT STRING { 
   -- With bits as defined:
   -- MUTCD provides no suitable "types" to use here
   crosswalkRevocableLane  (0),
                           -- this lane may be activated or not based
                           -- on the current SPAT message contents
                           -- if not asserted, the lane is ALWAYS present
   bicyleUseAllowed        (1),
                           -- The path allows bicycle traffic, 
                           -- if not set, this mode is prohibited
   isXwalkFlyOverLane      (2),
                           -- path of lane is not at grade
   fixedCycleTime          (3),
                           -- ped walk phases use preset times
                           -- i.e. there is not a 'push to cross' button
   biDirectionalCycleTimes (4),
                           -- ped walk phases use different SignalGroupID
                           -- for each direction. The first SignalGroupID
                           -- in the first Connection represents 'inbound'
                           -- flow (the direction of travel towards the first 
                           -- node point) while second SignalGroupID in the 
                           -- next Connection entry represents the 'outbound'
                           -- flow. And use of RestrictionClassID entries
                           -- in the Connect follow this same pattern in pairs.
   hasPushToWalkButton     (5),
                           -- Has a demand input
   audioSupport            (6),
                           -- audio crossing cues present
   rfSignalRequestPresent  (7),
                           -- Supports RF push to walk technologies
   unsignalizedSegmentsPresent  (8)
                           -- The lane path consists of one of more segments
                           -- which are not part of a signal group ID
   -- Bits 9~15 reserved and set to zero
   } (SIZE (16))

LaneAttributes-Parking ::= BIT STRING { 
    -- With bits as defined:
    -- Parking use details, note that detailed restrictions such as 
    -- allowed hours are sent by way of ITIS codes in the TIM message
    parkingRevocableLane         (0),
                                 -- this lane may be activated or not based
                                 -- on the current SPAT message contents
                                 -- if not asserted, the lane is ALWAYS present
    parallelParkingInUse         (1),
    headInParkingInUse           (2),
    doNotParkZone                (3),
                                 -- used to denote fire hydrants as well as
                                 -- short disruptions in a parking zone
    parkingForBusUse             (4),
    parkingForTaxiUse            (5),
    noPublicParkingUse           (6)
                                 -- private parking, as in front of
                                 -- private property
   -- Bits 7~15 reserved and set to zero
   } (SIZE (16))

LaneAttributes-Sidewalk ::= BIT STRING { 
   -- With bits as defined:
   sidewalk-RevocableLane  (0),
                           -- this lane may be activated or not based
                           -- on the current SPAT message contents
                           -- if not asserted, the lane is ALWAYS present
   bicyleUseAllowed        (1),
                           -- The path allows bicycle traffic, 
                           -- if not set, this mode is prohibited
   isSidewalkFlyOverLane   (2),
                           -- path of lane is not at grade
   walkBikes               (3)
                           -- bike traffic must dismount and walk
   -- Bits 4~15 reserved and set to zero
   } (SIZE (16))


LaneAttributes-Striping ::= BIT STRING { 
   -- With bits as defined:
    stripeToConnectingLanesRevocableLane      (0),
       -- this lane may be activated or not activated based
       -- on the current SPAT message contents
       -- if not asserted, the lane is ALWAYS present
    stripeDrawOnLeft                          (1),
    stripeDrawOnRight                         (2),
        -- which side of lane to mark
    stripeToConnectingLanesLeft               (3),
    stripeToConnectingLanesRight              (4),
    stripeToConnectingLanesAhead              (5)
        -- the stripe type should be
        -- presented to the user visually
        -- to reflect stripes in the 
        -- intersection for the type of
        -- movement indicated
   -- Bits 6~15 reserved and set to zero
   } (SIZE (16))


LaneAttributes-TrackedVehicle ::= BIT STRING { 
   -- With bits as defined:
   spec-RevocableLane         (0),
                               -- this lane may be activated or not based
                               -- on the current SPAT message contents
                               -- if not asserted, the lane is ALWAYS present
   spec-commuterRailRoadTrack (1), 
   spec-lightRailRoadTrack    (2),
   spec-heavyRailRoadTrack    (3),
   spec-otherRailType         (4)
   -- Bits 5~15 reserved and set to zero
   } (SIZE (16))


LaneAttributes-Vehicle ::= BIT STRING {  
   -- With bits as defined:
   isVehicleRevocableLane       (0),
                                 -- this lane may be activated or not based
                                 -- on the current SPAT message contents
                                 -- if not asserted, the lane is ALWAYS present
   isVehicleFlyOverLane         (1),
                                 -- path of lane is not at grade
   hovLaneUseOnly               (2),
   restrictedToBusUse           (3),
   restrictedToTaxiUse          (4),
   restrictedFromPublicUse      (5),
   hasIRbeaconCoverage          (6),
   permissionOnRequest          (7) -- e.g. to inform about a lane for e-cars

   } (SIZE (8,...))

LaneConnectionID ::= INTEGER (0..255)

LaneDirection ::= BIT STRING {
   -- With bits as defined:
   -- Allowed directions of travel in the lane object
   -- All lanes are described from the stop line outwards
   ingressPath     (0), 
                   -- travel from rear of path to front 
                   -- is allowed
   egressPath      (1)
                   -- travel from front of path to rear 
                   -- is allowed
   -- Notes:  No Travel, i.e. the lane object type does not support
   --         travel (medians, curbs, etc.) is indicated by not 
   --         asserting any bit value
   --         Bi-Directional Travel (such as a ped crosswalk) is 
   --         indicated by asserting both of the bits
   } (SIZE (2))

/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop
filatov's avatar
filatov committed
LaneID ::= INTEGER (0..255)
   -- the value 0 shall be used when the lane ID is
   -- not available or not known
   -- the value 255 is reserved for future use
filatov's avatar
filatov committed

LayerID ::= INTEGER (0..100)

LayerType ::= ENUMERATED {
     none, 
     mixedContent, -- two or more of the below types
     generalMapData, 
     intersectionData, 
     curveData, 
     roadwaySectionData, 
     parkingAreaData, 
     sharedLaneData,
     ... 
     }
   
LaneWidth ::= INTEGER (0..32767) -- units of 1 cm

/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop
filatov's avatar
filatov committed
MergeDivergeNodeAngle ::= INTEGER (-180..180) 
   -- In units of 1.5 degrees from north
   -- the value -180 shall be used to represent 
   -- data is not available or unknown
filatov's avatar
filatov committed

MinuteOfTheYear ::= INTEGER (0..527040) 
   -- the value 527040 shall be used for invalid

MovementPhaseState ::= ENUMERATED {
    -- Note that based on the regions and the operating mode not every 
    -- phase will be used in all transportation modes and that not 
    -- every phase will be used in all transportation modes
  
    unavailable (0), 
      -- This state is used for unknown or error 
    dark (1),   
      -- The signal head is dark (unlit)

   -- Reds
    stop-Then-Proceed (2), 
      -- Often called 'flashing red' in US
      -- Driver Action:                     
      --   Stop vehicle at stop line. 
      --   Do not proceed unless it is safe.
      -- Note that the right to proceed either right or left when 
      -- it is safe may be contained in the lane description to 
      -- handle what is called a 'right on red'
    stop-And-Remain (3),
      -- e.g. called 'red light' in US
      -- Driver Action:                     
      --   Stop vehicle at stop line. 
      --   Do not proceed.                     
      -- Note that the right to proceed either right or left when 
      -- it is safe may be contained in the lane description to 
      -- handle what is called a 'right on red'
   
   -- Greens
    pre-Movement (4), 
      -- Not used in the US, red+yellow partly in EU
      -- Driver Action:                     
      --   Stop vehicle. 
      --   Prepare to proceed (pending green)
      --   (Prepare for transition to green/go)
    permissive-Movement-Allowed (5), 
      -- Often called 'permissive green' in US
      -- Driver Action:                     
      --   Proceed with caution, 
      --   must yield to all conflicting traffic 
      -- Conflicting traffic may be present
      -- in the intersection conflict area
    protected-Movement-Allowed (6), 
      -- Often called 'protected green' in US
      -- Driver Action:                     
      --   Proceed, tossing caution to the wind, 
      --   in indicated (allowed) direction.
   
   -- Yellows / Ambers
   -- The vehicle is not allowed to cross the stop bar if it is possible 
   -- to stop without danger. 
    permissive-clearance (7), 
      -- Often called 'permissive yellow' in US
      -- Driver Action:                     
      --   Prepare to stop.
      --   Proceed if unable to stop,
      --   Clear Intersection.
      -- Conflicting traffic may be present
      -- in the intersection conflict area
    protected-clearance (8),  
      -- Often called 'protected yellow' in US
      -- Driver Action: 
      --   Prepare to stop.
      --   Proceed if unable to stop,
      --   in indicated direction (to connected lane)
      --   Clear Intersection.
                    
    caution-Conflicting-Traffic (9)
      -- Often called 'flashing yellow' in US
      -- Often used for extended periods of time
      -- Driver Action: 
      --   Proceed with caution, 
      -- Conflicting traffic may be present
      -- in the intersection conflict area
    }
    -- The above number assignments are not used with UPER encoding
    -- and are only to be used with DER or implicit encoding

MsgCount ::= INTEGER (0..127)

/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop
filatov's avatar
filatov committed
Offset-B10 ::= INTEGER (-512..511)
   -- a range of +- 5.11 meters

Offset-B11 ::= INTEGER (-1024..1023)
   -- a range of +- 10.23 meters

Offset-B12 ::= INTEGER (-2048..2047)
   -- a range of +- 20.47 meters

Offset-B13 ::= INTEGER (-4096..4095)
   -- a range of +- 40.95 meters

Offset-B14 ::= INTEGER (-8192..8191)
   -- a range of +- 81.91 meters

Offset-B16 ::= INTEGER (-32768..32767)
   -- a range of +- 327.68 meters
filatov's avatar
filatov committed

PedestrianBicycleDetect ::= BOOLEAN 
                 -- true if ANY Pedestrians or Bicyclists are 
                 -- detected crossing the target lane or lanes
   
/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop
filatov's avatar
filatov committed
PrioritizationResponseStatus ::= ENUMERATED {
   unknown           (0),
                      -- Unknown state
   requested         (1),
                      -- This prioritization request was detected 
                      -- by the traffic controller  
   processing        (2),
                      -- Checking request 
                      -- (request is in queue, other requests are prior)
   watchOtherTraffic (3),
                      -- Cannot give full permission, 
                      -- therefore watch for other traffic
                      -- Note that other requests may be present
   granted           (4),
                      -- Intervention was successful 
                      -- and now prioritization is active
   rejected          (5),
                      -- The prioritization or preemption request was 
                      -- rejected by the traffic controller
   maxPresence       (6),
                      -- The Request has exceeded maxPresence time
                      -- Used when the controller has determined that
                      -- the requester should then back off and 
                      -- request an alternative.  
   reserviceLocked   (7),
                      -- Prior conditions have resulted in a reservice 
                      -- locked event: the controller requires the 
                      -- passage of time before another similar request 
                      -- will be accepted
   ...
}
filatov's avatar
filatov committed

PriorityRequestType ::= ENUMERATED {
     priorityRequestTypeReserved (0),  
     priorityRequest             (1),   
     priorityRequestUpdate       (2), 
     priorityCancellation        (3),  
     ...  
     }

/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop
filatov's avatar
filatov committed
RegionId ::= INTEGER (0..255)
   noRegion     RegionId ::= 0  -- Use default supplied stubs
   addGrpA      RegionId ::= 1  -- USA
   addGrpB      RegionId ::= 2  -- Japan
   addGrpC      RegionId ::= 3  -- EU
   -- NOTE: new registered regional IDs will be added here
   -- The values 128 and above are for local region use
filatov's avatar
filatov committed

RequestID ::= INTEGER (0..255)

RequestImportanceLevel ::= ENUMERATED {
    requestImportanceLevelUnKnown  (0),
    requestImportanceLevel1        (1), -- The least important request
    requestImportanceLevel2        (2), -- The values here shall be assigned
    requestImportanceLevel3        (3), -- Meanings based on regional needs
    requestImportanceLevel4        (4), -- for each of the basic roles which
    requestImportanceLevel5        (5), -- are defined elsewhere
    requestImportanceLevel6        (6),
    requestImportanceLevel7        (7),
    requestImportanceLevel8        (8),
    requestImportanceLevel9        (9),
    requestImportanceLevel10      (10),
    requestImportanceLevel11      (11),
    requestImportanceLevel12      (12),
    requestImportanceLevel13      (13),
    requestImportanceLevel14      (14), -- The most important request
    requestImportanceReserved     (15)  -- Reserved for future use
    }

RequestSubRole ::= ENUMERATED {
    requestSubRoleUnKnown    (0),
    requestSubRole1          (1), -- The first type of sub role
    requestSubRole2          (2), -- The values here shall be assigned
    requestSubRole3          (3), -- Meanings based on regional needs
    requestSubRole4          (4), -- to refine and expand the basic
    requestSubRole5          (5), -- roles which are defined elsewhere
    requestSubRole6          (6),
    requestSubRole7          (7),
    requestSubRole8          (8),
    requestSubRole9          (9),
    requestSubRole10        (10),
    requestSubRole11        (11),
    requestSubRole12        (12),
    requestSubRole13        (13),
    requestSubRole14        (14), -- The last type of sub role
    requestSubRoleReserved  (15)  -- Reserved for future use
    }

RestrictionAppliesTo ::= ENUMERATED {
    none,              -- applies to nothing
    equippedTransit,   -- buses etc.
    equippedTaxis,
    equippedOther,     -- other vehicle types with
                       -- necessary signal phase state
                       -- reception equipment
    emissionCompliant, -- regional variants with more
                       -- definitive items also exist
    equippedBicycle,
    weightCompliant,
    heightCompliant,
    -- Items dealing with traveler needs serviced by the infrastructure
    -- These end users (which are not vehicles) are presumed to be suitably equipped
    pedestrians,
    slowMovingPersons,
    wheelchairUsers,
    visualDisabilities,
    audioDisabilities,  -- hearing
    otherUnknownDisabilities,
    ...
    }

RestrictionClassID ::= INTEGER (0..255)
   -- An index value to identify data about classes of users
   -- the value used varies with each intersection's
   -- needs and is defined in the map to the assigned 
   -- classes of supported users.

RoadRegulatorID ::= INTEGER (0..65535)
   -- The value zero shall be used for testing only

RoadSegmentID ::= INTEGER (0..65535)
   -- The values zero to 255 shall be used for testing only
   -- Note that the value assigned to an RoadSegment will be
   -- unique within a given regional ID only during its use

/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop
filatov's avatar
filatov committed
RoadwayCrownAngle ::= INTEGER (-128..127) 
    -- In LSB units of 0.3 degrees of angle
    -- over a range of -38.1 to + 38.1 degrees
    -- The value -128 shall be used for unknown
    -- The value zero shall be used for angles 
    -- which are between -0.15 and +0.15
filatov's avatar
filatov committed
   
Scale-B12 ::= INTEGER (-2048..2047)  -- in steps of 0.05 percent

/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop
filatov's avatar
filatov committed
SignalGroupID ::= INTEGER (0..255) 
    -- The value 0 shall be used when the ID is
    -- not available or not known
    -- the value 255 is reserved to indicate a 
    -- permanent green movement state
    -- therefore a simple 8 phase signal controller 
    -- device might use 1..9 as its groupIDs
filatov's avatar
filatov committed

/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop
filatov's avatar
filatov committed
SegmentAttributeXY ::= ENUMERATED {
   -- Various values which can be Enabled and Disabled for a lane segment
   
   -- General Items
   reserved                  ,  
   doNotBlock                ,  -- segment where a vehicle 
                                -- may not come to a stop
   whiteLine                 ,  -- segment where lane crossing not allowed
                                -- such as the final few meters of a lane
   
   -- Porous Lane states, merging, turn outs, parking etc.
   
   mergingLaneLeft           ,  -- indicates porous lanes
   mergingLaneRight          ,
   
   curbOnLeft                ,  -- indicates presence of curbs
   curbOnRight               ,
   
   loadingzoneOnLeft         ,  -- loading or drop off zones
   loadingzoneOnRight        ,
   
   turnOutPointOnLeft        ,  -- opening to adjacent street/alley/road
   turnOutPointOnRight       ,
   
   adjacentParkingOnLeft     , -- side of road parking
   adjacentParkingOnRight    ,
   
   -- Bike Lane Needs
   adjacentBikeLaneOnLeft    , -- presence of marked bike lanes
   adjacentBikeLaneOnRight   ,
   sharedBikeLane            , -- right of way is shared with bikes
                               -- who may occupy entire lane width
   bikeBoxInFront            ,
   
   -- Transit Needs
   transitStopOnLeft         , -- any form of bus/transit loading
                               -- with pull in-out access to lane on left
   transitStopOnRight        , -- any form of bus/transit loading
                               -- with pull in-out access to lane on right
   transitStopInLane         , -- any form of bus/transit loading
                               -- in mid path of the lane
   sharedWithTrackedVehicle  , -- lane is shared with train or trolley 
                               -- not used for crossing tracks
  
     
   -- Pedestrian Support Attributes
   safeIsland                , -- begin/end a safety island in path
   lowCurbsPresent           , -- for ADA support
   rumbleStripPresent        , -- for ADA support
   audibleSignalingPresent   , -- for ADA support
   adaptiveTimingPresent     , -- for ADA support
   rfSignalRequestPresent    , -- Supports RF push to walk technologies
   partialCurbIntrusion      , -- path is blocked by a median or curb 
                               -- but at least 1 meter remains open for use
                               -- and at-grade passage
   
   -- Lane geometry details  (see standard for defined shapes)
   taperToLeft               , -- Used to control final path shape
   taperToRight              , -- Used to control final path shape
   taperToCenterLine         , -- Used to control final path shape

   -- Parking Lane and Curb Attributes
   parallelParking           , -- 
   headInParking             , -- Parking at an angle with the street
   freeParking               , -- no restriction on use of parking
   timeRestrictionsOnParking , -- Parking is not permitted at all times
                               -- typically used when the 'parking' lane 
                               -- becomes a driving lane at times
   costToPark                , -- Used where parking has a cost
   midBlockCurbPresent       , -- a protruding curb near lane edge
   unEvenPavementPresent     , -- a disjoint height at lane edge
   ...
   }
filatov's avatar
filatov committed

SpeedAdvice ::= INTEGER (0..500) 
    -- LSB units are 0.1 m/s^2
    -- the value 499 shall be used for values at or greater than 49.9 m/s
    -- the value 500 shall be used to indicate that speed is unavailable


TemporaryID ::= OCTET STRING (SIZE(4))

TimeIntervalConfidence ::= INTEGER (0..15)   
   -- Value   Probability
   --   0         21%
   --   1         36%
   --   2         47%
   --   3         56%
   --   4         62%
   --   5         68%
   --   6         73%
   --   7         77%
   --   8         81%
   --   9         85%
   --   10        88%
   --   11        91%
   --   12        94%
   --   13        96%
   --   14        98%
   --   15        100%

TransitVehicleOccupancy ::= ENUMERATED {
    occupancyUnknown    (0),  
    occupancyEmpty      (1),  
    occupancyVeryLow    (2),  
    occupancyLow        (3),  
    occupancyMed        (4),  
    occupancyHigh       (5),  
    occupancyNearlyFull (6),  
    occupancyFull       (7)
    }

TransitVehicleStatus ::= BIT STRING {
    loading     (0), -- parking and unable to move at this time
    anADAuse    (1), -- an ADA access is in progress (wheelchairs, kneeling, etc.)
    aBikeLoad   (2), -- loading of a bicycle is in progress
    doorOpen    (3), -- a vehicle door is open for passenger access
    charging    (4), -- a vehicle is connected to charging point
    atStopLine  (5)  -- a vehicle is at the stop line for the lane it is in
    } (SIZE(8))

TransmissionState ::= ENUMERATED {
   neutral      (0), -- Neutral
   park         (1), -- Park 
   forwardGears (2), -- Forward gears
   reverseGears (3), -- Reverse gears 
   reserved1    (4),      
   reserved2    (5),      
   reserved3    (6),      
   unavailable  (7)  -- not-equipped or unavailable value,
   -- Any related speed is relative to the vehicle reference frame used
   }

VehicleType ::= ENUMERATED {
   none                 (0),  -- Not Equipped, Not known or unavailable
   unknown              (1),  -- Does not fit any other category    
   special              (2),  -- Special use    
   moto                 (3),  -- Motorcycle    
   car                  (4),  -- Passenger car    
   carOther             (5),  -- Four tire single units    
   bus                  (6),  -- Buses    
   axleCnt2             (7),  -- Two axle, six tire single units    
   axleCnt3             (8),  -- Three axle, single units    
   axleCnt4             (9),  -- Four or more axle, single unit    
   axleCnt4Trailer      (10), -- Four or less axle, single trailer    
   axleCnt5Trailer      (11), -- Five or less axle, single trailer    
   axleCnt6Trailer      (12), -- Six or more axle, single trailer    
   axleCnt5MultiTrailer (13), -- Five or less axle, multi-trailer    
   axleCnt6MultiTrailer (14), -- Six axle, multi-trailer    
   axleCnt7MultiTrailer (15),  -- Seven or more axle, multi-trailer    
   ...  
   } 

/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop
filatov's avatar
filatov committed
Velocity ::= INTEGER (0..8191) -- Units of 0.02 m/s
    -- The value 8191 indicates that 
    -- velocity is unavailable
filatov's avatar
filatov committed

WaitOnStopline ::= BOOLEAN -- 
         -- True or False
         -- If "true", the vehicles on this specific connecting 
         -- maneuver have to stop on the stop-line
         -- and not to enter the collision area

ZoneLength ::= INTEGER (0..10000)
    -- Unit = 1 meter, 0 = unknown, 
    -- The value 10000 to be used for Distances >=10000 m
    -- (e.g. from known point to another point along a 
    -- known path, often against traffic flow direction 
    -- when used for measuring queues)

END