Skip to content
LibItsDenm_Templates.ttcn 27 KiB
Newer Older
tepelmann's avatar
tepelmann committed
 *	@author 	ETSI / STF449
berge's avatar
berge committed
 *  @version 	$URL$
 *				$Id$
 *	@desc		Module containing base template definitions for DENM
 *
 */
module LibItsDenm_Templates {
tepelmann's avatar
tepelmann committed
    //LibIts
tepelmann's avatar
tepelmann committed
    import from LibItsCommon_TypesAndValues all;
    import from LibItsCommon_Functions all;
    import from LibItsCommon_Pixits all;
reinaortega's avatar
reinaortega committed
    import from LibItsDenm_TestSystem all;
    import from LibItsDenm_TypesAndValues all;
tepelmann's avatar
tepelmann committed
    import from DENM_PDU_Descriptions language "ASN.1:1997" all;
tepelmann's avatar
tepelmann committed
    import from ITS_Container language "ASN.1:1997" all;
tepelmann's avatar
tepelmann committed
    
    group primitivesTemplates {
        /**
         * @desc    Send template for DEN Message (DenmPort Primitive)
tepelmann's avatar
tepelmann committed
         * @param   p_denMsg    The DEN Message to be sent
         */
        template (value) DenmReq m_denmReq(
tepelmann's avatar
tepelmann committed
            template (value) DENM p_denMsg
tepelmann's avatar
tepelmann committed
        ) := {
tepelmann's avatar
tepelmann committed
            msgOut := p_denMsg
        }
        
        /**
         * @desc    Receive template for DEN Message (DenmPort Primitive)
tepelmann's avatar
tepelmann committed
         * @param   p_denMsg    The expected DEN Message
tepelmann's avatar
tepelmann committed
        template (present) DenmInd mw_denmInd(
tepelmann's avatar
tepelmann committed
            template (present) DENM p_denMsg
tepelmann's avatar
tepelmann committed
        ) := {
berge's avatar
berge committed
            msgIn := p_denMsg,
            receptionTime := ?
tepelmann's avatar
tepelmann committed
        }
        
        group utPrimitives {
            
tepelmann's avatar
tepelmann committed
             * @desc    Send template for Upper Tester event initialization
             */
            template (value) UtInitialize m_denmInitialize := {
            }
            
             * @desc    Send template for Upper Tester Trigger event
tepelmann's avatar
tepelmann committed
             * @param   p_situation                     The Situation Container
             * @param   p_location                      The Location Container
             * @param   p_validityDuration              The validity duration (Default: omit)
             * @param   p_transmissionInterval          The transmission interval (Default: omit)
             * @param   p_repetitionDuration            The repetition duration (Default: omit)
             * @param   p_keepAliveForwardingRequest    The keep alive forwarding request flag (Default: omit)
             * @param   p_alacarte                      The Alacarte container (Default: omit)
            template (value) UtTrigger m_utTriggerEvent(
tepelmann's avatar
tepelmann committed
                template (value) SituationContainer p_situation,
                template (value) LocationContainer p_location,
tepelmann's avatar
tepelmann committed
                template (omit) ValidityDuration p_validityDuration := omit,
tepelmann's avatar
tepelmann committed
                template (omit) TransmissionInterval p_transmissionInterval := omit,
tepelmann's avatar
tepelmann committed
                template (omit) ValidityDuration p_repetitionDuration := omit,
tepelmann's avatar
tepelmann committed
                template (omit) boolean p_keepAliveForwardingRequest := omit,
                template (omit) AlacarteContainer p_alacarte := omit
            ) := {
                detectionTime := f_getCurrentTime(),
tepelmann's avatar
tepelmann committed
                validityDuration := c_validityDuration_10sec,
tepelmann's avatar
tepelmann committed
                repetitionDuration := p_repetitionDuration,
tepelmann's avatar
tepelmann committed
                situtation := p_situation,
                location := p_location,
                alacarte := p_alacarte,
                relevanceDistance := lessThan50m,
                relevanceTrafficDirection := allTrafficDirection,
                trafficClass := 0,
                transmissionInterval := p_transmissionInterval,
                keepAliveForwardingRequest := p_keepAliveForwardingRequest
tepelmann's avatar
tepelmann committed
            /**
             * @desc Send template for Upper Tester event update
             * @param p_actionId                    The action id
             * @param p_situation                   The Situation Container (Default: omit)
             * @param p_location                    The Location Container (Default: omit)
             * @param p_validityDuration            The validity duration (Default: omit)
             * @param p_relevanceDistance           The relevance distance (Default: omit)
             * @param p_relevanceTrafficDirection   The relevance traffic direction (Default: omit)
             * @param p_trafficClass                The traffic class (Default: omit)
             * @param p_transmissionInterval        The transmission interval (Default: omit)
             * @param p_keepAliveForwardingRequest  The keep alive forwarding request flag (Default: omit)
             * @param p_alacarte                    The Alacarte Container (Default: omit)
             */
tepelmann's avatar
tepelmann committed
            template (value) UtUpdate m_utUpdateEvent(
                template (value) ActionID p_actionId,
                template (omit) SituationContainer p_situation := omit,
                template (omit) LocationContainer p_location := omit,
                template (omit) ValidityDuration p_validityDuration := omit,
                template (omit) RelevanceDistance p_relevanceDistance := omit,
                template (omit) RelevanceTrafficDirection p_relevanceTrafficDirection := omit,
                template (omit) integer p_trafficClass := omit,
                template (omit) TransmissionInterval p_transmissionInterval := omit,
                template (omit) boolean p_keepAliveForwardingRequest := omit,
                template (omit) AlacarteContainer p_alacarte := omit
            ) := {
                actionId := p_actionId,
                detectionTime := f_getCurrentTime(),
                validityDuration := p_validityDuration,
                situation := p_situation,
                location := p_location,
                alacarte := p_alacarte,
                relevanceDistance := p_relevanceDistance,
                relevanceTrafficDirection := p_relevanceTrafficDirection,
                trafficClass := p_trafficClass,
                transmissionInterval := p_transmissionInterval,
                keepAliveForwardingRequest := p_keepAliveForwardingRequest
            }
            
            /**
             * @desc    Send template for Upper Tester event cancellation
tepelmann's avatar
tepelmann committed
             * @param   p_actionId  The action id
tepelmann's avatar
tepelmann committed
            template (value) UtTermination m_utEventCancellation(
tepelmann's avatar
tepelmann committed
                template (value) ActionID p_actionId
tepelmann's avatar
tepelmann committed
            ) := {
                actionId := p_actionId
tepelmann's avatar
tepelmann committed
            /**
             * @desc Send template for Upper Tester event change position
             * @param p_latitude    The new latitude
             * @param p_longitude   The new longitude
             * @param p_elevation   The new elevation (Default: 0)
             */
berge's avatar
berge committed
            template (value) UtChangePosition m_utChangePosition(
tepelmann's avatar
tepelmann committed
                template (value) integer p_latitude,
                template (value) integer p_longitude,
                template (value) integer p_elevation := 0
            ) := {
                latitude := p_latitude,
                longitude := p_longitude,
                elevation := p_elevation
            }
berge's avatar
berge committed
            
        } // end utPrimitives
      
tepelmann's avatar
tepelmann committed
    } // end primitives
    
