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 LibItsDenm_Functions 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 {
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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
) := {
management := m_denmMgmtCon(p_dataVersion),
situation := m_denmSitCon(p_sit, informative),
location := m_denmSitLoc(
f_getCurrentPosition(),
m_locationRef
)
}
template DecentralizedEnvironmentalNotificationMessage m_denmWithCauseIsNeg(
template (value) DataVersion p_dataVersion,
template (value) Situation p_sit,
template (value) DecentralizedSituationManagement.isNegation p_isNeg
) modifies m_denmWithCause := {
management := m_denmMgmtCon_IsNeg(p_dataVersion, p_isNeg)
}
} // end group DecentralizedEnvironmentalNotificationMessageTemplates
group DecentralizedSituationManagementTemplates {
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
template DecentralizedSituationManagement m_denmMgmtCon(
template (value) DataVersion p_dataVersion
) := {
protocolVersion := c_protocolVersion_DENM,
messageID := c_messageId,
generationtime := 0, //TODO document: 0 indicates that the lower layer should add the time while sending
actionID := {
stationID := f_getStationId(),
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) 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
}
} // end group DecentralizedSituationManagementTemplates
129
130
131
132
133
134
135
136
137
138
139
140
141
142
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
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