Wi-Fi AP state machineHandle association, dis-association and authentication, of STAs within an infrastructure BSS. More...
#include <ap-wifi-mac.h>
Public Member Functions | |
virtual void | Enqueue (Ptr< const Packet > packet, Mac48Address to) |
virtual void | Enqueue (Ptr< const Packet > packet, Mac48Address to, Mac48Address from) |
Time | GetBeaconInterval (void) const |
virtual void | SetAddress (Mac48Address address) |
void | SetBeaconInterval (Time interval) |
virtual void | SetLinkUpCallback (Callback< void > linkUp) |
virtual void | SetWifiRemoteStationManager (Ptr< WifiRemoteStationManager > stationManager) |
void | StartBeaconing (void) |
virtual bool | SupportsSendFrom (void) const |
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 | 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) |
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 (void) |
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 Member Functions | |
virtual void | DeaggregateAmsduAndForward (Ptr< Packet > aggregatedPacket, const WifiMacHeader *hdr) |
virtual void | DoDispose (void) |
virtual void | DoInitialize (void) |
void | ForwardDown (Ptr< const Packet > packet, Mac48Address from, Mac48Address to) |
void | ForwardDown (Ptr< const Packet > packet, Mac48Address from, Mac48Address to, uint8_t tid) |
bool | GetBeaconGeneration (void) const |
SupportedRates | GetSupportedRates (void) const |
virtual void | Receive (Ptr< Packet > packet, const WifiMacHeader *hdr) |
void | SendAssocResp (Mac48Address to, bool success) |
void | SendOneBeacon (void) |
void | SendProbeResp (Mac48Address to) |
void | SetBeaconGeneration (bool enable) |
virtual void | TxFailed (const WifiMacHeader &hdr) |
virtual void | TxOk (const WifiMacHeader &hdr) |
Private Attributes | |
Ptr< DcaTxop > | m_beaconDca |
EventId | m_beaconEvent |
Time | m_beaconInterval |
bool | m_enableBeaconGeneration |
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 | FinishConfigureStandard (enum WifiPhyStandard standard) |
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) |
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 |
Wi-Fi AP state machine
Handle association, dis-association and authentication, of STAs within an infrastructure BSS.
ns3::ApWifiMac is accessible through the following paths with Config::Set and Config::Connect:
No TraceSources are defined for this type.
Definition at line 39 of file ap-wifi-mac.h.
|
privatevirtual |
This method is called to de-aggregate an A-MSDU and forward the constituent packets up the stack. We override the WifiMac version here because, as an AP, we also need to think about redistributing to other associated STAs.
aggregatedPacket | the Packet containing the A-MSDU. |
hdr | a pointer to the MAC header for aggregatedPacket . |
Reimplemented from ns3::RegularWifiMac.
Definition at line 549 of file ap-wifi-mac.cc.
References ns3::RegularWifiMac::GetAddress(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by Receive().
|
privatevirtual |
This method is called by Object::Dispose or by the object's destructor, whichever comes first.
Subclasses are expected to implement their real destruction code in an overriden version of this method and chain up to their parent's implementation once they are done. i.e., for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose method.
It is safe to call GetObject from within this method.
Reimplemented from ns3::RegularWifiMac.
Definition at line 89 of file ap-wifi-mac.cc.
References ns3::EventId::Cancel(), ns3::RegularWifiMac::DoDispose(), and NS_LOG_FUNCTION.
|
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 575 of file ap-wifi-mac.cc.
References ns3::EventId::Cancel(), ns3::RegularWifiMac::DoInitialize(), NS_LOG_FUNCTION, and ns3::Simulator::ScheduleNow().
|
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 259 of file ap-wifi-mac.cc.
References NS_LOG_FUNCTION.
|
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 249 of file ap-wifi-mac.cc.
References ns3::Mac48Address::IsBroadcast(), and NS_LOG_FUNCTION.
Time ns3::ApWifiMac::GetBeaconInterval | ( | void | ) | const |
Definition at line 131 of file ap-wifi-mac.cc.
References NS_LOG_FUNCTION.
|
privatevirtual |
This method acts as the MacRxMiddle receive callback and is invoked to notify us that a frame has been received. The implementation is intended to capture logic that is going to be common to all (or most) derived classes. Specifically, handling of Block Ack managment frames is dealt with here.
This method will need, however, to be overriden by derived classes so that they can perform their data handling before invoking the base version.
packet | the packet that has been received. |
hdr | a pointer to the MAC header of the received frame. |
Reimplemented from ns3::RegularWifiMac.
Definition at line 407 of file ap-wifi-mac.cc.
References ns3::Packet::Copy(), DeaggregateAmsduAndForward(), ns3::RegularWifiMac::GetAddress(), ns3::WifiMode::GetDataRate(), ns3::WifiPhy::GetMode(), ns3::WifiPhy::GetNModes(), ns3::Packet::GetSize(), ns3::Mac48Address::IsBroadcast(), ns3::Mac48Address::IsGroup(), ns3::WifiMac::NotifyRxDrop(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::RegularWifiMac::Receive(), and ns3::Packet::RemoveHeader().
|
virtual |
address | the current address of this MAC layer. |
Reimplemented from ns3::RegularWifiMac.
Definition at line 99 of file ap-wifi-mac.cc.
References NS_LOG_FUNCTION, ns3::RegularWifiMac::SetAddress(), and ns3::RegularWifiMac::SetBssid().
void ns3::ApWifiMac::SetBeaconInterval | ( | Time | interval | ) |
interval | the interval between two beacon transmissions. |
Definition at line 158 of file ap-wifi-mac.cc.
References ns3::Time::GetMicroSeconds(), NS_LOG_FUNCTION, and NS_LOG_WARN.
|
virtual |
linkUp | the callback to invoke when the link becomes up. |
Reimplemented from ns3::RegularWifiMac.
Definition at line 146 of file ap-wifi-mac.cc.
References NS_LOG_FUNCTION, and ns3::RegularWifiMac::SetLinkUpCallback().
|
virtual |
stationManager | the station manager attached to this MAC. |
Reimplemented from ns3::RegularWifiMac.
Definition at line 138 of file ap-wifi-mac.cc.
References NS_LOG_FUNCTION, and ns3::RegularWifiMac::SetWifiRemoteStationManager().
void ns3::ApWifiMac::StartBeaconing | ( | void | ) |
Start beacon transmission immediately.
Definition at line 169 of file ap-wifi-mac.cc.
References NS_LOG_FUNCTION.