CPM-OriginatingStationContainers {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) originatingStationContainers (2) major-version-1 (1) minor-version-1(1)}

DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

IMPORTS

CartesianAngle, MapReference, Speed, StationType, TrailerData, Wgs84Angle
FROM ETSI-ITS-CDD {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) major-version-3 (3) minor-version-1 (1)}
;

/**
 * This DF  represents the Originating Vehicle Container
 *
 * It shall include the following components: 
 *
 * @field orientationAngle: the angle and angle accuracy of the absolute orientation of the disseminating vehicle in the WGS84 coordinate system with respect to true North.
 *
 * @field pitchAngle: the optional angle and angle accuracy between the ground plane and the current orientation of the vehicle's x-axis with respect to the ground plane about the y-axis according to the ISO 8855.
 *
 * @field rollAngle: the optional angle and angle accuracy between the ground plane and the current orientation of a vehicle's y-axis with respect to the ground plane about the x-axis according to the ISO 8855
 *
 * @field trailerData: information about the trailer dimensions and orientation in case a trailer is present.
 * 
*/
OriginatingVehicleContainer ::= SEQUENCE {
    orientationAngle   Wgs84Angle,
    pitchAngle         CartesianAngle OPTIONAL,
    rollAngle          CartesianAngle OPTIONAL,
    trailerDataSet     TrailerDataSet OPTIONAL,
    ...
}

/**
 * This DF  represents the Originating RSU Container.
 *
 * It shall include the following components: 
 *
 * @field mapReference: identifies the MAPEM containing the topology information reference in the Perceived Object Container
 * 
*/
OriginatingRsuContainer ::= SEQUENCE{
    mapReference    MapReference OPTIONAL,
    ...
}

/**
 * This DF  represents a list of trailer data.
 * 
*/
TrailerDataSet::= SEQUENCE SIZE(1..8,...) OF TrailerData (WITH COMPONENTS {... ,frontOverhang ABSENT, rearOverhang ABSENT, trailerWidth ABSENT}) 

END

CPM-PDU-Descriptions { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) cpm (1) major-version-1 (1) minor-version-1(1)}

DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

IMPORTS

ItsPduHeader, MessageRateHz, MessageSegmentationInfo, OrdinalNumber1B,  ReferencePosition, StationType, TimestampIts
FROM ETSI-ITS-CDD {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) major-version-3 (3) minor-version-1 (1)}
WITH SUCCESSORS

OriginatingRsuContainer, OriginatingVehicleContainer
FROM CPM-OriginatingStationContainers {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) originatingStationContainers (2) major-version-1 (1) minor-version-1(1)}
WITH SUCCESSORS

SensorInformationContainer
FROM CPM-SensorInformationContainer {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) sensorInformationContainer (3) major-version-1 (1) minor-version-1(1)}
WITH SUCCESSORS

PerceptionRegionContainer
FROM CPM-PerceptionRegionContainer {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) perceptionRegionContainer (5) major-version-1 (1) minor-version-1(1)}
WITH SUCCESSORS

PerceivedObjectContainer
FROM CPM-PerceivedObjectContainer {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) perceivedObjectContainer (4) major-version-1 (1) minor-version-1(1)}
WITH SUCCESSORS

;

/**
 * This DF  represents the Collective Perception Message (CPM) and is the top level Protocol Data Unit. 
 *
 * It shall include the following components: 
 *
 * @field header: the common message header for the facilities layer message. 
 *
 * @field payload: the payload of the message. 
 *
*/
CollectivePerceptionMessage ::= SEQUENCE {
    header     ItsPduHeader (WITH COMPONENTS {... , protocolVersion (2), messageId(cpm)}),
    payload    CpmPayload
}

/**
 * This DF  represents the payload of the CPM. 
 *
 * It shall include the following components: 
 *
 * @field managementContainer: the management container. 
 *
 * @field cpmContainers: the list of CPM containers, including its container type identifier and including either one or none of originatingVehicleContainer and/or originatingRsuContainer. 
 *
*/
CpmPayload ::= SEQUENCE {
    managementContainer   ManagementContainer,
    cpmContainers         ConstraintWrappedCpmContainers,
    ...
}

