Newer
Older
template (present) UInt16 p_seqNumber,
template (present) NextHeader p_nextHeader
) modifies mw_geoNwBroadcastPacket := {
commonHeader := mw_commonHeader(
p_nextHeader,
mw_geoBroadcastHeaderType
)
}
/**
* @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_nextHeader Id of next header
* @param p_payload payload
*/
template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithNextHeaderAndPayload(
template (present) LongPosVector p_sourceLongPosVec,
template (present) UInt16 p_seqNumber,
template (present) NextHeader p_nextHeader,
template (present) GnRawPayload p_payload
) modifies mw_geoNwBroadcastPacketWithNextHeader := {
payload := p_payload
}
/**
* @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(
template (present) LongPosVector p_sourceLongPosVec,
template (present) UInt16 p_seqNumber,
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(
template (present) LongPosVector p_sourceLongPosVec,
template (present) UInt16 p_seqNumber,
template (present) GeoBroadcastArea p_broadcastArea,
template (present) UInt8 p_maxHopLimit := ?
tepelmann
committed
) modifies mw_geoNwBroadcastPacketWithArea := {
commonHeader := mw_commonHeaderWithHopLimit(
PX_GN_UPPER_LAYER,
mw_geoBroadcastHeaderTypeWithSubType(p_broadcastArea.geoBroadcastSubType),
p_maxHopLimit
)
}
/**
* @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(
template (present) LongPosVector p_sourceLongPosVec,
template (present) UInt16 p_seqNumber := ?,
template (present) UInt8 p_hopLimit := ?,
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
* @param p_seqNumber Sequence number of GeoBroadcast packet
* @param p_broadcastArea Destination GeoArea
*/
template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithAreaWithNextHeader(
template (present) LongPosVector p_sourceLongPosVec,
template (present) UInt16 p_seqNumber,
template (present) GeoBroadcastArea p_broadcastArea,
template (present) NextHeader p_nextHeader
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
) 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(
template (present) UInt16 p_seqNumber := ?,
template (present) GN_Address.mid p_mid := ?
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(
template (present) LongPosVector p_sourceLongPosVec := ?,
template (present) ShortPosVector p_destinationLongPosVec := ?
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(
template (present) LongPosVector p_sourceLongPosVec := ?,
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(
template (present) LongPosVector p_sourceLongPosVec := ?,
template (present) UInt8 p_hopLimit := ?
commonHeader := mw_commonHeaderWithHopLimit(
m_shbHeaderType,
p_hopLimit
),
extendedHeader := mw_shbHeader(p_sourceLongPosVec),
}
} // 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(
template (present) UInt16 p_seqNumber := ?,
template (present) LongPosVector p_sourceLongPosVec := ?
) := {
commonHeader := mw_commonHeader(
PX_GN_UPPER_LAYER,
m_tsbHeaderType
),
extendedHeader := mw_tsbHeader(p_seqNumber, p_sourceLongPosVec),
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(
template (present) UInt16 p_seqNumber := ?,
template (present) LongPosVector p_sourceLongPosVec := ?,
template (present) UInt8 p_hopLimit := ?
tepelmann
committed
) 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(
template (present) UInt16 p_seqNumber := ?,
template (present) LongPosVector p_sourceLongPosVec := ?,
in template (value) NextHeader p_nextHeader
) modifies mw_geoNwTsbPacket := {
commonHeader := {
nextHeader := p_nextHeader
}
}
} // end group geoNwPacketTsbTemplates
} // end group geoNwPacketTemplates
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(
template (present) Lifetime p_lifeTime := ?,
template (present) UInt8 p_hopLimit := ?
nextHeader := ?,
reserved := ?,
lifeTime := p_lifeTime,
routerHopLimit := p_hopLimit
}
/**
* @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 := {
multiplier := c_defaultLifetime,
ltBase := e_100s
}/*FIXME Bug TITAN ? 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(
template (present) Lifetime p_lifeTime := ?,
template (present) UInt8 p_hopLimit := ?
) := {
version := c_geoNwProtocolVersion,
nextHeader := e_securedPacket,
reserved := ?,
lifeTime := p_lifeTime,
routerHopLimit := p_hopLimit
} // End of template mw_securedBasicHeader
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
/**
* @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 (present) CommonHeader mw_commonHeader (
template (present) NextHeader p_nextHeader := ?,
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 (present) CommonHeader mw_commonHeader_noPayload (
template (present) NextHeader p_nextHeader := ?,
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 (present) CommonHeader mw_commonHeaderWithHopLimit (
template (present) NextHeader p_nextHeader := ?,
template (present) HeaderTST p_headerTypeSubType := ?,
template (present) UInt8 p_hopLimit := ?
) 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 (present) CommonHeader mw_commonHeaderWithHopLimitAndFlags (
template (present) NextHeader p_nextHeader := ?,
template (present) HeaderTST p_headerTypeSubType := ?,
template (present) UInt8 p_hopLimit := ?,
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 (present) CommonHeader mw_commonHeaderWithTrafficClass (
template (present) NextHeader p_nextHeader := ?,
template (present) HeaderTST p_headerTypeSubType := ?,
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_scfEnabled, in ChannelOffload p_ChOff := e_choffDisabled ) := {
/**
* @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 (present) StationType p_stationType,
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
timestamp_ := ?,
* @desc Receive template for long position vector with strict position check
* @param p_longPosVector The base long position vector
*/
template (present) LongPosVector mw_longPosVectorPosition(
template (present) 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 (present) ShortPosVector mw_shortPosVectorPosition(
template (present) 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 (present) ShortPosVector mw_shortPosVectorPosition_anyPos(
template (present) 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 {
log(">>> f_getDelta15: ", p_value, ", ", p_delta);
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
template (present) ExtendedHeader mw_geoUnicastHeader(
template (present) ShortPosVector p_destinationShortPosVec := ?,
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 (present) ExtendedHeader mw_geoUnicastHeaderWithSourcePv(
template (present) ShortPosVector p_destinationShortPosVec := ?,
template (present) UInt16 p_seqNumber := ?,
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
template (present) ExtendedHeader mw_geoBroadcastHeader(
template (present) LongPosVector p_sourceLongPosVec := ?,
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 (present) ExtendedHeader mw_geoBroadcastHeaderWithArea (
template (present) LongPosVector p_sourceLongPosVec := ?,
template (present) UInt16 p_seqNumber := ?,
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 (present) HeaderTST mw_geoBroadcastHeaderType := {
headerType := e_geoBroadcast,
headerSubType := ?
/**
* @desc Receive template for GeoBroadcast header type with sub-type
template (present) HeaderTST mw_geoBroadcastHeaderTypeWithSubType(
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
template (present) ExtendedHeader mw_geoAnycastHeader(
template (present) LongPosVector p_sourceLongPosVec := ?,
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 (present) ExtendedHeader mw_geoAnycastHeaderWithArea (
template (present) LongPosVector p_sourceLongPosVec := ?,
template (present) UInt16 p_seqNumber := ?,
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
}
}
/**
* @desc Send template for GeoBroadcast header type with sub-type
* @param p_headerSubType Packet's subtype
template (value) HeaderTST m_geoAnycastHeaderType(
in template (value) HeaderSubTypeGeoAnycast p_headerSubType
) := {
geoAnycastHdr := {
headerType := e_geoAnycast,
headerSubType := p_headerSubType
}
* @desc Receive template for GeoAnycast header type with any sub-type
template (present)HeaderTST mw_geoAnycastHeaderType := {
geoAnycastHdr := {
headerType := e_geoAnycast,
headerSubType := ?
}
* @desc Receive template for GeoAnycast header type with sub-type
template (present) HeaderTST mw_geoAnycastHeaderTypeWithSubType(
template (present) HeaderSubTypeGeoAnycast p_headerSubType := ?
) modifies mw_geoAnycastHeaderType := {
geoAnycastHdr := {
headerSubType := p_headerSubType
}
/**
* @desc Send template for LS Request header
* @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) ExtendedHeader m_lsRequestHeader(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) UInt16 p_seqNumber,