diff --git a/examples/mesh.cc b/examples/mesh.cc index d99c91842..a71398339 100644 --- a/examples/mesh.cc +++ b/examples/mesh.cc @@ -28,6 +28,7 @@ #include "ns3/mesh-module.h" #include "ns3/mobility-module.h" #include "ns3/dot11s-helper.h" +#include "ns3/dot11s-interface-helper.h" #include #include @@ -123,9 +124,12 @@ MeshTest::CreateNodes () MeshWifiHelper mesh; mesh.SetSpreadInterfaceChannels (chan); std::vector roots; - //roots.push_back(xSize-1); - //roots.push_back(xSize*ySize-xSize); - meshDevices = mesh.Install (wifiPhy, nodes, roots, nIfaces); + roots.push_back(xSize-1); + roots.push_back(xSize*ySize-xSize); + MeshInterfaceHelper interface = MeshInterfaceHelper::Default (); + interface.SetType ("RandomStart", TimeValue (Seconds(randomStart))); + + meshDevices = mesh.Install (wifiPhy, interface, nodes, roots, nIfaces); // Setup mobility MobilityHelper mobility; mobility.SetPositionAllocator ("ns3::GridPositionAllocator", diff --git a/src/devices/mesh/dot11s/dot11s-helper.cc b/src/devices/mesh/dot11s/dot11s-helper.cc index 1a63574b7..ddbed3311 100644 --- a/src/devices/mesh/dot11s/dot11s-helper.cc +++ b/src/devices/mesh/dot11s/dot11s-helper.cc @@ -18,66 +18,24 @@ * Author: Kirill Andreev * Pavel Boyko */ - - #include "dot11s-helper.h" #include "ns3/simulator.h" #include "ns3/mesh-point-device.h" #include "ns3/wifi-net-device.h" -#include "ns3/wifi-phy.h" -#include "ns3/wifi-channel.h" -#include "ns3/wifi-remote-station-manager.h" -#include "ns3/mesh-wifi-interface-mac.h" -#include "ns3/aarf-wifi-manager.h" -#include "airtime-metric.h" namespace ns3 { namespace dot11s { MeshWifiHelper::MeshWifiHelper () : - m_randomStartDelay (Seconds (0)), m_spreadInterfaceChannels (false) { } -void -MeshWifiHelper::SetRandomStartDelay (Time t) -{ - m_randomStartDelay = t; -} - void MeshWifiHelper::SetSpreadInterfaceChannels (bool s) { m_spreadInterfaceChannels = s; } - - -Ptr -MeshWifiHelper::CreateInterface (const WifiPhyHelper &phyHelper, Ptr node) const -{ - Ptr device = CreateObject (); - - // Creating MAC for this interface - Ptr mac = CreateObject (); - mac->SetSsid (Ssid ()); - if (m_randomStartDelay > Seconds (0)) - mac->SetRandomStartDelay (m_randomStartDelay); - Ptr manager = CreateObject (); - Ptr phy = phyHelper.Create (node, device); - mac->SetAddress (Mac48Address::Allocate ()); - device->SetMac (mac); - device->SetPhy (phy); - device->SetRemoteStationManager (manager); - Ptr metric = CreateObject (); - mac->SetLinkMetricCallback (MakeCallback(&AirtimeLinkMetricCalculator::CalculateMetric, metric)); - /* - if (channel > 0) - mac->SwitchFrequencyChannel (channel); - */ - return device; -} - NetDeviceContainer -MeshWifiHelper::Install (const WifiPhyHelper &phyHelper, NodeContainer c, std::vector roots, uint32_t nInterfaces) const +MeshWifiHelper::Install (const WifiPhyHelper &phyHelper, const MeshInterfaceHelper &interfaceHelper, NodeContainer c, std::vector roots, uint32_t nInterfaces) const { NetDeviceContainer devices; uint32_t node_index = 0; @@ -92,29 +50,10 @@ MeshWifiHelper::Install (const WifiPhyHelper &phyHelper, NodeContainer c, std:: // Create wifi interfaces (single interface by default) for (uint32_t i = 0; i < nInterfaces; ++i) { - Ptr iface = CreateInterface (phyHelper, node); - - node->AddDevice (iface); + uint32_t channel = i * 5; + Ptr iface = interfaceHelper.CreateInterface (phyHelper,node, (m_spreadInterfaceChannels ? channel : 0)); mp->AddInterface (iface); } - - // Set different channels on different ifaces - if (m_spreadInterfaceChannels) - { - std::vector > ifaces = mp->GetInterfaces (); - for (size_t i = 0; i < ifaces.size(); ++i) - { - uint32_t channel = i * 5; - - Ptr iface = ifaces[i]->GetObject (); - NS_ASSERT (iface); - Ptr mac = iface->GetMac ()->GetObject (); - NS_ASSERT (mac); - - mac->SwitchFrequencyChannel (channel); - } - } - // Install 802.11s protocols Ptr pmp = CreateObject (); pmp->SetMeshId("mesh"); @@ -139,9 +78,9 @@ MeshWifiHelper::Install (const WifiPhyHelper &phyHelper, NodeContainer c, std:: } NetDeviceContainer -MeshWifiHelper::Install (const WifiPhyHelper &phy, Ptr node, std::vector roots, uint32_t nInterfaces) const +MeshWifiHelper::Install (const WifiPhyHelper &phy, const MeshInterfaceHelper &interfaceHelper, Ptr node, std::vector roots, uint32_t nInterfaces) const { - return Install (phy, NodeContainer (node), roots, nInterfaces); + return Install (phy, interfaceHelper, NodeContainer (node), roots, nInterfaces); } void MeshWifiHelper::Report (const ns3::Ptr& device, std::ostream& os) @@ -154,9 +93,7 @@ MeshWifiHelper::Report (const ns3::Ptr& device, std::ostream& os { Ptr device = (*i)->GetObject (); NS_ASSERT (device != 0); - Ptr mac = device->GetMac()->GetObject (); - NS_ASSERT (mac != 0); - mac->Report(os); + MeshInterfaceHelper::Report(device, os); } Ptr hwmp = mp->GetObject (); NS_ASSERT(hwmp != 0); @@ -177,9 +114,7 @@ MeshWifiHelper::ResetStats (const ns3::Ptr& device) { Ptr device = (*i)->GetObject (); NS_ASSERT (device != 0); - Ptr mac = device->GetMac()->GetObject (); - NS_ASSERT (mac != 0); - mac->ResetStats (); + MeshInterfaceHelper::ResetStats (device); } Ptr hwmp = mp->GetObject (); NS_ASSERT(hwmp != 0); diff --git a/src/devices/mesh/dot11s/dot11s-helper.h b/src/devices/mesh/dot11s/dot11s-helper.h index d50c9f58a..184128ba2 100644 --- a/src/devices/mesh/dot11s/dot11s-helper.h +++ b/src/devices/mesh/dot11s/dot11s-helper.h @@ -28,6 +28,7 @@ #include "ns3/peer-management-protocol.h" #include "ns3/hwmp-protocol.h" #include "ie-dot11s-id.h" +#include "ns3/dot11s-interface-helper.h" namespace ns3 { namespace dot11s { @@ -43,8 +44,6 @@ class MeshWifiHelper { public: MeshWifiHelper (); - /// Set maximum random start delay - void SetRandomStartDelay (Time delay); /** * \brief Spread/not spread frequency channels of MP interfaces. * @@ -63,7 +62,7 @@ public: * * \return list of created mesh point devices, see MeshPointDevice */ - NetDeviceContainer Install (const WifiPhyHelper &phyHelper, NodeContainer c, std::vector roots = std::vector (), uint32_t nInterfaces = 1) const; + NetDeviceContainer Install (const WifiPhyHelper &phyHelper, const MeshInterfaceHelper &interfaceHelper, NodeContainer c, std::vector roots = std::vector (), uint32_t nInterfaces = 1) const; /** * \brief Install 802.11s mesh device & protocols on given node * @@ -74,16 +73,11 @@ public: * * \return list of created mesh point devices, see MeshPointDevice */ - NetDeviceContainer Install (const WifiPhyHelper &phy, Ptr node, std::vector roots = std::vector (), uint32_t nInterfaces = 1) const; + NetDeviceContainer Install (const WifiPhyHelper &phy, const MeshInterfaceHelper &interfaceHelper, Ptr node, std::vector roots = std::vector (), uint32_t nInterfaces = 1) const; static void Report (const ns3::Ptr&, std::ostream&); static void ResetStats (const ns3::Ptr&); private: - Time m_randomStartDelay; bool m_spreadInterfaceChannels; - - /// Create single mesh interface NIC - Ptr CreateInterface (const WifiPhyHelper &phyHelper, Ptr node) const; - }; } // namespace dot11s } //namespace ns3 diff --git a/src/devices/mesh/dot11s/dot11s-interface-helper.cc b/src/devices/mesh/dot11s/dot11s-interface-helper.cc new file mode 100644 index 000000000..bcf969dbc --- /dev/null +++ b/src/devices/mesh/dot11s/dot11s-interface-helper.cc @@ -0,0 +1,162 @@ +/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2008,2009 IITP RAS + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Kirill Andreev + */ + + +#include "dot11s-interface-helper.h" +#include "ns3/wifi-mac.h" +#include "ns3/pointer.h" +#include "ns3/dca-txop.h" +#include "ns3/wifi-remote-station-manager.h" +namespace ns3 { + +MeshInterfaceHelper::MeshInterfaceHelper () +{ + m_Be.SetTypeId ("ns3::DcaTxop"); + m_Vo.SetTypeId ("ns3::DcaTxop"); +} + +MeshInterfaceHelper::~MeshInterfaceHelper () +{} + +MeshInterfaceHelper +MeshInterfaceHelper::Default (void) +{ + MeshInterfaceHelper helper; + helper.SetType (); + helper.SetBeParameters ( + "MinCw", UintegerValue (15), + "MaxCw", UintegerValue (255), + "Aifsn", UintegerValue (2)); + helper.SetVoParameters ( + "MinCw", UintegerValue (3), + "MaxCw", UintegerValue (7), + "Aifsn", UintegerValue (2)); + helper.SetRemoteStationManager ("ns3::ArfWifiManager"); + return helper; +} + +void +MeshInterfaceHelper::SetType (std::string n0, const AttributeValue &v0, + std::string n1, const AttributeValue &v1, + std::string n2, const AttributeValue &v2, + std::string n3, const AttributeValue &v3, + std::string n4, const AttributeValue &v4, + std::string n5, const AttributeValue &v5, + std::string n6, const AttributeValue &v6, + std::string n7, const AttributeValue &v7) +{ + m_mac.SetTypeId ("ns3::MeshWifiInterfaceMac"); + m_mac.Set (n0, v0); + m_mac.Set (n1, v1); + m_mac.Set (n2, v2); + m_mac.Set (n3, v3); + m_mac.Set (n4, v4); + m_mac.Set (n5, v5); + m_mac.Set (n6, v6); + m_mac.Set (n7, v7); +} +void +MeshInterfaceHelper::SetBeParameters (std::string n0, const AttributeValue &v0, + std::string n1, const AttributeValue &v1, + std::string n2, const AttributeValue &v2, + std::string n3, const AttributeValue &v3) +{ + m_Be.Set (n0, v0); + m_Be.Set (n1, v1); + m_Be.Set (n2, v2); + m_Be.Set (n3, v3); +} +void +MeshInterfaceHelper::SetVoParameters (std::string n0, const AttributeValue &v0, + std::string n1, const AttributeValue &v1, + std::string n2, const AttributeValue &v2, + std::string n3, const AttributeValue &v3) +{ + m_Vo.Set (n0, v0); + m_Vo.Set (n1, v1); + m_Vo.Set (n2, v2); + m_Vo.Set (n3, v3); +} +void +MeshInterfaceHelper::SetRemoteStationManager (std::string type, + std::string n0, const AttributeValue &v0, + std::string n1, const AttributeValue &v1, + std::string n2, const AttributeValue &v2, + std::string n3, const AttributeValue &v3, + std::string n4, const AttributeValue &v4, + std::string n5, const AttributeValue &v5, + std::string n6, const AttributeValue &v6, + std::string n7, const AttributeValue &v7) +{ + m_stationManager = ObjectFactory (); + m_stationManager.SetTypeId (type); + m_stationManager.Set (n0, v0); + m_stationManager.Set (n1, v1); + m_stationManager.Set (n2, v2); + m_stationManager.Set (n3, v3); + m_stationManager.Set (n4, v4); + m_stationManager.Set (n5, v5); + m_stationManager.Set (n6, v6); + m_stationManager.Set (n7, v7); +} +Ptr +MeshInterfaceHelper::CreateInterface (const WifiPhyHelper &phyHelper, Ptr node, uint16_t channelId) const +{ + Ptr device = CreateObject (); + + Ptr mac = Create (); + mac->SetSsid (Ssid ()); + Ptr manager = m_stationManager.Create (); + Ptr phy = phyHelper.Create (node, device); + mac->SetAddress (Mac48Address::Allocate ()); + device->SetMac (mac); + device->SetPhy (phy); + device->SetRemoteStationManager (manager); + node->AddDevice (device); + mac->SwitchFrequencyChannel (channelId); + return device; +} +Ptr +MeshInterfaceHelper::Create (void) const +{ + Ptr mac = m_mac.Create (); + Ptr be = m_Be.Create (); + Ptr vo = m_Vo.Create (); + mac->SetAttribute ("BE", PointerValue (be)); + mac->SetAttribute ("VO", PointerValue (vo)); + return mac; +} +void +MeshInterfaceHelper::Report (const Ptr& device, std::ostream& os) +{ + Ptr mac = device->GetMac()->GetObject (); + NS_ASSERT (mac != 0); + mac->Report(os); +} +void +MeshInterfaceHelper::ResetStats (const Ptr& device) +{ + Ptr mac = device->GetMac()->GetObject (); + NS_ASSERT (mac != 0); + mac->ResetStats (); +} + +} //namespace ns3 + diff --git a/src/devices/mesh/dot11s/dot11s-interface-helper.h b/src/devices/mesh/dot11s/dot11s-interface-helper.h new file mode 100644 index 000000000..b134c29ab --- /dev/null +++ b/src/devices/mesh/dot11s/dot11s-interface-helper.h @@ -0,0 +1,114 @@ +/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2009 IITP RAS + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Kirill Andreev + */ + +#ifndef MESH_INTERFACE_HELPER_H +#define MESH_INTERFACE_HELPER_H +#include "ns3/wifi-helper.h" +#include "ns3/wifi-net-device.h" +#include "ns3/mesh-wifi-interface-mac.h" +namespace ns3 { + +class MeshInterfaceHelper +{ +public: + MeshInterfaceHelper (); + virtual ~MeshInterfaceHelper (); + /** + * Create a mac helper in a default working state. + */ + static MeshInterfaceHelper Default (void); + /** + * \param type the type of ns3::WifiMac to create. + * \param n%d the name of the attribute to set + * \param v%d the value of the attribute to set + * + * All the attributes specified in this method should exist + * in the requested mac. + */ + void SetType (std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (), + std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (), + std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (), + std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (), + std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (), + std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (), + std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (), + std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ()); + /** + * \param type the type of ns3::WifiMac to create. + * \param n%d the name of the attribute to set + * \param v%d the value of the attribute to set + */ + void SetBeParameters ( std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (), + std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (), + std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (), + std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue ()); + /** + * \param type the type of ns3::WifiMac to create. + * \param n%d the name of the attribute to set + * \param v%d the value of the attribute to set + */ + void SetVoParameters ( std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (), + std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (), + std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (), + std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue ()); + /** + * \param type the type of ns3::WifiRemoteStationManager to create. + * \param n%d the name of the attribute to set + * \param v%d the value of the attribute to set + * + * All the attributes specified in this method should exist + * in the requested station manager. + */ + void SetRemoteStationManager (std::string type, + std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (), + std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (), + std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (), + std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (), + std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (), + std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (), + std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (), + std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ()); + void SetMeshId (std::string s); + /** + * \returns a WifiNetDevice with ready-to-use interface + */ + Ptr CreateInterface (const WifiPhyHelper &phyHelper, Ptr node, uint16_t channelId) const; + /** + * \brief Report statistics: + */ + static void Report (const Ptr& device, std::ostream& os); + static void ResetStats (const Ptr& device); +private: + /** + * \returns a newly-created MAC object. + * + * This method implements the pure virtual method defined in \ref ns3::WifiMacHelper. + */ + Ptr Create (void) const; + + ObjectFactory m_mac; + ObjectFactory m_Be; + ObjectFactory m_Vo; + ObjectFactory m_stationManager; +}; + +} //namespace ns3 + +#endif /* MESH_INTERFACE_HELPER */ diff --git a/src/devices/mesh/dot11s/hwmp-protocol.cc b/src/devices/mesh/dot11s/hwmp-protocol.cc index 44bfc311a..db91c61bb 100644 --- a/src/devices/mesh/dot11s/hwmp-protocol.cc +++ b/src/devices/mesh/dot11s/hwmp-protocol.cc @@ -31,6 +31,7 @@ #include "ns3/mesh-point-device.h" #include "ns3/mesh-wifi-interface-mac.h" #include "ns3/random-variable.h" +#include "airtime-metric.h" #include "ie-dot11s-preq.h" #include "ie-dot11s-prep.h" #include "ie-dot11s-perr.h" @@ -613,6 +614,9 @@ HwmpProtocol::Install (Ptr mp) Ptr hwmpMac = Create (wifiNetDev->GetIfIndex (), this); m_interfaces[wifiNetDev->GetIfIndex ()] = hwmpMac; mac->InstallPlugin (hwmpMac); + //Installing airtime link metric: + Ptr metric = CreateObject (); + mac->SetLinkMetricCallback (MakeCallback(&AirtimeLinkMetricCalculator::CalculateMetric, metric)); } mp->SetRoutingProtocol (this); // Mesh point aggregates all installed protocols diff --git a/src/devices/mesh/dot11s/wscript b/src/devices/mesh/dot11s/wscript index 5d17cdb09..74d80ae55 100644 --- a/src/devices/mesh/dot11s/wscript +++ b/src/devices/mesh/dot11s/wscript @@ -23,6 +23,7 @@ def build(bld): 'hwmp-mac-plugin.cc', 'hwmp-protocol.cc', 'airtime-metric.cc', + 'dot11s-interface-helper.cc', 'dot11s-helper.cc', ] headers = bld.new_task_gen('ns3header') @@ -35,5 +36,6 @@ def build(bld): 'ie-dot11s-perr.h', 'hwmp-protocol.h', 'dot11s-helper.h', + 'dot11s-interface-helper.h', 'dot11s-mac-header.h', ] diff --git a/src/devices/mesh/mesh-wifi-interface-mac.cc b/src/devices/mesh/mesh-wifi-interface-mac.cc index cdd2073c4..621661f34 100644 --- a/src/devices/mesh/mesh-wifi-interface-mac.cc +++ b/src/devices/mesh/mesh-wifi-interface-mac.cc @@ -30,6 +30,8 @@ #include "ns3/random-variable.h" #include "ns3/simulator.h" #include "ns3/yans-wifi-phy.h" +#include "ns3/pointer.h" + NS_LOG_COMPONENT_DEFINE ("MeshWifiInterfaceMac"); @@ -60,7 +62,18 @@ MeshWifiInterfaceMac::GetTypeId () &MeshWifiInterfaceMac::GetBeaconGeneration ), MakeBooleanChecker () - ); + ) + + .AddAttribute ("BE", "The DcaTxop object", + PointerValue (), + MakePointerAccessor (&MeshWifiInterfaceMac::GetBE, + &MeshWifiInterfaceMac::SetBE), + MakePointerChecker ()) + .AddAttribute ("VO", "The DcaTxop object", + PointerValue (), + MakePointerAccessor (&MeshWifiInterfaceMac::GetVO, + &MeshWifiInterfaceMac::SetVO), + MakePointerChecker ()); return tid; } @@ -83,7 +96,7 @@ MeshWifiInterfaceMac::MeshWifiInterfaceMac () m_beaconDca->SetMaxCw (0); m_beaconDca->SetAifsn (1); m_beaconDca->SetManager (m_dcfManager); - +# if 0 m_VO = CreateObject (); m_VO->SetLow (m_low); m_VO->SetMinCw (3); @@ -93,6 +106,7 @@ MeshWifiInterfaceMac::MeshWifiInterfaceMac () m_BE = CreateObject (); m_BE->SetLow (m_low); m_BE->SetManager (m_dcfManager); +#endif } MeshWifiInterfaceMac::~MeshWifiInterfaceMac () @@ -198,7 +212,9 @@ MeshWifiInterfaceMac::SetWifiRemoteStationManager (Ptr { NS_LOG_FUNCTION (this << stationManager); m_stationManager = stationManager; + NS_ASSERT(m_BE != 0); m_BE->SetWifiRemoteStationManager (stationManager); + NS_ASSERT(m_VO != 0); m_VO->SetWifiRemoteStationManager (stationManager); m_beaconDca->SetWifiRemoteStationManager (stationManager); m_low->SetWifiRemoteStationManager (stationManager); @@ -666,5 +682,29 @@ MeshWifiInterfaceMac::ResetStats () { m_stats = Statistics::Statistics (); } +void +MeshWifiInterfaceMac::SetBE (Ptr dcaTxop) +{ + m_BE = dcaTxop; + m_BE->SetLow (m_low); + m_BE->SetManager (m_dcfManager); +} +void +MeshWifiInterfaceMac::SetVO (Ptr dcaTxop) +{ + m_VO = dcaTxop; + m_VO->SetLow (m_low); + m_VO->SetManager (m_dcfManager); +} +Ptr +MeshWifiInterfaceMac::GetBE () const +{ + return m_BE; +} +Ptr +MeshWifiInterfaceMac::GetVO () const +{ + return m_VO; +} } // namespace ns3 diff --git a/src/devices/mesh/mesh-wifi-interface-mac.h b/src/devices/mesh/mesh-wifi-interface-mac.h index 58f7d0bed..92e7a6c3d 100644 --- a/src/devices/mesh/mesh-wifi-interface-mac.h +++ b/src/devices/mesh/mesh-wifi-interface-mac.h @@ -159,6 +159,10 @@ public: void Report (std::ostream &) const; void ResetStats (); private: + Ptr GetBE(void) const; + void SetBE (Ptr dcaTxop); + Ptr GetVO(void) const; + void SetVO (Ptr dcaTxop); /// Frame receive handler void Receive (Ptr packet, WifiMacHeader const *hdr); /// Forward frame to mesh point