/**
 * This DF  represents the management container of the CPM. 
 * The management container provides basic information about the originating ITS-S, which are not specific to a specific type of station.
 *
 * It shall include the following components: 
 *
 * @field referenceTime: the reference time for all time related information in the CPM.
 *
 * @field messageRateRange: the planned or expected range of the CPM generation rate.
 *
 * @field segmentationInfo: information regarding the message segmentation on facility layer.
 *
 * @field referencePosition: the reference position for all position related information in the CPM.
 *
*/
ManagementContainer ::= SEQUENCE {
    referenceTime      TimestampIts,
    referencePosition  ReferencePosition,
    segmentationInfo   MessageSegmentationInfo OPTIONAL,
    messageRateRange   MessageRateRange OPTIONAL,
    ...
}

/**
 * This information object class is an abstract template to instantiate containers.
 *
 * It shall include the following components: 
 *
 * @field &id: the identifier of the container type.
 *
 * @field &Type: the container content.
 *
*/

CPM-CONTAINER-ID-AND-TYPE ::= CLASS {
    &id     CpmContainerId UNIQUE,
    &Type
} WITH SYNTAX {&Type IDENTIFIED BY &id}

/**
 * This DE represents the identifier of the container type. 
 *
*/
CpmContainerId ::= INTEGER (1..16)

/**
 * These value assignements represent specific values of the container type identifier. 
*/
originatingVehicleContainer CpmContainerId ::= 1
originatingRsuContainer CpmContainerId ::= 2
sensorInformationContainer CpmContainerId ::= 3
perceptionRegionContainer CpmContainerId ::= 4
perceivedObjectContainer CpmContainerId ::= 5


/**
 * This information object set represents the association between the container type and the container content.
*/
CpmContainers CPM-CONTAINER-ID-AND-TYPE ::= {
    {OriginatingVehicleContainer IDENTIFIED BY originatingVehicleContainer} |
    {OriginatingRsuContainer IDENTIFIED BY originatingRsuContainer} |
    {SensorInformationContainer IDENTIFIED BY sensorInformationContainer} |
    {PerceptionRegionContainer IDENTIFIED BY perceptionRegionContainer} |
    {PerceivedObjectContainer IDENTIFIED BY perceivedObjectContainer},
    ...
}

/**
 * This DF represents a CPM container preceded by its type identifier and a lenght indicator.
 *
 * It shall include the following components: 
 *
 * @field containerId: the identifier of the container type.
 *
 * @field containerData: the container content consistent with the container type.
 *
*/
WrappedCpmContainer ::= SEQUENCE {
   containerId     CPM-CONTAINER-ID-AND-TYPE.&id( {CpmContainers} ),
   containerData   CPM-CONTAINER-ID-AND-TYPE.&Type( {CpmContainers}{@containerId} )
}

/**
 * This DF represents a list of CPM containers, each with their type identifier. 
*/
WrappedCpmContainers::= SEQUENCE SIZE(1..8,...) OF WrappedCpmContainer 

/**
 * This DF represents a list of CPM containers, each with their type identifier with an additional constraint. 
*/
ConstraintWrappedCpmContainers ::= WrappedCpmContainers
    ((WITH COMPONENT (WITH COMPONENTS {..., containerId (ALL EXCEPT 1)})) |
    (WITH COMPONENT (WITH COMPONENTS {..., containerId (ALL EXCEPT 2)})))

/**
 * This DF  represents the planned or expected range of the message generation rate.
 *
 * It shall include the following components: 
 *
 * @field messageRateMin: the minimum planned or expected message rate.
 *
 * @field messageRateMax: the maximum planned or expected message rate.
 *
*/
MessageRateRange::= SEQUENCE{
   messageRateMin   MessageRateHz,
   messageRateMax   MessageRateHz
}

END

CPM-PerceivedObjectContainer {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) perceivedObjectContainer (4) major-version-1 (1) minor-version-1(1)}

DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

IMPORTS

CardinalNumber1B, PerceivedObject
FROM ETSI-ITS-CDD {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) major-version-3 (3) minor-version-1 (1)}
;

/**
 * This DF  represents the Perceived Object Container 
 *
 * It shall include the following components: 
 *
 * @field numberOfPerceivedObjects: the total number of perceived objects at the time of generating the message. 
 *
 * @field perceivedObjects: the list of perceived objects.
 *
*/
PerceivedObjectContainer ::= SEQUENCE {
    numberOfPerceivedObjects    CardinalNumber1B,
    perceivedObjects            PerceivedObjects,
    ...
}

