Public Member Functions | Static Public Member Functions | Protected Member Functions

ns3::WifiRemoteStationManager Class Reference

hold a list of per-remote-station state. More...

#include <wifi-remote-station-manager.h>

Inheritance diagram for ns3::WifiRemoteStationManager:
Inheritance graph
[legend]
Collaboration diagram for ns3::WifiRemoteStationManager:
Collaboration graph
[legend]

List of all members.

Public Member Functions

virtual void SetupPhy (Ptr< WifiPhy > phy)
uint32_t GetMaxSsrc (void) const
uint32_t GetMaxSlrc (void) const
uint32_t GetRtsCtsThreshold (void) const
uint32_t GetFragmentationThreshold (void) const
void SetMaxSsrc (uint32_t maxSsrc)
void SetMaxSlrc (uint32_t maxSlrc)
void SetRtsCtsThreshold (uint32_t threshold)
void SetFragmentationThreshold (uint32_t threshold)
void Reset (void)
void AddBasicMode (WifiMode mode)
WifiMode GetDefaultMode (void) const
uint32_t GetNBasicModes (void) const
WifiMode GetBasicMode (uint32_t i) const
WifiMode GetNonUnicastMode (void) const
void Reset (Mac48Address address)
void AddSupportedMode (Mac48Address address, WifiMode mode)
bool IsBrandNew (Mac48Address address) const
bool IsAssociated (Mac48Address address) const
bool IsWaitAssocTxOk (Mac48Address address) const
void RecordWaitAssocTxOk (Mac48Address address)
void RecordGotAssocTxOk (Mac48Address address)
void RecordGotAssocTxFailed (Mac48Address address)
void RecordDisassociated (Mac48Address address)
void PrepareForQueue (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fullPacketSize)
WifiMode GetDataMode (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fullPacketSize)
WifiMode GetRtsMode (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet)
void ReportRtsFailed (Mac48Address address, const WifiMacHeader *header)
void ReportDataFailed (Mac48Address address, const WifiMacHeader *header)
void ReportRtsOk (Mac48Address address, const WifiMacHeader *header, double ctsSnr, WifiMode ctsMode, double rtsSnr)
void ReportDataOk (Mac48Address address, const WifiMacHeader *header, double ackSnr, WifiMode ackMode, double dataSnr)
void ReportFinalRtsFailed (Mac48Address address, const WifiMacHeader *header)
void ReportFinalDataFailed (Mac48Address address, const WifiMacHeader *header)
void ReportRxOk (Mac48Address address, const WifiMacHeader *header, double rxSnr, WifiMode txMode)
bool NeedRts (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet)
bool NeedRtsRetransmission (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet)
bool NeedDataRetransmission (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet)
bool NeedFragmentation (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet)
uint32_t GetFragmentSize (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber)
uint32_t GetFragmentOffset (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber)
bool IsLastFragment (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber)
WifiMode GetCtsMode (Mac48Address address, WifiMode rtsMode)
WifiMode GetAckMode (Mac48Address address, WifiMode dataMode)
WifiRemoteStationInfo GetInfo (Mac48Address address)

Static Public Member Functions

static TypeId GetTypeId (void)
 This method returns the TypeId associated to ns3::WifiRemoteStationManager.

Protected Member Functions

virtual void DoDispose (void)
WifiMode GetSupported (const WifiRemoteStation *station, uint32_t i) const
uint32_t GetNSupported (const WifiRemoteStation *station) const

Detailed Description

hold a list of per-remote-station state.

See also:
ns3::WifiRemoteStation.

Member Function Documentation

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.

virtual void ns3::WifiRemoteStationManager::DoDispose ( void   )  [protected, virtual]

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.

WifiMode ns3::WifiRemoteStationManager::GetAckMode ( Mac48Address  address,
WifiMode  dataMode 
)
Parameters:
address 
dataMode the transmission mode used to send an ACK we just received
Returns:
the transmission mode to use for the ACK to complete the data/ACK handshake.
WifiMode ns3::WifiRemoteStationManager::GetCtsMode ( Mac48Address  address,
WifiMode  rtsMode 
)
Parameters:
address remote address
rtsMode the transmission mode used to send an RTS we just received
Returns:
the transmission mode to use for the CTS to complete the RTS/CTS handshake.
WifiMode ns3::WifiRemoteStationManager::GetDataMode ( Mac48Address  address,
const WifiMacHeader header,
Ptr< const Packet packet,
uint32_t  fullPacketSize 
)
Parameters:
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.
Returns:
the transmission mode to use to send this packet
uint32_t ns3::WifiRemoteStationManager::GetFragmentOffset ( Mac48Address  address,
const WifiMacHeader header,
Ptr< const Packet packet,
uint32_t  fragmentNumber 
)
Parameters:
address remote address
header MAC header
packet the packet to send
fragmentNumber the fragment index of the next fragment to send (starts at zero).
Returns:
the offset within the original packet where this fragment starts.
uint32_t ns3::WifiRemoteStationManager::GetFragmentSize ( Mac48Address  address,
const WifiMacHeader header,
Ptr< const Packet packet,
uint32_t  fragmentNumber 
)
Parameters:
address remote address
header MAC header
packet the packet to send
fragmentNumber the fragment index of the next fragment to send (starts at zero).
Returns:
the size of the corresponding fragment.
WifiMode ns3::WifiRemoteStationManager::GetRtsMode ( Mac48Address  address,
const WifiMacHeader header,
Ptr< const Packet packet 
)
Parameters:
address remote address
header MAC header
packet the packet to send
Returns:
the transmission mode to use to send the RTS prior to the transmission of the data packet itself.
static TypeId ns3::WifiRemoteStationManager::GetTypeId ( void   )  [static]

