A Discrete-Event Network Simulator
API
ns3::WifiTxVector Class Reference

This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters which are to be used for a transmission. More...

#include "wifi-tx-vector.h"

+ Collaboration diagram for ns3::WifiTxVector:

Public Member Functions

 WifiTxVector ()
 
 WifiTxVector (WifiMode mode, uint8_t powerLevel, WifiPreamble preamble, uint16_t guardInterval, uint8_t nTx, uint8_t nss, uint8_t ness, uint16_t channelWidth, bool aggregation, bool stbc)
 Create a TXVECTOR with the given parameters. More...
 
uint16_t GetChannelWidth (void) const
 
uint16_t GetGuardInterval (void) const
 
WifiMode GetMode (void) const
 
uint8_t GetNess (void) const
 
uint8_t GetNss (void) const
 
uint8_t GetNTx (void) const
 
WifiPreamble GetPreambleType (void) const
 
uint8_t GetTxPowerLevel (void) const
 
bool IsAggregation (void) const
 Checks whether the PSDU contains A-MPDU. More...
 
bool IsStbc (void) const
 Check if STBC is used or not. More...
 
bool IsValid (void) const
 The standard disallows certain combinations of WifiMode, number of spatial streams, and channel widths. More...
 
void SetAggregation (bool aggregation)
 Sets if PSDU contains A-MPDU. More...
 
void SetChannelWidth (uint16_t channelWidth)
 Sets the selected channelWidth (in MHz) More...
 
void SetGuardInterval (uint16_t guardInterval)
 Sets the guard interval duration (in nanoseconds) More...
 
void SetMode (WifiMode mode)
 Sets the selected payload transmission mode. More...
 
void SetNess (uint8_t ness)
 Sets the Ness number refer to IEEE 802.11n Table 20-6 for explanation. More...
 
void SetNss (uint8_t nss)
 Sets the number of Nss refer to IEEE 802.11n Table 20-28 for explanation and range. More...
 
void SetNTx (uint8_t nTx)
 Sets the number of TX antennas. More...
 
void SetPreambleType (WifiPreamble preamble)
 Sets the preamble type. More...
 
void SetStbc (bool stbc)
 Sets if STBC is being used. More...
 
void SetTxPowerLevel (uint8_t powerlevel)
 Sets the selected transmission power level. More...
 

Private Attributes

bool m_aggregation
 Flag whether the PSDU contains A-MPDU. More...
 
uint16_t m_channelWidth
 channel width in MHz More...
 
uint16_t m_guardInterval
 guard interval duration in nanoseconds More...
 
WifiMode m_mode
 The DATARATE parameter in Table 15-4. More...
 
bool m_modeInitialized
 Internal initialization flag. More...
 
uint8_t m_ness
 number of spatial streams in beamforming More...
 
uint8_t m_nss
 number of spatial streams More...
 
uint8_t m_nTx
 number of TX antennas More...
 
WifiPreamble m_preamble
 preamble More...
 
bool m_stbc
 STBC used or not. More...
 
uint8_t m_txPowerLevel
 The TXPWR_LEVEL parameter in Table 15-4. More...
 
bool m_txPowerLevelInitialized
 Internal initialization flag. More...
 

Detailed Description

This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters which are to be used for a transmission.

See IEEE 802.11-2007 15.2.6 "Transmit PLCP", and also 15.4.4.2 "PMD_SAP peer-to-peer service primitive parameters".

If this class is constructed with the constructor that takes no arguments, then the client must explicitly set the mode and transmit power level parameters before using them. Default member initializers are provided for the other parameters, to conform to a non-MIMO/long guard configuration, although these may also be explicitly set after object construction.

When used in a infrastructure context, WifiTxVector values should be drawn from WifiRemoteStationManager parameters since rate adaptation is responsible for picking the mode, number of streams, etc., but in the case in which there is no such manager (e.g. mesh), the client still needs to initialize at least the mode and transmit power level appropriately.

Note
the above reference is valid for the DSSS PHY only (clause 15). TXVECTOR is defined also for the other PHYs, however they don't include the TXPWRLVL explicitly in the TXVECTOR. This is somewhat strange, since all PHYs actually have a PMD_TXPWRLVL.request primitive. We decide to include the power level in WifiTxVector for all PHYs, since it serves better our purposes, and furthermore it seems close to the way real devices work (e.g., madwifi).

Definition at line 61 of file wifi-tx-vector.h.

Constructor & Destructor Documentation

ns3::WifiTxVector::WifiTxVector ( )

Definition at line 26 of file wifi-tx-vector.cc.

