/** * @author ETSI STF517 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/SremSsem/LibItsSremSsem_Templates.ttcn $ * $Id: LibItsSremSsem_Templates.ttcn 1312 2016-12-14 09:21:45Z garciay $ * @desc Module containing base template definitions for SREM SSEM * @copyright ETSI Copyright Notification * No part may be reproduced except as authorized by written permission. * The copyright and the foregoing restriction extend to reproduction in all media. * All rights reserved. * */ module LibItsSremSsem_Templates { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from SREM_PDU_Descriptions language "ASN.1:1997" all; import from SSEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; import from DSRC_REGION_noCircular language "ASN.1:1997" all; import from IEEE1609dot2BaseTypes language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_TypesAndValues all; import from LibItsCommon_Functions all; import from LibItsCommon_ASN1_NamedNumbers all; // LibItsSremSsem import from LibItsSremSsem_TestSystem all; import from LibItsSremSsem_TypesAndValues all; import from LibItsSremSsem_Pixits all; group primitivesTemplates { /** * @desc Send template for SREM Message (SremSsemPort Primitive) * @param p_sremMsg The SREM Message to be sent */ template (value) SremReq m_sremReq( in template (value) SREM p_sremMsg ) := { msgOut := p_sremMsg } /** * @desc Receive template for SREM Message (SremSsemPort Primitive) * @param p_sremMsg The expected SREM Message */ template (present) SremInd mw_sremInd( template (present) SREM p_sremMsg ) := { msgIn := p_sremMsg, gnNextHeader := *, gnHeaderType := *, gnHeaderSubtype := *, gnLifetime := *, gnTrafficClass := *, btpDestinationPort := *, btpInfo := *, ssp := *, its_aid := * } /** * @desc Receive template for SREM Message (SremSsemPort Primitive) * @param p_sremMsg The expected SREM Message * @param p_gnNextHeader GN next header value * @param p_gnHeaderType GN header type value * @param p_gnHeaderSubtype GN header subtype value * @param p_gnLifetime GN packet lifetime value (ms) * @param p_gnTrafficClass GN traffic class value */ template (present) SremInd mw_sremIndWithGnParameters( template (present) SREM p_sremMsg, in template UInt8 p_gnNextHeader := *, in template UInt8 p_gnHeaderType := *, in template UInt8 p_gnHeaderSubtype := *, in template UInt32 p_gnLifetime := *, in template UInt8 p_gnTrafficClass := * ) modifies mw_sremInd := { gnNextHeader := p_gnNextHeader, gnHeaderType := p_gnHeaderType, gnHeaderSubtype := p_gnHeaderSubtype, gnLifetime := p_gnLifetime, gnTrafficClass := p_gnTrafficClass } /** * @desc Receive template for SREM Message (SremSsemPort Primitive) * @param p_sremMsg Expected SREM Message * @param p_btpDestinationPort BTP destination port value * @param p_btpInfo BTP destination port info value (if BTP-B) or BTP source port value (if BTP-A) */ template (present) SremInd mw_sremIndWithBtpParameters( template (present) SREM p_sremMsg, template UInt16 p_btpDestinationPort := *, template UInt16 p_btpInfo := * ) modifies mw_sremInd := { btpDestinationPort := p_btpDestinationPort, btpInfo := p_btpInfo }; /** * @desc Receive template for SREM Message (SremSsemPort Primitive) * @param p_sremMsg The expected SREM Message * @param p_ssp SSP value * @param p_its_aid ITS-AID value */ template (present) SremInd mw_sremIndWithSecurityParameters( template (present) SREM p_sremMsg, template Bit24 p_ssp := *, template UInt32 p_its_aid := * ) modifies mw_sremInd := { ssp := p_ssp, its_aid := p_its_aid } /** * @desc Send template for SSEM Message (SremSsemPort Primitive) * @param p_ssemMsg The SSEM Message to be sent */ template (value) SsemReq m_ssemReq( in template (value) SSEM p_ssemMsg ) := { msgOut := p_ssemMsg } /** * @desc Receive template for SSEM Message (SremSsemPort Primitive) * @param p_ssemMsg The expected SSEM Message */ template (present) SsemInd mw_ssemInd( template (present) SSEM p_ssemMsg := ? ) := { msgIn := p_ssemMsg, gnNextHeader := *, gnHeaderType := *, gnHeaderSubtype := *, gnLifetime := *, gnTrafficClass := *, btpDestinationPort := *, btpInfo := *, ssp := *, its_aid := * }; /** * @desc Receive template for SSEM Message (SremSsemPort Primitive) * @param p_ssemMsg The expected SSEM Message * @param p_gnNextHeader GN next header value * @param p_gnHeaderType GN header type value * @param p_gnHeaderSubtype GN header subtype value * @param p_gnLifetime GN packet lifetime value (ms) * @param p_gnTrafficClass GN traffic class value */ template (present) SsemInd mw_ssemIndWithGnParameters( template (present) SSEM p_ssemMsg, in template UInt8 p_gnNextHeader := *, in template UInt8 p_gnHeaderType := *, in template UInt8 p_gnHeaderSubtype := *, in template UInt32 p_gnLifetime := *, in template UInt8 p_gnTrafficClass := * ) modifies mw_ssemInd := { gnNextHeader := p_gnNextHeader, gnHeaderType := p_gnHeaderType, gnHeaderSubtype := p_gnHeaderSubtype, gnLifetime := p_gnLifetime, gnTrafficClass := p_gnTrafficClass } /** * @desc Receive template for SSEM Message (SremSsemPort Primitive) * @param p_ssemMsg Expected SREM Message * @param p_btpDestinationPort BTP destination port value * @param p_btpInfo BTP destination port info value (if BTP-B) or BTP source port value (if BTP-A) */ template(present) SsemInd mw_ssemIndWithBtpParameters( template (present) SSEM p_ssemMsg, template UInt16 p_btpDestinationPort := *, template UInt16 p_btpInfo := * ) modifies mw_ssemInd := { btpDestinationPort := p_btpDestinationPort, btpInfo := p_btpInfo }; /** * @desc Receive template for SSEM Message (SremSsemPort Primitive) * @param p_ssemMsg The expected SSEM Message * @param p_ssp SSP value * @param p_its_aid ITS-AID value */ template (present) SsemInd mw_ssemIndWithSecurityParameters( template (present) SSEM p_ssemMsg, template Bit24 p_ssp := *, template UInt32 p_its_aid := * ) modifies mw_ssemInd := { ssp := p_ssp, its_aid := p_its_aid } } group utPrimitives { /** * @desc Send template for Upper Tester event initialization * @member hashedId8 In case of secured mode set, hashedId8 indicate which certificate the IUT shall use */ template (value) UtSremInitialize m_sremSsemInitialize( in HashedId8 p_hashedId8 := '0000000000000000'O ) := { hashedId8 := p_hashedId8 } /** * @desc Send template for Upper Tester Trigger event */ template (value) UtSremTrigger m_utTriggerEvent( in template (value) BasicVehicleRole p_basicVehicleRole, in template (value) RequestImportanceLevel p_requestImportanceLevel, in template (value) IntersectionID p_intersectionId ) := { basicVehicleRole := p_basicVehicleRole, requestImportanceLevel := p_requestImportanceLevel, intersectionId := p_intersectionId } template (value) UtSremUpdate m_utUpdateEvent( in template (value) RequestID p_requestID, in template (value) BasicVehicleRole p_basicVehicleRole, in template (value) RequestImportanceLevel p_requestImportanceLevel ) := { requestID := p_requestID, basicVehicleRole := p_basicVehicleRole, requestImportanceLevel := p_requestImportanceLevel } template (value) UtSremCancelation m_UtSremCancelationEvent( in template (value) RequestID p_requestID ) := { requestID := p_requestID } } group sremSsemPduTemplates { /** * @desc Send template for SREM PDU * @param p_map The SREM Message */ template (value) SREM m_sremPdu( in template (value) SignalRequestMessage p_srm ) := { header := m_itsPduHeader( - , - ,LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_srem_ ), srm := p_srm } /** * @desc Receive template for SREM PDU * @param p_map The SREM Message */ template (present) SREM mw_sremPdu( template (present) SignalRequestMessage p_srm := ? ) := { header := mw_itsPduHeaderSrem, srm := p_srm } /** * @desc Send template for SSEM PDU * @param p_spat The SSEM Message */ template (value) SSEM m_ssemPdu( in template (value) SignalStatusMessage p_ssm ) := { header := m_itsPduHeader( - , - , LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_ssem_), ssm := p_ssm } /** * @desc Receive template for SSEM PDU * @param p_spat The SSEM Message */ template (present) SSEM mw_ssemPdu( template (present) SignalStatusMessage p_ssm := ? ) := { header := mw_itsPduHeaderSsem, ssm := p_ssm } } // End of group sremSsemPduTemplates group headerTemplates { /** * @desc Default send template for ITS PDU header * @param p_stationID The source station ID (Default: test system station id) * @param p_protocolVersion The protocol version (Default: current SREM SSEM protocol version) * @param p_messageID The message Id (Default: SREM SSEM id) */ template (value) ItsPduHeader m_itsPduHeader( in template (value) StationID p_stationID := f_getTsStationId(), in template (value) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, in template (value) ItsPduHeader.messageID p_messageID ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } /** * @desc Default receive template for ITS PDU header * @param p_stationID The expected station id (Default: any) * @param p_protocolVersion The expected protocol version (Default: current SREM SSEM protocol version) * @param p_messageID The expected message id (Default: SREM SSEM message id) */ template ItsPduHeader mw_itsPduHeader( template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.messageID p_messageID := ? ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } /** * @desc Default receive template for ITS PDU header * @param p_stationID The expected station id (Default: any) * @param p_protocolVersion The expected protocol version (Default: current SREM SSEM protocol version) * @param p_messageID The expected message id (Default: SREM id) */ template ItsPduHeader mw_itsPduHeaderSrem( template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_srem_ ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } /** * @desc Default receive template for ITS PDU header * @param p_stationID The expected station id (Default: any) * @param p_protocolVersion The expected protocol version (Default: current SREM SSEM protocol version) * @param p_messageID The expected message id (Default: SSEM id) */ template (present) ItsPduHeader mw_itsPduHeaderSsem( template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_ssem_ ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } /** * @desc Default receive template for the station id */ template (present) StationID mw_anyStationId := ?; } // End of group headerTemplates group sremSsemTemplates { template (omit) IntersectionReferenceID m_intersectionReferenceID( in template (value) IntersectionID p_intersectionID := 0, in template (omit) RoadRegulatorID p_roadRegulatorID := omit ) := { region := p_roadRegulatorID, // a globally unique regional assignment value typical assigned to a regional DOT authority the value zero shall be used for testing needs id := p_intersectionID // a unique mapping to the intersection in question within the above region of use } template IntersectionReferenceID mw_intersectionReferenceID( template (present) IntersectionID p_intersectionID := ?, template RoadRegulatorID p_roadRegulatorID := * ) := { region := p_roadRegulatorID, // a globally unique regional assignment value typical assigned to a regional DOT authority the value zero shall be used for testing needs id := p_intersectionID // a unique mapping to the intersection in question within the above region of use } group sremTemplates { group sremTemplatesSend { /** * @desc Send template for SREM Message */ template (value) SignalRequestMessage m_defaultSrem := { timeStamp := omit, second := PX_SECOND, sequenceNumber := PX_SEQUENCE_NUMBER, requests := { valueof( m_signalRequestPackage( valueof( m_signalRequest( m_intersectionReferenceID, PX_REQUEST_ID, priorityRequestTypeReserved, { lane := 1 } )))) }, requestor := valueof(m_requestorDescription(m_vehicleID(f_getIutStationId()))), regional := omit } /** * @desc Send template for SREM Message */ template (omit) SignalRequestMessage m_srem( in template (value) RequestorDescription p_requestorDescription, in template (omit) SignalRequestList p_requests := omit ) modifies m_defaultSrem := { requests := p_requests, requestor := p_requestorDescription } template (value) SignalRequestPackage m_signalRequestPackage( in template (value) SignalRequest p_request ) := { request := p_request, minute := omit, second := omit, duration := omit, regional := omit } template (omit) SignalRequest m_signalRequest( in template (value) IntersectionReferenceID p_id, in template (value) RequestID p_requestID, in template (value) PriorityRequestType p_requestType, in template (value) IntersectionAccessPoint p_inBoundLane, in template (omit) IntersectionAccessPoint p_outBoundLane := omit ) := { id := p_id, requestID := p_requestID, requestType := p_requestType, inBoundLane := p_inBoundLane, outBoundLane := p_outBoundLane, regional := omit } template (omit) RequestorDescription m_requestorDescription( in template (value) VehicleID p_id, in template (omit) RequestorType p_type := omit, in template (omit) RequestorPositionVector p_position := omit, in template (omit) TransitVehicleStatus p_transitStatus := omit, in template (omit) TransitVehicleOccupancy p_transitOccupancy := omit ) := { id := p_id, // The ID used in the BSM or CAM of the requestor type_ := p_type, // Information regarding all type and class data about the requesting vehicle position := p_position, // The location of the requesting vehicle name := omit, // A human readable name for debugging use routeName := omit, // A string for transit operations use transitStatus := p_transitStatus, // current vehicle state (loading, etc.) transitOccupancy := p_transitOccupancy, // current vehicle occupancy transitSchedule := omit, // current vehicle schedule adherence regional := omit } template (value) VehicleID m_vehicleID( in template (value) StationID p_stationID ) := { stationID := p_stationID } template (omit) RequestorType m_requestorType( in template (value) BasicVehicleRole p_role, in template (omit) RequestSubRole p_subrole := omit, in template (omit) RequestImportanceLevel p_request := omit ) := { role := p_role, // Basic role of this user at this time subrole := p_subrole, // A local list with role based items request := p_request, // A local list with request items iso3883 := omit, hpmsType := omit, // HPMS classification types regional := omit } } // End of group sremTemplatesSend group sremTemplatesRecv { /** * @desc Receive template for SREM Message */ template (present) SignalRequestMessage mw_defaultSrem := { timeStamp := *, second := ?, sequenceNumber := *, requests := *, requestor := ?, regional := * } // End of template mw_defaultSrem /** * @desc Receive template for SREM Message with no LayerType */ template (present) SignalRequestMessage mw_sremWellFormatted( template (present) RequestorDescription p_requestor := ?, template (present) SignalRequestList p_requests := ?, template (present) MsgCount p_sequenceNumber := ?, template MinuteOfTheYear p_timeStamp := *, template DSecond p_second := * ) modifies mw_defaultSrem := { timeStamp := p_timeStamp, second := p_second, sequenceNumber := p_sequenceNumber, requests := p_requests, requestor := p_requestor } // End of template mw_sremWellFormatted template (present) SignalRequestPackage mw_signalRequestPackage( template (present) SignalRequest p_request := ? ) := { request := p_request, minute := *, second := *, duration := *, regional := * } template SignalRequest mw_signalRequest( template (present) IntersectionReferenceID p_id := ?, template (present) RequestID p_requestID := ?, template (present) PriorityRequestType p_requestType := priorityRequest, template (present) IntersectionAccessPoint p_inBoundLane := ?, template IntersectionAccessPoint p_outBoundLane := * ) := { id := p_id, requestID := p_requestID, requestType := p_requestType, inBoundLane := p_inBoundLane, outBoundLane := p_outBoundLane, regional := * } template (present) RequestorDescription mw_requestorDescription( template (present) VehicleID p_id := ?, template RequestorType p_type := *, template RequestorPositionVector p_position := *, template TransitVehicleStatus p_transitStatus := *, template TransitVehicleOccupancy p_transitOccupancy := *, template DeltaTime p_transitSchedule := * ) := { id := p_id, // The ID used in the BSM or CAM of the requestor type_ := p_type, // Information regarding all type and class data about the requesting vehicle position := p_position, // The location of the requesting vehicle name := *, // A human readable name for debugging use routeName := *, // A string for transit operations use transitStatus := p_transitStatus, // current vehicle state (loading, etc.) transitOccupancy := p_transitOccupancy, // current vehicle occupancy transitSchedule := p_transitSchedule, // current vehicle schedule adherence regional := * } // End of template mw_requestorDescription template (present) RequestorPositionVector mw_requestor_position( template (present) Position3D p_position := ? ) := { position := p_position, heading := *, speed := * } // End of template mw_requestor_position template RequestorType mw_requestorType( template (present) BasicVehicleRole p_role := ?, template RequestSubRole p_subrole := *, template RequestImportanceLevel p_request := * ) := { role := p_role, // Basic role of this user at this time subrole := p_subrole, // A local list with role based items request := p_request, // A local list with request items iso3883 := *, hpmsType := *, // HPMS classification types regional := * } // End of template mw_requestorType } // End of group sremTemplatesRecv } // End of group sremTemplates group ssemTemplates { /** * @desc Send template for SignalStatusMessage Message */ template (value) SignalStatusMessage m_defaultSsem := { timeStamp := omit, second := PX_SECOND, sequenceNumber := omit, status := { m_signalStatus(PX_SEQUENCE_NUMBER, PX_STATUS) }, regional := omit } /** * @desc Send template for SignalStatusMessage Message */ template (value) SignalStatusMessage m_ssem( in SignalRequestMessage p_signalRequestMessage ) modifies m_defaultSsem := { second := p_signalRequestMessage.second, status := { m_signalStatus(p_signalRequestMessage.sequenceNumber, p_signalRequestMessage.requests[0].request.id) }, regional := omit } /** * @desc Receive template for SSEM Message */ template (present) SignalStatusMessage mw_ssemWellFormatted( template (present) MsgCount p_sequenceNumber := ?, template (present) SignalStatus p_status := ? ) := { timeStamp := *, second := ?, sequenceNumber := p_sequenceNumber, status := { p_status }, regional := * } template (value) SignalStatus m_signalStatus( in template (value) MsgCount p_sequenceNumber, in template (value) IntersectionReferenceID p_id ) := { sequenceNumber := p_sequenceNumber, id := p_id, sigStatus := { m_signalStatusPackage(m_requester(m_vehicleID(f_getIutStationId()), 4, 6, basicVehicle)) }, regional := omit } template (present) SignalStatus mw_signalStatus( template (present) MsgCount p_sequenceNumber := ?, template (present) IntersectionReferenceID p_id := ?, template (present) SignalStatusPackage p_sigStatus := ? ) := { sequenceNumber := p_sequenceNumber, id := p_id, sigStatus := { p_sigStatus }, regional := * } template (omit) SignalRequesterInfo m_requester( in template (value) VehicleID p_id, in template (value) RequestID p_request, in template (value) MsgCount p_sequenceNumber, in template (omit) BasicVehicleRole role := omit ) := { id := p_id, request := p_request, sequenceNumber := p_sequenceNumber, role := omit, typeData := omit } template SignalRequesterInfo mw_requester( template (present) VehicleID p_id := ?, template (present) RequestID p_request := ?, template (present) MsgCount p_sequenceNumber := ?, template BasicVehicleRole role := * ) := { id := p_id, request := p_request, sequenceNumber := p_sequenceNumber, role := *, typeData := * } template (value) SignalStatusPackage m_signalStatusPackage( in template (value) SignalRequesterInfo p_requester ) := { requester := p_requester, inboundOn := { approach := 0 }, outboundOn := omit, minute := omit, second := omit, duration := omit, status := processing, regional := omit } template SignalStatusPackage mw_signalStatusPackage( template (present) SignalRequesterInfo p_requester := ? ) := { requester := p_requester, inboundOn := ?, outboundOn := *, minute := *, second := *, duration := *, status := ?, regional := * } } // End of group ssemTemplates } // End of group sremSsemTemplates } // End of module LibItsSremSsem_Templates