Basic MAC of mesh point Wi-Fi interface. More...
#include "mesh-wifi-interface-mac.h"
Classes | |
struct | Statistics |
Public Member Functions | |
MeshWifiInterfaceMac () | |
C-tor. More... | |
virtual | ~MeshWifiInterfaceMac () |
D-tor. More... | |
int64_t | AssignStreams (int64_t stream) |
Assign a fixed random variable stream number to the random variables used by this model. More... | |
bool | CheckSupportedRates (SupportedRates rates) const |
virtual void | Enqueue (Ptr< const Packet > packet, Mac48Address to, Mac48Address from) |
virtual void | Enqueue (Ptr< const Packet > packet, Mac48Address to) |
virtual void | FinishConfigureStandard (enum WifiPhyStandard standard) |
WifiPhyStandard | GetPhyStandard () const |
SupportedRates | GetSupportedRates () const |
void | Report (std::ostream &) const |
Statistics: More... | |
void | ResetStats () |
void | SendManagementFrame (Ptr< Packet > frame, const WifiMacHeader &hdr) |
To be used by plugins sending management frames. More... | |
void | SetBeaconGeneration (bool enable) |
Enable/disable beacons. More... | |
virtual void | SetLinkUpCallback (Callback< void > linkUp) |
virtual bool | SupportsSendFrom () const |
Each mesh point interfaces must know the mesh point address | |
void | SetMeshPointAddress (Mac48Address) |
Mac48Address | GetMeshPointAddress () const |
Beacons | |
void | SetRandomStartDelay (Time interval) |
Set maximum initial random delay before first beacon. More... | |
void | SetBeaconInterval (Time interval) |
Set interval between two successive beacons. More... | |
Time | GetBeaconInterval () const |
Time | GetTbtt () const |
Next beacon frame time. More... | |
void | ShiftTbtt (Time shift) |
Shift TBTT. More... | |
Plugins | |
void | InstallPlugin (Ptr< MeshWifiInterfaceMacPlugin > plugin) |
Install plugin. More... | |
Channel switching | |
uint16_t | GetFrequencyChannel () const |
Current channel Id. More... | |
void | SwitchFrequencyChannel (uint16_t new_id) |
Switch channel. More... | |
Metric Calculation routines: | |
void | SetLinkMetricCallback (Callback< uint32_t, Mac48Address, Ptr< MeshWifiInterfaceMac > > cb) |
uint32_t | GetLinkMetric (Mac48Address peerAddress) |
![]() | |
RegularWifiMac () | |
virtual | ~RegularWifiMac () |
Time | GetAckTimeout (void) const |
virtual Mac48Address | GetAddress (void) const |
virtual Time | GetBasicBlockAckTimeout (void) const |
virtual Mac48Address | GetBssid (void) const |
virtual Time | GetCompressedBlockAckTimeout (void) const |
Time | GetCtsTimeout (void) const |
bool | GetCtsToSelfSupported () const |
Return whether the device supports CTS-to-self capability. More... | |
Time | GetEifsNoDifs (void) const |
Time | GetPifs (void) const |
Time | GetRifs (void) const |
Time | GetSifs (void) const |
Time | GetSlot (void) const |
virtual Ssid | GetSsid (void) const |
virtual Ptr< WifiPhy > | GetWifiPhy (void) const |
virtual Ptr< WifiRemoteStationManager > | GetWifiRemoteStationManager (void) const |
virtual void | ResetWifiPhy (void) |
removes attached WifiPhy device from this MAC. More... | |
void | SetAckTimeout (Time ackTimeout) |
virtual void | SetAddress (Mac48Address address) |
virtual void | SetBasicBlockAckTimeout (Time blockAckTimeout) |
virtual void | SetBssid (Mac48Address bssid) |
virtual void | SetCompressedBlockAckTimeout (Time blockAckTimeout) |
void | SetCtsTimeout (Time ctsTimeout) |
void | SetCtsToSelfSupported (bool enable) |
Enable or disable CTS-to-self feature. More... | |
void | SetEifsNoDifs (Time eifsNoDifs) |
virtual void | SetForwardUpCallback (ForwardUpCallback upCallback) |
virtual void | SetLinkDownCallback (Callback< void > linkDown) |
void | SetPifs (Time pifs) |
virtual void | SetPromisc (void) |
Sets the interface in promiscuous mode. More... | |
void | SetRifs (Time rifs) |
void | SetSifs (Time sifs) |
void | SetSlot (Time slotTime) |
virtual void | SetSsid (Ssid ssid) |
virtual void | SetWifiPhy (Ptr< WifiPhy > phy) |
virtual void | SetWifiRemoteStationManager (Ptr< WifiRemoteStationManager > stationManager) |
![]() | |
void | ConfigureStandard (enum WifiPhyStandard standard) |
Time | GetMaxPropagationDelay (void) const |
Time | GetMsduLifetime (void) const |
void | NotifyPromiscRx (Ptr< const Packet > packet) |
void | NotifyRx (Ptr< const Packet > packet) |
void | NotifyRxDrop (Ptr< const Packet > packet) |
void | NotifyTx (Ptr< const Packet > packet) |
void | NotifyTxDrop (Ptr< const Packet > packet) |
virtual void | SetForwardUpCallback (Callback< void, Ptr< Packet >, Mac48Address, Mac48Address > upCallback)=0 |
void | SetMaxPropagationDelay (Time delay) |
![]() | |
Object () | |
Constructor. More... | |
virtual | ~Object () |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose (void) |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator (void) const |
Get an iterator to the Objects aggregated to this one. More... | |
virtual TypeId | GetInstanceTypeId (void) const |
Implement the GetInstanceTypeId method defined in ObjectBase. More... | |
template<typename T > | |
Ptr< T > | GetObject (void) const |
Get a pointer to the requested aggregated Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
void | Initialize (void) |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
![]() | |
SimpleRefCount () | |
Constructor. More... | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
![]() | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising erros. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Never forget to support typeid. More... | |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static void | Cleanup (void) |
Noop. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Private Types | |
typedef std::vector< Ptr< MeshWifiInterfaceMacPlugin > > | PluginList |
Private Member Functions | |
virtual void | DoDispose () |
Real d-tor. More... | |
virtual void | DoInitialize () |
Initialize() implementation. More... | |
void | ForwardDown (Ptr< const Packet > packet, Mac48Address from, Mac48Address to) |
Send frame. More... | |
bool | GetBeaconGeneration () const |
Get current beaconing status. More... | |
void | Receive (Ptr< Packet > packet, WifiMacHeader const *hdr) |
Frame receive handler. More... | |
void | ScheduleNextBeacon () |
Schedule next beacon. More... | |
void | SendBeacon () |
Send beacon. More... | |
Private Attributes | |
EventId | m_beaconSendEvent |
"Timer" for the next beacon More... | |
Ptr< UniformRandomVariable > | m_coefficient |
Add randomness to beacon generation. More... | |
Callback< uint32_t, Mac48Address, Ptr< MeshWifiInterfaceMac > > | m_linkMetricCallback |
Mac48Address | m_mpAddress |
Mesh point address. More... | |
PluginList | m_plugins |
List of all installed plugins. More... | |
WifiPhyStandard | m_standard |
Current PHY standard: needed to configure metric. More... | |
Mesh timing intervals | |
bool | m_beaconEnable |
whether beaconing is enabled More... | |
Time | m_beaconInterval |
Beaconing interval. More... | |
Time | m_randomStart |
Maximum delay before first beacon. More... | |
Time | m_tbtt |
Time for the next frame. More... | |
Statistics: | |
Statistics | m_stats |
Additional Inherited Members | |
![]() | |
typedef Callback< void, Ptr< Packet >, Mac48Address, Mac48Address > | ForwardUpCallback |
This type defines the callback of a higher layer that a WifiMac(-derived) object invokes to pass a packet up the stack. More... | |
![]() | |
typedef std::map< AcIndex, Ptr< EdcaTxopN > > | EdcaQueues |
This type defines a mapping between an Access Category index, and a pointer to the corresponding channel access function. More... | |
![]() | |
virtual void | DeaggregateAmsduAndForward (Ptr< Packet > aggregatedPacket, const WifiMacHeader *hdr) |
This method can be called to de-aggregate an A-MSDU and forward the constituent packets up the stack. More... | |
void | ForwardUp (Ptr< Packet > packet, Mac48Address from, Mac48Address to) |
Forward the packet up to the device. More... | |
Ptr< EdcaTxopN > | GetBEQueue (void) const |
Accessor for the AC_BE channel access function. More... | |
Ptr< EdcaTxopN > | GetBKQueue (void) const |
Accessor for the AC_BK channel access function. More... | |
Ptr< DcaTxop > | GetDcaTxop (void) const |
Accessor for the DCF object. More... | |
bool | GetHtSupported () const |
Return whether the device supports HT. More... | |
bool | GetQosSupported () const |
Return whether the device supports QoS. More... | |
bool | GetVhtSupported () const |
Return whether the device supports VHT. More... | |
Ptr< EdcaTxopN > | GetVIQueue (void) const |
Accessor for the AC_VI channel access function. More... | |
Ptr< EdcaTxopN > | GetVOQueue (void) const |
Accessor for the AC_VO channel access function. More... | |
virtual void | SendAddBaResponse (const MgtAddBaRequestHeader *reqHdr, Mac48Address originator) |
This method can be called to accept a received ADDBA Request. More... | |
void | SetHtSupported (bool enable) |
Enable or disable HT support for the device. More... | |
void | SetQosSupported (bool enable) |
Enable or disable QoS support for the device. More... | |
void | SetTypeOfStation (TypeOfStation type) |
This method is invoked by a subclass to specify what type of station it is implementing. More... | |
void | SetVhtSupported (bool enable) |
Enable or disable HT support for the device. More... | |
virtual void | TxFailed (const WifiMacHeader &hdr) |
The packet we sent was successfully received by the receiver (i.e. More... | |
virtual void | TxOk (const WifiMacHeader &hdr) |
The packet we sent was successfully received by the receiver (i.e. More... | |
![]() | |
void | ConfigureDcf (Ptr< Dcf > dcf, uint32_t cwmin, uint32_t cwmax, enum AcIndex ac) |
![]() | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | NotifyNewAggregate (void) |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted (void) |
Notifier called once the ObjectBase is fully constructed. More... | |
![]() | |
Ptr< DcaTxop > | m_dca |
This holds a pointer to the DCF instance for this WifiMac - used for transmission of frames to non-QoS peers. More... | |
DcfManager * | m_dcfManager |
DCF manager (access to channel) More... | |
EdcaQueues | m_edca |
This is a map from Access Category index to the corresponding channel access function. More... | |
ForwardUpCallback | m_forwardUp |
Callback to forward packet up the stack. More... | |
bool | m_htSupported |
This Boolean is set true iff this WifiMac is to model 802.11n. More... | |
Callback< void > | m_linkDown |
Callback when a link is down. More... | |
Callback< void > | m_linkUp |
Callback when a link is up. More... | |
Ptr< MacLow > | m_low |
MacLow (RTS, CTS, DATA, ACK etc.) More... | |
Ptr< WifiPhy > | m_phy |
Wifi PHY. More... | |
bool | m_qosSupported |
This Boolean is set true iff this WifiMac is to model 802.11e/WMM style Quality of Service. More... | |
MacRxMiddle * | m_rxMiddle |
RX middle (de-fragmentation etc.) More... | |
Ssid | m_ssid |
Service Set ID (SSID) More... | |
Ptr< WifiRemoteStationManager > | m_stationManager |
Remote station manager (rate control, RTS/CTS/fragmentation thresholds etc.) More... | |
MacTxMiddle * | m_txMiddle |
TX middle (aggregation etc.) More... | |
bool | m_vhtSupported |
This Boolean is set true iff this WifiMac is to model 802.11ac. More... | |
![]() | |
static TypeId | GetObjectIid (void) |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
Basic MAC of mesh point Wi-Fi interface.
Its function is extendable through plugins mechanism.
Now only three output queues are used:
ns3::MeshWifiInterfaceMac is accessible through the following paths with Config::Set and Config::Connect:
No TraceSources are defined for this type.
Size of this type is 464 bytes (on a 64-bit architecture).
Definition at line 54 of file mesh-wifi-interface-mac.h.
|
private |
Definition at line 162 of file mesh-wifi-interface-mac.h.
ns3::MeshWifiInterfaceMac::MeshWifiInterfaceMac | ( | ) |
C-tor.
Definition at line 77 of file mesh-wifi-interface-mac.cc.
References m_coefficient, ns3::MESH, NS_LOG_FUNCTION, and ns3::RegularWifiMac::SetTypeOfStation().
|
virtual |
int64_t ns3::MeshWifiInterfaceMac::AssignStreams | ( | int64_t | stream | ) |
Assign a fixed random variable stream number to the random variables used by this model.
Return the number of streams (possibly zero) that have been assigned.
stream | first stream index to use |
Definition at line 151 of file mesh-wifi-interface-mac.cc.
References m_coefficient, m_plugins, NS_LOG_FUNCTION, and ns3::RandomVariableStream::SetStream().
bool ns3::MeshWifiInterfaceMac::CheckSupportedRates | ( | SupportedRates | rates | ) | const |
Definition at line 333 of file mesh-wifi-interface-mac.cc.
References ns3::WifiRemoteStationManager::GetBasicMode(), ns3::WifiPhy::GetChannelWidth(), ns3::WifiMode::GetDataRate(), ns3::WifiPhy::GetGuardInterval(), ns3::WifiRemoteStationManager::GetNBasicModes(), ns3::SupportedRates::IsSupportedRate(), ns3::RegularWifiMac::m_phy, and ns3::RegularWifiMac::m_stationManager.
|
privatevirtual |
Real d-tor.
Reimplemented from ns3::RegularWifiMac.
Definition at line 122 of file mesh-wifi-interface-mac.cc.
References ns3::EventId::Cancel(), ns3::RegularWifiMac::DoDispose(), m_beaconSendEvent, m_plugins, and NS_LOG_FUNCTION.
|
privatevirtual |
Initialize() implementation.
This method is called only once by Initialize(). If the user calls Initialize() multiple times, DoInitialize() is called only the first time.
Subclasses are expected to override this method and chain up to their parent's implementation once they are done. It is safe to call GetObject() and AggregateObject() from within this method.
Reimplemented from ns3::RegularWifiMac.
Definition at line 131 of file mesh-wifi-interface-mac.cc.
References ns3::EventId::Cancel(), ns3::Time::GetSeconds(), ns3::UniformRandomVariable::GetValue(), ns3::EventId::IsRunning(), m_beaconEnable, m_beaconSendEvent, m_coefficient, m_randomStart, m_tbtt, ns3::Simulator::Now(), NS_ASSERT, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), ns3::Seconds(), SendBeacon(), and ns3::ObjectBase::SetAttribute().
|
virtual |
packet | the packet to send. |
to | the address to which the packet should be sent. |
from | the address from which the packet should be sent. |
The packet should be enqueued in a tx queue, and should be dequeued as soon as the channel access function determines that access is granted to this MAC. The extra parameter "from" allows this device to operate in a bridged mode, forwarding received frames without altering the source address.
Reimplemented from ns3::RegularWifiMac.
Definition at line 94 of file mesh-wifi-interface-mac.cc.
References ForwardDown(), and NS_LOG_FUNCTION.
|
virtual |
packet | the packet to send. |
to | the address to which the packet should be sent. |
The packet should be enqueued in a tx queue, and should be dequeued as soon as the channel access function determines that access is granted to this MAC.
Implements ns3::RegularWifiMac.
Definition at line 100 of file mesh-wifi-interface-mac.cc.
References ForwardDown(), ns3::MacLow::GetAddress(), ns3::RegularWifiMac::m_low, and NS_LOG_FUNCTION.
|
virtual |
standard | the phy standard to be used |
This method is called by ns3::WifiMac::ConfigureStandard to complete the configuration process for a requested phy standard.
This method may be overriden by a derived class (e.g., in order to apply DCF or EDCA parameters specific to the usage model it is dealing with), in which case the reimplementation may choose to deal with certain values in the WifiPhyStandard enumeration, and chain up to this implementation to deal with the remainder.
Reimplemented from ns3::RegularWifiMac.
Definition at line 547 of file mesh-wifi-interface-mac.cc.
References ns3::RegularWifiMac::FinishConfigureStandard(), ns3::RegularWifiMac::m_dca, and m_standard.
|
private |
Send frame.
Frame is supposed to be tagged by routing information.
Definition at line 218 of file mesh-wifi-interface-mac.cc.
References ns3::AC_BE, ns3::WifiRemoteStationManager::AddSupportedMode(), ns3::Packet::Copy(), ns3::WifiMacHeader::GetAddr1(), ns3::RegularWifiMac::GetAddress(), ns3::WifiPhy::GetMode(), ns3::WifiPhy::GetNModes(), ns3::Packet::GetSize(), ns3::QosTag::GetTid(), ns3::WifiRemoteStationManager::IsBrandNew(), ns3::RegularWifiMac::m_edca, ns3::RegularWifiMac::m_phy, m_plugins, ns3::RegularWifiMac::m_stationManager, m_stats, ns3::WifiMacHeader::NORMAL_ACK, NS_ASSERT, ns3::QosUtilsMapTidToAc(), ns3::WifiRemoteStationManager::RecordDisassociated(), ns3::Packet::RemovePacketTag(), ns3::MeshWifiInterfaceMac::Statistics::sentBytes, ns3::MeshWifiInterfaceMac::Statistics::sentFrames, ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetAddr4(), ns3::WifiMacHeader::SetDsFrom(), ns3::WifiMacHeader::SetDsTo(), ns3::WifiMacHeader::SetQosAckPolicy(), ns3::WifiMacHeader::SetQosNoAmsdu(), ns3::WifiMacHeader::SetQosNoEosp(), ns3::WifiMacHeader::SetQosTid(), ns3::WifiMacHeader::SetQosTxopLimit(), ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_QOSDATA.
Referenced by Enqueue().
|
private |
Get current beaconing status.
Definition at line 372 of file mesh-wifi-interface-mac.cc.
References ns3::EventId::IsRunning(), and m_beaconSendEvent.
Referenced by GetTypeId().
Time ns3::MeshWifiInterfaceMac::GetBeaconInterval | ( | ) | const |
Definition at line 361 of file mesh-wifi-interface-mac.cc.
References m_beaconInterval.
Referenced by Report(), and ScheduleNextBeacon().
uint16_t ns3::MeshWifiInterfaceMac::GetFrequencyChannel | ( | ) | const |
Current channel Id.
Definition at line 178 of file mesh-wifi-interface-mac.cc.
References ns3::YansWifiPhy::GetChannelNumber(), ns3::Object::GetObject(), ns3::RegularWifiMac::m_phy, NS_ASSERT, NS_LOG_FUNCTION, and third::phy.
Referenced by Report().
uint32_t ns3::MeshWifiInterfaceMac::GetLinkMetric | ( | Mac48Address | peerAddress | ) |
Definition at line 486 of file mesh-wifi-interface-mac.cc.
References m_linkMetricCallback.
Mac48Address ns3::MeshWifiInterfaceMac::GetMeshPointAddress | ( | ) | const |
Definition at line 506 of file mesh-wifi-interface-mac.cc.
References m_mpAddress.
Referenced by SendBeacon().
WifiPhyStandard ns3::MeshWifiInterfaceMac::GetPhyStandard | ( | ) | const |
Definition at line 560 of file mesh-wifi-interface-mac.cc.
References m_standard.
SupportedRates ns3::MeshWifiInterfaceMac::GetSupportedRates | ( | ) | const |
Definition at line 314 of file mesh-wifi-interface-mac.cc.
References ns3::SupportedRates::AddSupportedRate(), ns3::WifiRemoteStationManager::GetBasicMode(), ns3::WifiPhy::GetChannelWidth(), ns3::WifiMode::GetDataRate(), ns3::WifiPhy::GetGuardInterval(), ns3::WifiPhy::GetMode(), ns3::WifiRemoteStationManager::GetNBasicModes(), ns3::WifiPhy::GetNModes(), ns3::RegularWifiMac::m_phy, ns3::RegularWifiMac::m_stationManager, and ns3::SupportedRates::SetBasicRate().
Referenced by SendBeacon().
Time ns3::MeshWifiInterfaceMac::GetTbtt | ( | ) | const |
Next beacon frame time.
This is supposed to be used by any entity managing beacon collision avoidance (e.g. Peer management protocol in 802.11s)
Definition at line 377 of file mesh-wifi-interface-mac.cc.
References m_tbtt.
Referenced by ShiftTbtt().
|
static |
Never forget to support typeid.
Definition at line 46 of file mesh-wifi-interface-mac.cc.
References GetBeaconGeneration(), m_beaconInterval, m_randomStart, ns3::MakeBooleanAccessor(), ns3::MakeBooleanChecker(), ns3::MakeTimeAccessor(), ns3::MakeTimeChecker(), ns3::Seconds(), SetBeaconGeneration(), and ns3::TypeId::SetParent().
void ns3::MeshWifiInterfaceMac::InstallPlugin | ( | Ptr< MeshWifiInterfaceMacPlugin > | plugin | ) |
Install plugin.
Definition at line 167 of file mesh-wifi-interface-mac.cc.
References m_plugins, NS_LOG_FUNCTION, and ns3::MeshWifiInterfaceMacPlugin::SetParent().
|
privatevirtual |
Frame receive handler.
Reimplemented from ns3::RegularWifiMac.
Definition at line 420 of file mesh-wifi-interface-mac.cc.
References ns3::WifiRemoteStationManager::AddBasicMode(), ns3::Packet::AddPacketTag(), ns3::WifiRemoteStationManager::AddSupportedMode(), ns3::RegularWifiMac::ForwardUp(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetAddr3(), ns3::WifiMacHeader::GetAddr4(), ns3::RegularWifiMac::GetAddress(), ns3::Mac48Address::GetBroadcast(), ns3::WifiPhy::GetChannelWidth(), ns3::WifiMode::GetDataRate(), ns3::WifiPhy::GetGuardInterval(), ns3::Time::GetMicroSeconds(), ns3::WifiPhy::GetMode(), ns3::WifiPhy::GetNModes(), ns3::WifiMacHeader::GetQosTid(), ns3::Packet::GetSize(), ns3::RegularWifiMac::GetSsid(), ns3::MgtProbeResponseHeader::GetSsid(), ns3::MgtProbeResponseHeader::GetSupportedRates(), ns3::SupportedRates::IsBasicRate(), ns3::WifiMacHeader::IsBeacon(), ns3::WifiMacHeader::IsData(), ns3::Ssid::IsEqual(), ns3::WifiMacHeader::IsQosData(), ns3::SupportedRates::IsSupportedRate(), ns3::RegularWifiMac::m_phy, m_plugins, ns3::RegularWifiMac::m_stationManager, m_stats, ns3::Simulator::Now(), NS_LOG_DEBUG, ns3::Packet::PeekHeader(), ns3::MeshWifiInterfaceMac::Statistics::recvBeacons, ns3::MeshWifiInterfaceMac::Statistics::recvBytes, and ns3::MeshWifiInterfaceMac::Statistics::recvFrames.
void ns3::MeshWifiInterfaceMac::Report | ( | std::ostream & | os | ) | const |
Definition at line 531 of file mesh-wifi-interface-mac.cc.
References ns3::RegularWifiMac::GetAddress(), GetBeaconInterval(), GetFrequencyChannel(), ns3::Time::GetSeconds(), m_stats, and ns3::MeshWifiInterfaceMac::Statistics::Print().
void ns3::MeshWifiInterfaceMac::ResetStats | ( | ) |
Definition at line 541 of file mesh-wifi-interface-mac.cc.
References m_stats.
|
private |
Schedule next beacon.
Definition at line 394 of file mesh-wifi-interface-mac.cc.
References GetBeaconInterval(), m_beaconSendEvent, m_tbtt, ns3::Simulator::Schedule(), and SendBeacon().
Referenced by SendBeacon().
|
private |
Send beacon.
Definition at line 400 of file mesh-wifi-interface-mac.cc.
References ns3::RegularWifiMac::GetAddress(), GetMeshPointAddress(), ns3::Time::GetMicroSeconds(), ns3::RegularWifiMac::GetSsid(), GetSupportedRates(), ns3::EventId::IsRunning(), m_beaconInterval, m_beaconSendEvent, ns3::RegularWifiMac::m_dca, m_plugins, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, and ScheduleNextBeacon().
Referenced by DoInitialize(), ScheduleNextBeacon(), and ShiftTbtt().
void ns3::MeshWifiInterfaceMac::SendManagementFrame | ( | Ptr< Packet > | frame, |
const WifiMacHeader & | hdr | ||
) |
To be used by plugins sending management frames.
Definition at line 278 of file mesh-wifi-interface-mac.cc.
References ns3::AC_BK, ns3::AC_VO, ns3::WifiMacHeader::GetAddr1(), ns3::Mac48Address::GetBroadcast(), ns3::Packet::GetSize(), ns3::RegularWifiMac::m_edca, m_plugins, m_stats, NS_FATAL_ERROR, ns3::MeshWifiInterfaceMac::Statistics::sentBytes, and ns3::MeshWifiInterfaceMac::Statistics::sentFrames.
void ns3::MeshWifiInterfaceMac::SetBeaconGeneration | ( | bool | enable | ) |
Enable/disable beacons.
Definition at line 366 of file mesh-wifi-interface-mac.cc.
References m_beaconEnable, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::MeshWifiInterfaceMac::SetBeaconInterval | ( | Time | interval | ) |
Set interval between two successive beacons.
Definition at line 355 of file mesh-wifi-interface-mac.cc.
References m_beaconInterval, and NS_LOG_FUNCTION.
void ns3::MeshWifiInterfaceMac::SetLinkMetricCallback | ( | Callback< uint32_t, Mac48Address, Ptr< MeshWifiInterfaceMac > > | cb | ) |
Definition at line 496 of file mesh-wifi-interface-mac.cc.
References m_linkMetricCallback.
|
virtual |
linkUp | the callback to invoke when the link becomes up. |
Reimplemented from ns3::RegularWifiMac.
Definition at line 111 of file mesh-wifi-interface-mac.cc.
References NS_LOG_FUNCTION, and ns3::RegularWifiMac::SetLinkUpCallback().
void ns3::MeshWifiInterfaceMac::SetMeshPointAddress | ( | Mac48Address | a | ) |
Definition at line 501 of file mesh-wifi-interface-mac.cc.
References m_mpAddress.
void ns3::MeshWifiInterfaceMac::SetRandomStartDelay | ( | Time | interval | ) |
Set maximum initial random delay before first beacon.
Definition at line 349 of file mesh-wifi-interface-mac.cc.
References m_randomStart, and NS_LOG_FUNCTION.
void ns3::MeshWifiInterfaceMac::ShiftTbtt | ( | Time | shift | ) |
Shift TBTT.
This is supposed to be used by any entity managing beacon collision avoidance (e.g. Peer management protocol in 802.11s)
Definition at line 382 of file mesh-wifi-interface-mac.cc.
References ns3::Simulator::Cancel(), GetTbtt(), m_beaconSendEvent, m_tbtt, ns3::Simulator::Now(), NS_ASSERT, ns3::Simulator::Schedule(), and SendBeacon().
|
virtual |
The interface may or may not support sending from arbitrary address. This function returns true if sending from arbitrary address is supported, false otherwise.
Reimplemented from ns3::RegularWifiMac.
Definition at line 106 of file mesh-wifi-interface-mac.cc.
void ns3::MeshWifiInterfaceMac::SwitchFrequencyChannel | ( | uint16_t | new_id | ) |
Switch channel.
Now we use dirty channel switch – just change frequency
Definition at line 194 of file mesh-wifi-interface-mac.cc.
References ns3::Object::GetObject(), ns3::RegularWifiMac::m_dcfManager, ns3::RegularWifiMac::m_phy, ns3::DcfManager::NotifyNavResetNow(), NS_ASSERT, NS_LOG_FUNCTION, third::phy, ns3::Seconds(), and ns3::YansWifiPhy::SetChannelNumber().
|
private |
whether beaconing is enabled
Definition at line 169 of file mesh-wifi-interface-mac.h.
Referenced by DoInitialize(), and SetBeaconGeneration().
|
private |
Beaconing interval.
Definition at line 171 of file mesh-wifi-interface-mac.h.
Referenced by GetBeaconInterval(), GetTypeId(), SendBeacon(), and SetBeaconInterval().
|
private |
"Timer" for the next beacon
Definition at line 182 of file mesh-wifi-interface-mac.h.
Referenced by DoDispose(), DoInitialize(), GetBeaconGeneration(), ScheduleNextBeacon(), SendBeacon(), and ShiftTbtt().
|
private |
Add randomness to beacon generation.
Definition at line 205 of file mesh-wifi-interface-mac.h.
Referenced by AssignStreams(), DoInitialize(), and MeshWifiInterfaceMac().
|
private |
Definition at line 185 of file mesh-wifi-interface-mac.h.
Referenced by GetLinkMetric(), and SetLinkMetricCallback().
|
private |
Mesh point address.
Definition at line 179 of file mesh-wifi-interface-mac.h.
Referenced by GetMeshPointAddress(), and SetMeshPointAddress().
|
private |
List of all installed plugins.
Definition at line 184 of file mesh-wifi-interface-mac.h.
Referenced by AssignStreams(), DoDispose(), ForwardDown(), InstallPlugin(), Receive(), SendBeacon(), and SendManagementFrame().
|
private |
Maximum delay before first beacon.
Definition at line 173 of file mesh-wifi-interface-mac.h.
Referenced by DoInitialize(), GetTypeId(), and SetRandomStartDelay().
|
private |
Current PHY standard: needed to configure metric.
Definition at line 202 of file mesh-wifi-interface-mac.h.
Referenced by FinishConfigureStandard(), and GetPhyStandard().
|
private |
Definition at line 199 of file mesh-wifi-interface-mac.h.
Referenced by ForwardDown(), Receive(), Report(), ResetStats(), and SendManagementFrame().
|
private |
Time for the next frame.
Definition at line 175 of file mesh-wifi-interface-mac.h.
Referenced by DoInitialize(), GetTbtt(), ScheduleNextBeacon(), and ShiftTbtt().