hold a list of per-remote-station state. More...
#include <wifi-remote-station-manager.h>
Public Member Functions | |
WifiRemoteStationManager () | |
virtual | ~WifiRemoteStationManager () |
void | AddBasicMode (WifiMode mode) |
void | AddSupportedMode (Mac48Address address, WifiMode mode) |
WifiMode | GetAckMode (Mac48Address address, WifiMode dataMode) |
WifiMode | GetBasicMode (uint32_t i) const |
WifiMode | GetCtsMode (Mac48Address address, WifiMode rtsMode) |
WifiMode | GetDataMode (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fullPacketSize) |
WifiMode | GetDefaultMode (void) const |
uint32_t | GetFragmentationThreshold (void) const |
uint32_t | GetFragmentOffset (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber) |
uint32_t | GetFragmentSize (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber) |
WifiRemoteStationInfo | GetInfo (Mac48Address address) |
uint32_t | GetMaxSlrc (void) const |
uint32_t | GetMaxSsrc (void) const |
uint32_t | GetNBasicModes (void) const |
WifiMode | GetNonUnicastMode (void) const |
uint32_t | GetRtsCtsThreshold (void) const |
WifiMode | GetRtsMode (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
bool | IsAssociated (Mac48Address address) const |
bool | IsBrandNew (Mac48Address address) const |
bool | IsLastFragment (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber) |
bool | IsWaitAssocTxOk (Mac48Address address) const |
bool | NeedDataRetransmission (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
bool | NeedFragmentation (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
bool | NeedRts (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
bool | NeedRtsRetransmission (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
void | PrepareForQueue (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fullPacketSize) |
void | RecordDisassociated (Mac48Address address) |
void | RecordGotAssocTxFailed (Mac48Address address) |
void | RecordGotAssocTxOk (Mac48Address address) |
void | RecordWaitAssocTxOk (Mac48Address address) |
void | ReportDataFailed (Mac48Address address, const WifiMacHeader *header) |
void | ReportDataOk (Mac48Address address, const WifiMacHeader *header, double ackSnr, WifiMode ackMode, double dataSnr) |
void | ReportFinalDataFailed (Mac48Address address, const WifiMacHeader *header) |
void | ReportFinalRtsFailed (Mac48Address address, const WifiMacHeader *header) |
void | ReportRtsFailed (Mac48Address address, const WifiMacHeader *header) |
void | ReportRtsOk (Mac48Address address, const WifiMacHeader *header, double ctsSnr, WifiMode ctsMode, double rtsSnr) |
void | ReportRxOk (Mac48Address address, const WifiMacHeader *header, double rxSnr, WifiMode txMode) |
void | Reset (void) |
void | Reset (Mac48Address address) |
void | SetFragmentationThreshold (uint32_t threshold) |
void | SetMaxSlrc (uint32_t maxSlrc) |
void | SetMaxSsrc (uint32_t maxSsrc) |
void | SetRtsCtsThreshold (uint32_t threshold) |
virtual void | SetupPhy (Ptr< WifiPhy > phy) |
![]() | |
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 | Start (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) |
This method returns the TypeId associated to ns3::WifiRemoteStationManager. |
Protected Member Functions | |
virtual void | DoDispose (void) |
uint32_t | GetNSupported (const WifiRemoteStation *station) const |
WifiMode | GetSupported (const WifiRemoteStation *station, uint32_t i) const |
![]() | |
Object (const Object &o) | |
virtual void | DoStart (void) |
virtual void | NotifyNewAggregate (void) |
Private Types | |
typedef std::vector < WifiRemoteStation * > | Stations |
typedef std::vector < WifiRemoteStationState * > | StationStates |
Private Member Functions | |
virtual WifiRemoteStation * | DoCreateStation (void) const =0 |
virtual WifiMode | DoGetDataMode (WifiRemoteStation *station, uint32_t size)=0 |
virtual WifiMode | DoGetRtsMode (WifiRemoteStation *station)=0 |
virtual bool | DoNeedDataRetransmission (WifiRemoteStation *station, Ptr< const Packet > packet, bool normally) |
virtual bool | DoNeedFragmentation (WifiRemoteStation *station, Ptr< const Packet > packet, bool normally) |
virtual bool | DoNeedRts (WifiRemoteStation *station, Ptr< const Packet > packet, bool normally) |
virtual bool | DoNeedRtsRetransmission (WifiRemoteStation *station, Ptr< const Packet > packet, bool normally) |
virtual void | DoReportDataFailed (WifiRemoteStation *station)=0 |
virtual void | DoReportDataOk (WifiRemoteStation *station, double ackSnr, WifiMode ackMode, double dataSnr)=0 |
virtual void | DoReportFinalDataFailed (WifiRemoteStation *station)=0 |
virtual void | DoReportFinalRtsFailed (WifiRemoteStation *station)=0 |
virtual void | DoReportRtsFailed (WifiRemoteStation *station)=0 |
virtual void | DoReportRtsOk (WifiRemoteStation *station, double ctsSnr, WifiMode ctsMode, double rtsSnr)=0 |
virtual void | DoReportRxOk (WifiRemoteStation *station, double rxSnr, WifiMode txMode)=0 |
WifiMode | GetControlAnswerMode (Mac48Address address, WifiMode reqMode) |
uint32_t | GetNFragments (Ptr< const Packet > packet) |
virtual bool | IsLowLatency (void) const =0 |
WifiRemoteStation * | Lookup (Mac48Address address, uint8_t tid) const |
WifiRemoteStation * | Lookup (Mac48Address address, const WifiMacHeader *header) const |
Find a remote station by its remote address and TID taken from MAC header. | |
WifiRemoteStationState * | LookupState (Mac48Address address) const |
Private Attributes | |
double | m_avgSlrcCoefficient |
WifiModeList | m_bssBasicRateSet |
WifiMode | m_defaultTxMode |
uint32_t | m_fragmentationThreshold |
bool | m_isLowLatency |
TracedCallback< Mac48Address > | m_macTxDataFailed |
TracedCallback< Mac48Address > | m_macTxFinalDataFailed |
TracedCallback< Mac48Address > | m_macTxFinalRtsFailed |
TracedCallback< Mac48Address > | m_macTxRtsFailed |
uint32_t | m_maxSlrc |
uint32_t | m_maxSsrc |
WifiMode | m_nonUnicastMode |
uint32_t | m_rtsCtsThreshold |
StationStates | m_states |
Stations | m_stations |
Ptr< WifiPhy > | m_wifiPhy |
hold a list of per-remote-station state.
Definition at line 81 of file wifi-remote-station-manager.h.
|
private |
Definition at line 398 of file wifi-remote-station-manager.h.
|
private |
Definition at line 399 of file wifi-remote-station-manager.h.
ns3::WifiRemoteStationManager::WifiRemoteStationManager | ( | ) |
Definition at line 190 of file wifi-remote-station-manager.cc.
|
virtual |
Definition at line 194 of file wifi-remote-station-manager.cc.
void ns3::WifiRemoteStationManager::AddBasicMode | ( | WifiMode | mode | ) |
Definition at line 743 of file wifi-remote-station-manager.cc.
References GetBasicMode(), GetNBasicModes(), and m_bssBasicRateSet.
Referenced by ns3::StaWifiMac::Receive(), and ns3::MeshWifiInterfaceMac::Receive().
void ns3::WifiRemoteStationManager::AddSupportedMode | ( | Mac48Address | address, |
WifiMode | mode | ||
) |
Invoked in a STA or AP to store the set of modes supported by a destination which is also supported locally. The set of supported modes includes the BSSBasicRateSet.
Definition at line 274 of file wifi-remote-station-manager.cc.
References ns3::Mac48Address::IsGroup(), LookupState(), and NS_ASSERT.
Referenced by ns3::AdhocWifiMac::Enqueue(), ns3::MeshWifiInterfaceMac::ForwardDown(), ns3::StaWifiMac::Receive(), ns3::ApWifiMac::Receive(), ns3::MeshWifiInterfaceMac::Receive(), and Reset().
|
privatepure virtual |
Referenced by Lookup().
|
protectedvirtual |
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::Object.
Definition at line 198 of file wifi-remote-station-manager.cc.
References m_states, and m_stations.
|
privatepure virtual |
station | the station with which we need to communicate |
size | size of the packet or fragment we want to send |
Note: This method is called before sending a unicast packet or a fragment of a unicast packet to decide which transmission mode to use.
Referenced by GetDataMode(), and PrepareForQueue().
|
privatepure virtual |
station | the station with which we need to communicate |
Note: This method is called before sending an rts to a station to decide which transmission mode to use for the rts.
Referenced by GetRtsMode(), and PrepareForQueue().
|
privatevirtual |
station | the station with which we need to communicate |
packet | the packet to send |
normally | indicates whether the normal 802.11 data retransmission mechanism would request that the data is retransmitted or not. |
Note: This method is called after a unicast packet transmission has been attempted and has failed.
Definition at line 791 of file wifi-remote-station-manager.cc.
Referenced by NeedDataRetransmission().
|
privatevirtual |
station | the station with which we need to communicate |
packet | the packet to send |
normally | indicates whether the normal 802.11 data fragmentation mechanism would request that the data packet is fragmented or not. |
Note: This method is called before sending a unicast packet.
Definition at line 797 of file wifi-remote-station-manager.cc.
Referenced by NeedFragmentation().
|
privatevirtual |
station | the station with which we need to communicate |
packet | the packet to send |
normally | indicates whether the normal 802.11 rts enable mechanism would request that the rts is sent or not. |
Note: This method is called before a unicast packet is sent on the medium.
Definition at line 779 of file wifi-remote-station-manager.cc.
Referenced by NeedRts().
|
privatevirtual |
station | the station with which we need to communicate |
packet | the packet to send |
normally | indicates whether the normal 802.11 rts enable mechanism would request that the rts is retransmitted or not. |
Note: This method is called after an rts/cts handshake has been attempted and has failed.
Definition at line 785 of file wifi-remote-station-manager.cc.
Referenced by NeedRtsRetransmission().
|
privatepure virtual |
|
privatepure virtual |
|
privatepure virtual |
|
privatepure virtual |
|
privatepure virtual |
|
privatepure virtual |
|
privatepure virtual |
WifiMode ns3::WifiRemoteStationManager::GetAckMode | ( | Mac48Address | address, |
WifiMode | dataMode | ||
) |
address | |
dataMode | the transmission mode used to send an ACK we just received |
Definition at line 657 of file wifi-remote-station-manager.cc.
References GetControlAnswerMode(), ns3::Mac48Address::IsGroup(), and NS_ASSERT.
Referenced by ns3::MacLow::GetAckTxModeForData().
WifiMode ns3::WifiRemoteStationManager::GetBasicMode | ( | uint32_t | i | ) | const |
Definition at line 760 of file wifi-remote-station-manager.cc.
References m_bssBasicRateSet, and NS_ASSERT.
Referenced by AddBasicMode(), ns3::MeshWifiInterfaceMac::CheckSupportedRates(), ns3::IdealWifiManager::DoGetRtsMode(), GetNonUnicastMode(), ns3::ApWifiMac::GetSupportedRates(), ns3::MeshWifiInterfaceMac::GetSupportedRates(), and ns3::ApWifiMac::Receive().
|
private |
The standard has relatively unambiguous rules for selecting a control response rate (the below is quoted from IEEE 802.11-2007, Section 9.6):
To allow the transmitting STA to calculate the contents of the Duration/ID field, a STA responding to a received frame shall transmit its Control Response frame (either CTS or ACK), other than the BlockAck control frame, at the highest rate in the BSSBasicRateSet parameter that is less than or equal to the rate of the immediately previous frame in the frame exchange sequence (as defined in 9.12) and that is of the same modulation class (see 9.6.1) as the received frame...
If no suitable basic rate was found, we search the mandatory rates. The standard (IEEE 802.11-2007, Section 9.6) says:
...If no rate contained in the BSSBasicRateSet parameter meets these conditions, then the control frame sent in response to a received frame shall be transmitted at the highest mandatory rate of the PHY that is less than or equal to the rate of the received frame, and that is of the same modulation class as the received frame. In addition, the Control Response frame shall be sent using the same PHY options as the received frame, unless they conflict with the requirement to use the BSSBasicRateSet parameter.
TODO: Note that we're ignoring the last sentence for now, because there is not yet any manipulation here of PHY options.
If we still haven't found a suitable rate for the response then someone has messed up the simulation config. This probably means that the WifiPhyStandard is not set correctly, or that a rate that is not supported by the PHY has been explicitly requested in a WifiRemoteStationManager (or descendant) configuration.
Either way, it is serious - we can either disobey the standard or fail, and I have chosen to do the latter...
Definition at line 545 of file wifi-remote-station-manager.cc.
References GetDefaultMode(), ns3::WifiPhy::GetMode(), ns3::WifiMode::GetModulationClass(), ns3::WifiPhy::GetNModes(), ns3::WifiMode::GetPhyRate(), ns3::WifiMode::IsMandatory(), m_bssBasicRateSet, m_wifiPhy, and NS_FATAL_ERROR.
Referenced by GetAckMode(), and GetCtsMode().
WifiMode ns3::WifiRemoteStationManager::GetCtsMode | ( | Mac48Address | address, |
WifiMode | rtsMode | ||
) |
address | remote address |
rtsMode | the transmission mode used to send an RTS we just received |
Definition at line 651 of file wifi-remote-station-manager.cc.
References GetControlAnswerMode(), ns3::Mac48Address::IsGroup(), and NS_ASSERT.
Referenced by ns3::MacLow::GetCtsTxModeForRts().
WifiMode ns3::WifiRemoteStationManager::GetDataMode | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet, | ||
uint32_t | fullPacketSize | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
fullPacketSize | the size of the packet after its 802.11 MAC header has been added. |
Definition at line 358 of file wifi-remote-station-manager.cc.
References DoGetDataMode(), ns3::TxModeTag::GetDataMode(), GetNonUnicastMode(), ns3::Mac48Address::IsGroup(), IsLowLatency(), Lookup(), and NS_ASSERT.
Referenced by ns3::dot11s::AirtimeLinkMetricCalculator::CalculateMetric(), and ns3::MacLow::GetDataTxMode().
WifiMode ns3::WifiRemoteStationManager::GetDefaultMode | ( | void | ) | const |
Definition at line 726 of file wifi-remote-station-manager.cc.
References m_defaultTxMode.
Referenced by ns3::IdealWifiManager::DoGetDataMode(), ns3::IdealWifiManager::DoGetRtsMode(), GetControlAnswerMode(), LookupState(), and Reset().
uint32_t ns3::WifiRemoteStationManager::GetFragmentationThreshold | ( | void | ) | const |
Definition at line 240 of file wifi-remote-station-manager.cc.
References m_fragmentationThreshold.
Referenced by GetFragmentOffset(), GetFragmentSize(), GetNFragments(), and NeedFragmentation().
uint32_t ns3::WifiRemoteStationManager::GetFragmentOffset | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet, | ||
uint32_t | fragmentNumber | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
fragmentNumber | the fragment index of the next fragment to send (starts at zero). |
Definition at line 528 of file wifi-remote-station-manager.cc.
References GetFragmentationThreshold(), GetNFragments(), ns3::Mac48Address::IsGroup(), and NS_ASSERT.
Referenced by ns3::EdcaTxopN::GetFragmentOffset(), and ns3::DcaTxop::GetFragmentOffset().
uint32_t ns3::WifiRemoteStationManager::GetFragmentSize | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet, | ||
uint32_t | fragmentNumber | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
fragmentNumber | the fragment index of the next fragment to send (starts at zero). |
Definition at line 508 of file wifi-remote-station-manager.cc.
References GetFragmentationThreshold(), GetNFragments(), ns3::Packet::GetSize(), ns3::Mac48Address::IsGroup(), and NS_ASSERT.
Referenced by ns3::EdcaTxopN::GetFragmentSize(), ns3::DcaTxop::GetFragmentSize(), ns3::EdcaTxopN::GetNextFragmentSize(), and ns3::DcaTxop::GetNextFragmentSize().
WifiRemoteStationInfo ns3::WifiRemoteStationManager::GetInfo | ( | Mac48Address | address | ) |
Definition at line 664 of file wifi-remote-station-manager.cc.
References LookupState(), and ns3::WifiRemoteStationState::m_info.
Referenced by ns3::dot11s::AirtimeLinkMetricCalculator::CalculateMetric().
uint32_t ns3::WifiRemoteStationManager::GetMaxSlrc | ( | void | ) | const |
Definition at line 230 of file wifi-remote-station-manager.cc.
References m_maxSlrc.
Referenced by NeedDataRetransmission().
uint32_t ns3::WifiRemoteStationManager::GetMaxSsrc | ( | void | ) | const |
Definition at line 225 of file wifi-remote-station-manager.cc.
References m_maxSsrc.
Referenced by NeedRtsRetransmission().
uint32_t ns3::WifiRemoteStationManager::GetNBasicModes | ( | void | ) | const |
Definition at line 755 of file wifi-remote-station-manager.cc.
References m_bssBasicRateSet.
Referenced by AddBasicMode(), ns3::MeshWifiInterfaceMac::CheckSupportedRates(), ns3::IdealWifiManager::DoGetRtsMode(), ns3::ApWifiMac::GetSupportedRates(), ns3::MeshWifiInterfaceMac::GetSupportedRates(), and ns3::ApWifiMac::Receive().
Definition at line 501 of file wifi-remote-station-manager.cc.
References GetFragmentationThreshold(), and ns3::Packet::GetSize().
Referenced by GetFragmentOffset(), GetFragmentSize(), and IsLastFragment().
WifiMode ns3::WifiRemoteStationManager::GetNonUnicastMode | ( | void | ) | const |
Definition at line 766 of file wifi-remote-station-manager.cc.
References GetBasicMode(), and m_nonUnicastMode.
Referenced by GetDataMode().
|
protected |
Definition at line 810 of file wifi-remote-station-manager.cc.
References ns3::WifiRemoteStationState::m_operationalRateSet, and ns3::WifiRemoteStation::m_state.
Referenced by ns3::MinstrelWifiManager::CheckInit(), ns3::AmrrWifiManager::DoGetDataMode(), ns3::OnoeWifiManager::DoGetDataMode(), ns3::IdealWifiManager::DoGetDataMode(), ns3::AarfWifiManager::DoReportDataOk(), ns3::AarfcdWifiManager::DoReportDataOk(), ns3::CaraWifiManager::DoReportDataOk(), ns3::RraaWifiManager::GetMaxRate(), GetSupported(), ns3::AmrrWifiManager::IncreaseRate(), ns3::AmrrWifiManager::IsMaxRate(), ns3::AmrrWifiManager::UpdateMode(), and ns3::OnoeWifiManager::UpdateMode().
uint32_t ns3::WifiRemoteStationManager::GetRtsCtsThreshold | ( | void | ) | const |
Definition at line 235 of file wifi-remote-station-manager.cc.
References m_rtsCtsThreshold.
Referenced by NeedRts().
WifiMode ns3::WifiRemoteStationManager::GetRtsMode | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
Definition at line 376 of file wifi-remote-station-manager.cc.
References DoGetRtsMode(), ns3::TxModeTag::GetRtsMode(), ns3::Mac48Address::IsGroup(), IsLowLatency(), Lookup(), and NS_ASSERT.
Referenced by ns3::MacLow::GetRtsTxMode().
|
protected |
Definition at line 804 of file wifi-remote-station-manager.cc.
References GetNSupported(), ns3::WifiRemoteStationState::m_operationalRateSet, ns3::WifiRemoteStation::m_state, and NS_ASSERT.
Referenced by ns3::AarfWifiManager::DoGetDataMode(), ns3::CaraWifiManager::DoGetDataMode(), ns3::AarfcdWifiManager::DoGetDataMode(), ns3::AmrrWifiManager::DoGetDataMode(), ns3::OnoeWifiManager::DoGetDataMode(), ns3::ArfWifiManager::DoGetDataMode(), ns3::IdealWifiManager::DoGetDataMode(), ns3::RraaWifiManager::DoGetDataMode(), ns3::MinstrelWifiManager::DoGetDataMode(), ns3::AarfWifiManager::DoGetRtsMode(), ns3::AarfcdWifiManager::DoGetRtsMode(), ns3::CaraWifiManager::DoGetRtsMode(), ns3::AmrrWifiManager::DoGetRtsMode(), ns3::OnoeWifiManager::DoGetRtsMode(), ns3::ArfWifiManager::DoGetRtsMode(), ns3::RraaWifiManager::DoGetRtsMode(), ns3::MinstrelWifiManager::DoGetRtsMode(), ns3::RraaWifiManager::GetThresholds(), and ns3::MinstrelWifiManager::RateInit().
|
static |
This method returns the TypeId associated to ns3::WifiRemoteStationManager.
This object is accessible through the following paths with Config::Set and Config::Connect:
Attributes defined for this type:
TraceSources defined for this type:
Reimplemented from ns3::Object.
Reimplemented in ns3::MinstrelWifiManager, ns3::IdealWifiManager, ns3::ArfWifiManager, ns3::OnoeWifiManager, ns3::AmrrWifiManager, ns3::RraaWifiManager, ns3::AarfcdWifiManager, ns3::CaraWifiManager, ns3::AarfWifiManager, and ns3::ConstantRateWifiManager.
Definition at line 135 of file wifi-remote-station-manager.cc.
References IsLowLatency(), m_fragmentationThreshold, m_macTxDataFailed, m_macTxFinalDataFailed, m_macTxFinalRtsFailed, m_macTxRtsFailed, m_maxSlrc, m_maxSsrc, m_nonUnicastMode, m_rtsCtsThreshold, ns3::MakeTraceSourceAccessor(), and ns3::TypeId::SetParent().
bool ns3::WifiRemoteStationManager::IsAssociated | ( | Mac48Address | address | ) | const |
Definition at line 298 of file wifi-remote-station-manager.cc.
References ns3::WifiRemoteStationState::GOT_ASSOC_TX_OK, ns3::Mac48Address::IsGroup(), LookupState(), and ns3::WifiRemoteStationState::m_state.
Referenced by ns3::ApWifiMac::Enqueue(), and ns3::ApWifiMac::Receive().
bool ns3::WifiRemoteStationManager::IsBrandNew | ( | Mac48Address | address | ) | const |
Definition at line 289 of file wifi-remote-station-manager.cc.
References ns3::WifiRemoteStationState::BRAND_NEW, ns3::Mac48Address::IsGroup(), LookupState(), and ns3::WifiRemoteStationState::m_state.
Referenced by ns3::AdhocWifiMac::Enqueue(), and ns3::MeshWifiInterfaceMac::ForwardDown().
bool ns3::WifiRemoteStationManager::IsLastFragment | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet, | ||
uint32_t | fragmentNumber | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
fragmentNumber | the fragment index of the next fragment to send (starts at zero). |
Definition at line 537 of file wifi-remote-station-manager.cc.
References GetNFragments(), ns3::Mac48Address::IsGroup(), and NS_ASSERT.
Referenced by ns3::EdcaTxopN::IsLastFragment(), and ns3::DcaTxop::IsLastFragment().
|
privatepure virtual |
Note: In this context, low vs high latency is defined in IEEE 802.11 Rate Adaptation: A Practical Approach, by M. Lacage, M.H. Manshaei, and T. Turletti.
Referenced by GetDataMode(), GetRtsMode(), GetTypeId(), and PrepareForQueue().
bool ns3::WifiRemoteStationManager::IsWaitAssocTxOk | ( | Mac48Address | address | ) | const |
Definition at line 307 of file wifi-remote-station-manager.cc.
References ns3::Mac48Address::IsGroup(), LookupState(), ns3::WifiRemoteStationState::m_state, and ns3::WifiRemoteStationState::WAIT_ASSOC_TX_OK.
Referenced by ns3::ApWifiMac::TxFailed(), and ns3::ApWifiMac::TxOk().
|
private |
Definition at line 702 of file wifi-remote-station-manager.cc.
References DoCreateStation(), LookupState(), ns3::WifiRemoteStation::m_slrc, ns3::WifiRemoteStation::m_ssrc, ns3::WifiRemoteStation::m_state, m_stations, and ns3::WifiRemoteStation::m_tid.
Referenced by GetDataMode(), GetRtsMode(), Lookup(), NeedDataRetransmission(), NeedFragmentation(), NeedRts(), NeedRtsRetransmission(), PrepareForQueue(), ReportDataFailed(), ReportDataOk(), ReportFinalDataFailed(), ReportFinalRtsFailed(), ReportRtsFailed(), ReportRtsOk(), and ReportRxOk().
|
private |
Find a remote station by its remote address and TID taken from MAC header.
Definition at line 688 of file wifi-remote-station-manager.cc.
References ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::IsQosData(), and Lookup().
|
private |
Definition at line 671 of file wifi-remote-station-manager.cc.
References ns3::WifiRemoteStationState::BRAND_NEW, GetDefaultMode(), ns3::WifiRemoteStationState::m_address, ns3::WifiRemoteStationState::m_operationalRateSet, ns3::WifiRemoteStationState::m_state, and m_states.
Referenced by AddSupportedMode(), GetInfo(), IsAssociated(), IsBrandNew(), IsWaitAssocTxOk(), Lookup(), RecordDisassociated(), RecordGotAssocTxFailed(), RecordGotAssocTxOk(), RecordWaitAssocTxOk(), and Reset().
bool ns3::WifiRemoteStationManager::NeedDataRetransmission | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
Definition at line 480 of file wifi-remote-station-manager.cc.
References DoNeedDataRetransmission(), GetMaxSlrc(), ns3::Mac48Address::IsGroup(), Lookup(), and NS_ASSERT.
Referenced by ns3::EdcaTxopN::NeedDataRetransmission(), and ns3::DcaTxop::NeedDataRetransmission().
bool ns3::WifiRemoteStationManager::NeedFragmentation | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
Definition at line 489 of file wifi-remote-station-manager.cc.
References DoNeedFragmentation(), GetFragmentationThreshold(), ns3::WifiMacHeader::GetSize(), ns3::Packet::GetSize(), ns3::Mac48Address::IsGroup(), Lookup(), and ns3::WIFI_MAC_FCS_LENGTH.
Referenced by ns3::EdcaTxopN::NeedFragmentation(), and ns3::DcaTxop::NeedFragmentation().
bool ns3::WifiRemoteStationManager::NeedRts | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
Definition at line 460 of file wifi-remote-station-manager.cc.
References DoNeedRts(), GetRtsCtsThreshold(), ns3::WifiMacHeader::GetSize(), ns3::Packet::GetSize(), ns3::Mac48Address::IsGroup(), Lookup(), and ns3::WIFI_MAC_FCS_LENGTH.
Referenced by ns3::EdcaTxopN::NeedRts(), and ns3::DcaTxop::NeedRts().
bool ns3::WifiRemoteStationManager::NeedRtsRetransmission | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
Definition at line 471 of file wifi-remote-station-manager.cc.
References DoNeedRtsRetransmission(), GetMaxSsrc(), ns3::Mac48Address::IsGroup(), Lookup(), and NS_ASSERT.
Referenced by ns3::EdcaTxopN::NeedRtsRetransmission(), and ns3::DcaTxop::NeedRtsRetransmission().
void ns3::WifiRemoteStationManager::PrepareForQueue | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet, | ||
uint32_t | fullPacketSize | ||
) |
address | remote address |
header | MAC header |
packet | the packet to queue |
fullPacketSize | the size of the packet after its 802.11 MAC header has been added. |
This method is typically invoked just before queuing a packet for transmission. It is a no-op unless the IsLowLatency attribute of the attached ns3::WifiRemoteStationManager is set to false, in which case, the tx parameters of the packet are calculated and stored in the packet as a tag. These tx parameters are later retrieved from GetDadaMode and GetRtsMode.
Definition at line 340 of file wifi-remote-station-manager.cc.
References ns3::Packet::AddPacketTag(), data, DoGetDataMode(), DoGetRtsMode(), ns3::Mac48Address::IsGroup(), IsLowLatency(), and Lookup().
Referenced by ns3::EdcaTxopN::PushFront(), ns3::DcaTxop::Queue(), and ns3::EdcaTxopN::Queue().
void ns3::WifiRemoteStationManager::RecordDisassociated | ( | Mac48Address | address | ) |
Definition at line 334 of file wifi-remote-station-manager.cc.
References ns3::WifiRemoteStationState::DISASSOC, ns3::Mac48Address::IsGroup(), LookupState(), ns3::WifiRemoteStationState::m_state, and NS_ASSERT.
Referenced by ns3::AdhocWifiMac::Enqueue(), ns3::MeshWifiInterfaceMac::ForwardDown(), and ns3::ApWifiMac::Receive().
void ns3::WifiRemoteStationManager::RecordGotAssocTxFailed | ( | Mac48Address | address | ) |
Definition at line 328 of file wifi-remote-station-manager.cc.
References ns3::WifiRemoteStationState::DISASSOC, ns3::Mac48Address::IsGroup(), LookupState(), ns3::WifiRemoteStationState::m_state, and NS_ASSERT.
Referenced by ns3::ApWifiMac::TxFailed().
void ns3::WifiRemoteStationManager::RecordGotAssocTxOk | ( | Mac48Address | address | ) |
Definition at line 322 of file wifi-remote-station-manager.cc.
References ns3::WifiRemoteStationState::GOT_ASSOC_TX_OK, ns3::Mac48Address::IsGroup(), LookupState(), ns3::WifiRemoteStationState::m_state, and NS_ASSERT.
Referenced by ns3::ApWifiMac::TxOk().
void ns3::WifiRemoteStationManager::RecordWaitAssocTxOk | ( | Mac48Address | address | ) |
Definition at line 316 of file wifi-remote-station-manager.cc.
References ns3::Mac48Address::IsGroup(), LookupState(), ns3::WifiRemoteStationState::m_state, NS_ASSERT, and ns3::WifiRemoteStationState::WAIT_ASSOC_TX_OK.
Referenced by ns3::ApWifiMac::Receive().
void ns3::WifiRemoteStationManager::ReportDataFailed | ( | Mac48Address | address, |
const WifiMacHeader * | header | ||
) |
Should be invoked whenever the AckTimeout associated to a transmission attempt expires.
Definition at line 400 of file wifi-remote-station-manager.cc.
References DoReportDataFailed(), ns3::Mac48Address::IsGroup(), Lookup(), m_macTxDataFailed, and NS_ASSERT.
Referenced by ns3::MacLow::BlockAckTimeout(), ns3::MacLow::FastAckTimeout(), ns3::MacLow::NormalAckTimeout(), and ns3::MacLow::SuperFastAckTimeout().
void ns3::WifiRemoteStationManager::ReportDataOk | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
double | ackSnr, | ||
WifiMode | ackMode, | ||
double | dataSnr | ||
) |
Should be invoked whenever we receive the Ack associated to a data packet we just sent.
Definition at line 419 of file wifi-remote-station-manager.cc.
References DoReportDataOk(), ns3::Mac48Address::IsGroup(), Lookup(), and NS_ASSERT.
Referenced by ns3::MacLow::ReceiveOk().
void ns3::WifiRemoteStationManager::ReportFinalDataFailed | ( | Mac48Address | address, |
const WifiMacHeader * | header | ||
) |
Should be invoked after calling ReportDataFailed if NeedDataRetransmission returns false
Definition at line 439 of file wifi-remote-station-manager.cc.
References DoReportFinalDataFailed(), ns3::Mac48Address::IsGroup(), Lookup(), m_macTxFinalDataFailed, and NS_ASSERT.
Referenced by ns3::EdcaTxopN::MissedAck(), and ns3::DcaTxop::MissedAck().
void ns3::WifiRemoteStationManager::ReportFinalRtsFailed | ( | Mac48Address | address, |
const WifiMacHeader * | header | ||
) |
Should be invoked after calling ReportRtsFailed if NeedRtsRetransmission returns false
Definition at line 429 of file wifi-remote-station-manager.cc.
References DoReportFinalRtsFailed(), ns3::Mac48Address::IsGroup(), Lookup(), m_macTxFinalRtsFailed, and NS_ASSERT.
Referenced by ns3::EdcaTxopN::MissedCts(), and ns3::DcaTxop::MissedCts().
void ns3::WifiRemoteStationManager::ReportRtsFailed | ( | Mac48Address | address, |
const WifiMacHeader * | header | ||
) |
Should be invoked whenever the RtsTimeout associated to a transmission attempt expires.
Definition at line 391 of file wifi-remote-station-manager.cc.
References DoReportRtsFailed(), ns3::Mac48Address::IsGroup(), Lookup(), m_macTxRtsFailed, and NS_ASSERT.
Referenced by ns3::MacLow::CtsTimeout().
void ns3::WifiRemoteStationManager::ReportRtsOk | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
double | ctsSnr, | ||
WifiMode | ctsMode, | ||
double | rtsSnr | ||
) |
Should be invoked whenever we receive the Cts associated to an RTS we just sent.
Definition at line 409 of file wifi-remote-station-manager.cc.
References DoReportRtsOk(), ns3::Mac48Address::IsGroup(), Lookup(), and NS_ASSERT.
Referenced by ns3::MacLow::ReceiveOk().
void ns3::WifiRemoteStationManager::ReportRxOk | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
double | rxSnr, | ||
WifiMode | txMode | ||
) |
address | remote address |
header | MAC header |
rxSnr | the snr of the packet received |
txMode | the transmission mode used for the packet received. |
Should be invoked whenever a packet is successfully received.
Definition at line 449 of file wifi-remote-station-manager.cc.
References DoReportRxOk(), ns3::Mac48Address::IsGroup(), and Lookup().
Referenced by ns3::MacLow::ReceiveOk().
void ns3::WifiRemoteStationManager::Reset | ( | void | ) |
Definition at line 731 of file wifi-remote-station-manager.cc.
References ns3::WifiMode::IsMandatory(), m_bssBasicRateSet, m_defaultTxMode, m_stations, and NS_ASSERT.
Referenced by ns3::MacLow::NotifySwitchingStartNow(), and SetupPhy().
void ns3::WifiRemoteStationManager::Reset | ( | Mac48Address | address | ) |
Invoked in an AP upon disassociation of a specific STA.
Definition at line 266 of file wifi-remote-station-manager.cc.
References AddSupportedMode(), GetDefaultMode(), ns3::Mac48Address::IsGroup(), LookupState(), and NS_ASSERT.
void ns3::WifiRemoteStationManager::SetFragmentationThreshold | ( | uint32_t | threshold | ) |
Definition at line 260 of file wifi-remote-station-manager.cc.
References m_fragmentationThreshold.
void ns3::WifiRemoteStationManager::SetMaxSlrc | ( | uint32_t | maxSlrc | ) |
Definition at line 250 of file wifi-remote-station-manager.cc.
References m_maxSlrc.
void ns3::WifiRemoteStationManager::SetMaxSsrc | ( | uint32_t | maxSsrc | ) |
Definition at line 245 of file wifi-remote-station-manager.cc.
References m_maxSsrc.
void ns3::WifiRemoteStationManager::SetRtsCtsThreshold | ( | uint32_t | threshold | ) |
Definition at line 255 of file wifi-remote-station-manager.cc.
References m_rtsCtsThreshold.
Reimplemented in ns3::MinstrelWifiManager, and ns3::IdealWifiManager.
Definition at line 212 of file wifi-remote-station-manager.cc.
References ns3::WifiPhy::GetMode(), m_defaultTxMode, m_wifiPhy, and Reset().
Referenced by ns3::WifiNetDevice::CompleteConfig().
|
private |
Definition at line 430 of file wifi-remote-station-manager.h.
|
private |
This member is the list of WifiMode objects that comprise the BSSBasicRateSet parameter. This list is constructed through calls to WifiRemoteStationManager::AddBasicMode(), and an API that allows external access to it is available through WifiRemoteStationManager::GetNBasicModes() and WifiRemoteStationManager::GetBasicMode().
Definition at line 422 of file wifi-remote-station-manager.h.
Referenced by AddBasicMode(), GetBasicMode(), GetControlAnswerMode(), GetNBasicModes(), and Reset().
|
private |
Definition at line 412 of file wifi-remote-station-manager.h.
Referenced by GetDefaultMode(), Reset(), and SetupPhy().
|
private |
Definition at line 428 of file wifi-remote-station-manager.h.
Referenced by GetFragmentationThreshold(), GetTypeId(), and SetFragmentationThreshold().
|
private |
Definition at line 424 of file wifi-remote-station-manager.h.
|
private |
The trace source fired when the transmission of a single data packet has failed
Definition at line 438 of file wifi-remote-station-manager.h.
Referenced by GetTypeId(), and ReportDataFailed().
|
private |
The trace source fired when the transmission of a data packet has exceeded the maximum number of attempts
Definition at line 448 of file wifi-remote-station-manager.h.
Referenced by GetTypeId(), and ReportFinalDataFailed().
|
private |
The trace source fired when the transmission of a RTS has exceeded the maximum number of attempts
Definition at line 443 of file wifi-remote-station-manager.h.
Referenced by GetTypeId(), and ReportFinalRtsFailed().
|
private |
The trace source fired when the transmission of a single RTS has failed
Definition at line 434 of file wifi-remote-station-manager.h.
Referenced by GetTypeId(), and ReportRtsFailed().
|
private |
Definition at line 426 of file wifi-remote-station-manager.h.
Referenced by GetMaxSlrc(), GetTypeId(), and SetMaxSlrc().
|
private |
Definition at line 425 of file wifi-remote-station-manager.h.
Referenced by GetMaxSsrc(), GetTypeId(), and SetMaxSsrc().
|
private |
Definition at line 429 of file wifi-remote-station-manager.h.
Referenced by GetNonUnicastMode(), and GetTypeId().
|
private |
Definition at line 427 of file wifi-remote-station-manager.h.
Referenced by GetRtsCtsThreshold(), GetTypeId(), and SetRtsCtsThreshold().
|
private |
Definition at line 401 of file wifi-remote-station-manager.h.
Referenced by DoDispose(), and LookupState().
|
private |
Definition at line 402 of file wifi-remote-station-manager.h.
Referenced by DoDispose(), Lookup(), and Reset().
This is a pointer to the WifiPhy associated with this WifiRemoteStationManager that is set on call to WifiRemoteStationManager::SetupPhy(). Through this pointer the station manager can determine PHY characteristics, such as the set of all transmission rates that may be supported (the "DeviceRateSet").
Definition at line 411 of file wifi-remote-station-manager.h.
Referenced by GetControlAnswerMode(), and SetupPhy().