This change reorganises the Wi-Fi MAC high classes in attempt to
reduce duplication of functionality that is required for more than one
of the MAC high models. A new class called RegularWifiMac has been
created. This derives from the abstract WifiMac, and is parent of
AdhocWifiMac, StaWifiMac, ApWifiMac, and MeshWifiInterfaceMac. The QoS
and non-QoS class variants are no longer, with a RegularWifiMac
attribute "QosSupported" allowing selection between these two modes of
operation. QosWifiMacHelper and NqosWifiMacHelper continue to work as
previously.
Updates to some regression traces are necessary because the
reorganisation has led to random number streams being initialised in
slightly different orders and thus over-the-air timing changing.
The change to consider mandatory rates for control responses if a
suitable basic rate could not be found broke the tests involving the
wireless/wifi-simple-adhoc-grid example, and the
routing-olsr-regression testsuite.
In these cases it is actually the tests that need updating; in the
wifi-simple-adhoc-grid test and the bug780-test part of the
routing-olsr-regression testsuite, 802.11b rates were being used with
the Wi-Fi PHY standard left at the default of 802.11a. The fix here is
to set the standard to 802.11b in the test.
In the tx-regression-test part of routing-olsr-regression, the problem
was that the reference traces needed to be updated given the control
response rate fix. In this case I have also modified the test to set
the standard to 802.11a for clarity.
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.