This method returns the TypeId associated to ns3::WifiRemoteStationManager.

This object is accessible through the following paths with Config::Set and Config::Connect:

  • /NodeList/[i]/DeviceList/[i]/$ns3::AlohaNoackNetDevice/Phy/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::AlohaNoackNetDevice/Phy/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::BaseStationNetDevice/BsIpcsPacketClassifier/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::BaseStationNetDevice/BsIpcsPacketClassifier/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::BaseStationNetDevice/LinkManager/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::BaseStationNetDevice/LinkManager/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::BaseStationNetDevice/SSManager/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::BaseStationNetDevice/SSManager/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::BaseStationNetDevice/ServiceFlowManager/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::BaseStationNetDevice/ServiceFlowManager/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::NonCommunicatingNetDevice/Phy/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::NonCommunicatingNetDevice/Phy/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::SubscriberStationNetDevice/Classifier/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::SubscriberStationNetDevice/Classifier/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::SubscriberStationNetDevice/LinkManager/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::SubscriberStationNetDevice/LinkManager/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::SubscriberStationNetDevice/SSScheduler/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::SubscriberStationNetDevice/SSScheduler/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::UanNetDevice/Channel/NoiseModel/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::UanNetDevice/Channel/NoiseModel/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::UanNetDevice/Channel/PropagationModel/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::UanNetDevice/Channel/PropagationModel/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::UanNetDevice/Mac/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::UanNetDevice/Mac/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::UanNetDevice/Phy/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::UanNetDevice/Phy/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::UanNetDevice/Transducer/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::UanNetDevice/Transducer/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/$ns3::BaseStationNetDevice/BsIpcsPacketClassifier/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/$ns3::BaseStationNetDevice/BsIpcsPacketClassifier/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/$ns3::BaseStationNetDevice/LinkManager/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/$ns3::BaseStationNetDevice/LinkManager/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/$ns3::BaseStationNetDevice/SSManager/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/$ns3::BaseStationNetDevice/SSManager/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/$ns3::BaseStationNetDevice/ServiceFlowManager/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/$ns3::BaseStationNetDevice/ServiceFlowManager/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/$ns3::SubscriberStationNetDevice/Classifier/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/$ns3::SubscriberStationNetDevice/Classifier/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/$ns3::SubscriberStationNetDevice/LinkManager/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/$ns3::SubscriberStationNetDevice/LinkManager/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/$ns3::SubscriberStationNetDevice/SSScheduler/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/$ns3::SubscriberStationNetDevice/SSScheduler/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/BandwidthManager/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/BandwidthManager/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/BurstProfileManager/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/BurstProfileManager/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/Channel/$ns3::UanChannel/NoiseModel/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/Channel/$ns3::UanChannel/NoiseModel/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/Channel/$ns3::UanChannel/PropagationModel/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/Channel/$ns3::UanChannel/PropagationModel/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/ConnectionManager/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/ConnectionManager/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/Phy/Channel/$ns3::UanChannel/NoiseModel/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/Phy/Channel/$ns3::UanChannel/NoiseModel/$ns3::WifiRemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/Phy/Channel/$ns3::UanChannel/PropagationModel/$ns3::WifiNetDevice/RemoteStationManager
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/Phy/Channel/$ns3::UanChannel/PropagationModel/$ns3::WifiRemoteStationManager

