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;
template (value) DecentralizedEnvironmentalNotificationMessage p_denMsg
) := {
msgOut := p_denMsg
}
template DenmInd mw_denmInd(
template (present) DecentralizedEnvironmentalNotificationMessage p_denMsg
) := {
msgIn := p_denMsg
}
} // end primitives
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
group DecentralizedSituationManagementTemplates {
template (value) DataVersion p_dataVersion,
template (value) StationID p_stationId
) := {
protocolVersion := c_protocolVersion_DENM,
messageID := c_messageId,
generationtime := 0, //TODO document: 0 indicates that the lower layer should add the time while sending
actionID := {
sequenceNo := 0
},
dataVersion := p_dataVersion,
expiryTime := omit,
frequency := omit,
reliability := 0,
isNegation := false
}
template DecentralizedSituationManagement mw_denmMgmtCon (
template (present) DataVersion p_dataVersion
):= {
protocolVersion := c_protocolVersion_DENM,
messageID := c_messageId,
generationtime := ?,
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 (value) StationID p_stationId,
template (present) DecentralizedSituationManagement.isNegation p_isNeg
) modifies mw_denmMgmtCon := {
isNegation := p_isNeg
}
template DecentralizedSituationManagement mw_denmMgmtConWithExpiryTime(
template (present) DataVersion p_dataVersion,
template (value) StationID p_stationId,
template (present) DecentralizedSituationManagement.expiryTime p_expiryTime
) modifies mw_denmMgmtCon := {
expiryTime := p_expiryTime
}
} // end group DecentralizedSituationManagementTemplates
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
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 := *,
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,
relevant := difficultDrivingConditions,
timeCritacality := false
}
}
} // end group DecentralizedSituationTemplates
group DecentralizedSituationLocationTemplates {
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 := {}
}
}
} // end group DecentralizedSituationLocationTemplates