Newer
Older
module ItsRSUsSimulator_Templates {
// LibCommon
import from LibCommon_BasicTypesAndValues all;
// LibIts
import from ITS_Container language "ASN.1:1997" all;
import from CAM_PDU_Descriptions language "ASN.1:1997" all;
import from DENM_PDU_Descriptions 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 IVIM_PDU_Descriptions language "ASN.1:1997" all;
import from IVI language "ASN.1:1997" all;
import from SSEM_PDU_Descriptions language "ASN.1:1997" all;
import from DSRC language "ASN.1:1997" all;
// LibItsCommon
import from LibItsCommon_ASN1_NamedNumbers all;
import from LibCommon_DataStrings all;
// LibItsGeoNetworking
import from LibItsGeoNetworking_TestSystem all;
import from LibItsGeoNetworking_Functions all;
import from LibItsGeoNetworking_Templates all;
import from LibItsGeoNetworking_TypesAndValues all;
// LibItsBtp
import from LibItsBtp_TypesAndValues all;
import from LibItsBtp_Templates all;
// LibItsCam
import from LibItsCam_Templates all;
// LibItsDenm
import from LibItsDenm_Templates all;
// LibItsMapemSpatem
import from LibItsMapemSpatem_Templates all;
// LibItsIvim
import from LibItsIvim_Templates all;
// AtsRSUsSimulator
import from ItsRSUsSimulator_TypesAndValues all;
import from ItsRSUsSimulator_Functions all;
import from ItsRSUsSimulator_Pics all;
template (omit) RsuMessagesValue m_rsuProfile(
in template (omit) GeoNetworkingPdu p_beacon := omit,
in template (omit) CAM p_cam := omit,
in template (omit) DENMs p_denms := omit,
in template (omit) SPATEMs p_spatems := omit,
in template (omit) IVIM p_ivim := omit,
// in template (omit) EvcsnPdu p_evcsn := omit,
in template (omit) SSEM p_ssem := omit
cam := p_cam,
denms := p_denms,
mapem := p_mapem,
spatems := p_spatems,
} // End of template RsuMessagesValue
group geoNetworkingTemplates {
/**
* @desc Send template for long position vector with specific GN_Address
* @param p_gnAddress GN_Address to be contained in the long position vector
*/
template (value) LongPosVector m_longPosVector(
in template (value) GN_Address p_gnAddress,
in UInt32 p_timestamp_,
in Int32 p_latitude := 0,
in Int32 p_longitude := 0,
in Bit1 p_pai := '0'B,
in Int15 p_speed := 0,
in UInt16 p_heading := 0
) := {
gnAddr := p_gnAddress,
timestamp_ := p_timestamp_,
latitude := p_latitude,
longitude := p_longitude,
pai := p_pai,
speed := p_speed,
heading := p_heading
}
template (value) GnNonSecuredPacket m_geoNwBeaconPacket_payload(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) GnRawPayload p_gnRawPayload
) modifies m_geoNwBeaconPacket := {
payload := p_gnRawPayload
}
template (value) GnNonSecuredPacket m_geoNwBroadcastPacket_payload(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) UInt16 p_seqNumber,
in template (value) GeoBroadcastArea p_broadcastArea,
in template (value) UInt8 p_hopLimit := c_defaultHopLimit,
in template (value) TrafficClass p_trafficClass := m_trafficClass,
in template (value) GnRawPayload p_payload
) modifies m_geoNwBroadcastPacket := {
payload := p_payload
} // End of template m_geoNwBroadcastPacket_payload
template (value) GnNonSecuredPacket m_geoNwAnycastPacket_payload(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) UInt16 p_seqNumber,
in template (value) GeoAnycastArea p_anycastArea,
in template (value) UInt8 p_hopLimit := c_defaultHopLimit,
in template (value) TrafficClass p_trafficClass := m_trafficClass,
in template (value) GnRawPayload p_payload
) modifies m_geoNwAnycastPacket := {
payload := p_payload
} // End of template m_geoNwAnycastPacket_payload
/**
* @desc Send template for GeoNetworking TSB Packet
* @param p_seqNumber Sequence number of TSB packet
* @param p_sourceLongPosVec Long position vector of source
* @param p_hopLimit The maximum number of hops (Default: c_defaultHopLimit)
* @param p_trafficClass TODO
* @param p_payload TODO
*/
template (value) GnNonSecuredPacket m_geoNwTsbPacket_payload(
in template (value) UInt16 p_seqNumber,
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) UInt8 p_hopLimit := c_defaultHopLimit,
in template (value) TrafficClass p_trafficClass := m_trafficClass,
in template (value) GnRawPayload p_payload
) modifies m_geoNwTsbPacket:= {
payload := p_payload
}
/**
* @desc Send template for GeoNetworking SHB Packet
* @param p_sourceLongPosVec Long position vector of source
* @param p_hopLimit The maximum number of hops (Default: c_defaultHopLimit)
* @param p_trafficClass TODO
* @param p_payload TODO
*/
template (value) GnNonSecuredPacket m_geoNwShbPacket_payload(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) GnRawPayload p_payload
) modifies m_geoNwShbPacket:= {
payload := p_payload
}
/**
* @desc Receive template for GeoNetworking Unicast Packet
* @param p_destinationShortPosVec Short position vector of destination
* @param p_seqNumber Sequence number of GeoUnicast packet
* @param p_nextHeader Id of next header
*/
template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithNextHeader_srem(
in template (present) LongPosVector p_sourceLongPosVec := ?,
in template (present) UInt16 p_seqNumber := ?,
in template (present) NextHeader p_nextHeader := ?
) modifies mw_geoNwBroadcastPacketWithNextHeader := {
payload := f_payload_template(PICS_SREM_BTP_DESTINATION_PORT, PICS_SREM_BTP_SOURCE_PORT)
* @param p_destinationShortPosVec Short position vector of destination
* @param p_seqNumber Sequence number of GeoUnicast packet
* @param p_nextHeader Id of next header
*/
template (present) GnNonSecuredPacket mw_geoNwTsbPacketWithNextHeader_srem(
in template (present) UInt16 p_seqNumber := ?,
in template (present) LongPosVector p_sourceLongPosVec := ?,
in template (value) NextHeader p_nextHeader
) modifies mw_geoNwTsbPacketWithNextHeader := {
payload := f_payload_template(PICS_SREM_BTP_DESTINATION_PORT, PICS_SREM_BTP_SOURCE_PORT)
/**
* @desc Receive template for GeoNetworking DENM Packet
* @param p_destinationShortPosVec Short position vector of destination
* @param p_seqNumber Sequence number of GeoUnicast packet
* @param p_nextHeader Id of next header
*/
template (present) GnNonSecuredPacket mw_geoNwTsbPacketWithNextHeader_denm(
in template (present) UInt16 p_seqNumber := ?,
in template (present) LongPosVector p_sourceLongPosVec := ?
) modifies mw_geoNwTsbPacket := {
payload := f_payload_template(PICS_DENM_BTP_DESTINATION_PORT, PICS_DENM_BTP_SOURCE_PORT)
} // End of template mw_geoNwTsbPacketWithNextHeader_denm
/**
* @desc Receive template for GeoNetworking DENM Packet
* @param p_destinationShortPosVec Short position vector of destination
* @param p_seqNumber Sequence number of GeoUnicast packet
* @param p_nextHeader Id of next header
*/
template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithNextHeader_denm(
in template (present) LongPosVector p_sourceLongPosVec := ?,
in template (present) UInt16 p_seqNumber := ?
) modifies mw_geoNwBroadcastPacket := {
payload := f_payload_template(PICS_DENM_BTP_DESTINATION_PORT, PICS_DENM_BTP_SOURCE_PORT)
} // End of template mw_geoNwBroadcastPacketWithNextHeader_denm
/**
* @desc Receive template for GeoNetworking CAM Packet
* @param p_destinationShortPosVec Short position vector of destination
* @param p_seqNumber Sequence number of GeoUnicast packet
* @param p_nextHeader Id of next header
*/
template (present) GnNonSecuredPacket mw_geoNwShbPacketWithNextHeader_cam(
in template (present) LongPosVector p_sourceLongPosVec := ?,
in template (present) UInt8 p_hopLimit := ?,
payload := f_payload_template(PICS_CAM_BTP_DESTINATION_PORT, PICS_CAM_BTP_SOURCE_PORT)
} // End of template mw_geoNwShbPacketWithNextHeader_cam
} // End of group geoNetworkingTemplates
group positionTemplates {
/**
* @desc The test system reference position.
*/
template (value) ReferencePosition m_rsuPosition(
in template (value) Latitude p_latitude,
in template (value) Longitude p_longitude
) := {
latitude := f_integer2Latitude(valueof(p_latitude)),
longitude := f_integer2Latitude(valueof(p_longitude)),
positionConfidenceEllipse := {
semiMajorConfidence := LibItsCommon_ASN1_NamedNumbers.SemiAxisLength_oneCentimeter_,
semiMinorConfidence := LibItsCommon_ASN1_NamedNumbers.SemiAxisLength_oneCentimeter_,
semiMajorOrientation := LibItsCommon_ASN1_NamedNumbers.HeadingValue_wgs84North_
altitudeValue := LibItsCommon_ASN1_NamedNumbers.AltitudeValue_referenceEllipsoidSurface_,
altitudeConfidence := unavailable
}
} // End of template m_rsuPosition
/**
* @desc Receive template for long position vector with strict position check
* @param p_longPosVector The base long position vector
*/
template LongPosVector mw_longPosVectorPosition_vendors(
in template (value) Oct6 p_mid
) := {
gnAddr := {
typeOfAddress := ?,
stationType := ?,
},
timestamp_ := ?,
latitude := ?,
longitude := ?,
//FIXME May the delta factor should be based on the actual speed value -> low speed=lower delta, high speed=higher delta
speed := ?,
heading := ?
}
} // End of group positionTemplates
group camTemplates {
template (value) HighFrequencyContainer m_highFrequencyContainer_rsuContainerHighFrequency(
in template (value) RSUContainerHighFrequency p_rsuContainerHighFrequency
) := {
rsuContainerHighFrequency := p_rsuContainerHighFrequency
}
template (value) RSUContainerHighFrequency m_rSUContainerHighFrequency(
in template (value) ProtectedCommunicationZonesRSU p_protectedCommunicationZonesRSU
) := {
protectedCommunicationZonesRSU := p_protectedCommunicationZonesRSU
}
template (value) CAM m_camParm(
in template (value) StationID p_stationID,
in template (value) ITS_Container.StationType p_stationType := LibItsCommon_ASN1_NamedNumbers.StationType_roadSideUnit_,
in template (value) VehicleRole p_vehicleRole := roadOperator,
in template (value) ReferencePosition p_rsuPosition,
in template (value) PathHistory p_pathHistory,
in template (value) HighFrequencyContainer p_highFrequencyContainer
protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_,
messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_cam_,
stationID := p_stationID
},
cam := {
generationDeltaTime := 0, // Dynamic parameter
camParameters := {
basicContainer := {
highFrequencyContainer := p_highFrequencyContainer,
lowFrequencyContainer := {
exteriorLights := '00000000'B,
specialVehicleContainer := omit
}
}
} // End of template m_camParm
template (present) CAM mw_cam_stationID(
in template (present) BasicVehicleContainerHighFrequency p_basicVehicleContainer := mw_HF_BV_speed(?),
in template (value) StationID p_stationID,
in template (present) ReferencePosition p_referencePosition := ?
) modifies mw_camMsg_HF_BV := {
header := {
stationID := p_stationID
},
cam := {
camParameters := {
basicContainer := {
stationType := ?,
referencePosition := p_referencePosition
}
}
}
} // End of template mw_cam_stationID
} // End of group camTemplates
group mapemTemplates {
in template (value) StationID p_stationID,
in template (value) MapData p_map
protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_,
messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_mapem_,
group spatemTemplates {
template (value) SPATEM m_spatemParm(
in template (value) StationID p_stationID,
in template (value) SPAT p_spat
) := {
header := {
protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_,
messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_spatem_,
stationID := p_stationID
},
spat := p_spat
}
} // End of group spatemTemplates
template (value) IVIM m_ivimParm(
in template (value) StationID p_stationID,
in template (value) IviStructure p_ivi
) := {
header := {
protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_,
messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_ivim_,
stationID := p_stationID
},
ivi := p_ivi
}
/* template (value) EvcsnPdu m_evcsnParm( */
/* in template (value) StationID p_stationID, */
/* in template (value) EVChargingSpotNotificationPOIMessage p_evcsn */
/* ) := { */
/* header := { */
/* protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, */
/* messageID := 7, //LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_evcsn_, */
/* stationID := p_stationID */
/* }, */
/* evcsn := p_evcsn */
/* } */
/* template (value) EVChargingSpotNotificationPOIMessage m_evcsn( */
/* in template (value) ItsPOIHeader p_poiHeader, */
/* in template (value) ItsEVCSNData p_evcsnData */
/* ) := { */
/* poiHeader := p_poiHeader, */
/* evcsnData := p_evcsnData */
/* } */
/* template (value) ItsPOIHeader m_itsPOIHeader( */
/* in template (value) POIType p_poiType := 1, */
/* in template (value) TimestampIts p_timeStamp, */
/* in template (value) boolean p_relayCapable := true */
/* ) := { */
/* poiType := p_poiType, */
/* timeStamp := p_timeStamp, */
/* relayCapable := p_relayCapable */
/* } */
/* template (value) ItsEVCSNData m_itsEVCSNData( */
/* in template (value) NumberStations p_totalNumberOfStations := 1, */
/* in template (value) ItsChargingStationDatas p_itsChargingStationDatas */
/* ) := { */
/* totalNumberOfStations := p_totalNumberOfStations, */
/* chargingStationsData := p_itsChargingStationDatas */
/* } */
/* } // End of group evcsnTemplates */
/**
* @desc Send template for DENM PDU
* @param p_denm The DEN Message
*/
template (value) DENM m_denmPdu_rsu(
in template (value) StationID p_stationID,
in template (value) DecentralizedEnvironmentalNotificationMessage p_denm
) := {
header := LibItsDenm_Templates.m_itsPduHeader(p_stationID),
denm := p_denm
}
/**
* @desc Send template for Alacarte Container including lanePosition
*/
template (omit) AlacarteContainer m_alacarte(
in template (omit) RoadWorksContainerExtended p_roadWorksContainerExtended
) := {
lanePosition := omit,
impactReduction := omit,
externalTemperature := omit,
roadWorks := p_roadWorksContainerExtended,
positioningSolution := omit,
stationaryVehicle := omit
}
template (omit) DenmParmContainers m_denmParmContainers(
in template (value) StationID p_originatingStationID,
in template (value) SequenceNumber p_sequenceNumber,
in template (value) TransmissionInterval p_repetitionInterval,
in template (value) ReferencePosition p_eventPosition,
in template (value) CauseCodeType p_causeCodeType,
in template (omit) EventHistory p_eventHistory := omit,
in template (omit) Traces p_traces := omit,
in template (value) ValidityDuration p_validityDuration := 86400,
in template (value) RelevanceDistance p_relevanceDistance := lessThan100m,
in template (value) RelevanceTrafficDirection p_relevanceTrafficDirection := upstreamTraffic
) := {
managementContainer := {
actionID := {
originatingStationID := p_originatingStationID,
sequenceNumber := p_sequenceNumber
},
detectionTime := f_getCurrentTime(),
referenceTime := f_getCurrentTime(), // FIXME To be checked
termination := omit,
eventPosition := p_eventPosition,
relevanceDistance := p_relevanceDistance,
transmissionInterval := p_repetitionInterval,
stationType := LibItsCommon_ASN1_NamedNumbers.StationType_roadSideUnit_
}, // End of field managementContainer
situationContainer := {
informationQuality := 0,
eventType := {
causeCode := p_causeCodeType,
subCauseCode := 0
},
linkedCause := omit,
eventHistory := p_eventHistory
}, // End of field situationContainer
locationContainer := {
eventSpeed := omit,
eventPositionHeading := omit,
garciay
committed
traces := p_traces,
roadType := omit
} // End of field locationContainer
} // End of template m_denmParm
} // End of module ItsRSUsSimulator_Templates