Newer
Older
template (value) HeaderTST m_geoBroadcastHeaderType(
in template (value) HeaderSubTypeGeoBroadcast p_headerSubType
) := {
geoBroadcastHdr := {
headerType := e_geoBroadcast,
headerSubType := p_headerSubType
/**
* @desc Receive template for GeoBroadcast header type
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 := {
/**
* @desc Default send template for Lifetime field
template (value) Lifetime m_defaultLifetime := {
/**
* @desc Receive template for lifetime 0
template (present) Lifetime mw_lifetime0 := {
multiplier := 0,
ltBase := ?
}
} // end geoBroadcastHeaderTemplates
/**
* @desc Send 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
* @param p_anycastArea Destination GeoArea
template (value) Header m_geoAnycastHeader(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) LongPosVector p_senderLongPosVec,
in template (value) UInt16 p_seqNumber,
in template (value) GeoAnycastArea p_anycastArea
) := {
geoAnycastHeader := {
commonHeader := m_commonHeader(
m_geoAnycastHeaderType(p_anycastArea.geoAnycastSubType),
m_trafficClass,
c_defaultHopLimit,
lifetime := m_defaultLifetime,
reserved := c_uInt8Zero,
srcPosVector := p_sourceLongPosVec,
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,
reserved2 := c_uInt24Zero
}
}
* @desc Send template for GeoAnycast header with hop limit
* @param p_sourceLongPosVec Long position vector of source
* @param p_senderLongPosVec Long position vector of sender
* @param p_seqNumber Sequence number of GeoAnycast packet
* @param p_anycastArea Destination GeoArea
template (value) Header m_geoAnycastHeaderWithHopLimit(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) LongPosVector p_senderLongPosVec,
in template (value) UInt16 p_seqNumber,
in template (value) GeoAnycastArea p_anycastArea,
in template (value) UInt8 p_hopLimit
) modifies m_geoAnycastHeader := {
geoAnycastHeader := {
commonHeader := m_commonHeader(
m_geoAnycastHeaderType(p_anycastArea.geoAnycastSubType),
m_trafficClass,
p_hopLimit,
/**
* @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 Header mw_geoAnycastHeader(
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) LongPosVector p_senderLongPosVec,
in template (present) UInt16 p_seqNumber
) := {
geoAnycastHeader := {
commonHeader := mw_commonHeader(
p_senderLongPosVec,
),
seqNumber := p_seqNumber,
lifetime := ?,
reserved := c_uInt8Zero,
srcPosVector := p_sourceLongPosVec,
geoAreaPosLatitude := ?,
geoAreaPosLongitude := ?,
distanceA := ?,
distanceB := ?,
angle := ?,
reserved2 := c_uInt24Zero
}
}
* @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
* @param p_anycastArea Destination GeoArea
* @see mw_geoAnycastHeader
*/
template Header mw_geoAnycastHeaderWithArea (
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) LongPosVector p_senderLongPosVec,
in template (present) UInt16 p_seqNumber,
in template (present) GeoAnycastArea p_anycastArea
) modifies mw_geoAnycastHeader := {
geoAnycastHeader := {
commonHeader := mw_commonHeader(
p_senderLongPosVec,
mw_geoAnycastHeaderTypeWithSubType(p_anycastArea.geoAnycastSubType)
),
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 Receive template for GeoAnycast header with Hop limit
* @param p_sourceLongPosVec Long position vector of source
* @param p_senderLongPosVec Long position vector of sender
* @param p_seqNumber Sequence number of GeoAnycast packet
* @param p_anycastArea Destination GeoArea
template Header mw_geoAnycastHeaderWithAreaWithHopLimit(
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) LongPosVector p_senderLongPosVec,
in template (present) UInt16 p_seqNumber,
in template (present) GeoAnycastArea p_anycastArea,
in template (present) UInt8 p_hopLimit
) modifies mw_geoAnycastHeaderWithArea := {
geoAnycastHeader := {
commonHeader := mw_commonHeaderWithHopLimit(
p_senderLongPosVec,
?,
mw_geoAnycastHeaderType,
p_hopLimit
)
}
}
* @desc Receive template for GeoAnycast header with common header and lifetime
* @param p_sourceLongPosVec Long position vector of source
* @param p_seqNumber Sequence number of GeoAnycast packet
* @param p_anycastArea Destination GeoArea
* @param p_commonHeader Common header
* @param p_lifetime Lifetime of the GeoAnycast packet
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
template Header mw_geoAnycastHeaderWithAreaWithChWithLt(
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) UInt16 p_seqNumber,
in template (present) GeoAnycastArea p_anycastArea,
in template (present) CommonHeader p_commonHeader,
in template (present) Lifetime p_lifetime
) := {
geoAnycastHeader := {
commonHeader := p_commonHeader,
seqNumber := p_seqNumber,
lifetime := p_lifetime,
reserved := c_uInt8Zero,
srcPosVector := p_sourceLongPosVec,
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,
reserved2 := c_uInt24Zero
}
}
/**
* @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 HeaderTST mw_geoAnycastHeaderType := {
geoAnycastHdr := {
headerType := e_geoAnycast,
headerSubType := ?
}
}
* @desc Receive template for GeoAnycast header type with sub-type
template HeaderTST mw_geoAnycastHeaderTypeWithSubType(
in template (present) HeaderSubTypeGeoAnycast p_headerSubType
) modifies mw_geoAnycastHeaderType := {
geoAnycastHdr := {
headerSubType := p_headerSubType
}
}
} // end geoAnycastHeaderTemplates
/**
* @desc Send template for LS Request header
* @param p_sourceLongPosVec Long position vector of source
* @param p_senderLongPosVec Long position vector of sender
* @param p_seqNumber Sequence number of LS Request packet
* @param p_gnAddress Searched GN_Address
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) LongPosVector p_senderLongPosVec,
in template (value) UInt16 p_seqNumber,
in template (value) GN_Address p_gnAddress
m_lsRequestHeaderType,
m_trafficClass,
c_defaultHopLimit,
lifetime := m_defaultLifetime,
reserved := c_uInt8Zero,
srcPosVector := p_sourceLongPosVec,
gnAddress := p_gnAddress
/**
* @desc Receive template for LS Request header
* @param p_seqNumber Sequence number of LS Request packet
lifetime := ?,
reserved := ?,
srcPosVector := ?,
berge
committed
gnAddress := mw_gnAddressMid(p_mid)
* @desc Receive template for LS Request header with hop limit
* @param p_seqNumber Sequence number of LS Request packet
tepelmann
committed
template Header mw_lsRequestHeader_withHopLimit(
berge
committed
in template (present) GN_Address.mid p_mid,
tepelmann
committed
) modifies mw_lsRequestHeader := {
lsRequestHeader := {
tepelmann
committed
}
}
/**
* @desc Send template for LS Request header type
template (value) HeaderTST m_lsRequestHeaderType := {
lsHdr := {
headerType := e_locationService,
headerSubType := e_lsRequest
/**
* @desc Receive template for LS Request header type
template HeaderTST mw_lsRequestHeaderType := {
lsHdr := {
headerType := e_locationService,
headerSubType := e_lsRequest
} // end lsRequestHeaderTemplates
group lsReplyHeaderTemplates {
/**
* @desc Send template for LS Reply header
* @param p_sourceLongPosVec Long position vector of source
* @param p_destinationLongPosVec Long position vector of destination
* @param p_senderLongPosVec Long position vector of sender
* @param p_seqNumber Sequence number of LS Reply packet
template (value) Header m_lsReplyHeader(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) ShortPosVector p_destinationLongPosVec,
in template (value) LongPosVector p_senderLongPosVec,
in template (value) UInt16 p_seqNumber
) := {
lsReplyHeader := {
commonHeader := m_commonHeader(
m_trafficClass,
c_defaultHopLimit,
),
seqNumber := p_seqNumber,
lifetime := m_defaultLifetime,
reserved := c_uInt8Zero,
srcPosVector := p_sourceLongPosVec,
dstPosVector := p_destinationLongPosVec
}
}
/**
* @desc Receive template for any LS Reply header
* @param p_seqNumber Sequence number of LS Reply packet
template Header mw_lsReplyHeaderAny(
) := {
lsReplyHeader := {
commonHeader := mw_commonHeader(
?,
e_any,
lifetime := ?,
reserved := ?,
srcPosVector := ?,
dstPosVector := ?
}
}
/**
* @desc Receive template for LS Reply header
* @param p_seqNumber Sequence number of LS Reply packet
* @param p_sourceLongPosVec Long position vector of source
* @param p_destinationLongPosVec Short position vector of destination
template Header mw_lsReplyHeader(
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) ShortPosVector p_destinationLongPosVec)
modifies mw_lsReplyHeaderAny := {
lsReplyHeader := {
srcPosVector := p_sourceLongPosVec,
dstPosVector := p_destinationLongPosVec
}
/**
* @desc Send template for LS Reply header type
template (value) HeaderTST m_lsReplyHeaderType := {
lsHdr := {
headerType := e_locationService,
headerSubType := e_lsReply
}
}
/**
* @desc Send template for Beacon header
* @param p_senderLongPosVec Long position vector of sender
*/
template (value) Header m_beaconHeader(
in template (value) LongPosVector p_senderLongPosVec
berge
committed
e_any,
m_beaconHeaderType,
m_trafficClass,
c_defaultHopLimit,
/**
* @desc Receive template for Beacon header
* @param p_trafficClass Packet's traffic class
* @param p_hopLimit Maximum number of hops
* @param p_senderLongPosVec Long position vector of sender
in template (present) TrafficClass p_trafficClass,
in template (present) UInt8 p_hopLimit,
in template (present) LongPosVector p_senderLongPosVec
p_trafficClass,
p_hopLimit,
p_senderLongPosVec
/**
* @desc Send template for Beacon header type
template (value) HeaderTST m_beaconHeaderType := {
beaconHdr := {
/**
* @desc Receive template for Beacon header type
template HeaderTST mw_beaconHeaderType := {
beaconHdr := {
group shbHeaderTemplates {
* @param p_senderLongPosVec Long position vector of sender
template (value) Header m_shbHeader(
in template (value) LongPosVector p_senderLongPosVec
) := {
shbHeader := {
commonHeader := m_commonHeader(
m_shbHeaderType,
m_trafficClass,
c_defaultHopLimit,
)
}
}
/**
* @desc Receive template for SHB header
shbHeader := {
commonHeader := mw_commonHeaderWithHopLimit(
?, // SE PV
?, // NH
m_shbHeaderType, // HT + HST
1 // HL
)
}
}
/**
* @desc Send template for SHB header type
template (value) HeaderTST m_shbHeaderType := {
tsbHdr := {
headerType := e_topologicallyScopedBroadcast,
headerSubType := e_singleHop
}
}
} // end shbHeaderTemplates
/**
* @desc Send template for TSB header
* @param p_senderLongPosVec Long position vector of sender
* @param p_seqNumber Sequence number of TSB packet
* @param p_srcPosVector Long position vector of source
template Header m_tsbHeader(
in template (value) LongPosVector p_senderLongPosVec,
in template (value) UInt16 p_seqNumber,
in template (value) LongPosVector p_srcPosVector
) := {
tsbHeader := {
commonHeader := m_commonHeader(
lifetime := m_defaultLifetime,
reserved := c_uInt8Zero,
srcPosVector := p_srcPosVector
}
}
* @desc Send template for TSB header with hop limit
* @param p_senderLongPosVec Long position vector of sender
* @param p_srcPosVector Long position vector of source
* @param p_hopLimit Maximum number of hops
template Header m_tsbHeaderWithHopLimit(
in template (value) LongPosVector p_senderLongPosVec,
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
}
}
}
/**
* @desc Receive template for TSB header
* @param p_seqNumber Sequence number of TSB packet
* @param p_sourceLongPosVec Long position vector of source
template Header mw_tsbHeader(
in template (present) UInt16 p_seqNumber,
in template (present) LongPosVector p_sourceLongPosVec
) := {
tsbHeader := {
commonHeader := mw_commonHeader(
),
seqNumber := p_seqNumber,
lifetime := ?,
reserved := ?,
srcPosVector := p_sourceLongPosVec
}
}
/**
* @desc Receive template for TSB header with sender position vector
* @param p_senderLongPosVec Long position vector of sender
* @param p_sourceLongPosVec Long position vector of source
template Header mw_tsbHeaderWithSenderPv(
in template (present) UInt16 p_seqNumber,
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) LongPosVector p_senderLongPosVec
) modifies mw_tsbHeader := {
tsbHeader := {
commonHeader := mw_commonHeader(
* @desc Receive template for TSB header with hop limit
* @param p_seqNumber Sequence number of TSB packet
* @param p_sourceLongPosVec Long position vector of source
* @param p_hopLimit Maximum number of hops
template Header mw_tsbHeaderWithHopLimit(
in template (present) UInt16 p_seqNumber,
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) UInt8 p_hopLimit
) modifies mw_tsbHeader := {
tsbHeader := {
commonHeader := {
hopLimit := p_hopLimit
}
}
}
/**
* @desc Send template for TSB header type
template (value) HeaderTST m_tsbHeaderType := {
tsbHdr := {
headerType := e_topologicallyScopedBroadcast,
headerSubType := e_multiHop
}
}
} // end tsbHeaderTemplates
} // end geoNwHeadersTemplates
/**
* @desc Receive template for misc. payload
* @param p_payload Payload
*/
template Payload mw_otherPayload(
in template (present) octetstring p_payload
) := {
otherPayload := p_payload
}
} // end geoPayloadTemplates
/**
* @desc Receive template for GN_Address. Only M_ID field is discriminent
berge
committed
template GN_Address mw_gnAddressMid(in template (present) GN_Address.mid p_mid) := {
typeOfAddress := ?,
stationType := ?,
stationSubType := ?,
stationCountryCode := ?,
berge
committed
mid := p_mid
/**
* @desc Dummy template for GN_Address
template (value) GN_Address m_dummyGnAddr := {
typeOfAddress := e_manual,
stationType := {
vehicleStation := {
stationType := e_vehicleStation,
vsKind := e_car
}
},
stationSubType := e_private,
mid := c_6ZeroBytes
/**
* @desc Dummy template for long position vector
template (value) LongPosVector m_dummyLongPosVector := {
gnAddr := m_dummyGnAddr,
timestamp := c_uInt32Zero,
longitude := c_uInt32Zero,
speed := c_uInt16Zero,
heading := c_uInt16Zero,
altitude := c_uInt16Zero,
timeAccuracy := c_uInt4Zero,
posAccuracy := c_uInt4Zero,
speedAccuracy := c_uInt3Zero,
headingAccuracy := c_uInt3Zero,
altitudeAccuracy := c_uInt2Zero
}
/**
* @desc Dummy template for Area
template (value) Area m_dummyArea := {
geoAreaPosLatitude := c_uInt32Zero,
geoAreaPosLongitude := c_uInt32Zero,
distanceA := c_uInt16Zero,
distanceB := c_uInt16Zero,
/**
* @desc Dummy template for GeoBroadcastArea
template (value) GeoBroadcastArea m_dummyGeoBroadcastArea := {
geoBroadcastSubType := e_geoBroadcastRect,
geoBroadcastArea := m_dummyArea
}
} // end geoDummyTemplates
} // end geoMiscTemplates
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
group geoTemplateFunctions {
function f_adaptPayload_m(in octetstring p_finalPayload) return template (value) Payload {
var template (value) Payload v_payload;
if(PX_GN_UPPER_LAYER == e_any) {
v_payload := { otherPayload := p_finalPayload};
return v_payload;
}
if(PX_GN_UPPER_LAYER == e_ipv6) {
v_payload := { ipv6Packet := m_ipv6Packet(c_unspecified, c_allNodesMca, c_noNextHdr, m_octetstringPayload(p_finalPayload))};
return v_payload;
}
if(PX_GN_UPPER_LAYER == e_btpA) {
v_payload := { btpPacket := m_btpA(3751 /*FIXME*/, 3751/*FIXME*/, p_finalPayload)};
return v_payload;
}
if(PX_GN_UPPER_LAYER == e_btpB) {
v_payload := { btpPacket := m_btpB(3751 /*FIXME*/, 0, p_finalPayload)};
return v_payload;
}
return v_payload;
}
function f_adaptPayload_mw(in template (present) octetstring p_finalPayload) return template (present) Payload {
var template (present) Payload v_payload;
if(PX_GN_UPPER_LAYER == e_any) {
v_payload := { otherPayload := p_finalPayload};
return v_payload;
}
if(PX_GN_UPPER_LAYER == e_ipv6) {
v_payload := { ipv6Packet := mw_ipv6Packet(?, ?, ?, mw_octetstringPayload(p_finalPayload))};
return v_payload;
}
if(PX_GN_UPPER_LAYER == e_btpA) {
v_payload := { btpPacket := mw_btpA(?, ?, p_finalPayload)};
return v_payload;
}
if(PX_GN_UPPER_LAYER == e_btpB) {
v_payload := { btpPacket := mw_btpB(?, ?, p_finalPayload)};
return v_payload;
}
return v_payload;
}
} // end geoTemplateFunctions