/** @brief Perceived Objects
 * This DF provides a list of perceived objects represented in the coordinate system in which the y-axis corresponds to the North direction, the x-axis to the East direction, and the z- axis to the vertical direction.
*/
PerceivedObjects::= SEQUENCE SIZE(0..255, ...) OF PerceivedObject (WITH COMPONENTS {... ,objectId PRESENT})

END

CPM-PerceptionRegionContainer {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) perceptionRegionContainer (5) major-version-1 (1) minor-version-1(1)}

DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

IMPORTS

CardinalNumber1B, DeltaTimeMilliSecondSigned, Identifier2B, Shape, ConfidenceLevel, SensorType, SequenceOfIdentifier1B
FROM ETSI-ITS-CDD {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) major-version-3 (3) minor-version-1 (1)}
;

/**
 * This DF  represents the Perception Region Container as a list of perception region information objects. 
*/
PerceptionRegionContainer ::= SEQUENCE SIZE(1..256, ...) OF PerceptionRegion

/**
 * This DF represents the actual perception capabilities available to the transmitting ITS-S, offering additional (often dynamic) details to the information provided in the sensor information container.
 *
 * It shall include the following components: 

 * @field measurementDeltaTime: difference between the time of estimation of the perception region and the reference time. Positive values indicates that the provided information refers to a point in time after the reference time.
 *
 * @field perceptionRegionConfidence: the perception confidence.
 *
 * @field perceptionRegionShape: specification of the shape of the perception region.
 *
 * @field shadowingApplies: indicates if the standard shadowing approach applies to the described perception region.
 *
 * @field sensorIdList: the optional list of identifiers of the sensors which are involved in perceiving the region.
 *
 * @field numberOfPerceivedObjects: the optional number of perceived objects contained in the perception region specified in the component perceptionRegionShape. 
 *
 * @field perceivedObjectIds: the optional list of identifiers of the objects specified in the Perceived Object Container that are contained in the perception region specified in the component perceptionRegionShape.
 *
*/
PerceptionRegion ::= SEQUENCE {
    measurementDeltaTime         DeltaTimeMilliSecondSigned,     
    perceptionRegionConfidence   ConfidenceLevel,
    perceptionRegionShape        Shape, 
    shadowingApplies             BOOLEAN,
    sensorIdList                 SequenceOfIdentifier1B OPTIONAL,
    numberOfPerceivedObjects     CardinalNumber1B OPTIONAL,
    perceivedObjectIds           PerceivedObjectIds OPTIONAL,
	...
}

/**
 * This DF  represents a list of identifiers of perceived objects. 
*/
PerceivedObjectIds::= SEQUENCE SIZE(0..255, ...) OF Identifier2B

END

CPM-SensorInformationContainer {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (103324) sensorInformationContainer (3) major-version-1 (1) minor-version-1(1)}

DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

IMPORTS

Shape, ConfidenceLevel, Identifier1B, SensorType
FROM ETSI-ITS-CDD {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) major-version-3 (3) minor-version-1 (1) }
;

/**
 * This DF  represents the Sensor Information Container as a list of information objects about the sensors or data fusion systems from which the station provides information about detected objects.
*/
SensorInformationContainer ::= SEQUENCE SIZE(1..128, ...) OF SensorInformation


/**
 * This DF  represents the characteristics of a single sensor or data fusion system.
 *
 * It shall include the following components: 
 *
 * @field sensorId: identifier of the sensor or data fusion system used to relate the perceived object in the Perceived Object Container to the sensor that detected it.
 * this identifier shall uniquely identify the sensor inside the CPM, but may be changed from one CPM to the next.
 *
 * @field sensorType: the type of the sensor.
 *
 * @field perceptionRegionShape: the perception region of the sensor.
 *
 * @field perceptionRegionConfidence: the homogeneous perception region confidence that can be assumed for the entire perception region shape of this sensor. 
 *
 * @field shadowingApplies: indicates if the standard shadowing approach applies to the described perception region.
 *
*/

SensorInformation ::= SEQUENCE {
    sensorId          		    Identifier1B,
    sensorType        		    SensorType,
    perceptionRegionShape		Shape OPTIONAL,
    perceptionRegionConfidence  ConfidenceLevel OPTIONAL,
    shadowingApplies            BOOLEAN,
   ...
}


END

