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_commonHeaderWithSender (
in template (present) NextHeader p_nextHeader,
in template (present) HeaderTST p_headerTST,
in template (present) StationTypeIdentifier p_stationType,
in template (present) LongPosVector p_senderLongPosVec
) modifies mw_commonHeader := {
longPosVec := p_senderLongPosVec
}
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
}
}
tepelmann
committed
template (value) Header m_geoUnicastHeaderWithHopLimit(
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,
in template (value) UInt8 p_hopLimit
) modifies m_geoUnicastHeader := {
tepelmann
committed
geoUnicastHeader := {
commonHeader := {
hopLimit := p_hopLimit
}
}
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 := {
}
}
template (value) HeaderTST m_geoUnicastHeaderType := {
geoUnicastHdr := {
headerType := e_geoUnicast,
reserved := c_uInt4Zero
}
}
template HeaderTST mw_geoUnicastHeaderType := {
geoUnicastHdr := {
headerType := e_geoUnicast,
reserved := ?
}
}
} // end geoUnicastHeaderTemplates
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,
) := {
geoBroadcastHeader := {
commonHeader := m_commonHeader(
e_btp,
m_geoBroadcastHeaderType(p_broadcastArea.geoBrodcastSubType),
m_trafficClass,
c_defaultHopLimit,
p_senderLongPosVec,
p_stationType
),
seqNumber := p_seqNumber,
lifetime := m_lifetime,
reserved := c_uInt8Zero,
srcPosVector := p_sourceLongPosVec,
geoAreaPosLatitude := p_broadcastArea.geoAreaPosLatitude,
geoAreaPosLongitude := p_broadcastArea.geoAreaPosLongitude,
distanceA := p_broadcastArea.distanceA,
distanceB := p_broadcastArea.distanceB,
angle := p_broadcastArea.angle,
reserved2 := c_uInt24Zero
}
}
template Header mw_geoBroadcastHeader(
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) LongPosVector p_senderLongPosVec,
in template (present) StationTypeIdentifier p_stationType,
in template (present) UInt16 p_seqNumber
) := {
geoBroadcastHeader := {
),
seqNumber := p_seqNumber,
lifetime := ?,
reserved := c_uInt8Zero,
geoAreaPosLatitude := ?,
geoAreaPosLongitude := ?,
distanceA := ?,
distanceB := ?,
angle := ?,
reserved2 := c_uInt24Zero
}
}
template Header mw_geoBroadcastHeaderWithArea (
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) LongPosVector p_senderLongPosVec,
in template (present) StationTypeIdentifier p_stationType,
in template (present) UInt16 p_seqNumber,
in template (present) BroadcastArea p_broadcastArea
) modifies mw_geoBroadcastHeader := {
geoBroadcastHeader := {
?,
mw_geoBroadcastHeaderTypeWithSubType(p_broadcastArea.geoBrodcastSubType),
),
geoAreaPosLatitude := p_broadcastArea.geoAreaPosLatitude,
geoAreaPosLongitude := p_broadcastArea.geoAreaPosLongitude,
distanceA := p_broadcastArea.distanceA,
distanceB := p_broadcastArea.distanceB,
angle := p_broadcastArea.angle
}
}
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
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 := {
ltBase := e_1s
}
} // end geoBroadcastHeaderTemplates
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
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
}
}
tepelmann
committed
template Header mw_lsRequestHeader_withHopLimit(
in template (present) StationTypeIdentifier p_stationType,
in template (present) UInt16 p_seqNumber,
in template (present) GN_Address p_gnAddress,
in template (present) UInt8 p_hopLimit
tepelmann
committed
) modifies mw_lsRequestHeader := {
lsRequestHeader := {
tepelmann
committed
}
}
template (value) HeaderTST m_lsRequestHeaderType := {
lsHdr := {
headerType := e_locationService,
headerSubType := e_lsRequest
}
}
template HeaderTST mw_lsRequestHeaderType := {
lsHdr := {
headerType := e_locationService,
headerSubType := e_lsRequest
}
}
404
405
406
407
408
409
410
411
412
413
414
415
416
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
} // 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(
in template (present) StationTypeIdentifier p_stationType,
in template (present) UInt16 p_seqNumber,
in template (present) LongPosVector p_sourceLongPosVec,
in 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
}
}
} // end lsRequestHeaderTemplates
group beaconHeaderTemplates {
template (value) Header m_beaconHeader(
in template (value) LongPosVector p_senderLongPosVec
) := {
beaconHeader := {
commonHeader := m_commonHeader(
e_btp,
m_beaconHeaderType,
m_trafficClass,
c_defaultHopLimit,
p_senderLongPosVec,
)
}
}
template Header mw_beaconHeader(
in template (present) 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
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 (present) StationTypeIdentifier p_stationType
) := {
shbHeader := {
commonHeader := mw_commonHeader(
m_shbHeaderType,
p_stationType
)
}
}
template (value) HeaderTST m_shbHeaderType := {
tsbHdr := {
headerType := e_topologicallyScopedBroadcast,
headerSubType := e_singleHop
}
}
} // end shbHeaderTemplates
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
group tsbHeaderTemplates {
template Header m_tsbHeader(
in template (value) LongPosVector p_senderLongPosVec,
in template (value) StationTypeIdentifier p_stationType,
in template (value) UInt16 p_seqNumber,
in template (value) LongPosVector p_srcPosVector
) := {
tsbHeader := {
commonHeader := m_commonHeader(
e_any,
m_shbHeaderType,
m_trafficClass,
c_defaultHopLimit,
p_senderLongPosVec,
p_stationType
),
seqNumber := p_seqNumber,
lifetime := m_lifetime,
reserved := c_uInt8Zero,
srcPosVector := p_srcPosVector
}
}
template Header m_tsbHeaderWithHopLimit(
in template (value) LongPosVector p_senderLongPosVec,
in template (value) StationTypeIdentifier p_stationType,
in template (value) UInt16 p_seqNumber,
in template (value) LongPosVector p_srcPosVector,
in template (value) UInt8 p_hopLimit
) modifies m_tsbHeader := {
tsbHeader := {
commonHeader := {
hopLimit := p_hopLimit
}
}
}
template Header mw_tsbHeader(
in template (present) StationTypeIdentifier p_stationType,
in template (present) UInt16 p_seqNumber,
in template (present) LongPosVector p_srcPosVector
) := {
tsbHeader := {
commonHeader := mw_commonHeader(
e_any,
m_tsbHeaderType,
p_stationType
),
seqNumber := p_seqNumber,
lifetime := ?,
reserved := ?,
srcPosVector := p_srcPosVector
}
}
template Header mw_tsbHeaderWithHopLimit(
in template (present) StationTypeIdentifier p_stationType,
in template (present) UInt16 p_seqNumber,
in template (present) LongPosVector p_srcPosVector,
in template (present) UInt8 p_hopLimit
) modifies mw_tsbHeader := {
tsbHeader := {
commonHeader := {
hopLimit := p_hopLimit
}
}
}
template (value) HeaderTST m_tsbHeaderType := {
tsbHdr := {
headerType := e_topologicallyScopedBroadcast,
headerSubType := e_multiHop
}
}
} // end tsbHeaderTemplates
} // end geoNwHeadersTemplates