Introduce WifiInformationElement methods SerializeIE(),
DeserializeIE(), and DeserializeOptionalIE() (the latter for use when
the IE of interest might not be present), which know how to deal with
the IE as a whole.
Make use of these in mesh subsystem where WifiInformationElement-derived
objects are used.
Also add empty implementation of Print() method of
WifiInformationElement so that IEs that don't care about being
displayed don't need to implement this.
This patch aims to bring the core of the current WifiInformationElement and
WifiInformationElementVector classes into the wifi module, where they can then
enjoy greater use (currently they are in the mesh module and contain
mesh-specific aspects).
This changeset modifies the GetControlAnswerMode() method of class
WifiRemoteStationManager to correctly identify rates within the same
modulation class as the received frame, and then adds a search for a
suitable mandatory rate in the case where no suitable (per IEEE Std.
802.11-2007, Section 9.6) basic rate has been found.
I've also taken the opportunity to "tidy" the code up a bit -
primarily through renaming of variables to something more in line with
the nomenclature used in the standard.
Note that this change exposes issues in some of the test and example
code that uses the Wi-Fi models. These issues are addressed in a
following changelist.
This patch attempts to lay some groundwork for enhancements to the Wi-Fi module
by bringing the representation of transmit rates more in line with the
standard.
The key part of the patch is the introduction of a type that corresponds to the
notion of Modulation Class described in IEEE 802.11-2007, Section 9.6.1, Table
9-2.
It also adds coding rate information to the WifiModes and centralises their
construction into a single WifiModeFactory method. The rates are also renamed
with reference to their Modulation Class.
WifiModes no longer have a WifiStandard, but the latter type still exists and is
used to imply the set of WifiModes that a MAC/PHY pair will support.
The previous cset (eee2eab36748) renumbered the Access Categories and thus altered the order in which they are initialised. This means that the EDCAFs end up with different random numbers, so a corresponding update to certain reference traces is required here.