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
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
-- This ASN.1 specification has been checked for conformance with the ASN.1 standard by the Objective Systems ASN.1 Tools
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
DenmPdu ::= SEQUENCE {
header ItsPduHeader,
denm DecentralizedEnvironmentalNotificationMessage
}
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 {
-- 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 DataVersion, -- 1 byte
-- time when the DENM is deleted from the DEN management and the information 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, --units of 0.1 Hz
-- 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 Situation,
-- 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 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
causeType ENUMERATED { itsStation, geographicalRegion },
-- whether the event is physicalling relevant to the receiving ITS station.
relevance ENUMERATED {physicallyRelevant, difficultDrivingConditions },
-- whether the event is time critical road safety event, set to TRUE if it is the case.
timeCriticality BOOLEAN,
-- more characteristics may be added in future.
...
} OPTIONAL,
vehicleCommonParameters VehicleCommonParameters OPTIONAL,
profile ProfileParameters OPTIONAL
}
DecentralizedSituationLocation::= SEQUENCE {
-- description of the event position
eventPosition CHOICE {
-- the geographical position of the reference position
eventPositionCurrentDefinition EventPosition,
...
},
-- location referencing of the event position
locationRef CHOICE {
-- consequence position of the trace location referencing mechanism
trace TraceLocData,
-- more location referencing mechanism to be added
...
},
...,
-- description of the relevance area for the DENM dissemination
[[relevanceArea RelevanceArea]]
}
EventPosition ::= SEQUENCE {
refPosition ReferencePosition,
eventSpeed Speed OPTIONAL -- event speed, either equal to or different from the vehicle speed
}
ActionID ::= SEQUENCE {
stationID StationID, -- a 4 byte value
sequenceNo SequenceNo -- a 2 byte value
}
Elevation ::= INTEGER (-10000..16767215) -- multiples of 0.1 m
ItsPduHeader ::= SEQUENCE {
-- protocolVersion fixed to 0
protocolVersion INTEGER(0..255),
-- message type ID associated to CAM = 0, DENM=1
messageID INTEGER(0..255),
-- milliseconds elapsed since midnight January 1st, 1970 UTC
generationTime TimeStamp
}
Latitude ::= SEQUENCE {
hemisphere ENUMERATED { north (0), south (1) },
degree INTEGER (0..900000000) -- multiples of 0.1 microdegree
}
Longitude ::= SEQUENCE {
hemisphere ENUMERATED { east (0), west (1) },
degree INTEGER (0..1800000000) -- multiples of 0.1 microdegree
}
ReferencePosition ::= SEQUENCE {
longitude Longitude,
latitude Latitude,
elevation Elevation,
heading Direction OPTIONAL, --present if mobileItsStation flag is TRUE
streetName StreetName OPTIONAL,
positionConfidence Confidence OPTIONAL, --present if mobileItsStation flag is TRUE
elevationConfidence Confidence OPTIONAL, --present if mobileItsStation flag is TRUE
roadSegmentID RoadSegmentID OPTIONAL
}
RelevanceArea ::= SEQUENCE {
geoAreaCenterLatitude Latitude,
geoAreaCenterLongitude Longitude,
shape CHOICE {circle Circle, rectangle Rectangle, ellipse Ellipse},
directionalityFilter DirectionalityFilter OPTIONAL,
disseminationAreaSize RelativeSize DEFAULT same,
...
}
Circle ::= SEQUENCE { -- reference EN 302 931
radius Distance
}
Rectangle ::= SEQUENCE { -- reference EN 302 931
aSemiAxis Distance,
bSemiAxis Distance,
azimuthAngle Direction -- aSemiAxis directionality
}
Ellipse ::= SEQUENCE { -- reference EN 302 931
aSemiAxis Distance,
bSemiAxis Distance,
azimuthAngle Direction -- aSemiAxis directionality
}
DirectionalityFilter ::= ENUMERATED { noFilter (0), approachingCenter (1), leavingCenter (2) }
RelativeSize ::= ENUMERATED { same (0), oneAndHalfSize (1), doubleSize (2), tripleSize (3) }
SequenceNo ::= INTEGER (0..65535) -- increased by 1 each time a new event is detected by the same ITS station.
DataVersion ::= INTEGER {firstVersion(0),secondVersion(1),cancellation(255) } (0..255)
TrafficFlowEffect ::= INTEGER (0..7)
Situation ::= SEQUENCE {
cause CauseCode, -- 1 byte
subCause SubCauseCode -- 1 byte
}
-- 1 to 100 indicates causecode defined within [3]
-- 101 – 255 indicates causecode without being defined by [3]
CauseCode ::= INTEGER {reserved(0),dangerousDriving(101),intersectionViolation(102),vehicleProblem(103),intersectionCollision(104),hazardousLocation(105) } (0..255)
SubCauseCode ::= INTEGER {unknown(0)} (0..255)
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:
}
Speed ::= INTEGER (-32765..32765) -- multiples of 0.01 m/s
StationID ::= INTEGER(0..4294967295)
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
}
TimeStamp ::= INTEGER (0.. 281474976710655) -- units of milliseconds, 6 byte
Waypoint ::= SEQUENCE{
-- waypoint positions included in the trace.
ptLat Latitude, --a 4 bytes value
ptLong Longitude, --a 4 bytes value
ptAlt Elevation,
...
}
-- common and profile dependent parameter definitions follow
ProfileParameters ::= CHOICE {
basicVehicle BasicVehicle,
emergencyVehicle EmergencyVehicle,
publicTransportVehicle PublicTransportVehicle,
...
}
VehicleCommonParameters ::= SEQUENCE {
vehicleType VehicleType,
stationLength StationLength,
stationLengthConfidence Confidence OPTIONAL,
stationWidth StationWidth,
stationWidthConfidence Confidence OPTIONAL,
vehicleSpeed VehicleSpeed,
vehicleSpeedConfidence Confidence,
longAcceleration LongAcceleration,
longAccelerationConfidence Confidence,
accelerationControl AccelerationControl,
yawRate YawRate,
yawRateConfidence Confidence,
exteriorLights ExteriorLights,
turnAdvice TurnAdvice OPTIONAL,
distanceToStopLine DistanceToStopLine OPTIONAL,
occupancy Occupancy OPTIONAL,
doorOpen DoorOpen OPTIONAL,
posConfidenceEllipse PosConfidenceEllipse,
curvature Curvature,
curvatureChange CurvatureChange OPTIONAL,
curvatureConfidence Confidence,
crashStatus CrashStatus OPTIONAL,
headingConfidence Confidence,
dangerousGoods DangerousGoods OPTIONAL,
...
}
BasicVehicle ::= SEQUENCE {
...
}
EmergencyVehicle ::= SEQUENCE {
lightBarInUse LightBarInUse OPTIONAL,
sireneInUse SireneInUse OPTIONAL,
emergencyResponseType EmergencyResponseType,
...
}
PublicTransportVehicle ::= SEQUENCE {
publicVehicleType PublicVehicleType,
pTLineDescription PTLineDescription OPTIONAL,
scheduleDeviation ScheduleDeviation OPTIONAL,
trafficLightPriority TrafficLightPriority OPTIONAL,
...
}
AccelerationControl ::= BIT STRING {
brakePedal (0),
throttlePedal (1),
cruiseControl (2),
acc (3),
limiter (4),
brakeAssist (5)
}
AmbientAirTemperature ::= Temperature
Confidence ::= INTEGER (0..15)
CourseOfJourney ::= IA5String(SIZE(0..32))
CrashStatus ::= BOOLEAN
Curvature ::= INTEGER (-32765..32765)
CurvatureChange ::= INTEGER (-1023..1023)
DataReference ::= IA5String(SIZE(1..128))
DangerousGoods ::= INTEGER (0..8191)
Dimension ::= INTEGER (0..16383)
Direction ::= INTEGER{north(0), east(7200), south(14400), west(21600)} (0..28799)
Distance ::= INTEGER (0..65535) -- multiples of 1.0m
DistanceToStopLine ::= Distance
DoorOpen ::= BIT STRING {
driver (0),
passenger (1), -- any passenger door
maintenance (2), -- hood, other access to engine, or similar
luggage (3)
}
EmergencyResponseType ::= ENUMERATED {
none (0),
staticSafeguard (1), -- e.g. at accident spot
movingSafeguard (2), -- e.g. convoy or abnormal load
rightOfWay (3), -- claiming right of way
...
}
ExteriorLights ::= BIT STRING {
lowBeamHeadlightsOn (0),
highBeamHeadlightsOn (1),
leftTurnSignalOn (2),
rightTurnSignalOn (3),
automaticLightControlOn (4),
daytimeRunningLightsOn (5),
fogLightOn (6),
parkingLightsOn (7)
}
LightBarInUse ::= SimpleSystemState
LineRef ::= IA5String(SIZE(0..32))
LongAcceleration ::= INTEGER (-2000..2000) -- multiples of 0.01 m/s^2
Occupancy ::= INTEGER (0..255)
PosConfidenceEllipse ::= SEQUENCE {
semiMajorConfidence Confidence, -- confidence of the ellipse's major semi-axes
semiMinorConfidence Confidence, -- confidence of the ellipse's minor semi-axes
semiMajorOrientation Direction
}
Priority ::= INTEGER(0..7)
PTLineDescription ::= SEQUENCE {
courseOfJourney CourseOfJourney,
lineRef LineRef,
routeRef RouteRef
}
PublicVehicleType ::= INTEGER(0..255)
RoadSegmentID ::= INTEGER (0..99999999)
RouteRef ::= IA5String(SIZE(0..32))
ScheduleDeviation ::= INTEGER (-900..3600) -- seconds, positiv delay; negative ahead of schedule
SimpleSystemState ::= ENUMERATED {
unavailable (0), -- not equipped or out of order
disabled (1), -- switched off by user or due to driving situation, e.g. ACC below minimum speed
enabled (2), -- switched on but no action, e.g. ESP in normal operation, limiter below limit speed
engaged (3) -- switched on and in action, e.g. light bar flashing, limiter limiting speed
}
SireneInUse ::= SimpleSystemState
StationLength ::= Dimension
StationWidth ::= Dimension
StreetName ::= IA5String(SIZE(1..32))
Temperature ::= INTEGER (-40..215)
TrafficLightPriority ::= Priority
TurnAdvice ::= SEQUENCE {
direction TurnDirection,
distance Distance
}
TurnDirection ::= BIT STRING {
uTurn (0),
sharpRight (1),
right (2),
slightRight (3),
straight (4),
slightLeft (5),
left (6),
sharpLeft (7)
}
VehicleSpeed ::= Speed
VehicleType ::= INTEGER (0..255)
WiperSystemFront ::= ENUMERATED {
idle (0),
interval (1),
normal (2),
fast (3),
washerActive (4)
}
YawRate ::= SEQUENCE {
yawDirection ENUMERATED { left (0), right (1) },
yawRateValue INTEGER (0..32765) -- multiples of 0.01deg/s
}
END