#include <sta-wifi-mac.h>
Public Member Functions | |
StaWifiMac () | |
virtual | ~StaWifiMac () |
virtual void | Enqueue (Ptr< const Packet > packet, Mac48Address to) |
void | SetAssocRequestTimeout (Time timeout) |
void | SetMaxMissedBeacons (uint32_t missed) |
void | SetProbeRequestTimeout (Time timeout) |
void | StartActiveAssociation (void) |
![]() | |
RegularWifiMac () | |
virtual | ~RegularWifiMac () |
virtual void | Enqueue (Ptr< const Packet > packet, Mac48Address to, Mac48Address from) |
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 |
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 () const |
virtual Ptr < WifiRemoteStationManager > | GetWifiRemoteStationManager () const |
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) |
void | SetEifsNoDifs (Time eifsNoDifs) |
virtual void | SetForwardUpCallback (ForwardUpCallback upCallback) |
virtual void | SetLinkDownCallback (Callback< void > linkDown) |
virtual void | SetLinkUpCallback (Callback< void > linkUp) |
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) |
virtual bool | SupportsSendFrom (void) const |
![]() | |
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 () | |
virtual | ~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) |
![]() | |
SimpleRefCount () | |
SimpleRefCount (const SimpleRefCount &o) | |
uint32_t | GetReferenceCount (void) const |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
void | Ref (void) const |
void | Unref (void) const |
![]() | |
virtual | ~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 TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static void | Cleanup (void) |
![]() | |
static TypeId | GetTypeId (void) |
Private Types | |
enum | MacState { ASSOCIATED, WAIT_PROBE_RESP, WAIT_ASSOC_RESP, BEACON_MISSED, REFUSED } |
Private Member Functions | |
void | AssocRequestTimeout (void) |
bool | GetActiveProbing (void) const |
HtCapabilities | GetHtCapabilities (void) const |
SupportedRates | GetSupportedRates (void) const |
bool | IsAssociated (void) const |
bool | IsWaitAssocResp (void) const |
void | MissedBeacons (void) |
void | ProbeRequestTimeout (void) |
virtual void | Receive (Ptr< Packet > packet, const WifiMacHeader *hdr) |
void | RestartBeaconWatchdog (Time delay) |
void | SendAssociationRequest (void) |
void | SendProbeRequest (void) |
void | SetActiveProbing (bool enable) |
void | SetState (enum MacState value) |
void | TryToEnsureAssociated (void) |
The Wifi MAC high model for a non-AP STA in a BSS.
ns3::StaWifiMac is accessible through the following paths with Config::Set and Config::Connect:
Definition at line 43 of file sta-wifi-mac.h.
|
private |
Enumerator | |
---|---|
ASSOCIATED | |
WAIT_PROBE_RESP | |
WAIT_ASSOC_RESP | |
BEACON_MISSED | |
REFUSED |
Definition at line 87 of file sta-wifi-mac.h.
ns3::StaWifiMac::StaWifiMac | ( | ) |
Definition at line 97 of file sta-wifi-mac.cc.
References NS_LOG_FUNCTION, ns3::RegularWifiMac::SetTypeOfStation(), and ns3::STA.
|
virtual |
Definition at line 110 of file sta-wifi-mac.cc.
References NS_LOG_FUNCTION.
|
private |
Definition at line 273 of file sta-wifi-mac.cc.
References NS_LOG_FUNCTION, SendAssociationRequest(), SetState(), and WAIT_ASSOC_RESP.
Referenced by SendAssociationRequest().
|
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 333 of file sta-wifi-mac.cc.
References ns3::RegularWifiMac::GetBssid(), IsAssociated(), ns3::RegularWifiMac::m_dca, ns3::RegularWifiMac::m_edca, ns3::RegularWifiMac::m_htSupported, ns3::RegularWifiMac::m_low, ns3::RegularWifiMac::m_qosSupported, ns3::WifiMacHeader::NORMAL_ACK, ns3::WifiMac::NotifyTxDrop(), NS_ASSERT, NS_LOG_FUNCTION, ns3::QosUtilsGetTidForPacket(), ns3::QosUtilsMapTidToAc(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsTo(), ns3::WifiMacHeader::SetNoOrder(), ns3::WifiMacHeader::SetQosAckPolicy(), ns3::WifiMacHeader::SetQosNoAmsdu(), ns3::WifiMacHeader::SetQosNoEosp(), ns3::WifiMacHeader::SetQosTid(), ns3::WifiMacHeader::SetQosTxopLimit(), ns3::WifiMacHeader::SetType(), ns3::WifiMacHeader::SetTypeData(), TryToEnsureAssociated(), and ns3::WIFI_MAC_QOSDATA.
|
private |
|
private |
Definition at line 619 of file sta-wifi-mac.cc.
References ns3::WifiPhy::GetGreenfield(), ns3::WifiPhy::GetGuardInterval(), ns3::WifiPhy::GetLdpc(), ns3::WifiPhy::GetMcs(), ns3::WifiPhy::GetNMcs(), ns3::RegularWifiMac::m_phy, ns3::HtCapabilities::SetGreenfield(), ns3::HtCapabilities::SetHtSupported(), ns3::HtCapabilities::SetLdpc(), ns3::HtCapabilities::SetRxMcsBitmask(), and ns3::HtCapabilities::SetShortGuardInterval20().
Referenced by SendAssociationRequest(), and SendProbeRequest().
|
private |
Definition at line 601 of file sta-wifi-mac.cc.
References ns3::SupportedRates::AddSupportedRate(), ns3::WifiPhy::GetBssMembershipSelector(), ns3::WifiMode::GetDataRate(), ns3::WifiPhy::GetMode(), ns3::WifiPhy::GetNBssMembershipSelectors(), ns3::WifiPhy::GetNModes(), ns3::RegularWifiMac::m_htSupported, ns3::RegularWifiMac::m_phy, and ns3::SupportedRates::SetBasicRate().
Referenced by SendAssociationRequest(), and SendProbeRequest().
|
static |
Definition at line 66 of file sta-wifi-mac.cc.
References m_assocLogger, m_assocRequestTimeout, m_deAssocLogger, m_maxMissedBeacons, m_probeRequestTimeout, ns3::MakeTimeChecker(), ns3::MakeTraceSourceAccessor(), SetActiveProbing(), and ns3::TypeId::SetParent().
|
private |
Definition at line 321 of file sta-wifi-mac.cc.
References ASSOCIATED, and m_state.
Referenced by Enqueue(), and Receive().
|
private |
Definition at line 327 of file sta-wifi-mac.cc.
References m_state, and WAIT_ASSOC_RESP.
Referenced by Receive().
|
private |
Definition at line 289 of file sta-wifi-mac.cc.
References BEACON_MISSED, ns3::EventId::Cancel(), ns3::EventId::IsRunning(), m_beaconWatchdog, m_beaconWatchdogEnd, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), SetState(), and TryToEnsureAssociated().
Referenced by RestartBeaconWatchdog().
|
private |
Definition at line 281 of file sta-wifi-mac.cc.
References NS_LOG_FUNCTION, SendProbeRequest(), SetState(), and WAIT_PROBE_RESP.
Referenced by SendProbeRequest().
|
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 403 of file sta-wifi-mac.cc.
References ASSOCIATED, BEACON_MISSED, ns3::EventId::Cancel(), ns3::RegularWifiMac::DeaggregateAmsduAndForward(), ns3::RegularWifiMac::ForwardUp(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetAddr3(), ns3::RegularWifiMac::GetAddress(), ns3::MgtProbeResponseHeader::GetBeaconIntervalUs(), ns3::RegularWifiMac::GetBssid(), ns3::WifiPhy::GetBssMembershipSelector(), ns3::WifiMode::GetDataRate(), ns3::MgtAssocResponseHeader::GetHtCapabilities(), ns3::WifiPhy::GetMcs(), ns3::WifiPhy::GetMode(), ns3::WifiPhy::GetNBssMembershipSelectors(), ns3::WifiPhy::GetNMcs(), ns3::WifiPhy::GetNModes(), ns3::RegularWifiMac::GetSsid(), ns3::MgtProbeResponseHeader::GetSsid(), ns3::MgtAssocResponseHeader::GetStatusCode(), ns3::MgtAssocResponseHeader::GetSupportedRates(), ns3::MgtProbeResponseHeader::GetSupportedRates(), IsAssociated(), ns3::WifiMacHeader::IsAssocReq(), ns3::WifiMacHeader::IsAssocResp(), ns3::SupportedRates::IsBasicRate(), ns3::WifiMacHeader::IsBeacon(), ns3::WifiMacHeader::IsCtl(), ns3::WifiMacHeader::IsData(), ns3::Ssid::IsEqual(), ns3::WifiMacHeader::IsFromDs(), ns3::Mac48Address::IsGroup(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::WifiMacHeader::IsProbeReq(), ns3::WifiMacHeader::IsProbeResp(), ns3::WifiMacHeader::IsQosAmsdu(), ns3::WifiMacHeader::IsQosData(), ns3::EventId::IsRunning(), ns3::StatusCode::IsSuccess(), ns3::HtCapabilities::IsSupportedMcs(), ns3::SupportedRates::IsSupportedRate(), ns3::WifiMacHeader::IsToDs(), IsWaitAssocResp(), m_assocRequestEvent, ns3::RegularWifiMac::m_htSupported, ns3::RegularWifiMac::m_linkUp, m_maxMissedBeacons, ns3::RegularWifiMac::m_phy, m_probeRequestEvent, m_state, ns3::RegularWifiMac::m_stationManager, ns3::WifiMac::NotifyRxDrop(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::RegularWifiMac::Receive(), REFUSED, ns3::Packet::RemoveHeader(), RestartBeaconWatchdog(), SendAssociationRequest(), ns3::RegularWifiMac::SetBssid(), SetState(), WAIT_ASSOC_RESP, and WAIT_PROBE_RESP.
|
private |
Definition at line 308 of file sta-wifi-mac.cc.
References ns3::Simulator::GetDelayLeft(), ns3::EventId::IsExpired(), m_beaconWatchdog, m_beaconWatchdogEnd, MissedBeacons(), ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::Simulator::Schedule().
Referenced by Receive().
|
private |
Definition at line 195 of file sta-wifi-mac.cc.
References ns3::Packet::AddHeader(), AssocRequestTimeout(), ns3::EventId::Cancel(), ns3::RegularWifiMac::GetAddress(), ns3::RegularWifiMac::GetBssid(), GetHtCapabilities(), ns3::RegularWifiMac::GetSsid(), GetSupportedRates(), ns3::EventId::IsRunning(), m_assocRequestEvent, m_assocRequestTimeout, ns3::RegularWifiMac::m_dca, ns3::RegularWifiMac::m_htSupported, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetAssocReq(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetNoOrder(), and ns3::MgtAssocRequestHeader::SetSsid().
Referenced by AssocRequestTimeout(), and Receive().
|
private |
Definition at line 158 of file sta-wifi-mac.cc.
References ns3::Packet::AddHeader(), ns3::EventId::Cancel(), ns3::RegularWifiMac::GetAddress(), ns3::Mac48Address::GetBroadcast(), GetHtCapabilities(), ns3::RegularWifiMac::GetSsid(), GetSupportedRates(), ns3::EventId::IsRunning(), ns3::RegularWifiMac::m_dca, ns3::RegularWifiMac::m_htSupported, m_probeRequestEvent, m_probeRequestTimeout, NS_LOG_FUNCTION, ProbeRequestTimeout(), ns3::Simulator::Schedule(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetNoOrder(), ns3::WifiMacHeader::SetProbeReq(), and ns3::MgtProbeRequestHeader::SetSsid().
Referenced by ProbeRequestTimeout(), and TryToEnsureAssociated().
|
private |
Definition at line 144 of file sta-wifi-mac.cc.
References ns3::EventId::Cancel(), m_probeRequestEvent, NS_LOG_FUNCTION, ns3::Simulator::ScheduleNow(), and TryToEnsureAssociated().
Referenced by GetTypeId().
void ns3::StaWifiMac::SetAssocRequestTimeout | ( | Time | timeout | ) |
timeout | If no association response is received within the specified timeout, the station sends a new association request. |
Definition at line 130 of file sta-wifi-mac.cc.
References m_assocRequestTimeout, NS_LOG_FUNCTION, and timeout.
void ns3::StaWifiMac::SetMaxMissedBeacons | ( | uint32_t | missed | ) |
missed | the number of beacons which must be missed before a new association sequence is started. |
Definition at line 116 of file sta-wifi-mac.cc.
References m_maxMissedBeacons, and NS_LOG_FUNCTION.
void ns3::StaWifiMac::SetProbeRequestTimeout | ( | Time | timeout | ) |
timeout | If no probe response is received within the specified timeout, the station sends a new probe request. |
Definition at line 123 of file sta-wifi-mac.cc.
References m_probeRequestTimeout, NS_LOG_FUNCTION, and timeout.
|
private |
Definition at line 633 of file sta-wifi-mac.cc.
References ASSOCIATED, ns3::RegularWifiMac::GetBssid(), m_assocLogger, m_deAssocLogger, and m_state.
Referenced by AssocRequestTimeout(), MissedBeacons(), ProbeRequestTimeout(), Receive(), and TryToEnsureAssociated().
void ns3::StaWifiMac::StartActiveAssociation | ( | void | ) |
Start an active association sequence immediately.
Definition at line 137 of file sta-wifi-mac.cc.
References NS_LOG_FUNCTION, and TryToEnsureAssociated().
|
private |
Definition at line 232 of file sta-wifi-mac.cc.
References ASSOCIATED, BEACON_MISSED, ns3::RegularWifiMac::m_linkDown, m_state, NS_LOG_FUNCTION, REFUSED, SendProbeRequest(), SetState(), WAIT_ASSOC_RESP, and WAIT_PROBE_RESP.
Referenced by Enqueue(), MissedBeacons(), SetActiveProbing(), and StartActiveAssociation().
|
private |
Definition at line 123 of file sta-wifi-mac.h.
Referenced by GetTypeId(), and SetState().
|
private |
Definition at line 118 of file sta-wifi-mac.h.
Referenced by Receive(), and SendAssociationRequest().
|
private |
Definition at line 116 of file sta-wifi-mac.h.
Referenced by GetTypeId(), SendAssociationRequest(), and SetAssocRequestTimeout().
|
private |
Definition at line 119 of file sta-wifi-mac.h.
Referenced by MissedBeacons(), and RestartBeaconWatchdog().
|
private |
Definition at line 120 of file sta-wifi-mac.h.
Referenced by MissedBeacons(), and RestartBeaconWatchdog().
|
private |
Definition at line 124 of file sta-wifi-mac.h.
Referenced by GetTypeId(), and SetState().
|
private |
Definition at line 121 of file sta-wifi-mac.h.
Referenced by GetTypeId(), Receive(), and SetMaxMissedBeacons().
|
private |
Definition at line 117 of file sta-wifi-mac.h.
Referenced by Receive(), SendProbeRequest(), and SetActiveProbing().
|
private |
Definition at line 115 of file sta-wifi-mac.h.
Referenced by GetTypeId(), SendProbeRequest(), and SetProbeRequestTimeout().
|
private |
Definition at line 114 of file sta-wifi-mac.h.
Referenced by IsAssociated(), IsWaitAssocResp(), Receive(), SetState(), and TryToEnsureAssociated().