Newer
Older
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 Receive template for GeoBroadcast 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 GeoBroadcast packet
* @param p_broadcastArea Destination GeoArea
template Header mw_geoBroadcastHeaderWithAreaWithHopLimit(
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) LongPosVector p_senderLongPosVec,
in template (present) UInt16 p_seqNumber,
in template (present) GeoBroadcastArea p_broadcastArea,
in template (present) UInt8 p_hopLimit
) modifies mw_geoBroadcastHeaderWithArea := {
geoBroadcastHeader := {
commonHeader := mw_commonHeaderWithHopLimit(
p_senderLongPosVec,
?,
mw_geoBroadcastHeaderType,
p_hopLimit
)
}
}
/**
* @desc Receive template for GeoBroadcast header with common header and lifetime
* @param p_sourceLongPosVec Long position vector of source
* @param p_seqNumber Sequence number of GeoBroadcast packet
* @param p_broadcastArea Destination GeoArea
* @param p_commonHeader Common header
* @param p_lifetime Lifetime of the GeoBroadcast packet
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
template Header mw_geoBroadcastHeaderWithAreaWithChWithLt(
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) UInt16 p_seqNumber,
in template (present) GeoBroadcastArea p_broadcastArea,
in template (present) CommonHeader p_commonHeader,
in template (present) Lifetime p_lifetime
) := {
geoBroadcastHeader := {
commonHeader := p_commonHeader,
seqNumber := p_seqNumber,
lifetime := p_lifetime,
reserved := c_uInt8Zero,
srcPosVector := p_sourceLongPosVec,
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,
reserved2 := c_uInt24Zero
}
}
/**
* @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
/**
* @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 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 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
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
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
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
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
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