Kitt.Message.MAP (kitt v0.4.0) View Source

Defines the structure and instantiation function for creating a J2735-compliant MapData message

A MapData message defines the geometry of a roadway intersection including the lanes, ingress/egress vectors and other defined rules for traversing the intersection.

Link to this section Summary

Functions

Produces a MAP message struct from an equivalent map or keyword input

Returns the MAP identifying atom recognized by the ASN1 spec

Returns the MAP identifying integer

Link to this section Types

Specs

bike_lane_attribute() ::
  :bikeRevocableLane
  | :pedestrianUseAllowed
  | :isBikeFlyOverLane
  | :fixedCycleTime
  | :biDirectionalCycleTimes
  | :isolatedByBarrier
  | :unsignalizedSegmentsPresent

Specs

connecting_lane() :: %{lane: non_neg_integer(), maneuver: maneuver()}

Specs

connection() :: %{
  connectingLane: connecting_lane(),
  remoteIntersection: Kitt.Types.intersection_reference_id(),
  signalGroup: non_neg_integer(),
  userClass: non_neg_integer(),
  connectionID: non_neg_integer()
}
Link to this type

crosswalk_lane_attribute()

View Source

Specs

crosswalk_lane_attribute() ::
  :crosswalkRevocableLane
  | :bicyleUseAllowed
  | :isXwalkFlyOverLane
  | :fixedCycleTime
  | :biDirectionalCycleTimes
  | :hasPushToWalkButton
  | :audioSupport
  | :rfSignalRequestPresent
  | :unsignalizedSegmentsPresent

Specs

data_parameters() :: %{
  processMethod: String.t(),
  processAgency: String.t(),
  lastCheckedDate: String.t(),
  geoidUsed: String.t()
}

Specs

directional_use() :: :ingressPath | :egressPath

Specs

generic_lane() :: %{
  laneID: non_neg_integer(),
  name: String.t(),
  ingressApproach: non_neg_integer(),
  egressApproach: non_neg_integer(),
  laneAttributes: lane_attributes(),
  maneuvers: maneuver(),
  nodeList: Kitt.Types.node_list_xy(),
  connectsTo: [connection()],
  overlays: [non_neg_integer()],
  regional: [Kitt.Types.regional_extension()]
}
Link to this type

intersection_geometry()

View Source

Specs

intersection_geometry() :: %{
  name: String.t(),
  id: Kitt.Types.intersection_reference_id(),
  revision: non_neg_integer(),
  refPoint: Kitt.Types.position_3d(),
  laneWidth: non_neg_integer(),
  speedLimits: [Kitt.Types.regulatory_speed_limit()],
  laneSet: [generic_lane()],
  preemptPriorityData: [signal_control_zone()],
  regional: [Kitt.Types.regional_extension()]
}

Specs

lane_attribute_type() ::
  {:vehicle, vehicle_lane_attribute()}
  | {:crosswalk, crosswalk_lane_attribute()}
  | {:bikeLane, bike_lane_attribute()}
  | {:sidewalk, sidewalk_lane_attribute()}
  | {:median, median_lane_attribute()}
  | {:striping, striping_lane_attribute()}
  | {:trackedVehicle, tracked_vehicle_attribute()}
  | {:parking, parking_lane_attribute()}

Specs

lane_attributes() :: %{
  directionalUse: directional_use(),
  sharedWith: shared_with(),
  laneType: lane_attribute_type(),
  regional: [Kitt.Types.regional_extension()]
}

Specs

maneuver() ::
  :maneuverStraightAllowed
  | :maneuverLeftAllowed
  | :maneuverRightAllowed
  | :maneuverUTurnAllowed
  | :maneuverLeftTurnOnRedAllowed
  | :maneuverRightTurnOnRedAllowed
  | :maneuverLaneChangeAllowed
  | :maneuverNoStoppingAllowed
  | :yieldAllwaysRequired
  | :goWithHalt
  | :caution
  | :reserved1
Link to this type

median_lane_attribute()

View Source

Specs

median_lane_attribute() ::
  :"median-RevocableLane"
  | :median
  | :whiteLineHashing
  | :stripedLines
  | :doubleStripedLines
  | :trafficCones
  | :constructionBarrier
  | :trafficChannels
  | :lowCurbs
  | :highCurbs
Link to this type

parking_lane_attribute()

