Basic MAC of mesh point Wi-Fi interface. Its function is extendable through plugins mechanism. More...
#include <mesh-wifi-interface-mac.h>
Classes | |
struct | Statistics |
Public Member Functions | |
MeshWifiInterfaceMac () | |
C-tor. | |
virtual | ~MeshWifiInterfaceMac () |
D-tor. | |
int64_t | AssignStreams (int64_t stream) |
bool | CheckSupportedRates (SupportedRates rates) const |
virtual void | FinishConfigureStandard (enum WifiPhyStandard standard) |
WifiPhyStandard | GetPhyStandard () const |
SupportedRates | GetSupportedRates () const |
void | Report (std::ostream &) const |
Statistics: | |
void | ResetStats () |
void | SendManagementFrame (Ptr< Packet > frame, const WifiMacHeader &hdr) |
To be used by plugins sending management frames. | |
void | SetBeaconGeneration (bool enable) |
Enable/disable beacons. | |
Inherited from WifiMac | |
virtual void | Enqueue (Ptr< const Packet > packet, Mac48Address to, Mac48Address from) |
virtual void | Enqueue (Ptr< const Packet > packet, Mac48Address to) |
virtual bool | SupportsSendFrom () const |
virtual void | SetLinkUpCallback (Callback< void > linkUp) |
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. | |
void | SetBeaconInterval (Time interval) |
Set interval between two successive beacons. | |
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. TODO return unique ID to allow unregister plugins. | |
Channel switching | |
uint16_t | GetFrequencyChannel () const |
Current channel Id. | |
void | SwitchFrequencyChannel (uint16_t new_id) |
Switch channel. | |
Metric Calculation routines: | |
void | SetLinkMetricCallback (Callback< uint32_t, Mac48Address, Ptr< MeshWifiInterfaceMac > > cb) |
uint32_t | GetLinkMetric (Mac48Address peerAddress) |
Public Member Functions inherited from ns3::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 |
Time | GetEifsNoDifs (void) const |
Time | GetPifs (void) const |
Time | GetSifs (void) const |
Time | GetSlot (void) const |
virtual Ssid | GetSsid (void) const |
virtual Ptr< WifiPhy > | GetWifiPhy () const |
virtual Ptr < WifiRemoteStationManager > | GetWifiRemoteStationManager () const |
void | RestartAccess (void) |
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 | 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 | SetSifs (Time sifs) |
void | SetSlot (Time slotTime) |
virtual void | SetSsid (Ssid ssid) |
virtual void | SetWifiPhy (Ptr< WifiPhy > phy) |
virtual void | SetWifiRemoteStationManager (Ptr< WifiRemoteStationManager > stationManager) |
Public Member Functions inherited from ns3::WifiMac | |
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) |
Public Member Functions inherited from ns3::Object | |
void | AggregateObject (Ptr< Object > other) |
void | Dispose (void) |
AggregateIterator | GetAggregateIterator (void) const |
virtual TypeId | GetInstanceTypeId (void) const |
template<typename T > | |
Ptr< T > | GetObject (void) const |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
void | Initialize (void) |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount (const SimpleRefCount &o) | |
uint32_t | GetReferenceCount (void) const |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
void | Ref (void) const |
void | Unref (void) const |
Public Member Functions inherited from ns3::ObjectBase | |
void | GetAttribute (std::string name, AttributeValue &value) const |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Never forget to support typeid. | |
Static Public Member Functions inherited from ns3::RegularWifiMac | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::WifiMac | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
static void | Cleanup (void) |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId (void) |
Private Types | |
typedef std::vector< Ptr < MeshWifiInterfaceMacPlugin > > | PluginList |
Private Member Functions | |
virtual void | DoDispose () |
Real d-tor. | |
virtual void | DoInitialize () |
void | ForwardDown (Ptr< const Packet > packet, Mac48Address from, Mac48Address to) |
Send frame. Frame is supposed to be tagged by routing information. TODO: clarify this point. | |
bool | GetBeaconGeneration () const |
Get current beaconing status. | |
void | Receive (Ptr< Packet > packet, WifiMacHeader const *hdr) |
Frame receive handler. | |
void | ScheduleNextBeacon () |
Schedule next beacon. | |
void | SendBeacon () |
Send beacon. | |
Private Attributes | |
EventId | m_beaconSendEvent |
"Timer" for the next beacon | |
Ptr< UniformRandomVariable > | m_coefficient |
Add randomness to beacon generation. | |
Callback< uint32_t, Mac48Address, Ptr < MeshWifiInterfaceMac > > | m_linkMetricCallback |
Mac48Address | m_mpAddress |
Mesh point address. | |
PluginList | m_plugins |
List of all installed plugins. | |
WifiPhyStandard | m_standard |
Current PHY standard: needed to configure metric. | |
Mesh timing intervals | |
bool | m_beaconEnable |
whether beaconing is enabled | |
Time | m_beaconInterval |
Beaconing interval. | |
Time | m_randomStart |
Maximum delay before first beacon. | |
Time | m_tbtt |
Time for the next frame. | |
Statistics: | |
Statistics | m_stats |
Additional Inherited Members | |
Public Types inherited from ns3::RegularWifiMac | |
typedef Callback< void, Ptr < Packet >, Mac48Address, Mac48Address > | ForwardUpCallback |
Protected Types inherited from ns3::RegularWifiMac | |
typedef std::map< AcIndex, Ptr < EdcaTxopN > > | EdcaQueues |
Protected Member Functions inherited from ns3::RegularWifiMac | |
virtual void | DeaggregateAmsduAndForward (Ptr< Packet > aggregatedPacket, const WifiMacHeader *hdr) |
void | ForwardUp (Ptr< Packet > packet, Mac48Address from, Mac48Address to) |
bool | GetQosSupported () const |
bool | IsRxRadio (void) |
bool | IsTxRadio (void) |
virtual void | SendAddBaResponse (const MgtAddBaRequestHeader *reqHdr, Mac48Address originator) |
void | SetQosSupported (bool enable) |
void | SetRxRadio (bool isRx, Ptr< Node > node, Ptr< Repository > repo, Ptr< PUModel > puModel, Ptr< WifiPhy > phy) |
void | SetTxRadio (bool isTx) |
void | SetTypeOfStation (TypeOfStation type) |
virtual void | TxFailed (const WifiMacHeader &hdr) |
virtual void | TxOk (const WifiMacHeader &hdr) |
Protected Member Functions inherited from ns3::WifiMac | |
void | ConfigureCCHDcf (Ptr< Dcf > dcf, uint32_t cwmin, uint32_t cwmax, enum AcIndex ac) |
void | ConfigureDcf (Ptr< Dcf > dcf, uint32_t cwmin, uint32_t cwmax, enum AcIndex ac) |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
virtual void | NotifyNewAggregate (void) |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
virtual void | NotifyConstructionCompleted (void) |
Protected Attributes inherited from ns3::RegularWifiMac | |
Ptr< DcaTxop > | m_dca |
DcfManager * | m_dcfManager |
EdcaQueues | m_edca |
ForwardUpCallback | m_forwardUp |
Callback< void > | m_linkDown |
Callback< void > | m_linkUp |
Ptr< MacLow > | m_low |
Ptr< WifiPhy > | m_phy |
bool | m_qosSupported |
MacRxMiddle * | m_rxMiddle |
Ssid | m_ssid |
Ptr< WifiRemoteStationManager > | m_stationManager |
MacTxMiddle * | m_txMiddle |
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.
Definition at line 54 of file mesh-wifi-interface-mac.h.
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 149 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 330 of file mesh-wifi-interface-mac.cc.
References ns3::WifiMode::GetDataRate().
|
privatevirtual |
This method is called only once by Object::Initialize. If the user calls Object::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 130 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, 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 93 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 99 of file mesh-wifi-interface-mac.cc.
References ForwardDown(), 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 540 of file mesh-wifi-interface-mac.cc.
References ns3::RegularWifiMac::FinishConfigureStandard(), ns3::RegularWifiMac::m_dca, and m_standard.
Time ns3::MeshWifiInterfaceMac::GetBeaconInterval | ( | ) | const |
Definition at line 358 of file mesh-wifi-interface-mac.cc.
References m_beaconInterval.
Referenced by Report(), and ScheduleNextBeacon().
SupportedRates ns3::MeshWifiInterfaceMac::GetSupportedRates | ( | ) | const |
Definition at line 311 of file mesh-wifi-interface-mac.cc.
References ns3::WifiMode::GetDataRate(), ns3::WifiPhy::GetMode(), and ns3::WifiPhy::GetNModes().
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 374 of file mesh-wifi-interface-mac.cc.
References m_tbtt.
Referenced by ShiftTbtt().
|
virtual |
linkUp | the callback to invoke when the link becomes up. |
Reimplemented from ns3::RegularWifiMac.
Definition at line 110 of file mesh-wifi-interface-mac.cc.
References NS_LOG_FUNCTION, and ns3::RegularWifiMac::SetLinkUpCallback().
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 379 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().