avs::header Struct Reference

#include <wipal/phy/avs_header.hh>

Inheritance diagram for avs::header:

phy::header< avs::header > tool::static_base< avs::header >

List of all members.


Detailed Description

AVS header format.

Static hierarchies related types and methods.

typedef avs::header exact_type
typedef WP_TYPE_ (time_type, exact_type) time_type
size_t len_impl (size_t, bool) const
time_type time_get_impl (bool) const
void time_set_impl (const time_type &, bool)
template<class D1, class D2>
static bool eq_time (const pcapxx::frame_descriptor< D1 > &lhs, const pcapxx::frame_descriptor< D2 > &rhs, tool::endian::endianness phy_end, unsigned prec)

Public Types

Static hierarchies related types
typedef HIDDEN time_type

Public Member Functions

uint64_t mactime_get () const
uint64_t hosttime_get () const
size_t len (size_t caplen, bool swapped) const
const void * decapsulate (size_t caplen, bool swapped) const
time_type time_get (bool swapped) const
void time_set (const time_type &time, bool swapped)
Downcast methods
const exact_typeexact () const
exact_typeexact ()
const exact_typeexact_ptr () const
exact_typeexact_ptr ()

Static Public Member Functions

static bool eq_80211 (const pcapxx::frame_descriptor< D1 > &lhs, const pcapxx::frame_descriptor< D2 > &rhs, tool::endian::endianness phy_end=tool::endian::guess)
static bool eq_time_and_80211 (const pcapxx::frame_descriptor< D1 > &lhs, const pcapxx::frame_descriptor< D2 > &rhs, tool::endian::endianness phy_end=tool::endian::guess, unsigned precision=phy::eq_time_default_precision)

Public Attributes

struct avs::header::v2_extra_fields __packed__
uint32_t version
uint32_t length
uint64_t mactime
uint64_t hosttime
uint32_t phytype
uint32_t channel
uint32_t datarate
uint32_t antenna
uint32_t priority
uint32_t ssi_type
uint32_t ssi_signal
uint32_t ssi_noise
uint32_t preamble
uint32_t encoding
v2_extra_fields v2_fields []

Classes

struct  v2_extra_fields
 Extra fields when header's version is 2. More...

Member Typedef Documentation

Exact type for this template instanciation.

See also:
static_base

Reimplemented from phy::header< avs::header >.


Member Function Documentation

uint64_t avs::header::mactime_get (  )  const [inline]

Get the mactime field after endianness adjustments.

uint64_t avs::header::hosttime_get (  )  const [inline]

Get the hosttime field after endianness adjustments.

size_t phy::header< avs::header >::len ( size_t  caplen,
bool  swapped 
) const [inherited]

Get the PHY header length.

Never override this method. Define len_impl() in subclasses instead.

const void* phy::header< avs::header >::decapsulate ( size_t  caplen,
bool  swapped 
) const [inherited]

Get the embedded IEEE 802.11 frame.

Return 0 if len() > caplen.

This method relies on len(). You should not need to override it if your subclasses define a proper len_impl().

time_type phy::header< avs::header >::time_get ( bool  swapped  )  const [inherited]

Extract timing information from the PHY header.

Never override this method. Define time_get_impl() in subclasses instead.

void phy::header< avs::header >::time_set ( const time_type &  time,
bool  swapped 
) [inherited]

Set the PHY header's timing information.

Never override this method. Define time_set_impl() in subclasses instead.

static bool phy::header< avs::header >::eq_80211 ( const pcapxx::frame_descriptor< D1 > &  lhs,
const pcapxx::frame_descriptor< D2 > &  rhs,
tool::endian::endianness  phy_end = tool::endian::guess 
) [inline, static, inherited]

Compare the IEEE 802.11 bytes beyond the PHY header.

Return whether the two IEEE 802.11 frames embedded inside the PHY headers are equals. This function does not compare the PHY headers.

In case there is not enough bytes to decide whether frames are equal (caplen < sizeof prism::header), consider they are not. This is a conservative approach: when merging two traces, this will lead to both frames having their entry in the merged trace.

This method relies on decapsulate(). You should not need to override it if your subclasses define a proper decapsulate_impl().

static bool phy::header< avs::header >::eq_time_and_80211 ( const pcapxx::frame_descriptor< D1 > &  lhs,
const pcapxx::frame_descriptor< D2 > &  rhs,
tool::endian::endianness  phy_end = tool::endian::guess,
unsigned  precision = phy::eq_time_default_precision 
) [inline, static, inherited]

Compare the IEEE 802.11 bytes beyond PHY headers, but also check timestamps.

Return whether the two IEEE 802.11 frames embedded inside the PHY headers are equals. Also compare the timestamps of PHY headers if available (or the PCAP timestamps else). When the time difference between each header's field is less than precision, then consider the field equals.

In case there is not enough bytes to decide whether frames are equal (caplen < sizeof prism::header), consider they are not. This is a conservative approach: when merging two traces, this will lead to both frames having their entry in the merged trace.

This method relies on eq_time(). You should not need to override it if your subclasses define a proper eq_time().

const exact_type& tool::static_base< avs::header >::exact (  )  const [inherited]

Safely downcast to the exact type as a const reference.

exact_type& tool::static_base< avs::header >::exact (  )  [inherited]

Safely downcast to the exact type as a non-const reference.

const exact_type* tool::static_base< avs::header >::exact_ptr (  )  const [inherited]

Safely downcast to the exact type as a const pointer.

exact_type* tool::static_base< avs::header >::exact_ptr (  )  [inherited]

Safely downcast to the exact type as a non-const pointer.


Member Data Documentation

Extra fields when header's version is 2.

< Header revision.

< Header length.

< MAC timestamp.

< Host timestamp.

< PHY type (i.e. modulation).

< PHY channel (frequency).

< PHY data rate.

< Antenna.

< Priority.

< SSI type.

< SSI signal.

< SSI noise.

< Preamble type (short, long).

< PHY encoding type (e.g. QPSK).


The documentation for this struct was generated from the following files:

Generated on Tue Dec 2 11:12:16 2008 for wipal by  doxygen 1.5.6