View Source

Specs

parking_lane_attribute() ::
  :parkingRevocableLane
  | :parallelParkingInUse
  | :headInParkingInUse
  | :doNotParkZone
  | :parkingForBusUse
  | :parkingForTaxiUse
  | :noPublicParkingUse
Link to this type

restriction_applies_to()

View Source

Specs

restriction_applies_to() ::
  :none
  | :equippedTransit
  | :equippedTaxis
  | :equippedOther
  | :emissionCompliant
  | :equippedBicycle
  | :weightCompliant
  | :heightCompliant
  | :pedestrians
  | :slowMovingPersons
  | :wheelchairUsers
  | :visualDisabilities
  | :audioDisabilities
  | :otherUnknownDisabilities
Link to this type

restriction_class_assignment()

View Source

Specs

restriction_class_assignment() :: %{
  id: non_neg_integer(),
  users: [restriction_user_type()]
}
Link to this type

restriction_user_type()

View Source

Specs

restriction_user_type() ::
  {:basicType, restriction_applies_to()}
  | {:regional, [Kitt.Types.regional_extension()]}

Specs

road_segment() :: %{
  name: String.t(),
  id: Kitt.Types.road_segment_reference_id(),
  refPoint: Kitt.Types.position_3d(),
  laneWidth: non_neg_integer(),
  speedLimits: [Kitt.Types.regulatory_speed_limit()],
  roadLaneSet: [generic_lane()],
  regional: [Kitt.Types.regional_extension()]
}

Specs

shared_with() ::
  :overlappingLaneDescriptionProvided
  | :multipleLanesTreatedAsOneLane
  | :otherNonMotorizedTrafficTypes
  | :individualMotorizedVehicleTraffic
  | :busVehicleTraffic
  | :taxiVehicleTraffic
  | :pedestriansTraffic
  | :cyclistVehicleTraffic
  | :trackedVehicleTraffic
  | :pedestrianTraffic
Link to this type

sidewalk_lane_attribute()

View Source

Specs

sidewalk_lane_attribute() ::
  :"sidewalk-RevocableLane"
  | :bicyleUseAllowed
  | :isSidewalkFlyOverLane
  | :walkBikes

Specs

signal_control_zone() :: %{zone: Kitt.Types.regional_extension()}
Link to this type

striping_lane_attribute()

View Source

Specs

striping_lane_attribute() ::
  :stripeToConnectingLanesRevocableLane
  | :stripeDrawOnLeft
  | :stripeDrawOnRight
  | :stripeToConnectingLanesLeft
  | :stripeToConnectingLanesRight
  | :stripeToConnectingLanesAhead

Specs

t() :: %Kitt.Message.MAP{
  dataParameters: data_parameters(),
  intersections: [intersection_geometry()],
  layerID: non_neg_integer(),
  layerType:
    :none
    | :mixedContent
    | :generalMapData
    | :intersectionData
    | :curveData
    | :roadwaySectionData
    | :parkingAreaData
    | :sharedLaneData,
  msgIssueRevision: non_neg_integer(),
  regional: [Kitt.Types.regional_extension()],
  restrictionList: [restriction_class_assignment()],
  roadSegments: [road_segment()],
  timeStamp: Kitt.Types.minute_of_year()
}

Defines the MapData message and the data elements comprising its fields

Link to this type

tracked_vehicle_attribute()

View Source

Specs

tracked_vehicle_attribute() ::
  :"spec-RevocableLane"
  | :"spec-commuterRailRoadTrack"
  | :"spec-lightRailRoadTrack"
  | :"spec-heavyRailRoadTrack"
  | :"spec-otherRailType"
Link to this type

vehicle_lane_attribute()

View Source

Specs

vehicle_lane_attribute() ::
  :isVehicleRevocableLane
  | :isVehicleFlyOverLane
  | :hovLaneUseOnly
  | :restrictedToBusUse
  | :restrictedToTaxiUse
  | :restrictedFromPublicUse
  | :hasIRbeaconCoverage
  | :permissionOnRequest

Link to this section Functions

Specs

new(map() | keyword()) :: t()

Produces a MAP message struct from an equivalent map or keyword input

Specs

type() :: atom()

Returns the MAP identifying atom recognized by the ASN1 spec

Specs

type_id() :: non_neg_integer()

Returns the MAP identifying integer