    group denmPduTemplates {
        
tepelmann's avatar
tepelmann committed
         * @desc    Send template for DENM PDU
tepelmann's avatar
tepelmann committed
         * @param   p_denm  The DEN Message
tepelmann's avatar
tepelmann committed
        template (value) DENM m_denmPdu(
tepelmann's avatar
tepelmann committed
            template (value) DecentralizedEnvironmentalNotificationMessage p_denm
tepelmann's avatar
tepelmann committed
        ) := {
            header := m_itsPduHeader,
            denm := p_denm
tepelmann's avatar
tepelmann committed
         * @desc    Default receive template for DENM PDU
         * @param   p_itsPduHeader  The expected ITS PDU header (Default: any)
         * @param   p_denm          The expected DEN Message (Default: any)
         */
        template DENM mw_anyDenmPdu(
tepelmann's avatar
tepelmann committed
            template (present) ItsPduHeader p_itsPduHeader := ?,
            template (present) DecentralizedEnvironmentalNotificationMessage p_denm := ?
        ) := {
            header := p_itsPduHeader,
            denm := p_denm
        }
        
tepelmann's avatar
tepelmann committed
         * @desc    Receive template for DENM PDU
tepelmann's avatar
tepelmann committed
         * @param   p_denm              The expected DEN Message 
         * @param   p_stationID         The expected station id (Default: any)
         * @param   p_protocolVersion   The expected protocol version (Default: current DEN protocol version)
         * @param   p_messageID         The expected message id (Default: DEN message id)
tepelmann's avatar
tepelmann committed
        template (present) DENM mw_denmPdu(
            template (present) DecentralizedEnvironmentalNotificationMessage p_denm,
tepelmann's avatar
tepelmann committed
            template (present) StationID p_stationID := ?,
            template (present) ItsPduHeader.protocolVersion p_protocolVersion := c_protocolVersionDenm,
            template (present) ItsPduHeader.messageID p_messageID := c_messageId
        ) := {
            header := mw_itsPduHeader(p_stationID, p_protocolVersion, p_messageID),
            denm := p_denm
tepelmann's avatar
tepelmann committed
        
    } // end denmPduTemplates
    
    group headerTemplates {
        
tepelmann's avatar
tepelmann committed
         * @desc    Default send template for ITS PDU header
tepelmann's avatar
tepelmann committed
         * @param   p_stationID         The source station ID (Default: test system station id)
         * @param   p_protocolVersion   The protocol version (Default: current DEN protocol version)
         * @param   p_messageID         The message Id (Default: DEN message id)
tepelmann's avatar
tepelmann committed
        template (value) ItsPduHeader m_itsPduHeader(
            template (value) StationID p_stationID := f_getTsStationId(),
            template (value) ItsPduHeader.protocolVersion p_protocolVersion := c_protocolVersionDenm,
            template (value) ItsPduHeader.messageID p_messageID := c_messageId
tepelmann's avatar
tepelmann committed
            protocolVersion := p_protocolVersion,
            messageID := p_messageID,
            stationID := p_stationID
tepelmann's avatar
tepelmann committed
         * @desc    Default receive template for ITS PDU header
tepelmann's avatar
tepelmann committed
         * @param   p_stationID         The expected station id (Default: any)
         * @param   p_protocolVersion   The expected protocol version (Default: current DEN protocol version)
         * @param   p_messageID         The expected message id (Default: DEN message id)
tepelmann's avatar
tepelmann committed
        template ItsPduHeader mw_itsPduHeader(
            template (present) StationID p_stationID := ?,
            template (present) ItsPduHeader.protocolVersion p_protocolVersion := c_protocolVersionDenm,
            template (present) ItsPduHeader.messageID p_messageID := c_messageId
tepelmann's avatar
tepelmann committed
            protocolVersion := p_protocolVersion,
            messageID := p_messageID,
            stationID := p_stationID
        }
        
tepelmann's avatar
tepelmann committed
        /**
         * @desc    Default receive template for the station id
         */
berge's avatar
berge committed
        template (present) StationID mw_anyStationId := ?;
tepelmann's avatar
tepelmann committed
    } // end headerTemplates
    
    group timeTemplates {
        
        /**
         * @desc    Receive template for TimestampIts check with delta
         * @param   p_time The expected timestamp
         */
        template TimestampIts mw_timestampIts_withDelta(
            in template (value) TimestampIts p_time
        )  := (p_time-PX_TIME_DELTA .. p_time+PX_TIME_DELTA);
        
    } // end timeTemplates
    
    group positionTemplates {
tepelmann's avatar
tepelmann committed
        /**
         * @desc    Send template for the test system position
         * @param   p_longitude The longitude (Default: Test system's longitude)
         * @param   p_latitude  The latitude (Default: Test system's latitude)
         * @see     m_posConfidenceEllipse
         * @see     m_elevation
         */
tepelmann's avatar
tepelmann committed
        template (value) ReferencePosition m_tsPosition(
            template (value) Longitude p_longitude := f_getTsLongitude(),
            template (value) Latitude p_latitude := f_getTsLatitude()
        ) := {
            longitude := p_longitude,
            latitude := p_latitude,
            positionConfidenceEllipse := m_posConfidenceEllipse,
            elevation := m_elevation
        }
        
tepelmann's avatar
tepelmann committed
        /**
         * @desc    Send template for the position confidence
         * @param   p_semiMajorConfidence   The major confidence (Default: 1cm)
         * @param   p_semiMinorConfidence   The minor confidence (Default: 1cm)
         * @param   p_semiMajorOrientation  The major orientation (Default: m_direction)
         * @see     m_direction
         */
tepelmann's avatar
tepelmann committed
        template (value) PosConfidenceEllipse m_posConfidenceEllipse(
            template (value) SemiAxisLength p_semiMajorConfidence := c_semiAxisLengthOneCentimeter,
            template (value) SemiAxisLength p_semiMinorConfidence := c_semiAxisLengthOneCentimeter,
tepelmann's avatar
tepelmann committed
            template (value) Heading p_semiMajorOrientation := m_direction
tepelmann's avatar
tepelmann committed
        ) := {
            semiMajorConfidence := p_semiMajorConfidence,
            semiMinorConfidence := p_semiMinorConfidence,
            semiMajorOrientation := p_semiMajorOrientation
        }
        
tepelmann's avatar
tepelmann committed
        /**
         * @desc    Send template for north direction with 0.1 confidence
         */
tepelmann's avatar
tepelmann committed
        template (value) Heading m_direction := {
            headingValue := HeadingValue_wgs84North_,
            headingConfidence := HeadingConfidence_withinZeroPointOneDegree_
tepelmann's avatar
tepelmann committed
        /**
         * @desc    Send template for elevation
         * @param   p_elevationValue        The elevation (Default: Sea level)
         * @param   p_elevationConfidence   The confidence of the elevation (Default: within one meter)
         */
tepelmann's avatar
tepelmann committed
        template (value) Elevation m_elevation(
            template (value) ElevationValue p_elevationValue := c_seaLevel,
            template (value) ElevationConfidence p_elevationConfidence := c_withinOneMeter
        ) := {
            elevationValue := p_elevationValue,
            elevationConfidence := p_elevationConfidence
        }
        
    } // end positionTemplates
    
berge's avatar
berge committed
    group decentralizedEnvironmentalNotificationMessageTemplates {
tepelmann's avatar
tepelmann committed
        
        /**
         * @desc    Send template for DEN Message
tepelmann's avatar
tepelmann committed
         * @param   p_management    The Management Container
         * @param   p_situation     The Situation Container
         * @param   p_location      The Location Container
         * @param   p_alacarte      The Alacarte Container (Default: omit)
         */
        template (value) DecentralizedEnvironmentalNotificationMessage m_denm(
tepelmann's avatar
tepelmann committed
            template (value) ManagementContainer p_management,
            template (omit) SituationContainer p_situation,
            template (omit) LocationContainer p_location,
tepelmann's avatar
tepelmann committed
            template (omit) AlacarteContainer p_alacarte := omit
tepelmann's avatar
tepelmann committed
        ) := {
            management := p_management, 
            situation := p_situation, 
            location := p_location,
tepelmann's avatar
tepelmann committed
            alacarte := p_alacarte
tepelmann's avatar
tepelmann committed
        }
        /**
         * @desc    Default receive template for DEN Message
tepelmann's avatar
tepelmann committed
        template (present) DecentralizedEnvironmentalNotificationMessage mw_anyDenm := {
berge's avatar
berge committed
            management := ?, 
tepelmann's avatar
tepelmann committed
            situation := *, 
            location := *,
            alacarte := *
        }
        
        /**
         * @desc    Receive template for DEN Message
tepelmann's avatar
tepelmann committed
         * @param   p_management    The expected Management Container (Default: any)
         * @param   p_situation     The expected Situation Container (Default: any or omit)
         * @param   p_location      The expected location Container (Default: any or omit)
         * @param   p_alacarte      The expected Alacarte Container (Default: any or omit)
tepelmann's avatar
tepelmann committed
        template (present) DecentralizedEnvironmentalNotificationMessage mw_denm(
            template (present) ManagementContainer p_management := ?,
            template SituationContainer p_situation := *,
            template LocationContainer p_location := *,
berge's avatar
berge committed
            template AlacarteContainer p_alacarte := *
tepelmann's avatar
tepelmann committed
        ) modifies mw_anyDenm := {
            management := p_management, 
            situation := p_situation, 
            location := p_location,
berge's avatar
berge committed
            alacarte := p_alacarte
tepelmann's avatar
tepelmann committed
        }
tepelmann's avatar
tepelmann committed
         * @desc    Send template for DEN Message for event termination.
tepelmann's avatar
tepelmann committed
         * @param   p_actionID  The action id
tepelmann's avatar
tepelmann committed
        template (value) DecentralizedEnvironmentalNotificationMessage m_denmCancellation(
            template (value) ActionID p_actionID
tepelmann's avatar
tepelmann committed
        ) := {
            management := m_denmMgmtCon(p_actionID, -, true), 
tepelmann's avatar
tepelmann committed
            situation := omit, 
            location := omit,
            alacarte := omit
tepelmann's avatar
tepelmann committed
        }
berge's avatar
berge committed
    } // end group decentralizedEnvironmentalNotificationMessageTemplates
tepelmann's avatar
tepelmann committed
    
    group decentralizedManagementTemplates {
tepelmann's avatar
tepelmann committed
        
tepelmann's avatar
tepelmann committed
         * @desc    Send template for Management Container
         * @param   p_actionID              The action id
         * @param   p_isNegation            The negation flag (Default: false)
         * @param   p_isCancellation        The cancellation flag (Default: false)
tepelmann's avatar
tepelmann committed
         * @param   p_validityDuration      The validity duration (Default: omit)
         * @param   p_transmissionInterval  The transmission interval (Default: omit)
         * @param   p_detectionTime         The detection time (Default: current time)
         * @param   p_referenceTime         The reference time (Default: current time)
tepelmann's avatar
tepelmann committed
        template (value) ManagementContainer m_denmMgmtCon(
            template (value) ActionID p_actionID,
berge's avatar
berge committed
            template (value) boolean p_isNegation := false,
            template (value) boolean p_isCancellation := false,
            template (omit) ValidityDuration p_validityDuration := omit,
berge's avatar
berge committed
            template (omit) TransmissionInterval p_transmissionInterval := omit,
            template (value) TimestampIts p_detectionTime := f_getCurrentTime(),
            template (value) TimestampIts p_referenceTime := f_getCurrentTime()
tepelmann's avatar
tepelmann committed
        ) := {
tepelmann's avatar
tepelmann committed
            actionID := p_actionID,
berge's avatar
berge committed
            detectionTime := p_detectionTime,
            referenceTime := p_referenceTime,
tepelmann's avatar
tepelmann committed
            isNegation := p_isNegation,
            isCancellation := p_isCancellation,
tepelmann's avatar
tepelmann committed
            eventPosition := m_tsPosition,
            relevanceDistance := lessThan50m,
            relevanceTrafficDirection := allTrafficDirection,
berge's avatar
berge committed
            validityDuration := p_validityDuration,
            transmissionInterval := p_transmissionInterval
        }
tepelmann's avatar
tepelmann committed
        
berge's avatar
berge committed
        /**
tepelmann's avatar
tepelmann committed
         * @desc    Receive template for Management Container
         * @param   p_actionID              The expected action id
         * @param   p_referenceTime         The reference time (Default: any)
         * @param   p_isNegation            The expected negation flag (Default: false)
         * @param   p_isCancellation        The expected cancellation flag (Default: false)
tepelmann's avatar
tepelmann committed
         * @param   p_validityDuration      The expected validity duration (Default: any or omit)
         * @param   p_transmissionInterval  The expected transmission interval (Default: any or omit)
berge's avatar
berge committed
         */
tepelmann's avatar
tepelmann committed
        template (present) ManagementContainer mw_denmMgmtCon(
berge's avatar
berge committed
            template (present) ActionID p_actionID,
            template (present) TimestampIts p_referenceTime := ?,
berge's avatar
berge committed
            template (present) boolean p_isNegation := false,
            template (present) boolean p_isCancellation := false,
berge's avatar
berge committed
            template ValidityDuration p_validityDuration := *,
            template TransmissionInterval p_transmissionInterval := *
tepelmann's avatar
tepelmann committed
        ) := {
berge's avatar
berge committed
            actionID := p_actionID,
            detectionTime := ?,
            referenceTime := p_referenceTime,
berge's avatar
berge committed
            isNegation := p_isNegation,
            isCancellation := p_isCancellation,
berge's avatar
berge committed
            eventPosition := ?,
            relevanceDistance := ?,
            relevanceTrafficDirection := allTrafficDirection,
            validityDuration := p_validityDuration,
            transmissionInterval := p_transmissionInterval
        }
tepelmann's avatar
tepelmann committed
        
berge's avatar
berge committed
        /**
         * @desc    Send template for Test system ActionID
tepelmann's avatar
tepelmann committed
         * @param   p_sequenceNumber    The sequence number (Default: 0)
         */
tepelmann's avatar
tepelmann committed
        template (value) ActionID m_tsActionId(
tepelmann's avatar
tepelmann committed
            template (value) SequenceNumber p_sequenceNumber := 0
tepelmann's avatar
tepelmann committed
        ) := {
tepelmann's avatar
tepelmann committed
        	originatorStationID := f_getTsStationId(),
tepelmann's avatar
tepelmann committed
            sequenceNumber := p_sequenceNumber
tepelmann's avatar
tepelmann committed
         * @desc    Default receive template for Management Container
tepelmann's avatar
tepelmann committed
        template (present) ManagementContainer mw_anyDenmMgmtCon := {
            actionID := ?,
            detectionTime := ?,
            referenceTime := ?,
            isNegation := ?,
            isCancellation := ?,
            eventPosition := ?,
            relevanceDistance := ?,
            relevanceTrafficDirection := ?,
tepelmann's avatar
tepelmann committed
            validityDuration := *,
            transmissionInterval := *
        }
        
        /**
tepelmann's avatar
tepelmann committed
         * @desc    Receive template for Management Container with the given action id
         * @param   p_actionId  The expected action id (Default: any)
tepelmann's avatar
tepelmann committed
        template (present) ManagementContainer mw_denmMgmtConWithActionID(
            template (present) ActionID p_actionId := ?
        ) modifies mw_anyDenmMgmtCon := {
            actionID := p_actionId
        }
        
        /**
tepelmann's avatar
tepelmann committed
         * @desc    Receive template for Management Container with the given data version
         * @param   p_referenceTime   The expected reference time (Default: any)
        template (present) ManagementContainer mw_denmMgmtConWithReferenceTime(
            template (present) TimestampIts p_referenceTime := ?
        ) modifies mw_anyDenmMgmtCon := {
            referenceTime := p_referenceTime
tepelmann's avatar
tepelmann committed
         * @desc    Send template for ActionID
         * @param   p_sequenceNumber        The sequence number
         * @param   p_originatorStationID   The originator station id (Default: IUT's station id)
         */
        template (value) ActionID m_actionId(
tepelmann's avatar
tepelmann committed
            template (value) SequenceNumber p_sequenceNumber,
            template (value) ITS_Container.StationID p_originatorStationID := f_getIutStationId()
        ) := {
            originatorStationID := p_originatorStationID,
            sequenceNumber := p_sequenceNumber
        }
        
        /**
         * @desc    Receive template for ActionID
tepelmann's avatar
tepelmann committed
         * @param   p_originatorStationID   The expected originator station id (Default: any)
         * @param   p_sequenceNumber        The expected sequence number (Default: any)
berge's avatar
berge committed
        template (present) ActionID mw_actionId(
tepelmann's avatar
tepelmann committed
            template (present) ITS_Container.StationID p_originatorStationID := ?,
            template (present) SequenceNumber p_sequenceNumber := ?
        ) := {
            originatorStationID := p_originatorStationID,
            sequenceNumber := p_sequenceNumber
        }
        
berge's avatar
berge committed
        /**
tepelmann's avatar
tepelmann committed
         * @desc    Default receive template for any ActionID
berge's avatar
berge committed
         */
        template (present) ActionID mw_anyActionId := ?;
        
    } // end group decentralizedManagementTemplates
tepelmann's avatar
tepelmann committed
    
berge's avatar
berge committed
    group decentralizedSituationTemplates {
tepelmann's avatar
tepelmann committed
        
berge's avatar
berge committed
        group situationTemplates {
tepelmann's avatar
tepelmann committed
            
tepelmann's avatar
tepelmann committed
             * @desc    Send template for Situation Container
             * @param   p_cause                 The cause code
             * @param   p_subCause              The sub-cause code
             * @param   p_informationQuality    The information quality (Default: 0)
tepelmann's avatar
tepelmann committed
            template (value) SituationContainer m_situation(
                template (value) CauseCodeType p_cause, 
                template (value) SubCauseCodeType p_subCause,
berge's avatar
berge committed
                template (value) InformationQuality p_informationQuality := 0
tepelmann's avatar
tepelmann committed
            ) := {
tepelmann's avatar
tepelmann committed
                informationQuality := p_informationQuality,
                eventType := {
                    causeCode := p_cause,
                    subCauseCode := p_subCause
                },
                linkedCause := omit
tepelmann's avatar
tepelmann committed
            }
            
tepelmann's avatar
tepelmann committed
             * @desc    Receive template for Situation Container
             * @param   p_cause                 The expected cause code
             * @param   p_subCause              The expected sub-cause code
             * @param   p_informationQuality    The expected information quality (Default: any)
             */
            template (present) SituationContainer mw_situation(
                template (present) CauseCodeType p_cause, 
                template (present) SubCauseCodeType p_subCause,
                template (present) InformationQuality p_informationQuality := ?
tepelmann's avatar
tepelmann committed
            ) := {
                informationQuality := p_informationQuality,
                eventType := {
                    causeCode := p_cause,
                    subCauseCode := p_subCause
                },
                linkedCause := *
            }
            
tepelmann's avatar
tepelmann committed
            /**
tepelmann's avatar
tepelmann committed
             * @desc    Default receive template for Situation Container
             */
            template (present) SituationContainer mw_anySitutation := ?;
berge's avatar
berge committed
        } // end group situationTemplates
tepelmann's avatar
tepelmann committed
        
berge's avatar
berge committed
    } // end group decentralizedSituationTemplates
tepelmann's avatar
tepelmann committed
    
    group decentralizedLocationTemplates {
tepelmann's avatar
tepelmann committed
        
tepelmann's avatar
tepelmann committed
         * @desc    Send template for Location Container where no delta is given
tepelmann's avatar
tepelmann committed
        template (value) LocationContainer m_denmLocation_zeroDelta := {
            eventSpeed := omit,
            eventPositionHeading := omit,
            traces := {
                {
                    {
                        pathPosition := {
                            deltaLatitude := 0,
                            deltaLongitude := 0,
                            deltaElevation := 0
                        },
                        pathDeltaTime := 0
                    }
tepelmann's avatar
tepelmann committed
            roadClass := omit 
tepelmann's avatar
tepelmann committed
        }
        
tepelmann's avatar
tepelmann committed
         * @desc    Default receive template for Location Container
         */
        template (present) LocationContainer mw_anyDenmLocation := {
            eventSpeed := *,
            eventPositionHeading := *,
            traces := ?,
            roadClass := *
        }
        
        /**
tepelmann's avatar
tepelmann committed
         * @desc    Receive template for Location Container with the given traces
         * @param   p_traces    The expected traces.
         */
        template (present) LocationContainer mw_denmLocationWithTrace(
tepelmann's avatar
tepelmann committed
            template (present) Traces p_traces
        ) := {
            eventSpeed := *,
            eventPositionHeading := *,
            traces := p_traces,
            roadClass := *
        }
        
    } // end group decentralizedLocationTemplates
    group alacarteTemplates {
tepelmann's avatar
tepelmann committed
        /**
         * @desc    Send template for Alacarte Container including lane count
         */
        template (value) AlacarteContainer m_alacarteConLaneCount := {
tepelmann's avatar
tepelmann committed
            impactReduction := omit,
            externalTemperature := omit,
            roadWorks := omit,
            positioningSolution := omit,
            stationaryVehicle := omit
        }
        
    } // end alacarteTemplates
berge's avatar
berge committed
    
} // end LibItsDenmTemplates