VAM-PDU-Descriptions.asn 11.1 KB
Newer Older
-- ETSI TS 103 300-3 V0.4.0 (2020-07)

Denis Filatov's avatar
Denis Filatov committed
VAM-PDU-Descriptions {itu-t(0) identified-organization(4) etsi(0) itsDomain(5)
    wg1(1) ts(103300) vam(1) version1(1)}
Denis Filatov's avatar
Denis Filatov committed
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN

    IMPORTS
    Curvature, CurvatureCalculationMode, ExteriorLights, Heading,
    LanePosition, LateralAcceleration,
    LongitudinalAcceleration, PathHistory, ReferencePosition, Speed,
    StationID, SteeringWheelAngle, VerticalAcceleration, YawRate
    FROM ITS-Container {itu-t(0) identified-organization(4) etsi(0)
        itsDomain(5) wg1(1) ts(102894) cdd(2) version(2)}
Denis Filatov's avatar
Denis Filatov committed

    GenerationDeltaTime
    FROM CAM-PDU-Descriptions {itu-t(0) identified-organization(4) etsi(0)
        itsDomain(5) wg1(1) en(302637) cam(2) version(2)}


    -- Note: sVAM-Temp-Imports defines types that are intended to be updated within 
    -- or added to the Common Data Dictionary. Once the CDD has been updated, 
    -- VAM-Temp-Imports will also be updated to import the new types directly 
    -- from the CDD. The use of WITH SUCCESSORS ensures that the import 
    -- statement below will not have to change.

    AreaCircular, AreaPolygon, AreaRectangle, BasicContainer, ItsPduHeader
    FROM VAM-Temp-Imports {itu-t(0) identified-organization(4) etsi(0) 
        itsDomain(5) wg1(1) ts(103300) temp-imports(255) version1(1)}

    IntersectionReferenceID, LaneID 
    FROM DSRC {iso (1) standard (0) signalizedIntersection (19091) profilec(2)
        dsrc (2) version (2)}

Denis Filatov's avatar
Denis Filatov committed
    ;

Denis Filatov's avatar
Denis Filatov committed
    VAM ::= SEQUENCE {
        header ItsPduHeaderVam,
        vam    VruAwareness
    }

    ItsPduHeaderVam ::= ItsPduHeader(WITH COMPONENTS {
        ...,
        messageID(vam)
    })
Denis Filatov's avatar
Denis Filatov committed
    VruAwareness ::= SEQUENCE {
        generationDeltaTime  GenerationDeltaTime, -- from CAM-PDU-Descriptions
        vamParameters        VamParameters 
Denis Filatov's avatar
Denis Filatov committed
    }

    VamParameters ::= SEQUENCE {
        basicContainer                 BasicContainer, -- from VAM-Temp-Imports
        vruHighFrequencyContainer      VruHighFrequencyContainer OPTIONAL, 
        vruLowFrequencyContainer       VruLowFrequencyContainer OPTIONAL,
        vruClusterInformationContainer VruClusterInformationContainer OPTIONAL,
        vruClusterOperationContainer   VruClusterOperationContainer OPTIONAL,
        vruMotionPredictionContainer   VruMotionPredictionContainer OPTIONAL,
Denis Filatov's avatar
Denis Filatov committed
        ...
    }
