Newer
Older
/**
* @desc Receive template for GeoNetworking Broadcast Packet
* @param p_sourceLongPosVec Long position vector of source
* @param p_seqNumber Sequence number of GeoBroadcast packet
* @param p_broadcastArea Destination GeoArea
*/
template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithArea(
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) UInt16 p_seqNumber,
in template (present) GeoBroadcastArea p_broadcastArea
) modifies mw_geoNwBroadcastPacket := {
commonHeader := mw_commonHeader(
PX_GN_UPPER_LAYER,
mw_geoBroadcastHeaderTypeWithSubType(p_broadcastArea.geoBroadcastSubType)
),
extendedHeader := mw_geoBroadcastHeaderWithArea(
p_sourceLongPosVec,
p_seqNumber,
p_broadcastArea
)
}
tepelmann
committed
/**
* @desc Receive template for GeoNetworking Broadcast Packet
* @param p_sourceLongPosVec Long position vector of source
tepelmann
committed
* @param p_seqNumber Sequence number of GeoBroadcast packet
* @param p_broadcastArea Destination GeoArea
* @param p_maxHopLimit Maximum number of hops (Default := ?)
*/
template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithAreaAndHl(
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) UInt16 p_seqNumber,
in template (present) GeoBroadcastArea p_broadcastArea,
in template (present) UInt8 p_maxHopLimit := ?
) modifies mw_geoNwBroadcastPacketWithArea := {
commonHeader := mw_commonHeaderWithHopLimit(
PX_GN_UPPER_LAYER,
mw_geoBroadcastHeaderTypeWithSubType(p_broadcastArea.geoBroadcastSubType),
p_maxHopLimit
)
}
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
/**
* @desc Receive template for GeoNetworking Broadcast Packet
* @param p_sourceLongPosVec Long position vector of source
* @param p_seqNumber Sequence number of GeoBroadcast packet (Default: ?)
* @param p_hopLimit Maximum number of hops (Default: ?)
* @param p_flags Flags in the common header (Default: ?)
*/
template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithHlAndFlags(
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) UInt16 p_seqNumber := ?,
in template (present) UInt8 p_hopLimit := ?,
in template (present) Bit8 p_flags := ?
) modifies mw_geoNwBroadcastPacket := {
commonHeader := mw_commonHeaderWithHopLimitAndFlags(
PX_GN_UPPER_LAYER,
mw_geoBroadcastHeaderType,
p_hopLimit,
p_flags
)
}
/**
* @desc Receive template for GeoNetworking Broadcast Packet
* @param p_sourceLongPosVec Long position vector of source
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
* @param p_seqNumber Sequence number of GeoBroadcast packet
* @param p_broadcastArea Destination GeoArea
*/
template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithAreaWithNextHeader(
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) UInt16 p_seqNumber,
in template (present) GeoBroadcastArea p_broadcastArea,
in template (present) NextHeader p_nextHeader
) modifies mw_geoNwBroadcastPacketWithArea := {
commonHeader := {
nextHeader := p_nextHeader
}
}
} // end group geoNwPacketBroadcastTemplates
group geoNwPacketLsTemplates {
/**
* @desc Send template for GeoNetworking LS Request Packet
* @param p_sourceLongPosVec Long position vector of source
* @param p_seqNumber Sequence number of LS Request packet
* @param p_gnAddress Searched GN_Address
*/
template (value) GnNonSecuredPacket m_geoNwLsRequestPacket(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) UInt16 p_seqNumber,
in template (value) GN_Address p_gnAddress
) := {
commonHeader := m_commonHeader(
m_lsRequestHeaderType,
m_trafficClass,
c_defaultHopLimit
),
extendedHeader := m_lsRequestHeader(
p_sourceLongPosVec, p_seqNumber, p_gnAddress
),
payload := omit
}
/**
* @desc Receive template for GeoNetworking LS Request Packet
* @param p_seqNumber Sequence number of LS Request packet
* @param p_mid Searched GN_Address MID
*/
template (present) GnNonSecuredPacket mw_geoNwLsRequestPacket(
in template (present) UInt16 p_seqNumber,
in template (present) GN_Address.mid p_mid
) := {
commonHeader := mw_commonHeader(
m_lsRequestHeaderType
),
extendedHeader := mw_lsRequestHeader(
p_seqNumber,
p_mid
),
}
/**
* @desc Send template for GeoNetworking LS Reply Packet
* @param p_sourceLongPosVec Long position vector of source
* @param p_destinationLongPosVec Long position vector of destination
* @param p_seqNumber Sequence number of LS Reply packet
*/
template (value) GnNonSecuredPacket m_geoNwLsReplyPacket(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) ShortPosVector p_destinationLongPosVec,
in template (value) UInt16 p_seqNumber
) := {
commonHeader := m_commonHeader(
m_lsReplyHeaderType,
m_trafficClass,
c_defaultHopLimit
),
extendedHeader := m_lsReplyHeader(
p_sourceLongPosVec, p_destinationLongPosVec, p_seqNumber
),
payload := omit
}
/**
* @desc Receive template for GeoNetworking LS Reply Packet
* @param p_sourceLongPosVec Long position vector of source
* @param p_destinationLongPosVec Short position vector of destination
*/
template (present) GnNonSecuredPacket mw_geoNwLsReplyPacket(
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) ShortPosVector p_destinationLongPosVec
) := {
commonHeader := mw_commonHeader(
m_lsReplyHeaderType
),
extendedHeader := mw_lsReplyHeader(
p_sourceLongPosVec, p_destinationLongPosVec
),
}
} // end group geoNwPacketLsTemplates
group geoNwPacketBeaconTemplates {
/**
* @desc Send template for GeoNetworking Beacon Packet
* @param p_sourceLongPosVec Long position vector of source
*/
template (value) GnNonSecuredPacket m_geoNwBeaconPacket(
in template (value) LongPosVector p_sourceLongPosVec
) := {
commonHeader := m_commonHeader(
),
extendedHeader := m_beaconHeader(
p_sourceLongPosVec
),
payload := omit
}
/**
* @desc Receive template for GeoNetworking Beacon Packet
* @param p_sourceLongPosVec Long position vector of source (Default: ?)
* @param p_nextHeader Next header (Default: e_any)
*/
template (present) GnNonSecuredPacket mw_geoNwBeaconPacket(
in template (present) LongPosVector p_sourceLongPosVec := ?,
in template (present) NextHeader p_nextHeader := e_any
commonHeader := mw_commonHeader_noPayload(
p_nextHeader,
m_beaconHeaderType
),
extendedHeader := mw_beaconHeader(p_sourceLongPosVec),
payload := '00000000000000000000'O ifpresent //(*, '00000000000000000000'O)
}
} // end group geoNwPacketBeaconTemplates
group geoNwPacketShbTemplates {
/**
* @desc Send template for GeoNetworking SHB Packet
* @param p_sourceLongPosVec Long position vector of source
*/
template (value) GnNonSecuredPacket m_geoNwShbPacket(
in template (value) LongPosVector p_sourceLongPosVec
) := {
commonHeader := valueof(m_commonHeader(
PX_GN_UPPER_LAYER,
m_shbHeaderType,
m_trafficClass,
c_defaultHopLimit
)),
extendedHeader := valueof(m_shbHeader(
payload := valueof(char2oct("DEFAULT_PAYLOAD"))
}
/**
* @desc Receive template for GeoNetworking SHB Packet
* @param p_sourceLongPosVec Long position vector of source (Default: ?)
* @param p_hopLimit Maximum number of hops (Default: ?)
*/
template (present) GnNonSecuredPacket mw_geoNwShbPacket(
in template (present) LongPosVector p_sourceLongPosVec := ?,
in template (present) UInt8 p_hopLimit := ?
commonHeader := mw_commonHeaderWithHopLimit(
m_shbHeaderType,
p_hopLimit
),
extendedHeader := mw_shbHeader(p_sourceLongPosVec),
payload := ?
}
} // end group geoNwPacketShbTemplates
group geoNwPacketTsbTemplates {
/**
* @desc Send template for GeoNetworking TSB Packet
* @param p_seqNumber Sequence number of TSB packet
* @param p_sourceLongPosVec Long position vector of source
* @param p_hopLimit The maximum number of hops (Default: c_defaultHopLimit)
*/
template (value) GnNonSecuredPacket m_geoNwTsbPacket(
in template (value) UInt16 p_seqNumber,
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) UInt8 p_hopLimit := c_defaultHopLimit,
in template (value) TrafficClass p_trafficClass := m_trafficClass
commonHeader := valueof(m_commonHeader(
p_hopLimit
)),
extendedHeader := valueof(m_tsbHeader(
payload := valueof(char2oct("DEFAULT_PAYLOAD"))
}
/**
* @desc Receive template for GeoNetworking TSB Packet
* @param p_seqNumber Sequence number of TSB packet (Default: ?)
* @param p_sourceLongPosVec Long position vector of source (Default: ?)
*/
template (present) GnNonSecuredPacket mw_geoNwTsbPacket(
in template (present) UInt16 p_seqNumber := ?,
in template (present) LongPosVector p_sourceLongPosVec := ?
) := {
commonHeader := mw_commonHeader(
PX_GN_UPPER_LAYER,
m_tsbHeaderType
),
extendedHeader := mw_tsbHeader(p_seqNumber, p_sourceLongPosVec),
payload := ?
}
tepelmann
committed
/**
* @desc Receive template for GeoNetworking TSB Packet
* @param p_seqNumber Sequence number of TSB packet (Default: ?)
* @param p_sourceLongPosVec Long position vector of source (Default: ?)
* @param p_hopLimit The maximum number of hops (Default: ?)
*/
template (present) GnNonSecuredPacket mw_geoNwTsbPacketWithHl(
in template (present) UInt16 p_seqNumber := ?,
in template (present) LongPosVector p_sourceLongPosVec := ?,
in template (present) UInt8 p_hopLimit := ?
) modifies mw_geoNwTsbPacket := {
commonHeader := mw_commonHeaderWithHopLimit(
PX_GN_UPPER_LAYER,
m_tsbHeaderType,
p_hopLimit
)
}
/**
* @desc Receive template for GeoNetworking TSB Packet
* @param p_seqNumber Sequence number of TSB packet (Default: ?)
* @param p_sourceLongPosVec Long position vector of source (Default: ?)
* @param p_nextHeader Id of next header
*/
template (present) GnNonSecuredPacket mw_geoNwTsbPacketWithNextHeader(
in template (present) UInt16 p_seqNumber := ?,
in template (present) LongPosVector p_sourceLongPosVec := ?,
in template (value) NextHeader p_nextHeader
) modifies mw_geoNwTsbPacket := {
commonHeader := {
nextHeader := p_nextHeader
}
}
} // end group geoNwPacketTsbTemplates
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
group geoNwPacketSaTemplates {
/**
* @desc Send template for GeoNetworking SA Packet
* @param p_seqNumber Sequence number of SA packet
* @param p_sourceLongPosVec Long position vector of source
* @param p_hopLimit The maximum number of hops (Default: c_defaultHopLimit)
*/
template (value) GnNonSecuredPacket m_geoNwSaPacket(
in template (value) UInt16 p_seqNumber,
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) UInt8 p_hopLimit := c_defaultHopLimit,
in template (value) TrafficClass p_trafficClass := m_trafficClass
) := {
commonHeader := valueof(m_commonHeader(
PX_GN_UPPER_LAYER,
m_saHeaderType_sa,
p_trafficClass,
p_hopLimit
)),
extendedHeader := valueof(m_tsbHeader(
p_seqNumber,
p_sourceLongPosVec
)),
payload := '00100011010203CAFEDECA'O
}
/**
* @desc Receive template for GeoNetworking SA Packet
* @param p_seqNumber Sequence number of SA packet (Default: ?)
* @param p_sourceLongPosVec Long position vector of source (Default: ?)
*/
template (present) GnNonSecuredPacket mw_geoNwSaPacket(
in template (present) UInt16 p_seqNumber := ?,
in template (present) LongPosVector p_sourceLongPosVec := ?
) := {
commonHeader := mw_commonHeader(
PX_GN_UPPER_LAYER,
m_saHeaderType_sa
),
extendedHeader := mw_saHeader(p_seqNumber, p_sourceLongPosVec),
payload := ?
}
/**
* @desc Receive template for GeoNetworking SA Packet
* @param p_seqNumber Sequence number of SA packet (Default: ?)
* @param p_sourceLongPosVec Long position vector of source (Default: ?)
* @param p_hopLimit The maximum number of hops (Default: ?)
*/
template (present) GnNonSecuredPacket mw_geoNwSaPacketWithHl(
in template (present) UInt16 p_seqNumber := ?,
in template (present) LongPosVector p_sourceLongPosVec := ?,
in template (present) UInt8 p_hopLimit := ?
) modifies mw_geoNwSaPacket := {
commonHeader := mw_commonHeaderWithHopLimit(
PX_GN_UPPER_LAYER,
m_saHeaderType_sa,
p_hopLimit
)
}
/**
* @desc Receive template for GeoNetworking SA Packet
* @param p_seqNumber Sequence number of SA packet (Default: ?)
* @param p_sourceLongPosVec Long position vector of source (Default: ?)
* @param p_nextHeader Id of next header
*/
template (present) GnNonSecuredPacket mw_geoNwSaPacketWithNextHeader(
in template (present) UInt16 p_seqNumber := ?,
in template (present) LongPosVector p_sourceLongPosVec := ?,
in template (value) NextHeader p_nextHeader
) modifies mw_geoNwSaPacket := {
commonHeader := {
nextHeader := p_nextHeader
}
}
} // end group geoNwPacketSaTemplates
group geoNwHeadersTemplates {
* @param p_lifeTime Lifetime of GeoNetworking message
* @param p_hopLimit Router Hop limit of GeoNetworking message
*/
template (value) BasicHeader m_basicHeader(
in template (value) Lifetime p_lifeTime := m_defaultLifetime,
in template (value) UInt8 p_hopLimit := c_defaultHopLimit
) := {
reserved := 0,
lifeTime := p_lifeTime,
routerHopLimit := p_hopLimit
}
/**
* @param p_lifeTime Lifetime of GeoNetworking message
* @param p_hopLimit Router Hop limit of GeoNetworking message
*/
template (present) BasicHeader mw_basicHeader(
in template (present) Lifetime p_lifeTime := ?,
in template (present) UInt8 p_hopLimit := ?
) := {
nextHeader := ?,
reserved := ?,
lifeTime := p_lifeTime,
routerHopLimit := p_hopLimit
}
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
/**
* @desc Send template for Secured Basic header
*
* @param p_lifeTime Lifetime of GeoNetworking message
* @param p_hopLimit Router Hop limit of GeoNetworking message
*/
template (value) BasicHeader m_securedBasicHeader(
in template (value) Lifetime p_lifeTime := m_defaultLifetime,
in template (value) UInt8 p_hopLimit := c_defaultHopLimit
) := {
version := c_geoNwProtocolVersion,
nextHeader := e_securedPacket,
reserved := 0,
lifeTime := p_lifeTime,
routerHopLimit := p_hopLimit
} // End of template m_securedBasicHeader
/**
* @desc Receive template for Secured Basic header
*
* @param p_lifeTime Lifetime of GeoNetworking message
* @param p_hopLimit Router Hop limit of GeoNetworking message
*/
template (present) BasicHeader mw_securedBasicHeader(
in template (present) Lifetime p_lifeTime := ?,
in template (present) UInt8 p_hopLimit := ?
) := {
version := c_geoNwProtocolVersion,
nextHeader := e_securedPacket,
reserved := ?,
lifeTime := p_lifeTime,
routerHopLimit := p_hopLimit
} // End of template mw_securedBasicHeader
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
/**
* @desc Default send template for Lifetime field
*/
template (value) Lifetime m_defaultLifetime := {
multiplier := c_defaultLifetime,
ltBase := e_100s
}
/**
* @desc Send template for Lifetime field (Base = 1s)
*/
template (value) Lifetime m_lifetimeBase1s(
in template (value) UInt6 p_multiplier
) := {
multiplier := p_multiplier,
ltBase := e_1s
}
/**
* @desc Receive template for lifetime 0
*/
template (present) Lifetime mw_lifetime0 := {
multiplier := 0,
ltBase := ?
}
} //end group geoNwBasicHeaderTemplates
* @param p_nextHeader Id of next header
* @param p_trafficClass Packet's traffic class
* @param p_headerTypeSubType Header's type and sub-type
* @param p_hopLimit Maximum number of hops
* @remark plLength field is set to 0 and has to be computed by codec
template (value) CommonHeader m_commonHeader (
in template (value) HeaderTST p_headerTypeSubType,
) := {
nextHeader := p_nextHeader,
reserved := c_uInt8Zero,
headerTST := p_headerTypeSubType,
trafficClass := p_trafficClass,
plLength := 0, // will be computed by Codec
/**
* @desc Receive template for Common header
* @param p_nextHeader Id of next header
* @param p_headerTypeSubType Header's type and sub-type
template CommonHeader mw_commonHeader (
in template (present) NextHeader p_nextHeader,
in template (present) HeaderTST p_headerTypeSubType
) := {
nextHeader := p_nextHeader,
headerTST := p_headerTypeSubType,
trafficClass := ?,
/**
* @desc Receive template for Common header with no payload
* @param p_nextHeader Id of next header
* @param p_headerTypeSubType Header's type and sub-type
*/
template CommonHeader mw_commonHeader_noPayload (
in template (present) NextHeader p_nextHeader,
in template (present) HeaderTST p_headerTypeSubType
) modifies mw_commonHeader := {
plLength := 0
}
/**
* @desc Receive template for Common header with specific Hop limit
* @param p_headerTypeSubType Header's type and sub-type
template CommonHeader mw_commonHeaderWithHopLimit (
in template (present) HeaderTST p_headerTypeSubType,
) modifies mw_commonHeader := {
/**
* @desc Receive template for Common header with specific Hop limit
* @param p_senderLongPosVec Long position vector of sender
* @param p_nextHeader Id of next header
* @param p_headerTypeSubType Header's type and sub-type
* @param p_hopLimit Maximum number of hops
* @param p_flags Flags in the common header
* @see mw_commonHeaderWithHopLimit
*/
template CommonHeader mw_commonHeaderWithHopLimitAndFlags (
in template (present) NextHeader p_nextHeader,
in template (present) HeaderTST p_headerTypeSubType,
in template (present) UInt8 p_hopLimit,
in template (present) Bit8 p_flags
) modifies mw_commonHeaderWithHopLimit := {
flags := p_flags
}
* @desc Receive template for Common header with specific Traffic Class
* @param p_senderLongPosVec Long position vector of sender
* @param p_headerTypeSubType Header's type and sub-type
* @param p_trafficClass Packet's traffic class
template CommonHeader mw_commonHeaderWithTrafficClass (
in template (present) NextHeader p_nextHeader,
in template (present) HeaderTST p_headerTypeSubType,
in template (present) TrafficClass p_trafficClass
) modifies mw_commonHeader := {
trafficClass := p_trafficClass
}
/**
* @desc Default send template for traffic class
template (value) TrafficClass m_trafficClass ( in SCF p_scf := e_scfEnable, in ChannelOffload p_ChOff := e_choffDisabled ) := {
scf := p_scf,
channelOffload := p_ChOff,
/**
* @desc Receive template for traffic class
template TrafficClass mw_trafficClass ( in template(present) SCF p_scf := ?, in template(present) ChannelOffload p_ChOff := ? ) := {
scf := p_scf,
channelOffload := p_ChOff,
tcId := ?
}
/**
* @desc Receive template for any GN_Address
template GN_Address mw_gnAddressAny := {
typeOfAddress := ?,
stationType := ?,
stationCountryCode := ?,
mid := ?
}
/**
* @desc Receive template for GN_Address
* @param p_stationType Station's type
* @param p_stationCountryCode Station's country code
template GN_Address mw_gnAddress(
in template (present) StationType p_stationType,
in template (present) UInt10 p_stationCountryCode
) := {
typeOfAddress := ?,
stationType := p_stationType,
stationCountryCode := p_stationCountryCode,
mid := ?
}
/**
* @desc Receive template for long position vector with specific GN_Address
* @param p_gnAddress GN_Address to be contained in the long position vector
in template (present) GN_Address p_gnAddress
) := {
timestamp_ := ?,
* @desc Receive template for long position vector with strict position check
* @param p_longPosVector The base long position vector
*/
template LongPosVector mw_longPosVectorPosition(
in template (value) LongPosVector p_longPosVector
tepelmann
committed
gnAddr := p_longPosVector.gnAddr,
timestamp_ := ?,
latitude := f_getDelta32(valueof(p_longPosVector.latitude), PX_POS_DELTA),
longitude := f_getDelta32(valueof(p_longPosVector.longitude), PX_POS_DELTA),
//FIXME May the delta factor should be based on the actual speed value -> low speed=lower delta, high speed=higher delta
speed := f_getDelta15(valueof(p_longPosVector.speed), float2int(int2float(valueof(p_longPosVector.speed)) * 0.03)),
* @desc Receive template for short position vector with strict position check
* @param p_shortPosVector The base short position vector
*/
template ShortPosVector mw_shortPosVectorPosition(
in template (value) ShortPosVector p_shortPosVector
gnAddr := p_shortPosVector.gnAddr,
timestamp_ := ?,
latitude := f_getDelta32(valueof(p_shortPosVector.latitude), PX_POS_DELTA),
longitude := f_getDelta32(valueof(p_shortPosVector.longitude), PX_POS_DELTA)
* @desc Receive template for short position vector without position check
* @param p_shortPosVector The base short position vector
*/
template ShortPosVector mw_shortPosVectorPosition_anyPos(
in template (value) ShortPosVector p_shortPosVector
) modifies mw_shortPosVectorPosition := {
latitude := ?,
longitude := ?
}
function f_getDelta32(Int32 p_value, integer p_delta) return template (present) Int32 {
if (p_value == c_int32Min) {
return (p_value .. p_value+p_delta);
}
if (p_value == c_int32Max) {
return (p_value-p_delta .. p_value);
}
return (p_value-p_delta .. p_value+p_delta);
}
function f_getDelta15(Int32 p_value, integer p_delta) return template (present) Int15 {
if (p_value == c_int15Min) {
return (p_value .. p_value+p_delta);
}
if (p_value == c_int15Max) {
return (p_value-p_delta .. p_value);
}
return (p_value-p_delta .. p_value+p_delta);
}
} // end geoNwCommonHeaderTemplates
/**
* @desc Send template for GeoUnicast header
* @param p_sourceLongPosVec Long position vector of source
* @param p_destinationLongPosVec Long position vector of destination
* @param p_seqNumber Sequence number of GeoUnicast packet
template (value) ExtendedHeader m_geoUnicastHeader(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) ShortPosVector p_destinationLongPosVec,
in template (value) UInt16 p_seqNumber
) := {
geoUnicastHeader := {
seqNumber := p_seqNumber,
reserved := c_uInt8Zero,
/**
* @desc Receive template for GeoUnicast header
* @param p_senderLongPosVec Long position vector of sender
* @param p_destinationShortPosVec Long position vector of destination
* @param p_seqNumber Sequence number of GeoUnicast packet
in template (present) ShortPosVector p_destinationShortPosVec,
in template (present) UInt16 p_seqNumber
) := {
geoUnicastHeader := {
seqNumber := p_seqNumber,
* @desc Receive template for GeoUnicast header with source long position vector
* @param p_destinationShortPosVec Long position vector of destination
* @param p_seqNumber Sequence number of GeoUnicast packet
* @param p_srcLongPosVec Long position vector of source
template ExtendedHeader mw_geoUnicastHeaderWithSourcePv(
in template (present) ShortPosVector p_destinationShortPosVec,
in template (present) UInt16 p_seqNumber,
in template (present) LongPosVector p_srcLongPosVec
/**
* @desc Send template for GeoUnicast header type
*/
template (value) HeaderTST m_geoUnicastHeaderType := {
/**
* @desc Receive template for GeoUnicast header type
template HeaderTST mw_geoUnicastHeaderType := {
geoUnicastHdr := {
group geoBroadcastHeaderTemplates {
/**
* @desc Send template for GeoBroadcast header
* @param p_sourceLongPosVec Long position vector of source
* @param p_seqNumber Sequence number of GeoBroadcast packet
* @param p_broadcastArea Destination GeoArea
template (value) ExtendedHeader m_geoBroadcastHeader(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) UInt16 p_seqNumber,
in template (value) GeoBroadcastArea p_broadcastArea
geoBroadcastHeader := {
seqNumber := valueof(p_seqNumber),
srcPosVector := valueof(p_sourceLongPosVec),
geoAreaPosLatitude := valueof(p_broadcastArea.geoBroadcastArea.geoAreaPosLatitude),
geoAreaPosLongitude := valueof(p_broadcastArea.geoBroadcastArea.geoAreaPosLongitude),
distanceA := valueof(p_broadcastArea.geoBroadcastArea.distanceA),
distanceB := valueof(p_broadcastArea.geoBroadcastArea.distanceB),
angle := valueof(p_broadcastArea.geoBroadcastArea.angle),
/**
* @desc Receive template for GeoBroadcast header for any GeoArea
* @param p_sourceLongPosVec Long position vector of source
* @param p_senderLongPosVec Long position vector of sender
* @param p_seqNumber Sequence number of GeoBroadcast packet
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) UInt16 p_seqNumber
) := {
geoBroadcastHeader := {
srcPosVector := p_sourceLongPosVec,
geoAreaPosLatitude := ?,
geoAreaPosLongitude := ?,
distanceA := ?,
distanceB := ?,
angle := ?,
* @desc Receive template for GeoBroadcast header
* @param p_sourceLongPosVec Long position vector of source
* @param p_senderLongPosVec Long position vector of sender
* @param p_seqNumber Sequence number of GeoBroadcast packet
template ExtendedHeader mw_geoBroadcastHeaderWithArea (
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) UInt16 p_seqNumber,
in template (present) GeoBroadcastArea p_broadcastArea
) modifies mw_geoBroadcastHeader := {
geoBroadcastHeader := {
geoAreaPosLatitude := p_broadcastArea.geoBroadcastArea.geoAreaPosLatitude,
geoAreaPosLongitude := p_broadcastArea.geoBroadcastArea.geoAreaPosLongitude,
distanceA := p_broadcastArea.geoBroadcastArea.distanceA,
distanceB := p_broadcastArea.geoBroadcastArea.distanceB,
angle := p_broadcastArea.geoBroadcastArea.angle
/**
* @desc Send template for GeoBroadcast header type
* @param p_headerSubType Packet's subtype
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 := ?
/**
* @desc Receive template for GeoBroadcast header type with sub-type
template HeaderTST mw_geoBroadcastHeaderTypeWithSubType(
in template (present) HeaderSubTypeGeoBroadcast p_headerSubType
) modifies mw_geoBroadcastHeaderType := {
geoBroadcastHdr := {
} // end geoBroadcastHeaderTemplates
/**
* @desc Send template for GeoAnycast header
* @param p_sourceLongPosVec Long position vector of source
* @param p_seqNumber Sequence number of GeoAnycast packet
* @param p_anycastArea Destination GeoArea
template (value) ExtendedHeader m_geoAnycastHeader(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) UInt16 p_seqNumber,
in template (value) GeoAnycastArea p_anycastArea
geoAnycastHeader := {
seqNumber := valueof(p_seqNumber),
srcPosVector := valueof(p_sourceLongPosVec),
geoAreaPosLatitude := valueof(p_anycastArea.geoAnycastArea.geoAreaPosLatitude),
geoAreaPosLongitude := valueof(p_anycastArea.geoAnycastArea.geoAreaPosLongitude),
distanceA := valueof(p_anycastArea.geoAnycastArea.distanceA),
distanceB := valueof(p_anycastArea.geoAnycastArea.distanceB),
angle := valueof(p_anycastArea.geoAnycastArea.angle),
/**
* @desc Receive template for GeoAnycast header for any GeoArea
* @param p_sourceLongPosVec Long position vector of source
* @param p_senderLongPosVec Long position vector of sender
* @param p_seqNumber Sequence number of GeoAnycast packet
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) UInt16 p_seqNumber
) := {
geoAnycastHeader := {
seqNumber := p_seqNumber,
srcPosVector := p_sourceLongPosVec,
geoAreaPosLatitude := ?,
geoAreaPosLongitude := ?,
distanceA := ?,
distanceB := ?,
angle := ?,
* @desc Receive template for GeoAnycast header
* @param p_sourceLongPosVec Long position vector of source
* @param p_senderLongPosVec Long position vector of sender
* @param p_seqNumber Sequence number of GeoAnycast packet
template ExtendedHeader mw_geoAnycastHeaderWithArea (
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) UInt16 p_seqNumber,
in template (present) GeoAnycastArea p_anycastArea
) modifies mw_geoAnycastHeader := {
geoAnycastHeader := {
geoAreaPosLatitude := p_anycastArea.geoAnycastArea.geoAreaPosLatitude,
geoAreaPosLongitude := p_anycastArea.geoAnycastArea.geoAreaPosLongitude,
distanceA := p_anycastArea.geoAnycastArea.distanceA,
distanceB := p_anycastArea.geoAnycastArea.distanceB,
angle := p_anycastArea.geoAnycastArea.angle
}
}