Newer
Older
/**
* @author ETSI / STF405
* @version $URL$
* $Id$
* @desc GeoNetworking Templates
*
*/
module LibItsGeoNetworking_Templates {
// Libcommon
import from LibCommon_BasicTypesAndValues all;
// LibIts
import from LibIts_Interface all;
import from LibItsGeoNetworking_TypesAndValues all;
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
group geoNwPrimitivesTemplates {
template (value) GeoNetworkingReq m_geoNwReq(
template (value) GeoNetworkingPacket p_geoNwMsg
) := {
msgOut := p_geoNwMsg
}
template GeoNetworkingInd mw_geoNwInd(
template (present) GeoNetworkingPacket p_geoNwMsg
) := {
msgIn := p_geoNwMsg
}
} // geoNwPrimitivesTemplates
group geoNwPduTemplates {
template (value) GeoNetworkingPacket m_geoNwPdu(in template (value) Header p_header) := {
header := p_header,
secHeader := omit,
payload := omit
}
template GeoNetworkingPacket mw_geoNwPdu(in template (present) Header p_header) := {
header := p_header,
secHeader := ?,
payload := ?
}
} // end geoNwPduTemplates
group geoNwHeadersTemplates {
group geoNwCommonHeaderTemplates {
template (value) CommonHeader m_commonHeader (
in template (value) NextHeader p_nextHeader,
in template (value) HeaderTST p_headerTST,
in template (value) TrafficClass p_trafficClass,
in template (value) UInt8 p_hopLimit,
in template (value) LongPosVector p_longPosVec,
in template (value) StationTypeIdentifier p_stationType
) := {
version := c_geoNwProtocolVersion,
nextHeader := p_nextHeader,
headerTST := p_headerTST,
reserved := c_uInt8Zero,
flags := m_flags(p_stationType),
plLength := 0, // will be computed by Codec
trafficClass := p_trafficClass,
hopLimit := p_hopLimit,
longPosVec := p_longPosVec
}
template CommonHeader mw_commonHeader (
in template (present) NextHeader p_nextHeader,
in template (present) HeaderTST p_headerTST,
in template (present) StationTypeIdentifier p_stationType
) := {
version := c_geoNwProtocolVersion,
nextHeader := p_nextHeader,
headerTST := p_headerTST,
reserved := c_uInt8Zero,
flags := mw_flags(p_stationType),
plLength := ?,
trafficClass := ?,
hopLimit := ?,
longPosVec := ?
}
template CommonHeader mw_commonHeaderWithHopLimit (
in template (present) NextHeader p_nextHeader,
in template (present) HeaderTST p_headerTST,
in template (present) StationTypeIdentifier p_stationType,
in template (present) UInt8 p_hopLimit
) modifies mw_commonHeader := {
hopLimit := p_hopLimit
}
template (value) Flags m_flags(
in template (value) StationTypeIdentifier p_stationType
) := {
reserved := c_uInt6Zero,
stationType := p_stationType,
reserved2 := c_uInt1Zero
}
template Flags mw_flags(
in template (present) StationTypeIdentifier p_stationType
) := {
reserved := c_uInt6Zero,
stationType := p_stationType,
reserved2 := c_uInt1Zero
}
template (value) TrafficClass m_trafficClass := {
reserved := c_uInt1Zero,
relevance := c_uInt3Zero,
reliability := e_veryHigh,
latency := e_veryLow
}
} // end geoNwCommonHeaderTemplates
group geoUnicastHeaderTemplates {
template (value) Header m_geoUnicastHeader(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) ShortPosVector p_destinationLongPosVec,
in template (value) LongPosVector p_senderLongPosVec,
in template (value) StationTypeIdentifier p_stationType,
in template (value) UInt16 p_seqNumber
) := {
geoUnicastHeader := {
commonHeader := m_commonHeader(
m_geoUnicastHeaderType,
m_trafficClass,
c_defaultHopLimit,
p_senderLongPosVec,
p_stationType
),
seqNumber := p_seqNumber,
lifetime := m_lifetime,
reserved := c_uInt8Zero,
srcPosVector := p_sourceLongPosVec,
dstPosVector := p_destinationLongPosVec
}
}
template Header mw_geoUnicastHeader(
in template (present) LongPosVector p_senderLongPosVec,
in template (present) ShortPosVector p_destinationShortPosVec,
in template (present) StationTypeIdentifier p_stationType,
in template (present) UInt16 p_seqNumber
) := {
geoUnicastHeader := {
commonHeader := mw_commonHeader(
mw_geoUnicastHeaderType,
p_stationType
),
seqNumber := p_seqNumber,
lifetime := ?,
dstPosVector := p_destinationShortPosVec
}
}
template Header mw_geoUnicastHeaderWithHopLimit(
in template (present) LongPosVector p_senderLongPosVec,
in template (present) ShortPosVector p_destinationShortPosVec,
in template (present) StationTypeIdentifier p_stationType,
in template (present) UInt16 p_seqNumber,
in template (present) UInt8 p_hopLimit
) modifies mw_geoUnicastHeader := {
geoUnicastHeader := {
commonHeader := mw_commonHeaderWithHopLimit(
mw_geoUnicastHeaderType,
p_stationType,
p_hopLimit
)
}
}
template (value) HeaderTST m_geoUnicastHeaderType := {
geoUnicastHdr := {
headerType := e_geoUnicast,
reserved := c_uInt4Zero
}
}
template HeaderTST mw_geoUnicastHeaderType := {
geoUnicastHdr := {
headerType := e_geoUnicast,
reserved := ?
}
}
} // end geoUnicastHeaderTemplates
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
group geoBroadcastHeaderTemplates {
template (value) Header m_geoBroadcastHeader(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) LongPosVector p_senderLongPosVec,
in template (value) StationTypeIdentifier p_stationType,
in template (value) UInt16 p_seqNumber,
in template (value) HeaderSubTypeGeoBroadcast p_headerSubType,
in template (value) UInt32 p_geoAreaPosLatitude,
in template (value) UInt32 p_geoAreaPosLongitude,
in template (value) UInt16 p_distanceA,
in template (value) UInt16 p_distanceB,
in template (value) UInt8 p_angle
) := {
geoBroadcastHeader := {
commonHeader := m_commonHeader(
e_btp,
m_geoBroadcastHeaderType(p_headerSubType),
m_trafficClass,
c_defaultHopLimit,
p_senderLongPosVec,
p_stationType
),
seqNumber := p_seqNumber,
lifetime := m_lifetime,
reserved := c_uInt8Zero,
srcPosVector := p_sourceLongPosVec,
geoAreaPosLatitude := p_geoAreaPosLatitude,
geoAreaPosLongitude := p_geoAreaPosLongitude,
distanceA := p_distanceA,
distanceB := p_distanceB,
angle := p_angle,
reserved2 := c_uInt24Zero
}
}
template Header mw_geoBroadcastHeader(
in template (present) LongPosVector p_senderLongPosVec,
in template (present) StationTypeIdentifier p_stationType,
in template (present) UInt16 p_seqNumber
) := {
geoBroadcastHeader := {
commonHeader := mw_commonHeader(
e_btp,
mw_geoBroadcastHeaderType,
p_stationType
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
),
seqNumber := p_seqNumber,
lifetime := ?,
reserved := c_uInt8Zero,
srcPosVector := ?,
geoAreaPosLatitude := ?,
geoAreaPosLongitude := ?,
distanceA := ?,
distanceB := ?,
angle := ?,
reserved2 := c_uInt24Zero
}
}
template (value) HeaderTST m_geoBroadcastHeaderType(
in template (value) HeaderSubTypeGeoBroadcast p_headerSubType
) := {
geoBroadcastHdr := {
headerType := e_geoBroadcast,
headerSubType := p_headerSubType
}
}
template HeaderTST mw_geoBroadcastHeaderType := {
geoBroadcastHdr := {
headerType := e_geoBroadcast,
headerSubType := ?
}
}
template HeaderTST mw_geoBroadcastHeaderTypeWithSubType(
in template (present) HeaderSubTypeGeoBroadcast p_headerSubType
) modifies mw_geoBroadcastHeaderType := {
geoBroadcastHdr := {
headerSubType := p_headerSubType
}
}
template (value) Lifetime m_lifetime := {
multiplier := 10,
ltBase := e_1s
}
} // end geoBroadcastHeaderTemplates
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
group lsRequestHeaderTemplates {
template (value) Header m_lsRequestHeader(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) LongPosVector p_senderLongPosVec,
in template (value) StationTypeIdentifier p_stationType,
in template (value) UInt16 p_seqNumber,
in template (value) GN_Address p_gnAddress
) := {
lsRequestHeader := {
commonHeader := m_commonHeader(
e_btp,
m_lsRequestHeaderType,
m_trafficClass,
c_defaultHopLimit,
p_senderLongPosVec,
p_stationType
),
seqNumber := p_seqNumber,
lifetime := m_lifetime,
reserved := c_uInt8Zero,
srcPosVector := p_sourceLongPosVec,
gnAddress := p_gnAddress
}
}
template Header mw_lsRequestHeader(
in template (present) StationTypeIdentifier p_stationType,
in template (present) UInt16 p_seqNumber,
in template (present) GN_Address p_gnAddress
) := {
lsRequestHeader := {
commonHeader := mw_commonHeader(
e_any,
mw_lsRequestHeaderType,
p_stationType
),
seqNumber := p_seqNumber,
lifetime := ?,
reserved := ?,
srcPosVector := ?,
gnAddress := p_gnAddress
}
}
template (value) HeaderTST m_lsRequestHeaderType := {
lsHdr := {
headerType := e_locationService,
headerSubType := e_lsRequest
}
}
template HeaderTST mw_lsRequestHeaderType := {
lsHdr := {
headerType := e_locationService,
headerSubType := e_lsRequest
}
}
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
414
415
416
} // end lsRequestHeaderTemplates
group lsReplyHeaderTemplates {
template (value) Header m_lsReplyHeader(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) LongPosVector p_destinationLongPosVec,
in template (value) LongPosVector p_senderLongPosVec,
in template (value) StationTypeIdentifier p_stationType,
in template (value) UInt16 p_seqNumber
) := {
lsReplyHeader := {
commonHeader := m_commonHeader(
e_btp,
m_lsRequestHeaderType,
m_trafficClass,
c_defaultHopLimit,
p_senderLongPosVec,
p_stationType
),
seqNumber := p_seqNumber,
lifetime := m_lifetime,
reserved := c_uInt8Zero,
srcPosVector := p_sourceLongPosVec,
dstPosVector := p_destinationLongPosVec
}
}
template Header mw_lsReplyHeaderAny(
in template (present) StationTypeIdentifier p_stationType,
in template (present) UInt16 p_seqNumber
) := {
lsReplyHeader := {
commonHeader := mw_commonHeader(
e_any,
m_lsReplyHeaderType,
p_stationType
),
seqNumber := p_seqNumber,
lifetime := ?,
reserved := ?,
srcPosVector := ?,
dstPosVector := ?
}
}
template Header mw_lsReplyHeader(
template (present) StationTypeIdentifier p_stationType,
template (present) UInt16 p_seqNumber,
template (present) LongPosVector p_sourceLongPosVec,
template (present) LongPosVector p_destinationLongPosVec)
modifies mw_lsReplyHeaderAny := {
lsReplyHeader := {
srcPosVector := p_sourceLongPosVec,
dstPosVector := p_destinationLongPosVec
}
}
template (value) HeaderTST m_lsReplyHeaderType := {
lsHdr := {
headerType := e_locationService,
headerSubType := e_lsReply
}
}
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
} // end lsRequestHeaderTemplates
group beaconHeaderTemplates {
template (value) Header m_beaconHeader(
in template (value) LongPosVector p_senderLongPosVec,
in template (value) StationTypeIdentifier p_stationType
) := {
beaconHeader := {
commonHeader := m_commonHeader(
e_btp,
m_beaconHeaderType,
m_trafficClass,
c_defaultHopLimit,
p_senderLongPosVec,
p_stationType
)
}
}
template Header mw_beaconHeader(
in template (value) StationTypeIdentifier p_stationType
) := {
beaconHeader := {
commonHeader := mw_commonHeader(
e_any,
mw_beaconHeaderType,
p_stationType
)
}
}
template (value) HeaderTST m_beaconHeaderType := {
beaconHdr := {
headerType := e_beacon,
reserved := c_uInt4Zero
}
}
template HeaderTST mw_beaconHeaderType := {
beaconHdr := {
headerType := e_beacon,
reserved := ?
}
}
} // end beaconHeaderTemplates
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
group shbHeaderTemplates {
template (value) Header m_shbHeader(
in template (value) LongPosVector p_senderLongPosVec,
in template (value) StationTypeIdentifier p_stationType
) := {
shbHeader := {
commonHeader := m_commonHeader(
e_any,
m_shbHeaderType,
m_trafficClass,
c_defaultHopLimit,
p_senderLongPosVec,
p_stationType
)
}
}
template Header mw_shbHeader(
in template (value) StationTypeIdentifier p_stationType
) := {
shbHeader := {
commonHeader := mw_commonHeader(
e_any,
m_shbHeaderType,
p_stationType
)
}
}
template (value) HeaderTST m_shbHeaderType := {
tsbHdr := {
headerType := e_topologicallyScopedBroadcast,
headerSubType := e_singleHop
}
}
} // end shbHeaderTemplates
} // end geoNwHeadersTemplates