10#ifndef MESH_WIFI_INTERFACE_MAC_H
11#define MESH_WIFI_INTERFACE_MAC_H
15#include "ns3/callback.h"
16#include "ns3/event-id.h"
17#include "ns3/mac48-address.h"
18#include "ns3/mgt-headers.h"
19#include "ns3/nstime.h"
20#include "ns3/packet.h"
21#include "ns3/wifi-mac.h"
29class UniformRandomVariable;
181 void Report(std::ostream& os)
const;
243 typedef std::vector<Ptr<MeshWifiInterfaceMacPlugin>>
PluginList;
283 void Print(std::ostream& os)
const;
An identifier for simulation events.
Basic MAC of mesh point Wi-Fi interface.
bool SupportsSendFrom() const override
MeshWifiInterfaceMac()
C-tor.
Time m_beaconInterval
Beaconing interval.
void SetLinkMetricCallback(Callback< uint32_t, Mac48Address, Ptr< MeshWifiInterfaceMac > > cb)
Set the link metric callback.
int64_t AssignStreams(int64_t stream) override
Assign a fixed random variable stream number to the random variables used by this model.
Mac48Address m_mpAddress
Mesh point address.
void SetBeaconInterval(Time interval)
Set interval between two successive beacons.
void SwitchFrequencyChannel(uint16_t new_id)
Switch frequency channel.
void ShiftTbtt(Time shift)
Shift TBTT.
Statistics m_stats
statistics
Time GetTbtt() const
Next beacon frame time.
void SetRandomStartDelay(Time interval)
Set maximum initial random delay before first beacon.
bool CanForwardPacketsTo(Mac48Address to) const override
Return true if packets can be forwarded to the given destination, false otherwise.
void ResetStats()
Reset statistics function.
void DoCompleteConfig() override
Allow subclasses to complete the configuration of the MAC layer components.
void ConfigureContentionWindow(uint32_t cwMin, uint32_t cwMax) override
~MeshWifiInterfaceMac() override
D-tor.
void SendManagementFrame(Ptr< Packet > frame, const WifiMacHeader &hdr)
To be used by plugins sending management frames.
Callback< uint32_t, Mac48Address, Ptr< MeshWifiInterfaceMac > > m_linkMetricCallback
linkMetricCallback
EventId m_beaconSendEvent
"Timer" for the next beacon
void InstallPlugin(Ptr< MeshWifiInterfaceMacPlugin > plugin)
Install plugin.
void ScheduleNextBeacon()
Schedule next beacon.
uint32_t GetLinkMetric(Mac48Address peerAddress)
Get the link metric.
uint16_t GetFrequencyChannel() const
Current channel Id.
void SetBeaconGeneration(bool enable)
Enable/disable beacons.
void DoInitialize() override
Initialize() implementation.
bool GetBeaconGeneration() const
Get current beaconing status.
AllSupportedRates GetSupportedRates() const
Get supported rates.
void SetMeshPointAddress(Mac48Address addr)
Set the mesh point address.
Mac48Address GetMeshPointAddress() const
Get the mesh point address.
void Report(std::ostream &os) const
Report statistics.
Time GetBeaconInterval() const
Get beacon interval.
void Receive(Ptr< const WifiMpdu > mpdu, uint8_t linkId) override
Frame receive handler.
void SetLinkUpCallback(Callback< void > linkUp) override
void Enqueue(Ptr< WifiMpdu > mpdu, Mac48Address to, Mac48Address from) override
Time m_randomStart
Maximum delay before first beacon.
static TypeId GetTypeId()
Get the type ID.
PluginList m_plugins
List of all installed plugins.
void SendBeacon()
Send beacon.
bool CheckSupportedRates(AllSupportedRates rates) const
Check supported rates.
std::vector< Ptr< MeshWifiInterfaceMacPlugin > > PluginList
PluginList typedef.
Ptr< UniformRandomVariable > m_coefficient
Add randomness to beacon generation.
Time m_tbtt
Time for the next frame.
void DoDispose() override
Real d-tor.
Smart pointer class similar to boost::intrusive_ptr.
Simulation virtual time values and global simulation resolution.
a unique identifier for an interface.
base class for all MAC-level wifi objects.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Struct containing all supported rates.
uint32_t sentFrames
sent frames
uint32_t recvBytes
receive bytes
uint32_t sentBytes
sent bytes
uint32_t recvFrames
receive frames
void Print(std::ostream &os) const
Print statistics.
uint16_t recvBeacons
receive beacons