ns3::WifiTxVector::WifiTxVector ( WifiMode  mode,
uint8_t  powerLevel,
WifiPreamble  preamble,
uint16_t  guardInterval,
uint8_t  nTx,
uint8_t  nss,
uint8_t  ness,
uint16_t  channelWidth,
bool  aggregation,
bool  stbc 
)

Create a TXVECTOR with the given parameters.

Parameters
modeWifiMode
powerLeveltransmission power level
preamblepreamble type
guardIntervalthe guard interval duration in nanoseconds
nTxthe number of TX antennas
nssthe number of spatial STBC streams (NSS)
nessthe number of extension spatial streams (NESS)
channelWidththe channel width in MHz
aggregationenable or disable MPDU aggregation
stbcenable or disable STBC

Definition at line 40 of file wifi-tx-vector.cc.

Member Function Documentation

uint16_t ns3::WifiTxVector::GetGuardInterval ( void  ) const
WifiMode ns3::WifiTxVector::GetMode ( void  ) const
Returns
the selected payload transmission mode

Definition at line 66 of file wifi-tx-vector.cc.

References m_mode, m_modeInitialized, and NS_FATAL_ERROR.

Referenced by ns3::IdealWifiManager::AddSnrThreshold(), ns3::MacLow::AggregateToAmpdu(), ns3::InterferenceHelper::CalculateChunkSuccessRate(), ns3::ErrorRateModel::CalculateSnr(), ns3::MinstrelHtWifiManager::DoGetDataTxVector(), ns3::MacLow::ForwardDown(), ns3::MacLow::GetAckDuration(), ns3::NistErrorRateModel::GetChunkSuccessRate(), ns3::YansErrorRateModel::GetChunkSuccessRate(), ns3::MacLow::GetCtsDuration(), ns3::WaveMacLow::GetDataTxVector(), ns3::WifiPhy::GetPayloadDuration(), ns3::Event::GetPayloadMode(), ns3::WifiPhy::GetPlcpHeaderDuration(), ns3::WifiPhy::GetPlcpHeaderMode(), ns3::WifiPhy::GetPlcpPreambleDuration(), ns3::IdealWifiManager::GetSnrThreshold(), ns3::WifiRemoteStationManager::NeedCtsToSelf(), ns3::WifiRemoteStationManager::NeedRts(), ns3::operator<<(), ns3::WifiPhyHelper::PcapSniffRxEvent(), ns3::WifiPhyHelper::PcapSniffTxEvent(), ns3::MacLow::ReceiveOk(), ns3::MacLow::SendBlockAckAfterAmpdu(), ns3::MacLow::SendCtsAfterRts(), ns3::MacLow::SendCtsToSelf(), ns3::MacLow::SendDataAfterCts(), ns3::MacLow::SendDataPacket(), ns3::WifiPhy::SendPacket(), ns3::MacLow::SendRtsForPacket(), ns3::WifiPhy::StartReceivePacket(), ns3::WifiPhy::StartReceivePreambleAndHeader(), ns3::SpectrumWifiPhy::StartTx(), Bug2483TestCase::StoreDistinctTuple(), ns3::WifiPhyStateHelper::SwitchFromRxEndOk(), ns3::WifiPhyStateHelper::SwitchToTx(), PowerRateAdaptationTest::TestAparf(), PowerRateAdaptationTest::TestParf(), and PowerRateAdaptationTest::TestRrpaa().

+ Here is the caller graph for this function:

uint8_t ns3::WifiTxVector::GetNess ( void  ) const
Returns
the number of Ness

Definition at line 116 of file wifi-tx-vector.cc.

References m_ness.

Referenced by ns3::WifiPhy::GetPlcpTrainingSymbolDuration(), ns3::operator<<(), ns3::WifiPhyHelper::PcapSniffRxEvent(), and ns3::WifiPhyHelper::PcapSniffTxEvent().

+ Here is the caller graph for this function:

uint8_t ns3::WifiTxVector::GetNTx ( void  ) const
Returns
the number of TX antennas

Definition at line 104 of file wifi-tx-vector.cc.

References m_nTx.

Referenced by ns3::InterferenceHelper::CalculateChunkSuccessRate(), and ns3::operator<<().

+ Here is the caller graph for this function:

bool ns3::WifiTxVector::IsAggregation ( void  ) const

Checks whether the PSDU contains A-MPDU.

Returns
true if this PSDU has A-MPDU aggregation, false otherwise.

Definition at line 122 of file wifi-tx-vector.cc.

References m_aggregation.

