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_Functions 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) octetstring 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) SSEM p_ssem := omit
cam := p_cam,
denms := p_denms,
mapem := p_mapem,
spatems := p_spatems,
ivim := p_ivim
} // End of template RsuMessagesValue
group geoNetworkingTemplates {
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) Payload p_payload
) modifies m_geoNwBroadcastPacket := {
payload := p_payload
} // End of template m_geoNwBroadcastPacket_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)
*/
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) Payload p_payload
) modifies m_geoNwTsbPacket:= {
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 := {
decodedPayload := {
btpPacket := mw_btpB(
PICS_SREM_BTP_DESTINATION_PORT,
PICS_SREM_BTP_SOURCE_PORT,
?
)
},
rawPayload := ?
}
}
* @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 := {
decodedPayload := {
btpPacket := mw_btpB(
PICS_SREM_BTP_DESTINATION_PORT,
PICS_SREM_BTP_SOURCE_PORT,
?
)
},
rawPayload := ?
}
}
/**
* @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) LongPosVector p_sourceLongPosVec := ?,
in template (value) NextHeader p_nextHeader
) modifies mw_geoNwShbPacket := {
commonHeader := mw_commonHeaderWithHopLimit(
p_nextHeader,
m_shbHeaderType,
p_hopLimit
),
payload := {
decodedPayload := {
btpPacket := mw_btpB(
PICS_DENM_BTP_DESTINATION_PORT,
PICS_DENM_BTP_SOURCE_PORT,
?
)
},
rawPayload := ?
}
}
/**
* @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 := ?,
in template (value) NextHeader p_nextHeader
) modifies mw_geoNwShbPacket := {
payload := {
decodedPayload := {
btpPacket := mw_btpB(
PICS_CAM_BTP_DESTINATION_PORT,
PICS_CAM_BTP_SOURCE_PORT,
?
)
},
rawPayload := ?
}
}
} // 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 := SemiAxisLength_oneCentimeter_,
semiMinorConfidence := SemiAxisLength_oneCentimeter_,
semiMajorOrientation := HeadingValue_wgs84North_
},
altitude := {
altitudeValue := 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 := ?,
stationCountryCode := ?,
},
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) ReferencePosition p_rsuPosition,
in template (value) PathHistory p_pathHistory,
in template (value) HighFrequencyContainer p_highFrequencyContainer
) := {
header := {
protocolVersion := ItsPduHeader_protocolVersion_currentVersion_,
messageID := ItsPduHeader_messageID_cam_,
stationID := p_stationID
},
cam := {
generationDeltaTime := 0, // Dynamic parameter
camParameters := {
basicContainer := {
stationType := StationType_roadSideUnit_,
referencePosition := p_rsuPosition
},
highFrequencyContainer := p_highFrequencyContainer,
lowFrequencyContainer := {
basicVehicleContainerLowFrequency := {
vehicleRole := roadOperator,
exteriorLights := '00000000'B,
specialVehicleContainer := omit
}
}
} // End of template m_camParm
// TODO Add ProtectedZone
} // End of group camTemplates
group mapemTemplates {
template (value) MAPEM m_mapemParm(
in template (value) StationID p_stationID,
in template (value) MapData p_map
) := {
header := {
protocolVersion := ItsPduHeader_protocolVersion_currentVersion_,
messageID := ItsPduHeader_messageID_mapem_,
stationID := p_stationID
},
map_ := p_map
}
group spatemTemplates {
template (value) SPATEM m_spatemParm(
in template (value) StationID p_stationID,
in template (value) SPAT p_spat
) := {
header := {
protocolVersion := ItsPduHeader_protocolVersion_currentVersion_,
messageID := 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 := ItsPduHeader_protocolVersion_currentVersion_,
messageID := ItsPduHeader_messageID_ivim_,
stationID := p_stationID
},
ivi := p_ivi
}
} // End of group ivimTemplates
group denmTemplates {
/**
* @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 (value) 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 (value) EventHistory p_eventHistory,
garciay
committed
in template (value) Traces p_traces,
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,
relevanceTrafficDirection := omit,
validityDuration := p_validityDuration,
transmissionInterval := p_repetitionInterval,
stationType := 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,