Commit 6917e60e authored by András Wippelhauser's avatar András Wippelhauser
Browse files

Add first version of ASN.1

parent ecc271f3
Loading
Loading
Loading
Loading
+291 −0
Original line number Diff line number Diff line
PODAM-PDU-Descriptions  {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) podasPduRelease2 (104072) major-version-2 (2) minor-version-1 (1)} 

DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

IMPORTS 

BasicContainer, ItsPduHeader, Identifier2B, ParkingSpaceStatus, StandardLength12b, TimestampIts, StationId, Wgs84Angle, DeltaPosition, Path, DeltaTimeTenthOfSecond, StandardLength1B
FROM ETSI-ITS-CDD {
    itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) 102894 cdd (2) major-version-4 (4) minor-version-2 (2)
}
;

/**
 * This DF indicates a change of acceleration.
 *
 * @field header: This header contains basic message information
 *
 * @field podasParameters: This field contains the data necessary for PODAM
 *
 * @category:
 * @revision: Created in V2.1.1
*/
PODAM ::= SEQUENCE {
	header          ItsPduHeader (WITH COMPONENTS {... , protocolVersion (2), messageId(21)}),
	podasParameters PodasParameters
}

/**
 * This DF indicates the parameters necessary for the PODAM
 *
 * @field basicContainer: The location and type of the message sender ITS-S
 *
 * @field detections: The list of detected spots.
 *
 * @field intentIndication: The spot that the ego vehicle intends to occupy
 *
 * @category:
 * @revision: Created in V2.1.1
*/
PodasParameters ::= SEQUENCE {
    basicContainer      BasicContainer,
    -- Idea: introduce management container
    detections          ParkingSpotDetectionDatabase OPTIONAL,
    intentIndication    ParkingSpotIntentIndication OPTIONAL
}

/**
 * This DE describes the level of the parking spot in case of multilevel parking facilities
 *
 * @unit: 1 Level in case there are entire levels and 2 in case of shifter levels
 * @category:
 * @revision: Created in V2.1.1
*/
LevelInformation ::= INTEGER(-40..87)

/**
 * This DF indicates the spot intended to be allocated by the ego vehicle
 *
 * @field spotId: The identifier of the parking spot. Unique for each sender.
 *
 * @field reporter: The station id of the reporter of the parkicular spot.
 *
 * @field estimatedArrivalTime: The estimated time of arrival to the parking spot.
 *
 * @category:
 * @revision: Created in V2.1.1
*/
ParkingSpotIntentIndication ::= SEQUENCE {
    spotId                  Identifier2B,
    reporter                StationId,
    estimatedArrivalTime    TimestampIts OPTIONAL
}

/**
 * This DF describes the list of spot detections
 *
 * @category:
 * @revision: Created in V2.1.1
*/
ParkingSpotDetectionDatabase ::= SEQUENCE (SIZE(1..32, ...)) OF ParkingSpotDetection

/**
 * This DF describes parking spot detection parameters
 *
 * @field spotId: The identifier of the parking spot. Shall be unique when combined with source
 *
 * @field source: The stationId of the sender vehicle.
 *
 * @field orientation: The orientation of the parking spot.
 *
 * @field levelInformation: The level of the parking spot in a parking facility.
 *
 * @field location: The location description of the parking spot.
 *
 * @field detectionTime: The end time of detection. (e.g., when the detector vehicle passed by)
 *
 * @field detectionMethod: The used inputs for the detection.
 *
 * @category:
 * @revision: Created in V2.1.1
*/
ParkingSpotDetection ::= SEQUENCE {
    spotId Identifier2B,
    source  StationId OPTIONAL,
    orientation Wgs84Angle OPTIONAL,
    levelInformation LevelInformation OPTIONAL,
    location ParkingSpotDetectionLocation,
    detectionTime TimestampIts,
    detectionMethod ParkingSpotDetectionMethod,
    ...
}

/**
 * This DF represents the location of parking spot
 * 
 * @field individualSpot: The location information of an individual spot
 * 
 * @field subsequentSpots: The location information of subsequent spots
 * 
 * @category:
 * @revision: Created in V2.1.1
 */
ParkingSpotDetectionLocation ::= CHOICE {
    individualSpot	IndividualParkingSpot,
    subsequentSpots	SubsequentParkingSpotSegments,
    ...
}

/**
 * This DF represents the location of an individual parking spot
 * 
 * @field position: The position of the individual spot relative to the reference position.
 * 
 * @field entrySpace: The distance between two objects blocking the spot from the side. In case of parallel parking
 * spots, the direction is measured in parallell to the direction of the parking spot. Otherwise the distance is 
 * measured perpendicular to the direction of the parking spot.
 *
 * @note: With this approach, the vehicle driver can easily decide if the vehicle fits in the parking spot considering
 * the current occupation.
 *
 * @field spotWidth: The width of a parking spot. This field indicates the length between 
 * the center of the width markings, if there are any.
 *
 * @field spotLength: The length of a parking spot. This field indicates the length between 
 * the center of the length markings, if there are any.
 *
 * @field externalLinks: Represents links to external systems, e.g., to electric vehicle charging stations.
 *
 * @category:
 * @revision: Created in V2.1.1
 */