Attributes defined for this type:

  • IsLowLatency: If true, we attempt to modelize a so-called low-latency device: a device where decisions about tx parameters can be made on a per-packet basis and feedback about the transmission of each packet is obtained before sending the next. Otherwise, we modelize a high-latency device, that is a device where we cannot update our decision about tx parameters after every packet transmission.
  • MaxSsrc: The maximum number of retransmission attempts for an RTS. This value will not have any effect on some rate control algorithms.
  • MaxSlrc: The maximum number of retransmission attempts for a DATA packet. This value will not have any effect on some rate control algorithms.
  • RtsCtsThreshold: If the size of the data packet + LLC header + MAC header + FCS trailer is bigger than this value, we use an RTS/CTS handshake before sending the data, as per IEEE Std. 802.11-2007, Section 9.2.6. This value will not have any effect on some rate control algorithms.
  • FragmentationThreshold: If the size of the data packet + LLC header + MAC header + FCS trailer is biggerthan this value, we fragment it such that the size of the fragments are equal or smaller than this value, as per IEEE Std. 802.11-2007, Section 9.4. This value will not have any effect on some rate control algorithms.
  • NonUnicastMode: Wifi mode used for non-unicast transmissions.
    • Set with class: WifiModeValue
    • Underlying type: WifiMode
    • Initial value: Invalid-WifiMode
    • Flags: construct write read

TraceSources defined for this type:

  • MacTxRtsFailed: The transmission of a RTS by the MAC layer has failed
  • MacTxDataFailed: The transmission of a data packet by the MAC layer has failed
  • MacTxFinalRtsFailed: The transmission of a RTS has exceeded the maximum number of attempts
  • MacTxFinalDataFailed: The transmission of a data packet has exceeded the maximum number of attempts

Reimplemented from ns3::Object.

Reimplemented in ns3::AarfWifiManager, ns3::AarfcdWifiManager, ns3::AmrrWifiManager, ns3::ArfWifiManager, ns3::CaraWifiManager, ns3::ConstantRateWifiManager, ns3::IdealWifiManager, ns3::MinstrelWifiManager, ns3::OnoeWifiManager, and ns3::RraaWifiManager.

bool ns3::WifiRemoteStationManager::IsLastFragment ( Mac48Address  address,
const WifiMacHeader header,
Ptr< const Packet packet,
uint32_t  fragmentNumber 
)
Parameters:
address remote address
header MAC header
packet the packet to send
fragmentNumber the fragment index of the next fragment to send (starts at zero).
Returns:
true if this is the last fragment, false otherwise.
bool ns3::WifiRemoteStationManager::NeedDataRetransmission ( Mac48Address  address,
const WifiMacHeader header,
Ptr< const Packet packet 
)
Parameters:
address remote address
header MAC header
packet the packet to send
Returns:
true if we want to resend a packet after a failed transmission attempt, false otherwise.
bool ns3::WifiRemoteStationManager::NeedFragmentation ( Mac48Address  address,
const WifiMacHeader header,
Ptr< const Packet packet 
)
Parameters:
address remote address
header MAC header
packet the packet to send
Returns:
true if this packet should be fragmented, false otherwise.
bool ns3::WifiRemoteStationManager::NeedRts ( Mac48Address  address,
const WifiMacHeader header,
Ptr< const Packet packet 
)
Parameters:
address remote address
header MAC header
packet the packet to send
Returns:
true if we want to use an RTS/CTS handshake for this packet before sending it, false otherwise.
bool ns3::WifiRemoteStationManager::NeedRtsRetransmission ( Mac48Address  address,
const WifiMacHeader header,
Ptr< const Packet packet 
)
Parameters:
address remote address
header MAC header
packet the packet to send
Returns:
true if we want to restart a failed RTS/CTS handshake, false otherwise.
void ns3::WifiRemoteStationManager::PrepareForQueue ( Mac48Address  address,
const WifiMacHeader header,
Ptr< const Packet packet,
uint32_t  fullPacketSize 
)
Parameters:
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.

void ns3::WifiRemoteStationManager::ReportDataFailed ( Mac48Address  address,
const WifiMacHeader header 
)

Should be invoked whenever the AckTimeout associated to a transmission attempt expires.

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.

void ns3::WifiRemoteStationManager::ReportFinalDataFailed ( Mac48Address  address,
const WifiMacHeader header 
)

Should be invoked after calling ReportDataFailed if NeedDataRetransmission returns false

void ns3::WifiRemoteStationManager::ReportFinalRtsFailed ( Mac48Address  address,
const WifiMacHeader header 
)

Should be invoked after calling ReportRtsFailed if NeedRtsRetransmission returns false

void ns3::WifiRemoteStationManager::ReportRtsFailed ( Mac48Address  address,
const WifiMacHeader header 
)

Should be invoked whenever the RtsTimeout associated to a transmission attempt expires.

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.

void ns3::WifiRemoteStationManager::ReportRxOk ( Mac48Address  address,
const WifiMacHeader header,
double  rxSnr,
WifiMode  txMode 
)
Parameters:
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.

void ns3::WifiRemoteStationManager::Reset ( Mac48Address  address  ) 

Invoked in an AP upon disassociation of a specific STA.


The documentation for this class was generated from the following files: