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"
Public Member Functions | |
WifiTxVector () | |
WifiTxVector (WifiMode mode, uint8_t powerLevel, WifiPreamble preamble, uint16_t guardInterval, uint8_t nTx, uint8_t nss, uint8_t ness, uint8_t channelWidth, bool aggregation, bool stbc) | |
Create a TXVECTOR with the given parameters. More... | |
uint8_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 (uint8_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... | |
uint8_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... | |
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.
Definition at line 61 of file wifi-tx-vector.h.
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, | ||
uint8_t | channelWidth, | ||
bool | aggregation, | ||
bool | stbc | ||
) |
Create a TXVECTOR with the given parameters.
mode | WifiMode |
powerLevel | transmission power level |
preamble | preamble type |
guardInterval | the guard interval duration in nanoseconds |
nTx | the number of TX antennas |
nss | the number of spatial STBC streams (NSS) |
ness | the number of extension spatial streams (NESS) |
channelWidth | the channel width in MHz |
aggregation | enable or disable MPDU aggregation |
stbc | enable or disable STBC |
Definition at line 40 of file wifi-tx-vector.cc.
uint8_t ns3::WifiTxVector::GetChannelWidth | ( | void | ) | const |
Definition at line 92 of file wifi-tx-vector.cc.
References m_channelWidth.
Referenced by ns3::InterferenceHelper::CalculatePlcpHeaderPer(), ns3::InterferenceHelper::CalculatePlcpPayloadPer(), ns3::IdealWifiManager::DoGetDataTxVector(), ns3::SpectrumWifiPhy::GetCenterFrequencyForChannelWidth(), ns3::YansErrorRateModel::GetChunkSuccessRate(), ns3::WifiMode::GetDataRate(), ns3::WaveMacLow::GetDataTxVector(), ns3::WifiPhy::GetPayloadDuration(), ns3::WifiMode::GetPhyRate(), ns3::WifiPhy::GetPlcpHeaderDuration(), ns3::WifiPhy::GetPlcpHeaderMode(), ns3::WifiPhy::GetPlcpPreambleDuration(), ns3::IdealWifiManager::GetSnrThreshold(), ns3::operator<<(), ns3::WifiPhyHelper::PcapSniffRxEvent(), ns3::WifiPhyHelper::PcapSniffTxEvent(), ns3::SpectrumWifiPhy::StartTx(), Bug2483TestCase::StoreDistinctTuple(), PowerRateAdaptationTest::TestAparf(), PowerRateAdaptationTest::TestParf(), and PowerRateAdaptationTest::TestRrpaa().
uint16_t ns3::WifiTxVector::GetGuardInterval | ( | void | ) | const |
Definition at line 98 of file wifi-tx-vector.cc.
References m_guardInterval.
Referenced by ns3::IdealWifiManager::DoGetDataTxVector(), ns3::WifiMode::GetDataRate(), ns3::WifiPhy::GetPayloadDuration(), ns3::WifiMode::GetPhyRate(), ns3::IdealWifiManager::GetSnrThreshold(), ns3::operator<<(), ns3::WifiPhyHelper::PcapSniffRxEvent(), ns3::WifiPhyHelper::PcapSniffTxEvent(), and PowerRateAdaptationTest::TestRrpaa().
WifiMode ns3::WifiTxVector::GetMode | ( | void | ) | const |
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::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().
uint8_t ns3::WifiTxVector::GetNess | ( | void | ) | const |
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().
uint8_t ns3::WifiTxVector::GetNss | ( | void | ) | const |
Definition at line 110 of file wifi-tx-vector.cc.
References m_nss.
Referenced by ns3::InterferenceHelper::CalculateChunkSuccessRate(), ns3::IdealWifiManager::DoGetDataTxVector(), ns3::WifiMode::GetDataRate(), ns3::WifiPhy::GetPayloadDuration(), ns3::WifiMode::GetPhyRate(), ns3::WifiPhy::GetPlcpTrainingSymbolDuration(), ns3::IdealWifiManager::GetSnrThreshold(), ns3::operator<<(), ns3::WifiPhyHelper::PcapSniffRxEvent(), ns3::WifiPhyHelper::PcapSniffTxEvent(), ns3::WifiPhy::SendPacket(), and ns3::WifiPhy::StartReceivePreambleAndHeader().
uint8_t ns3::WifiTxVector::GetNTx | ( | void | ) | const |
Definition at line 104 of file wifi-tx-vector.cc.
References m_nTx.
Referenced by ns3::InterferenceHelper::CalculateChunkSuccessRate(), and ns3::operator<<().
WifiPreamble ns3::WifiTxVector::GetPreambleType | ( | void | ) | const |
Definition at line 86 of file wifi-tx-vector.cc.
References m_preamble.
Referenced by ns3::InterferenceHelper::CalculatePlcpHeaderPer(), ns3::InterferenceHelper::CalculatePlcpPayloadPer(), ns3::WifiPhy::CalculatePlcpPreambleAndHeaderDuration(), ns3::MacLow::DeaggregateAmpduAndReceive(), ns3::MacLow::ForwardDown(), ns3::WaveMacLow::GetDataTxVector(), ns3::WifiPhy::GetPayloadDuration(), ns3::WifiPhy::GetPlcpHeaderDuration(), ns3::WifiPhy::GetPlcpHeaderMode(), ns3::WifiPhy::GetPlcpPreambleDuration(), ns3::WifiPhy::GetPlcpTrainingSymbolDuration(), ns3::operator<<(), ns3::WifiPhyHelper::PcapSniffRxEvent(), ns3::WifiPhyHelper::PcapSniffTxEvent(), ns3::MacLow::ReceiveOk(), ns3::WifiPhy::SendPacket(), ns3::WifiPhy::StartReceivePacket(), ns3::WifiPhy::StartRx(), ns3::WifiPhyStateHelper::SwitchFromRxEndOk(), and ns3::WifiPhyStateHelper::SwitchToTx().
uint8_t ns3::WifiTxVector::GetTxPowerLevel | ( | void | ) | const |
Definition at line 76 of file wifi-tx-vector.cc.
References m_txPowerLevel, m_txPowerLevelInitialized, and NS_FATAL_ERROR.
Referenced by ns3::WaveMacLow::GetDataTxVector(), ns3::operator<<(), ns3::WifiPhy::SendPacket(), ns3::YansWifiPhy::StartTx(), ns3::SpectrumWifiPhy::StartTx(), ns3::WifiPhyStateHelper::SwitchToTx(), PowerRateAdaptationTest::TestAparf(), PowerRateAdaptationTest::TestParf(), and PowerRateAdaptationTest::TestRrpaa().
bool ns3::WifiTxVector::IsAggregation | ( | void | ) | const |
Checks whether the PSDU contains A-MPDU.
Definition at line 122 of file wifi-tx-vector.cc.
References m_aggregation.
Referenced by ns3::operator<<(), ns3::WifiPhyHelper::PcapSniffRxEvent(), and ns3::WifiPhyHelper::PcapSniffTxEvent().
bool ns3::WifiTxVector::IsStbc | ( | void | ) | const |
Check if STBC is used or not.
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().
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.
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().
void ns3::WifiTxVector::SetAggregation | ( | bool | aggregation | ) |
Sets if PSDU contains A-MPDU.
aggregation | whether 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().
void ns3::WifiTxVector::SetChannelWidth | ( | uint8_t | channelWidth | ) |
Sets the selected channelWidth (in MHz)
channelWidth |
Definition at line 154 of file wifi-tx-vector.cc.
References m_channelWidth.
Referenced by ns3::MinstrelHtWifiManager::CalculateFirstMpduTxDuration(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckPayloadDuration(), TxDurationTest::CheckTxDuration(), ns3::IdealWifiManager::DoGetDataTxVector(), ns3::IdealWifiManager::DoGetRtsTxVector(), ns3::IdealWifiManager::DoInitialize(), ns3::VsaManager::DoSendVsa(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::WifiRemoteStationManager::GetCtsTxVector(), ns3::WaveMacLow::GetDataTxVector(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::MinstrelHtWifiManager::IsValidMcs(), ns3::WaveNetDevice::SendX(), and NodeStatistics::SetupPhy().
void ns3::WifiTxVector::SetGuardInterval | ( | uint16_t | guardInterval | ) |
Sets the guard interval duration (in nanoseconds)
guardInterval | the guard interval duration (in nanoseconds) |
Definition at line 160 of file wifi-tx-vector.cc.
References m_guardInterval.
Referenced by ns3::MinstrelHtWifiManager::CalculateFirstMpduTxDuration(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckPayloadDuration(), TxDurationTest::CheckTxDuration(), ns3::IdealWifiManager::DoGetDataTxVector(), ns3::IdealWifiManager::DoInitialize(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::WifiRemoteStationManager::GetCtsTxVector(), and ns3::WifiRemoteStationManager::GetDataTxVector().
void ns3::WifiTxVector::SetMode | ( | WifiMode | mode | ) |
Sets the selected payload transmission mode.
mode |
Definition at line 134 of file wifi-tx-vector.cc.
References m_mode, and m_modeInitialized.
Referenced by ns3::MinstrelHtWifiManager::CalculateFirstMpduTxDuration(), ns3::dot11s::AirtimeLinkMetricCalculator::CalculateMetric(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckPayloadDuration(), TxDurationTest::CheckTxDuration(), ns3::IdealWifiManager::DoGetDataTxVector(), ns3::IdealWifiManager::DoGetRtsTxVector(), ns3::IdealWifiManager::DoInitialize(), ns3::VsaManager::DoSendVsa(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::WifiRemoteStationManager::GetCtsTxVector(), ns3::WaveMacLow::GetDataTxVector(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::MinstrelHtWifiManager::IsValidMcs(), PsrExperiment::Send(), ns3::WaveNetDevice::Send(), CollisionExperiment::SendA(), CollisionExperiment::SendB(), ns3::WaveNetDevice::SendX(), ns3::RraaWifiManager::SetupPhy(), ns3::RrpaaWifiManager::SetupPhy(), NodeStatistics::SetupPhy(), and ns3::MinstrelWifiManager::SetupPhy().
void ns3::WifiTxVector::SetNess | ( | uint8_t | ness | ) |
Sets the Ness number refer to IEEE 802.11n Table 20-6 for explanation.
ness |
Definition at line 178 of file wifi-tx-vector.cc.
References m_ness.
Referenced by ns3::MinstrelHtWifiManager::CalculateFirstMpduTxDuration(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckPayloadDuration(), TxDurationTest::CheckTxDuration(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::WifiRemoteStationManager::GetCtsTxVector(), and ns3::WifiRemoteStationManager::GetDataTxVector().
void ns3::WifiTxVector::SetNss | ( | uint8_t | nss | ) |
Sets the number of Nss refer to IEEE 802.11n Table 20-28 for explanation and range.
nss |
Definition at line 172 of file wifi-tx-vector.cc.
References m_nss.
Referenced by ns3::MinstrelHtWifiManager::CalculateFirstMpduTxDuration(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckPayloadDuration(), TxDurationTest::CheckTxDuration(), ns3::IdealWifiManager::DoGetDataTxVector(), ns3::IdealWifiManager::DoGetRtsTxVector(), ns3::IdealWifiManager::DoInitialize(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::WifiRemoteStationManager::GetCtsTxVector(), ns3::WifiRemoteStationManager::GetDataTxVector(), and ns3::MinstrelHtWifiManager::IsValidMcs().
void ns3::WifiTxVector::SetNTx | ( | uint8_t | nTx | ) |
Sets the number of TX antennas.
nTx |
Definition at line 166 of file wifi-tx-vector.cc.
References m_nTx.
void ns3::WifiTxVector::SetPreambleType | ( | WifiPreamble | preamble | ) |
Sets the preamble type.
preamble |
Definition at line 148 of file wifi-tx-vector.cc.
References m_preamble.
Referenced by ns3::MinstrelHtWifiManager::CalculateFirstMpduTxDuration(), ns3::dot11s::AirtimeLinkMetricCalculator::CalculateMetric(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckPayloadDuration(), TxDurationTest::CheckTxDuration(), ns3::VsaManager::DoSendVsa(), ns3::MacLow::ForwardDown(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::WifiRemoteStationManager::GetCtsTxVector(), ns3::WaveMacLow::GetDataTxVector(), ns3::WifiRemoteStationManager::GetDataTxVector(), PsrExperiment::Send(), ns3::WaveNetDevice::Send(), CollisionExperiment::SendA(), CollisionExperiment::SendB(), ns3::WaveNetDevice::SendX(), ns3::RraaWifiManager::SetupPhy(), ns3::RrpaaWifiManager::SetupPhy(), NodeStatistics::SetupPhy(), and ns3::MinstrelWifiManager::SetupPhy().
void ns3::WifiTxVector::SetStbc | ( | bool | stbc | ) |
Sets if STBC is being used.
stbc | enable or disable STBC |
Definition at line 190 of file wifi-tx-vector.cc.
References m_stbc.
Referenced by ns3::MinstrelHtWifiManager::CalculateFirstMpduTxDuration(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckPayloadDuration(), TxDurationTest::CheckTxDuration(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::WifiRemoteStationManager::GetCtsTxVector(), and ns3::WifiRemoteStationManager::GetDataTxVector().
void ns3::WifiTxVector::SetTxPowerLevel | ( | uint8_t | powerlevel | ) |
Sets the selected transmission power level.
powerlevel |
Definition at line 141 of file wifi-tx-vector.cc.
References m_txPowerLevel, and m_txPowerLevelInitialized.
Referenced by ns3::VsaManager::DoSendVsa(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::WifiRemoteStationManager::GetCtsTxVector(), ns3::WaveMacLow::GetDataTxVector(), ns3::WifiRemoteStationManager::GetDataTxVector(), PsrExperiment::Send(), ns3::WaveNetDevice::Send(), InterferenceExperiment::SendA(), CollisionExperiment::SendA(), InterferenceExperiment::SendB(), CollisionExperiment::SendB(), and ns3::WaveNetDevice::SendX().
|
private |
Flag whether the PSDU contains A-MPDU.
Definition at line 217 of file wifi-tx-vector.h.
Referenced by IsAggregation(), and SetAggregation().
|
private |
channel width in MHz
Definition at line 212 of file wifi-tx-vector.h.
Referenced by GetChannelWidth(), IsValid(), and SetChannelWidth().
|
private |
guard interval duration in nanoseconds
Definition at line 213 of file wifi-tx-vector.h.
Referenced by GetGuardInterval(), and SetGuardInterval().
|
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.
|
private |
Internal initialization flag.
Definition at line 220 of file wifi-tx-vector.h.
|
private |
number of spatial streams in beamforming
Definition at line 216 of file wifi-tx-vector.h.
|
private |
number of spatial streams
Definition at line 215 of file wifi-tx-vector.h.
|
private |
number of TX antennas
Definition at line 214 of file wifi-tx-vector.h.
|
private |
preamble
Definition at line 211 of file wifi-tx-vector.h.
Referenced by GetPreambleType(), and SetPreambleType().
|
private |
STBC used or not.
Definition at line 218 of file wifi-tx-vector.h.
|
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().
|
private |
Internal initialization flag.
Definition at line 221 of file wifi-tx-vector.h.
Referenced by GetTxPowerLevel(), and SetTxPowerLevel().