/** * @author ETSI / STF484 * @version $URL$ * $Id$ * @desc Module containing base template definitions for MAPEM SPATEM * */ module LibItsMapemSpatem_Templates { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from MAPEM_PDU_Descriptions language "ASN.1:1997" all; import from SPATEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_Functions all; import from LibItsCommon_TypesAndValues all; // LibItsMapemSpatem import from LibItsMapemSpatem_TestSystem all; import from LibItsMapemSpatem_TypesAndValues all; import from LibItsMapemSpatem_Pixits all; group primitivesTemplates { /** * @desc Send template for MAPEM Message (MapemSpatemPort Primitive) * @param p_mapemMsg The MAPEM Message to be sent */ template (value) MapemReq m_mapemReq( in template (value) MAPEM p_mapemMsg ) := { msgOut := p_mapemMsg } /** * @desc Receive template for MAPEM Message (MapemSpatemPort Primitive) * @param p_mapemMsg The expected MAPEM Message */ template (present) MapemInd mw_mapemInd( template (present) MAPEM p_mapemMsg ) := { msgIn := p_mapemMsg, gnNextHeader := *, gnHeaderType := *, gnHeaderSubtype := *, gnLifetime := *, gnTrafficClass := *, btpDestinationPort := *, btpInfo := *, ssp := *, its_aid := * } /** * @desc Receive template for MAPEM Message (MapemSpatemPort Primitive) * @param p_mapemMsg The expected MAPEM 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) MapemInd mw_mapemIndWithGnParameters( template (present) MAPEM p_mapemMsg, 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_mapemInd := { gnNextHeader := p_gnNextHeader, gnHeaderType := p_gnHeaderType, gnHeaderSubtype := p_gnHeaderSubtype, gnLifetime := p_gnLifetime, gnTrafficClass := p_gnTrafficClass } /** * @desc Receive template for MAPEM Message (MapemSpatemPort Primitive) * @param p_mapemMsg Expected MAPEM 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 MapemInd mw_mapemIndWithBtpParameters( template (present) MAPEM p_mapemMsg, in template UInt16 p_btpDestinationPort := *, in template UInt16 p_btpInfo := * ) modifies mw_mapemInd := { btpDestinationPort := p_btpDestinationPort, btpInfo := p_btpInfo }; /** * @desc Receive template for MAPEM Message (MapemSpatemPort Primitive) * @param p_mapemMsg The expected MAPEM Message * @param p_ssp SSP value * @param p_its_aid ITS-AID value */ template (present) MapemInd mw_mapemIndWithSecurityParameters( template (present) MAPEM p_mapemMsg, template Bit128 p_ssp := *, template UInt32 p_its_aid := * ) modifies mw_mapemInd := { ssp := p_ssp, its_aid := p_its_aid } /** * @desc Send template for SPATEM Message (MapemSpatemPort Primitive) * @param p_spatemMsg The SPATEM Message to be sent */ template (value) SpatemReq m_spatemReq( in template (value) SPATEM p_spatemMsg ) := { msgOut := p_spatemMsg } /** * @desc Receive template for SPATEM Message (MapemSpatemPort Primitive) * @param p_spatemMsg The expected SPATEM Message */ template (present) SpatemInd mw_spatemInd( template (present) SPATEM p_spatemMsg ) := { msgIn := p_spatemMsg, gnNextHeader := *, gnHeaderType := *, gnHeaderSubtype := *, gnLifetime := *, gnTrafficClass := *, btpDestinationPort := *, btpInfo := *, ssp := *, its_aid := * }; /** * @desc Receive template for SPATEM Message (MapemSpatemPort Primitive) * @param p_spatemMsg The expected SPATEM 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) SpatemInd mw_spatemIndWithGnParameters( template (present) SPATEM p_spatemMsg, 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_spatemInd := { gnNextHeader := p_gnNextHeader, gnHeaderType := p_gnHeaderType, gnHeaderSubtype := p_gnHeaderSubtype, gnLifetime := p_gnLifetime, gnTrafficClass := p_gnTrafficClass } /** * @desc Receive template for SPATEM Message (MapemSpatemPort Primitive) * @param p_spatemMsg Expected MAPEM 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 SpatemInd mw_spatemIndWithBtpParameters( template (present) SPATEM p_spatemMsg, template UInt16 p_btpDestinationPort := *, template UInt16 p_btpInfo := * ) modifies mw_spatemInd := { btpDestinationPort := p_btpDestinationPort, btpInfo := p_btpInfo }; /** * @desc Receive template for SPATEM Message (MapemSpatemPort Primitive) * @param p_spatemMsg The expected SPATEM Message * @param p_ssp SSP value * @param p_its_aid ITS-AID value */ template (present) SpatemInd mw_spatemIndWithSecurityParameters( template (present) SPATEM p_spatemMsg, template Bit128 p_ssp := *, template UInt32 p_its_aid := * ) modifies mw_spatemInd := { 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) UtInitialize m_mapemSpatemInitialize := { hashedId8 := '0000000000000000'O } /** * @desc Send template for Upper Tester Trigger event */ template (value) UtMapemSpatemTrigger m_utTriggerEvent ( Event p_event ) := { event := p_event } } group mapSpatPduTemplates { /** * @desc Send template for MAPEM PDU * @param p_map The MAPEM Message */ template (value) MAPEM m_mapemPdu( in template (value) MapData p_map ) := { header := m_itsPduHeader( - , - ,ItsPduHeader_messageID_mapem_ ), map_ := p_map } /** * @desc Receive template for MAPEM PDU * @param p_map The MAPEM Message */ template (present) MAPEM mw_mapemPdu( template (present) MapData p_map := ? ) := { header := mw_itsPduHeaderMapem, map_ := p_map } /** * @desc Send template for SPATEM PDU * @param p_spat The SPATEM Message */ template (value) SPATEM m_spatemPdu( in template (value) SPAT p_spat ) := { header := m_itsPduHeader( - , - , ItsPduHeader_messageID_spatem_ ), spat := p_spat } /** * @desc Receive template for SPATEM PDU * @param p_spat The SPATEM Message */ template (present) SPATEM mw_spatemPdu( template (present) SPAT p_spat := ? ) := { header := mw_itsPduHeaderSpatem, spat := p_spat } } // End of group mapSpatPduTemplates 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 MAPEM SPATEM protocol version) * @param p_messageID The message Id (Default: MAPEM SPATEM id) */ template (value) ItsPduHeader m_itsPduHeader( in template (value) StationID p_stationID := f_getTsStationId(), in template (value) ItsPduHeader.protocolVersion p_protocolVersion := 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 MAPEM SPATEM protocol version) * @param p_messageID The expected message id (Default: MAPEM SPATEM message id) */ template ItsPduHeader mw_itsPduHeader( template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := 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 MAPEM SPATEM protocol version) * @param p_messageID The expected message id (Default: MAPEM id) */ template ItsPduHeader mw_itsPduHeaderMapem( template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.messageID p_messageID := ItsPduHeader_messageID_mapem_ ) := { 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 MAPEM SPATEM protocol version) * @param p_messageID The expected message id (Default: SPATEM id) */ template ItsPduHeader mw_itsPduHeaderSpatem( template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.messageID p_messageID := ItsPduHeader_messageID_spatem_ ) := { 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 mapemSpatemTemplates { group mapemTemplates { /** * @desc Send template for MAPEM Message */ template (value) MapData m_defaultMapem := { timeStamp := omit, msgIssueRevision := PX_MSG_ISSUE_REVISION, layerType := omit, layerID := omit, intersections := omit, roadSegments := omit, dataParameters := omit, restrictionList := omit, regional := omit } /** * @desc Receive template for MAPEM Message */ template (present) MapData mw_defaultMapem := { timeStamp := *, msgIssueRevision := ?, layerType := *, layerID := *, intersections := *, roadSegments := *, dataParameters := *, restrictionList := *, regional := * } /** * @desc Receive template for MAPEM Message with no LayerType */ template (present) MapData mw_mapemWellFormatted modifies mw_defaultMapem := { layerType := omit, layerID := omit } /** * @desc Receive template for MAPEM Message with no LayerType */ template (present) MapData mw_mapemNoLayerType modifies mw_mapemWellFormatted := { layerType := omit, layerID := omit } } // End of group mapemTemplates group spatemTemplates { /** * @desc Send template for SPAT Message */ template (value) SPAT m_spat := { timeStamp := omit, name := omit, intersections := m_intersections, regional := omit } template (value) IntersectionStateList m_intersections := { m_intersection }; template (value) IntersectionState m_intersection := { name := omit, id := m_intersectionReferenceID, revision := PX_INTERSECTIONSTATE_REVISION, status := PX_STATUS, moy := omit, timeStamp := omit, enabledLanes := omit, states := m_movements, maneuverAssistList := omit, regional := omit } template (value) IntersectionReferenceID m_intersectionReferenceID := { region := omit, id := PX_INTERSECTION_ID } template (value) MovementList m_movements := { m_movement }; template (value) MovementState m_movement := { movementName := omit, signalGroup := PX_SIGNAL_GROUP_ID, state_time_speed := m_movementEventList, maneuverAssistList := omit, regional := omit } template (value) MovementEventList m_movementEventList := { m_movementEvent }; template (value) MovementEvent m_movementEvent := { eventState := stop_Then_Proceed, timing := omit, speeds := omit, regional := omit } /** * @desc Receive template for SPATEM Message */ template (present) SPAT mw_defaultSpatem := { timeStamp := *, name := *, intersections := ?, regional := * } template (present) SPAT mw_spatemWellFormatted modifies mw_defaultSpatem := { } template (present) SPAT mw_spatem_with_region_id( template (present) SPAT.regional p_regional := ? ) modifies mw_defaultSpatem := { regional := p_regional // TODO Try to refined it } } // End of group spatemTemplates } // End of group mapemSpatemTemplates } // End of module LibItsMapemSpatem_Templates