IndividualParkingSpot ::= SEQUENCE {
    position DeltaPosition,
    entrySpace StandardLength1B OPTIONAL,
    spotWidth StandardLength1B OPTIONAL,
    spotLength StandardLength1B OPTIONAL,
    externalLinks ExternalLinks OPTIONAL,
    ...
}

/**
 * This DF represents external ids
 * 
 * @field evId: Identifier of the electric charing spot. -> Reference to ISO standard
 * 
 * @field parkingSpaceId: The identifier of the parking space, as defined in the ParkingSpaceBasic data frame.
 *
 * @category:
 * @revision: Created in V2.1.1
 */
ExternalLinks ::= SEQUENCE {
    evId            EvId OPTIONAL,
    parkingSpaceId  Identifier2B OPTIONAL,
    ...
}

/**
 * This DE represents the electric vehicle charging station ID
 * 
 * @category:
 * @revision: Created in V2.1.1
 */
EvId ::= INTEGER(0..4294967295) -- TODO: figure out real evids

/**
 * This DE indicates the method that was used to detect a parking spot
 *
 * The corresponding bit shall be set to 1 under the following conditions:
 * - 0 - `sensor`               - A sensor (radar, camera, lidar, ultrasound, etc.) was used,
 * - 1 - `leavingEgo`           - Ego left the particular parking spot,
 * - 2 - `leavingVehicle`       - A remote vehicle left the particular parking spot,
 * - 3 - `staticMapInformation` - At least some information was received from a static map,
 *
 * Otherwise (for example when the corresponding system is not available due to non equipped system
 * or information is unavailable), the corresponding bit shall be set to 0.
 *
 * @category:
 * @revision: V2.1.1
 */
ParkingSpotDetectionMethod ::= BIT STRING {
    sensor                  (0),
    leavingEgo              (1),
    leavingVehicle          (2),
    staticMapInformation    (3)
} (SIZE(4,...))

/**
 * This DF describes a list of subsequent parking spots
 *
 * @category:
 * @revision: Created in V2.1.1
*/
SubsequentParkingSpotSegments ::= SEQUENCE SIZE(1..16) OF SubsequentParkingSpotSegment

/**
 * This DF represents subsequent parking spots
 *
 * @field path: The path of the ego vehicle. A new point shall be added each time the heading of the
 * vehicle changes more then X degrees, the closest distance between the current position and line calculated
 * from the last two path points exceeds Y meters, or the or the detection segment is ended. The pathDeltaTime in 
 * the path points should not be filled.
 *
 * @field spotsOnTheLeft: The list of parking spot segments on the left of the vehicle.
 *
 * @field spotsOnTheRight: The list of parking spot segments on the right of the vehicle.
 *
 * @field spotWidth: The width of a parking spot. This field indicates the length between 
 * the center of the width markings, if there are any. The data field is relevant for the whole segment.
 *
 * @field spotLength: The length of a parking spot. This field indicates the length between 
 * the center of the length markings, if there are any. The data field is relevant for the whole segment.
 *
 * @field externalLinks: Represents links to external systems, e.g., to electric vehicle charging stations.
 *
 * @note: The entrySpace can be calculated from the subsequent distances and in the right or left distances 
 * and the orientation information.
 * @category:
 * @revision: Created in V2.1.1
 */
SubsequentParkingSpotSegment ::= SEQUENCE {
    path Path,
    spotsOnTheLeft ParkingSpotSegmentDetections OPTIONAL,
    spotsOnTheRight ParkingSpotSegmentDetections OPTIONAL,
    spotWidth StandardLength1B OPTIONAL,
    spotLength StandardLength1B OPTIONAL,
    externalLinks ExternalLinks OPTIONAL,
    ...
}
((WITH COMPONENTS {..., spotsOnTheLeft PRESENT}) | 
 (WITH COMPONENTS {..., spotsOnTheRight PRESENT}))

/**
 * This DF describes a list of subsequent parking spot segments
 *
 * @category:
 * @revision: Created in V2.1.1
*/
ParkingSpotSegmentDetections ::= SEQUENCE SIZE(1..32, ...) OF ParkingSpotSegmentDetection

/**
 * This DF represents a parking spot segment
 *
 * @field distanceFromLastPoint: The starting point of the segment relative to the previous point.
 * The distance is measured on the path of the detector vehicle. If the first point is not the same
 * as the starting point of the path, a spot shall be added with status unknown. If the last point is
 * not the same as the terminating point of the path, a spot shall be added with status unknown.
 *
 * @field status: The status of the parking spot.
 *
 * @field timeDelta: The time between the detectionTime and the detection of the current spot
 * @note: D where X is detectionTime and Y is the detection of the current spot:
 * ------Y---------X------>
 *       |<---D--->|
 *
 * @field offsetToPath: Distance between the path of the vehicle and the closest position of 
 * the parking spot to the path.
 *
 * @category:
 * @revision: Created in V2.1.1
 */
ParkingSpotSegmentDetection ::= SEQUENCE {
    distanceFromLastPoint   StandardLength12b,
    status                  ParkingSpaceStatus,
    timeDelta               DeltaTimeTenthOfSecond,
    offsetToPath            StandardLength1B OPTIONAL,
    ...
}

END