Newer
Older
* @desc Module containing base template definitions for DENM
*
*/
//LibIts
import from DENM_PDU_Descriptions language "ASN.1:1997" all;
import from CAM_PDU_Descriptions language "ASN.1:1997" all;
import from LibIts_Interface all;
import from LibItsDenm_TypesAndValues all;
) := {
msgOut := p_denMsg
}
template DenmInd mw_denmInd(
group denmPduTemplates {
template ItsPduHeader m_itsPduHeader := {
messageID := c_messageId,
generationTime := 0 //TODO document: 0 indicates that the lower layer should add the time while sending
}
template ItsPduHeader mw_itsPduHeader modifies m_itsPduHeader := {
generationTime := ?
}
template DenmPdu m_denmPdu(in template (value) DecentralizedEnvironmentalNotificationMessage p_denm) := {
header := m_itsPduHeader,
denm := p_denm
}
template DenmPdu mw_denmPdu(in template (present) DecentralizedEnvironmentalNotificationMessage p_denm) := {
header := mw_itsPduHeader,
denm := p_denm
}
} // end denmPduTemplates
group decentralizedEnvironmentalNotificationMessageTemplates {
template DecentralizedEnvironmentalNotificationMessage m_denm(
template (value) DecentralizedSituationManagement p_mgmt,
template (value) DecentralizedSituation p_sit,
template (value) DecentralizedSituationLocation p_loc
) := {
management := p_mgmt,
situation := p_sit,
location := p_loc
}
template DecentralizedEnvironmentalNotificationMessage mw_denm(
template (present) DecentralizedSituationManagement p_mgmt,
template (present) DecentralizedSituation p_sit,
template (present) DecentralizedSituationLocation p_loc
) := {
management := p_mgmt,
situation := p_sit,
location := p_loc
}
template DecentralizedEnvironmentalNotificationMessage m_denmWithCause(
template (value) DataVersion p_dataVersion,
template (value) Situation p_sit,
template (value) DecentralizedSituationLocation.eventPosition p_eventPosition,
template (value) StationID p_stationId
management := m_denmMgmtCon(p_dataVersion, p_stationId),
situation := m_denmSitCon(p_sit, informative),
location := m_denmSitLoc(
m_locationRef
)
}
template DecentralizedEnvironmentalNotificationMessage m_denmWithCauseIsNeg(
template (value) DataVersion p_dataVersion,
template (value) Situation p_sit,
template (value) DecentralizedSituationLocation.eventPosition p_eventPosition,
template (value) StationID p_stationId,
template (value) DecentralizedSituationManagement.isNegation p_isNeg
) modifies m_denmWithCause := {
management := m_denmMgmtCon_IsNeg(p_dataVersion, p_stationId, p_isNeg)
} // end group decentralizedEnvironmentalNotificationMessageTemplates
template (value) DataVersion p_dataVersion,
template (value) StationID p_stationId
sequenceNo := 0
},
dataVersion := p_dataVersion,
expiryTime := omit,
frequency := omit,
reliability := 0,
isNegation := false
}
template DecentralizedSituationManagement mw_denmMgmtCon (
template (present) DataVersion p_dataVersion
):= {
actionID := {
stationID := ?,
sequenceNo := ?
},
dataVersion := p_dataVersion,
expiryTime := *,
frequency := *,
reliability := ?,
isNegation := ?
}
template DecentralizedSituationManagement m_denmMgmtCon_IsNeg(
template (value) DataVersion p_dataVersion,
template (value) StationID p_stationId,
template (value) DecentralizedSituationManagement.isNegation p_isNeg
) modifies m_denmMgmtCon := {
isNegation := p_isNeg
}
template DecentralizedSituationManagement mw_denmMgmtCon_IsNeg(
template (present) DataVersion p_dataVersion,
template (present) DecentralizedSituationManagement.isNegation p_isNeg
) modifies mw_denmMgmtCon := {
isNegation := p_isNeg
}
template DecentralizedSituationManagement mw_denmMgmtConWithExpiryTime(
template (present) DataVersion p_dataVersion,
template (present) DecentralizedSituationManagement.expiryTime p_expiryTime
) modifies mw_denmMgmtCon := {
expiryTime := p_expiryTime
}
template DecentralizedSituation m_denmSitCon(
template (value) Situation p_sit,
template (value) Severity p_sev
) := {
trafficFlowEffect := omit,
situation := p_sit,
linkedCause := omit,
severity := p_sev,
eventCharact := omit,
profile := omit
}
template DecentralizedSituation mw_denmSitCon := {
trafficFlowEffect := *,
situation := ?,
linkedCause := *,
severity := ?,
eventCharact := *,
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
profile := *
}
template DecentralizedSituation mw_denmSitCon_Sit(
template (present) Situation p_sit
) modifies mw_denmSitCon := {
situation := p_sit
}
template DecentralizedSituation mw_denmSitCon_SitTfe(
template (present) Situation p_sit,
template (present) TrafficFlowEffect p_tfe
) modifies mw_denmSitCon_Sit := {
trafficFlowEffect := p_tfe
}
template DecentralizedSituation mw_denmSitCon_SitLc(
template (present) Situation p_sit,
template (present) Situation p_lc
) modifies mw_denmSitCon_Sit := {
linkedCause := p_lc
}
template DecentralizedSituation mw_denmSitCon_SitEc(
template (present) Situation p_sit,
template (present) DecentralizedSituation.eventCharact p_ec
) modifies mw_denmSitCon_Sit := {
eventCharact := p_ec
}
template Situation m_situation(
template (value) DENM_PDU_Descriptions.CauseCode p_cause,
template (value) SubCauseCode p_subCause
) := {
cause := p_cause,
subCause := p_subCause
}
template Situation mw_situation(
template (present) DENM_PDU_Descriptions.CauseCode p_cause,
template (present) SubCauseCode p_subCause
) := {
cause := p_cause,
subCause := p_subCause
}
//TODO check if depending on kind of ITS station
template DecentralizedSituation.eventCharact m_eventCharact := {
eventmobility := true,
causeType := geographicalRegion,
relevance := difficultDrivingConditions,
timeCriticality := false
template DecentralizedSituationLocation m_denmSitLoc(
template (value) DecentralizedSituationLocation.eventPosition p_eventPosition,
template (value) DecentralizedSituationLocation.locationRef p_locationRef
) := {
eventPosition := p_eventPosition,
locationRef := p_locationRef
}
template DecentralizedSituationLocation mw_denmSitLoc (
template (present) DecentralizedSituationLocation.eventPosition p_eventPosition,
template (present) DecentralizedSituationLocation.locationRef p_locationRef
) := {
eventPosition := p_eventPosition,
locationRef := p_locationRef
}
template DecentralizedSituationLocation.locationRef m_locationRef := {
trace := {
traceID := 0,
waypoints := {}
}
}