Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
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
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
74
75
76
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
126
127
128
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
178
179
180
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
211
212
213
214
215
216
217
218
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
DENM-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) denm (3) version2 (2)
}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
--STF405: doubled defined, renamed
--DecentralizedSituation ::= SEQUENCE {
DecentralizedEnvironmentalNotificationMessage ::= SEQUENCE {
management DecentralizedSituationManagement, -- container with DEN management and version control
situation DecentralizedSituation, -- container with event description, incl. type, severity
location DecentralizedSituationLocation -- container with event location, location referencing with more detailed location description and the relevance area
}
DecentralizedSituationManagement::= SEQUENCE {
-- protocol version number of the DENM
protocolVersionDENM INTEGER (0..255),
-- unique message type identifier assigned to the DENM
messageID MessageID, -- 1 byte
-- time at which an originator ITS station generates the DENM
generationtime TimeStamp, -- 6 byte
-- unique identifier about an event from one originator ITS station, combination of node ID and a sequence number
actionID ActionID, -- 6 byte
-- version of the DENM indicating updates from the same originator ITS station; value of 255 is used for the cancellation message sent from the originator ITS station
dataVersion INTEGER(0..255), -- 1 byte
-- time when the DENM is deleted from the DEN management and the inforamtion related to the event is set as invalid.. If it is not provided, it indicates that the expiry time is unkown by the originator ITS station
expiryTime TimeStamp OPTIONAL, -- 6 byte
frequency INTEGER (0..255) OPTIONAL, --1 byte
-- probability of the detected event to be true, varies from 0 to 100, with maximum value as full reliability
reliability INTEGER(0..100), -- 7 bits
-- negates the existence of an event at the event position by a third part ITS station that have received DENMs previously.
isNegation BOOLEAN -- 1 bit
}
-- event description derived from [3]
DecentralizedSituation::= SEQUENCE {
-- traffic status near the event position, defined based on [3], TPEG table tec001
trafficFlowEffect TrafficFlowEffect OPTIONAL, -- 1 byte.
-- event direct cause and sub cause description as defined in tab6.1 and in [3]
situation SEQUENCE {
cause CauseCode, -- 1 byte
subCause SubCauseCode -- 1 byte
},
-- linked cause if information is available.
linkedCause Situation OPTIONAL, -- 2 Byte,
-- severity value of the event, defined in [3], TPEG table tec003
severity Severity, -- 1 byte
-- characteristics of the event
eventCharact SEQUENCE -- EventCharact OPTIONAL 1 byte
{
-- event mobility description, set to TRUE if the event is in mobility
eventmobility BOOLEAN,
-- whether the event is caused by the originator ITS station, set to TRUE if it is the case. FALSE if it is a location that may cause danger
causeType BOOLEAN,
-- whether the event is physicalling relevant to the receiving ITS station.. Set to TRUE if it is the case
relevant BOOLEAN,
-- whether the event is time critical road safety event, set to TRUE if it is the case.
timeCritacality BOOLEAN,
-- more characteristics may be added.
...
} OPTIONAL,
-- tagged list to provide supplementary information describing the event, may include DEs and EFs definied in [i.6] or [6]
taggedList SET SIZE(0..32) OF TaggedList OPTIONAL -- optional taggedlist with TaggedValue OPTIONAL
}
DecentralizedSituationLocation::= SEQUENCE {
-- description of the event position
eventPosition CHOICE {
-- the geographical position of the reference position
refPosition [0] RefPosition,
-- other descriptions of the event position or the event area, may be as defined in [6]
--STF405: type definition of EventArea missing!
--eventArea [1] EventArea,
...
},
-- description of the relevance area for the DENM dissemination
--STF405: type definition of RelevanceArea missing!
--relevanceArea RelevanceArea,
-- location referencing of the event position
locationRef CHOICE {
-- consequence position of the trace location referencing mechanism
trace [0] TraceLocData,
-- more location referencing mechanism to be added
...
}
}
ProtocolVersionDENM ::= INTEGER (0..255) -- 1 byte
MessageID ::= INTEGER (0..255) -- 1 byte
--STF405: renamed to TimeStamp as this is actually referenced, LongTimeStamp never
--LongTimeStamp ::= INTEGER (0.. 281474976710655)
TimeStamp ::= INTEGER (0.. 281474976710655) -- units of milliseconds, 6 byte
ActionID ::= SEQUENCE {
stationID StationID, -- a 4 byte value
sequenceNo SequenceNo -- a 2 byte value
}
--STF405: STRING not a valid ASN.1 type
--StationID ::= STRING
StationID ::= CHARACTER STRING
-- station ID of the DENM originator ITS station
SequenceNo ::= INTEGER (0..65535) -- increased by 1 each time a new event is detected by the same ITS station.
DataVersion ::= ENUMERATED {
firstVersion (0),
secondVersion (1),
cancellation (255),
...
}
--STF405: removed as is expressed already in TimeStamp which is referenced only, furthermore OPTIONAL is syntactically incorrect
--LongTimeStamp ::= INTEGER (0.. 281474976710655) OPTIONAL
-- 6byte, units of milliseconds.
Frenquency ::= INTEGER (0.. 255)
Reliability ::= INTEGER (0.. 100) --7 bit
IsNegation ::= BOOLEAN --1 bit
--STF405: removed OPTIONAL, as it is syntactically incorrect
--TrafficFlowEffect ::= INTEGER(0..7) OPTIONAL
TrafficFlowEffect ::= INTEGER(0..7)
Situation ::= SEQUENCE {
cause CauseCode, -- 1 byte
subCause SubCauseCode -- 1 byte
}
CauseCode ::= ENUMERATED
-- 1 to 100 indicates causecode defined within [3]
-- 101 – 255 indicates causecode without being defined by [3]
{
reserved (0),
dangerousDriving (101),
intersectionViolation (102),
vehicleProblem (103),
intersectionCollision (104),
hazardousLocation (105),
...
}
SubCauseCode ::= ENUMERATED
{
unknown (0),
subCauseCode1 (1),
subCauseCode2 (2),
...
}
--STF405: removed OPTIONAL, as it is syntactically incorrect
--LinkedCause ::= Situation OPTIONAL
LinkedCause ::= Situation
--STF405: renamed to Severity
--LongTimeStamp ::= ENUMERATED...
Severity ::= ENUMERATED -- 1 byte
{
informative (1),
-- Text example: <Attention, there is a dangerous obstruction due to fog>
obstacles (2), --danger level 1
-- Text example: <Attention, there a danger due to fog>
danger (3), --danger level 2:
-- Text example: <Attention, highest danger due to fog>
highestDanger (4) --danger level 3:
}
--STF405: removed OPTIONAL, as it is syntactically incorrect
EventCharact ::= SEQUENCE -- 1 byte
{
-- whether the detected event is in mobility (moving vehicle) or static
mobility BOOLEAN,
-- whether the detected event is an ITS station, or is a geographical region
causeType BOOLEAN,
-- whether the detected event is physically relevant to the received ITS stations (accident) or describing difficult driving conditions (fog on the road)
relevant BOOLEAN,
-- whether a detected event is time critical (e.g., electronic braking light) or not (e.g. fog on the road)
timeCriticality BOOLEAN,
...
}
--STF405: removed OPTIONAL, as it is syntactically incorrect
TaggedList ::= SEQUENCE
{
...
}
RefPosition ::= SEQUENCE {
situationLat Latitude, -- 4 bytes
situationLong Longitude, -- 4 bytes
situationAlt Altitude, -- 2 bytes
-- accuracy of the reference position
accuracy PositionAccuracy, -- 4 bytes
-- speed of the detected event if it is in mobility, i.e. vehicle station
speed Speed OPTIONAL, -- 2 bytes
-- direction of the event if it is in mobility, i.e. vehicle station
direction Direction OPTIONAL -- 2 bytes
}
Latitude ::= SEQUENCE {
isSouth BOOLEAN, -- true if on southern hemisphere (sign flag)
degree INTEGER (0..900000000) -- multiples of 0.1 microdegree
}
Longitude ::= SEQUENCE {
isEast BOOLEAN, -- true if east of 0-meridian (sign flag)
degree INTEGER (0..1800000000) -- multiples of 0.1 microdegree
}
Altitude ::= INTEGER (-10000..16767215) -- multiples of 0.1 m
PositionAccuracy ::= OCTET STRING (SIZE(4))
--STF405: removed OPTIONAL, as it is syntactically incorrect
Direction ::= INTEGER{north(0), east(7200), south(14400), west(21600)} (0..28800)
--STF405: removed OPTIONAL, as it is syntactically incorrect
Speed ::= INTEGER (-32765..32765) -- multiples of 0.01 m/s
LocationRef ::= CHOICE {
-- consequence position of the trace location referencing mechanism
trace [0] TraceLocData,
-- more location referencing mechanism to be added
...
}
TraceLocData ::= SEQUENCE {
--3 bits, identifier of the trace.
traceID INTEGER(0 .. 7),
--5 bits, number of waypoint positions included in the trace.
waypoints SEQUENCE (SIZE(0..31)) OF Waypoint
}
Waypoint ::= SEQUENCE{
-- 1st waypoint positions included in the trace.
ptLat Latitude, --a 4 bytes value
ptLong Longitude, --a 4 bytes value
ptAlt Altitude, --a 2 bytes value
...
--STF405: removed repetition
}
END