Denis Filatov's avatar
Denis Filatov committed

    VruProfile ::= ENUMERATED {
        unavailable(0), pedestrian(1), cyclist(2), motorcyclist(3), animal(4),
        max(15)
    }
    
    VruHighFrequencyContainer ::= SEQUENCE {
        heading                  Heading,  -- from ITS-Container
        speed                    Speed, -- from ITS-Container
        longitudinalAcceleration LongitudinalAcceleration, -- from ITS-Container
        curvature                Curvature OPTIONAL, -- from ITS-Container
        curvatureCalculationMode CurvatureCalculationMode OPTIONAL, -- from ITS-Container
        yawRate                  YawRate OPTIONAL, -- from ITS-Container
        lateralAcceleration      LateralAcceleration OPTIONAL, -- from ITS-Container
        verticalAcceleration     VerticalAcceleration OPTIONAL, -- from ITS-Container
        vruLanePosition          VruLanePosition OPTIONAL,
        environment              VruEnvironment OPTIONAL,
        movementControl          VruMovementControl OPTIONAL,
        orientation              VruOrientation OPTIONAL,
        rollAngle                VruRollAngle OPTIONAL, 
        deviceUsage              VruDeviceUsage OPTIONAL,
        ...
Denis Filatov's avatar
Denis Filatov committed
    }

    VruLanePosition ::= CHOICE {
        offRoadLanePosition    OffRoadLanePosition,
        vehicularLanePosition  LanePosition, -- from ITS-Container
        trafficIslandPosition  TrafficIslandPosition,
        mapPosition            MapPosition,
Denis Filatov's avatar
Denis Filatov committed
        ...
    }

    OffRoadLanePosition ::= ENUMERATED {
        unavailable(0), sidewalk(1), parkingLane(2), bikeLane(3), 
        max(15)
    }

    TrafficIslandPosition ::= SEQUENCE {
        oneSide    NonIslandLanePosition,
        otherSide  NonIslandLanePosition,
        ...
    }
  
    NonIslandLanePosition ::= CHOICE {
        offRoadLanePosition    OffRoadLanePosition,
        vehicularLanePosition  LanePosition, -- from ITS-Container
        mapPosition            MapPosition,
    MapPosition ::= SEQUENCE {
        intersectionId    IntersectionReferenceID,
        lane              LaneID
    }

    VruEnvironment ::= ENUMERATED {
        unavailable (0), intersectionCrossing(1), zebraCrossing(2), sidewalk (3),
        onVehicleRoad(4), protectedGeographicArea(5), max (255)
        -- values 6-254 reserved for later use
    }

    VruMovementControl ::= ENUMERATED {
        unavailable (0), braking(1), hardBraking(2), stopPedaling (3),
        brakingAndStopPedaling(4), hardBrakingAndStopPedaling (5), 
        noReaction(6),   max (255)
        -- values 7-254 reserved for later use
    }

    VruOrientation ::= Heading -- from ITS-Container

    VruRollAngle ::= SteeringWheelAngle -- from ITS-Container

    VruDeviceUsage ::= ENUMERATED {
        unavailable(0), other(1), idle(2), listeningToAudio(3), typing(4),
        calling(5), playingGames(6), reading(7), viewing(8), max(255)
        -- values 9-254 reserved for later use
    }

    VruLowFrequencyContainer ::= SEQUENCE {
        profileAndSubprofile     VruProfileAndSubprofile OPTIONAL,
        exteriorLights           VruExteriorLights OPTIONAL,
        sizeClass                VruSizeClass OPTIONAL,
       ...
    }

    VruProfileAndSubprofile ::= CHOICE {
      pedestrian  VruSubProfilePedestrian,
      bicyclist     VruSubProfileBicyclist,
      motorcylist VruSubProfileMotorcyclist,
      animal      VruSubProfileAnimal,
      ...
    }

    VruSubProfilePedestrian ::= ENUMERATED {
      unavailable(0), ordinary-pedestrian(1),
      road-worker(2), first-responder(3),
      max(15)
    }

    VruSubProfileBicyclist ::= ENUMERATED {
      unavailable(0), bicyclist(1), wheelchair-user(2), horse-and-rider(3), 
      rollerskater(4), e-scooter(5), personal-transporter(6),
      pedelec(7), speed-pedelec(8),
      max(15)
    }

    VruSubProfileMotorcyclist ::= ENUMERATED {
      unavailable(0), moped(1), motorcycle(2), motorcycle-and-sidecar-right(3), 
      motorcycle-and-sidecar-left(4), max(15)
    }

    VruSubProfileAnimal ::= ENUMERATED {
      unavailable(0), max(15)
    }

    VruExteriorLights ::= SEQUENCE {
        vruSpecific     VruSpecificExteriorLights, -- defined below
        generic         ExteriorLights
        -- should be extensible?
    }

    VruSpecificExteriorLights ::= BIT STRING {
        unavailable (0),
        backFlashLight (1),
        helmetLight (2),
        armLight (3),
        legLight (4),
        wheelLight (5)
    } (SIZE(8))

    VruSizeClass ::= ENUMERATED {
        unavailable (0), low(1), medium(2), high (3), max(15)
        -- values 4-14 reserved for later use
    }

    VruClusterInformationContainer ::= SEQUENCE {
        clusterId                     ClusterId,
        clusterBoundingBoxShape       ClusterBoundingBoxShape,
        clusterCardinalitySize        INTEGER(0..255), -- 0 means unknown
        clusterProfiles               ClusterProfiles,
        ...
    }

    ClusterId ::= INTEGER(0..255)

    ClusterBoundingBoxShape::= CHOICE {
        clusterRectangle AreaRectangle, -- from VAM-Temp-Imports
        clusterCircle    AreaCircular, -- from VAM-Temp-Imports
        clusterPolygon   AreaPolygon, -- from VAM-Temp-Imports
        ...
    }

    ClusterProfiles ::= BIT STRING {
        pedestrian(0),
        bicyclist(1),
        motorcyclist(2),
        animal(3)
    } (SIZE(4))

    -- this is OPTIONAL elements rather than a CHOICE because a
    -- VRU ITS-S could be leaving one cluster and joining another.
    VruClusterOperationContainer ::= SEQUENCE {
        clusterJoinInfo     ClusterJoinInfo OPTIONAL,
        clusterLeaveInfo    ClusterLeaveInfo OPTIONAL,
        clusterBreakupInfo  ClusterBreakupInfo OPTIONAL,
        clusterIdChangeInfo VruClusterOpTimestamp OPTIONAL,
        ...
    }

    VruClusterOpTimestamp ::= INTEGER (1..255)

Denis Filatov's avatar
Denis Filatov committed
    ClusterJoinInfo ::= SEQUENCE {
        clusterId       ClusterId,
        joinTime        VruClusterOpTimestamp,
        ...
    }

    ClusterLeaveInfo ::= SEQUENCE {
        clusterId               ClusterId,
        clusterLeaveReason      ClusterLeaveReason,
    ClusterBreakupInfo ::= SEQUENCE {
        clusterBreakupReason  ClusterBreakupReason,
        breakupTime           VruClusterOpTimestamp,
    ClusterLeaveReason ::= ENUMERATED {
         notProvided                   (0),
         clusterLeaderLost             (1),    
         clusterDisbandedByLeader      (2),    
         outOfClusterBoundingBox       (3),    
         outOfClusterSpeedRange        (4),
         joiningAnotherCluster         (5),
         max(15)            
    }
Denis Filatov's avatar
Denis Filatov committed

    ClusterBreakupReason ::= ENUMERATED {
         notProvided                        (0),
         clusteringPurposeCompleted         (1),
         leaderMovedOutOfClusterBoundingBox (2),    
         joiningAnotherCluster              (3),
         max(15)                                                                 
    }

    VruMotionPredictionContainer ::= SEQUENCE {
        pathHistory                      PathHistory OPTIONAL,
        pathPrediction                   PathPrediction OPTIONAL,
        safeDistance                     SequenceOfVruSafeDistanceIndication OPTIONAL,
        trajectoryInterceptionIndication SequenceOfTrajectoryInterceptionIndication OPTIONAL,
        accelerationChangeIndication     AccelerationChangeIndication OPTIONAL,
        headingChangeIndication          HeadingChangeIndication OPTIONAL,
        stabilityChangeIndication        StabilityChangeIndication OPTIONAL,
    PathPrediction ::= PathHistory

    SequenceOfVruSafeDistanceIndication ::= 
        SEQUENCE(SIZE(0..8)) OF VruSafeDistanceIndication

    VruSafeDistanceIndication ::= SEQUENCE {
        subjectStation            StationID OPTIONAL,
        stationSafeDistanceIndication  BOOLEAN,
        timeToCollision           ActionDeltaTime OPTIONAL,
    SequenceOfTrajectoryInterceptionIndication ::= 
        SEQUENCE (SIZE(1..8)) OF TrajectoryInterceptionIndication

    TrajectoryInterceptionIndication  ::= SEQUENCE {
        subjectStation                    StationID OPTIONAL, 
        trajectoryInterceptionIndication  BOOLEAN,
        ... 
    }

    HeadingChangeIndication ::= SEQUENCE {
        direction        LeftOrRight,
        actionDeltaTime  ActionDeltaTime,
        ...
    }

    LeftOrRight ::= ENUMERATED { left, right }

    ActionDeltaTime ::= INTEGER {zero(0), hundredMs(1), twoHundredMs(2),
        unavailable (127) } (0..127)

    AccelerationChangeIndication ::= SEQUENCE {
         accelOrDecel    AccelOrDecel,
         actionDeltaTime ActionDeltaTime,
         ...
    }

    AccelOrDecel ::= ENUMERATED { accelerate, decelerate }
 
    StabilityChangeIndication ::= SEQUENCE {
       lossProbability     StabilityLossProbability,
       actionDeltaTime     ActionDeltaTime,
       ...
    } 

    StabilityLossProbability ::= INTEGER { zero(0), twoPercent (1),
        fourPercent(2), unavailable (63) } (0..63) 


Denis Filatov's avatar
Denis Filatov committed
END