Referenced by ns3::operator<<(), ns3::WifiPhyHelper::PcapSniffRxEvent(), and ns3::WifiPhyHelper::PcapSniffTxEvent().

+ Here is the caller graph for this function:

bool ns3::WifiTxVector::IsStbc ( void  ) const

Check if STBC is used or not.

Returns
true if STBC is used, false otherwise

Definition at line 128 of file wifi-tx-vector.cc.

References m_stbc.

Referenced by ns3::WifiPhy::GetPayloadDuration(), ns3::operator<<(), ns3::WifiPhyHelper::PcapSniffRxEvent(), and ns3::WifiPhyHelper::PcapSniffTxEvent().

+ Here is the caller graph for this function:

bool ns3::WifiTxVector::IsValid ( void  ) const

The standard disallows certain combinations of WifiMode, number of spatial streams, and channel widths.

This method can be used to check whether this WifiTxVector contains an invalid combination.

Returns
true if the WifiTxVector parameters are allowed by the standard

Definition at line 196 of file wifi-tx-vector.cc.

References ns3::WifiMode::GetUniqueName(), m_channelWidth, m_mode, and m_nss.

Referenced by ns3::IdealWifiManager::DoGetDataTxVector(), and ns3::MinstrelHtWifiManager::IsValidMcs().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::WifiTxVector::SetAggregation ( bool  aggregation)

Sets if PSDU contains A-MPDU.

Parameters
aggregationwhether the PSDU contains A-MPDU or not.

Definition at line 184 of file wifi-tx-vector.cc.

References m_aggregation.

Referenced by ns3::MacLow::ForwardDown().

+ Here is the caller graph for this function:

void ns3::WifiTxVector::SetNTx ( uint8_t  nTx)

Sets the number of TX antennas.

Parameters
nTx

Definition at line 166 of file wifi-tx-vector.cc.

References m_nTx.

Referenced by ns3::WifiRemoteStationManager::GetDataTxVector().

+ Here is the caller graph for this function:

Member Data Documentation

bool ns3::WifiTxVector::m_aggregation
private

Flag whether the PSDU contains A-MPDU.

Definition at line 217 of file wifi-tx-vector.h.

Referenced by IsAggregation(), and SetAggregation().

uint16_t ns3::WifiTxVector::m_channelWidth
private

channel width in MHz

Definition at line 212 of file wifi-tx-vector.h.

Referenced by GetChannelWidth(), IsValid(), and SetChannelWidth().

uint16_t ns3::WifiTxVector::m_guardInterval
private

guard interval duration in nanoseconds

Definition at line 213 of file wifi-tx-vector.h.

Referenced by GetGuardInterval(), and SetGuardInterval().

WifiMode ns3::WifiTxVector::m_mode
private

The DATARATE parameter in Table 15-4.

It is the value that will be passed to PMD_RATE.request

Definition at line 205 of file wifi-tx-vector.h.

Referenced by GetMode(), IsValid(), and SetMode().

bool ns3::WifiTxVector::m_modeInitialized
private

Internal initialization flag.

Definition at line 220 of file wifi-tx-vector.h.

Referenced by GetMode(), and SetMode().

uint8_t ns3::WifiTxVector::m_ness
private

number of spatial streams in beamforming

Definition at line 216 of file wifi-tx-vector.h.

Referenced by GetNess(), and SetNess().

uint8_t ns3::WifiTxVector::m_nss
private

number of spatial streams

Definition at line 215 of file wifi-tx-vector.h.

Referenced by GetNss(), IsValid(), and SetNss().

uint8_t ns3::WifiTxVector::m_nTx
private

number of TX antennas

Definition at line 214 of file wifi-tx-vector.h.

Referenced by GetNTx(), and SetNTx().

WifiPreamble ns3::WifiTxVector::m_preamble
private

preamble

Definition at line 211 of file wifi-tx-vector.h.

Referenced by GetPreambleType(), and SetPreambleType().

bool ns3::WifiTxVector::m_stbc
private

STBC used or not.

Definition at line 218 of file wifi-tx-vector.h.

Referenced by IsStbc(), and SetStbc().

uint8_t ns3::WifiTxVector::m_txPowerLevel
private

The TXPWR_LEVEL parameter in Table 15-4.

It is the value that will be passed to PMD_TXPWRLVL.request

Definition at line 208 of file wifi-tx-vector.h.

Referenced by GetTxPowerLevel(), and SetTxPowerLevel().

bool ns3::WifiTxVector::m_txPowerLevelInitialized
private

Internal initialization flag.

Definition at line 221 of file wifi-tx-vector.h.

Referenced by GetTxPowerLevel(), and SetTxPowerLevel().


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