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 (value) Header m_geoBroadcastHeaderWithHopLimit(
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) BroadcastArea p_broadcastArea,
in template (value) UInt8 p_hopLimit
) modifies m_geoBroadcastHeader := {
geoBroadcastHeader := {
commonHeader := m_commonHeader(
e_btp,
m_geoBroadcastHeaderType(p_broadcastArea.geoBrodcastSubType),
m_trafficClass,
p_hopLimit,
p_senderLongPosVec,
p_stationType
)
}
}
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
}
}
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
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
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
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
}
}
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
464
465
466
467
468
469
470
} // 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
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
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
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