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;
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import from SSEM_PDU_Descriptions language "ASN.1:1997" all;
import from DSRC language "ASN.1:1997" all;
// LibItsCommon
import from LibItsCommon_Functions 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 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,
* @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) LongPosVector p_longPosVector
) modifies mw_longPosVectorPosition := {
gnAddr := {
typeOfAddress := ?,
stationType := ?,
stationCountryCode := ?,
mid := complement(p_longPosVector.gnAddr.mid)
},
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 := ?
}
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
} // End of group positionTemplates
group camTemplates {
template (value) CAM m_camParm(
in template (value) StationID p_stationID,
in template (value) ReferencePosition p_rsuPosition,
in template (value) PathHistory p_pathHistory
) := {
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 := {
rsuContainerHighFrequency := {
protectedCommunicationZonesRSU := omit/*{
}*/
}
},
lowFrequencyContainer := omit,/*{
basicVehicleContainerLowFrequency := {
vehicleRole := roadOperator,
exteriorLights := ExteriorLights_daytimeRunningLightsOn_,
pathHistory := p_pathHistory
}
}*/
specialVehicleContainer := omit
}
}
} // End of template m_camParm
} // 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,