wifi: WifiTxVector does no longer need to be passed together with WifiPpdu
This commit is contained in:
committed by
Sebastien Deronne
parent
558587e166
commit
9ac4410af2
@@ -346,7 +346,7 @@ HePhy::StartReceivePreamble(Ptr<const WifiPpdu> ppdu,
|
||||
Time rxDuration)
|
||||
{
|
||||
NS_LOG_FUNCTION(this << ppdu << rxDuration);
|
||||
const WifiTxVector& txVector = ppdu->GetTxVector();
|
||||
const auto& txVector = ppdu->GetTxVector();
|
||||
auto hePpdu = DynamicCast<const HePpdu>(ppdu);
|
||||
NS_ASSERT(hePpdu);
|
||||
HePpdu::TxPsdFlag psdFlag = hePpdu->GetTxPsdFlag();
|
||||
@@ -447,7 +447,7 @@ HePhy::DoGetEvent(Ptr<const WifiPpdu> ppdu, RxPowerWattPerChannelBand& rxPowersW
|
||||
if (ppdu->GetType() == WIFI_PPDU_TYPE_UL_MU)
|
||||
{
|
||||
auto uidPreamblePair = std::make_pair(ppdu->GetUid(), ppdu->GetPreamble());
|
||||
const WifiTxVector& txVector = ppdu->GetTxVector();
|
||||
const auto& txVector = ppdu->GetTxVector();
|
||||
Time rxDuration = CalculateNonOfdmaDurationForHeTb(
|
||||
txVector); // the OFDMA part of the transmission will be added later on
|
||||
const auto& currentPreambleEvents = GetCurrentPreambleEvents();
|
||||
@@ -505,7 +505,7 @@ HePhy::DoGetEvent(Ptr<const WifiPpdu> ppdu, RxPowerWattPerChannelBand& rxPowersW
|
||||
}
|
||||
else if (ppdu->GetType() == WIFI_PPDU_TYPE_DL_MU)
|
||||
{
|
||||
const WifiTxVector& txVector = ppdu->GetTxVector();
|
||||
const auto& txVector = ppdu->GetTxVector();
|
||||
Time rxDuration = CalculateNonOfdmaDurationForHeMu(
|
||||
txVector); // the OFDMA part of the transmission will be added later on
|
||||
event = CreateInterferenceEvent(ppdu, ppdu->GetTxVector(), rxDuration, rxPowersW);
|
||||
@@ -747,7 +747,7 @@ Time
|
||||
HePhy::DoStartReceivePayload(Ptr<Event> event)
|
||||
{
|
||||
NS_LOG_FUNCTION(this << *event);
|
||||
const WifiTxVector& txVector = event->GetTxVector();
|
||||
const auto& txVector = event->GetTxVector();
|
||||
|
||||
if (!txVector.IsMu())
|
||||
{
|
||||
@@ -1247,22 +1247,20 @@ HePhy::ObtainNextUid(const WifiTxVector& txVector)
|
||||
}
|
||||
|
||||
Ptr<SpectrumValue>
|
||||
HePhy::GetTxPowerSpectralDensity(double txPowerW,
|
||||
Ptr<const WifiPpdu> ppdu,
|
||||
const WifiTxVector& txVector) const
|
||||
HePhy::GetTxPowerSpectralDensity(double txPowerW, Ptr<const WifiPpdu> ppdu) const
|
||||
{
|
||||
auto hePpdu = DynamicCast<const HePpdu>(ppdu);
|
||||
NS_ASSERT(hePpdu);
|
||||
HePpdu::TxPsdFlag flag = hePpdu->GetTxPsdFlag();
|
||||
return GetTxPowerSpectralDensity(txPowerW, ppdu, txVector, flag);
|
||||
return GetTxPowerSpectralDensity(txPowerW, ppdu, flag);
|
||||
}
|
||||
|
||||
Ptr<SpectrumValue>
|
||||
HePhy::GetTxPowerSpectralDensity(double txPowerW,
|
||||
Ptr<const WifiPpdu> ppdu,
|
||||
const WifiTxVector& txVector,
|
||||
HePpdu::TxPsdFlag flag) const
|
||||
{
|
||||
const auto& txVector = ppdu->GetTxVector();
|
||||
uint16_t centerFrequency = GetCenterFrequencyForChannelWidth(txVector);
|
||||
uint16_t channelWidth = txVector.GetChannelWidth();
|
||||
NS_LOG_FUNCTION(this << centerFrequency << channelWidth << txPowerW << txVector);
|
||||
@@ -1378,7 +1376,7 @@ HePhy::GetCenterFrequencyForNonOfdmaPart(const WifiTxVector& txVector, uint16_t
|
||||
}
|
||||
|
||||
void
|
||||
HePhy::StartTx(Ptr<const WifiPpdu> ppdu, const WifiTxVector& txVector)
|
||||
HePhy::StartTx(Ptr<const WifiPpdu> ppdu)
|
||||
{
|
||||
NS_LOG_FUNCTION(this << ppdu);
|
||||
if (ppdu->GetType() == WIFI_PPDU_TYPE_UL_MU || ppdu->GetType() == WIFI_PPDU_TYPE_DL_MU)
|
||||
@@ -1395,44 +1393,38 @@ HePhy::StartTx(Ptr<const WifiPpdu> ppdu, const WifiTxVector& txVector)
|
||||
hePpdu->SetTxPsdFlag(HePpdu::PSD_NON_HE_PORTION);
|
||||
|
||||
// non-OFDMA part
|
||||
const auto& txVector = ppdu->GetTxVector();
|
||||
auto nonOfdmaDuration = ppdu->GetType() == WIFI_PPDU_TYPE_UL_MU
|
||||
? CalculateNonOfdmaDurationForHeTb(txVector)
|
||||
: CalculateNonOfdmaDurationForHeMu(txVector);
|
||||
auto nonOfdmaTxPowerSpectrum = GetTxPowerSpectralDensity(DbmToW(nonOfdmaTxPowerDbm),
|
||||
ppdu,
|
||||
txVector,
|
||||
HePpdu::PSD_NON_HE_PORTION);
|
||||
auto nonOfdmaTxPowerSpectrum =
|
||||
GetTxPowerSpectralDensity(DbmToW(nonOfdmaTxPowerDbm), ppdu, HePpdu::PSD_NON_HE_PORTION);
|
||||
Transmit(nonOfdmaDuration,
|
||||
ppdu,
|
||||
txVector,
|
||||
nonOfdmaTxPowerDbm,
|
||||
nonOfdmaTxPowerSpectrum,
|
||||
"non-OFDMA transmission");
|
||||
|
||||
// OFDMA part
|
||||
auto ofdmaDuration = ppdu->GetTxDuration() - nonOfdmaDuration;
|
||||
auto ofdmaTxPowerSpectrum = GetTxPowerSpectralDensity(DbmToW(ofdmaTxPowerDbm),
|
||||
ppdu,
|
||||
txVector,
|
||||
HePpdu::PSD_HE_PORTION);
|
||||
auto ofdmaTxPowerSpectrum =
|
||||
GetTxPowerSpectralDensity(DbmToW(ofdmaTxPowerDbm), ppdu, HePpdu::PSD_HE_PORTION);
|
||||
Simulator::Schedule(nonOfdmaDuration,
|
||||
&HePhy::StartTxOfdma,
|
||||
this,
|
||||
ppdu,
|
||||
txVector,
|
||||
ofdmaTxPowerDbm,
|
||||
ofdmaTxPowerSpectrum,
|
||||
ofdmaDuration);
|
||||
}
|
||||
else
|
||||
{
|
||||
PhyEntity::StartTx(ppdu, txVector);
|
||||
PhyEntity::StartTx(ppdu);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
HePhy::StartTxOfdma(Ptr<const WifiPpdu> ppdu,
|
||||
const WifiTxVector& txVector,
|
||||
double txPowerDbm,
|
||||
Ptr<SpectrumValue> txPowerSpectrum,
|
||||
Time ofdmaDuration)
|
||||
@@ -1441,7 +1433,7 @@ HePhy::StartTxOfdma(Ptr<const WifiPpdu> ppdu,
|
||||
auto hePpdu = DynamicCast<const HePpdu>(ppdu);
|
||||
NS_ASSERT(hePpdu);
|
||||
hePpdu->SetTxPsdFlag(HePpdu::PSD_HE_PORTION);
|
||||
Transmit(ofdmaDuration, ppdu, txVector, txPowerDbm, txPowerSpectrum, "OFDMA transmission");
|
||||
Transmit(ofdmaDuration, ppdu, txPowerDbm, txPowerSpectrum, "OFDMA transmission");
|
||||
}
|
||||
|
||||
Time
|
||||
|
||||
@@ -104,7 +104,7 @@ class HePhy : public VhtPhy
|
||||
void CancelAllEvents() override;
|
||||
uint16_t GetStaId(const Ptr<const WifiPpdu> ppdu) const override;
|
||||
uint16_t GetMeasurementChannelWidth(const Ptr<const WifiPpdu> ppdu) const override;
|
||||
void StartTx(Ptr<const WifiPpdu> ppdu, const WifiTxVector& txVector) override;
|
||||
void StartTx(Ptr<const WifiPpdu> ppdu) override;
|
||||
Time CalculateTxDuration(WifiConstPsduMap psduMap,
|
||||
const WifiTxVector& txVector,
|
||||
WifiPhyBand band) const override;
|
||||
@@ -448,8 +448,7 @@ class HePhy : public VhtPhy
|
||||
void DoAbortCurrentReception(WifiPhyRxfailureReason reason) override;
|
||||
uint64_t ObtainNextUid(const WifiTxVector& txVector) override;
|
||||
Ptr<SpectrumValue> GetTxPowerSpectralDensity(double txPowerW,
|
||||
Ptr<const WifiPpdu> ppdu,
|
||||
const WifiTxVector& txVector) const override;
|
||||
Ptr<const WifiPpdu> ppdu) const override;
|
||||
uint32_t GetMaxPsduSize() const override;
|
||||
WifiConstPsduMap GetWifiConstPsduMap(Ptr<const WifiPsdu> psdu,
|
||||
const WifiTxVector& txVector) const override;
|
||||
@@ -534,26 +533,22 @@ class HePhy : public VhtPhy
|
||||
*
|
||||
* \param txPowerW power in W to spread across the bands
|
||||
* \param ppdu the PPDU that will be transmitted
|
||||
* \param txVector the transmission parameters
|
||||
* \param flag flag indicating whether the PSD is for non-HE portion or HE portion
|
||||
* \return Pointer to SpectrumValue
|
||||
*/
|
||||
Ptr<SpectrumValue> GetTxPowerSpectralDensity(double txPowerW,
|
||||
Ptr<const WifiPpdu> ppdu,
|
||||
const WifiTxVector& txVector,
|
||||
HePpdu::TxPsdFlag flag) const;
|
||||
|
||||
/**
|
||||
* Start the transmission of the OFDMA part of the MU PPDU.
|
||||
*
|
||||
* \param ppdu the PPDU
|
||||
* \param txVector the TXVECTOR used for the transmission of the PPDU
|
||||
* \param txPowerDbm the total TX power in dBm
|
||||
* \param txPowerSpectrum the TX PSD
|
||||
* \param ofdmaDuration the duration of the OFDMA part
|
||||
*/
|
||||
void StartTxOfdma(Ptr<const WifiPpdu> ppdu,
|
||||
const WifiTxVector& txVector,
|
||||
double txPowerDbm,
|
||||
Ptr<SpectrumValue> txPowerSpectrum,
|
||||
Time ofdmaDuration);
|
||||
|
||||
@@ -459,10 +459,9 @@ HtPhy::IsConfigSupported(Ptr<const WifiPpdu> ppdu) const
|
||||
}
|
||||
|
||||
Ptr<SpectrumValue>
|
||||
HtPhy::GetTxPowerSpectralDensity(double txPowerW,
|
||||
Ptr<const WifiPpdu> /* ppdu */,
|
||||
const WifiTxVector& txVector) const
|
||||
HtPhy::GetTxPowerSpectralDensity(double txPowerW, Ptr<const WifiPpdu> ppdu) const
|
||||
{
|
||||
const auto& txVector = ppdu->GetTxVector();
|
||||
uint16_t centerFrequency = GetCenterFrequencyForChannelWidth(txVector);
|
||||
uint16_t channelWidth = txVector.GetChannelWidth();
|
||||
NS_LOG_FUNCTION(this << centerFrequency << channelWidth << txPowerW);
|
||||
|
||||
@@ -464,8 +464,7 @@ class HtPhy : public OfdmPhy
|
||||
bool IsAllConfigSupported(WifiPpduField field, Ptr<const WifiPpdu> ppdu) const override;
|
||||
bool IsConfigSupported(Ptr<const WifiPpdu> ppdu) const override;
|
||||
Ptr<SpectrumValue> GetTxPowerSpectralDensity(double txPowerW,
|
||||
Ptr<const WifiPpdu> ppdu,
|
||||
const WifiTxVector& txVector) const override;
|
||||
Ptr<const WifiPpdu> ppdu) const override;
|
||||
uint32_t GetMaxPsduSize() const override;
|
||||
CcaIndication GetCcaIndication(const Ptr<const WifiPpdu> ppdu) override;
|
||||
|
||||
|
||||
@@ -265,10 +265,9 @@ DsssPhy::GetMeasurementChannelWidth(const Ptr<const WifiPpdu> ppdu) const
|
||||
}
|
||||
|
||||
Ptr<SpectrumValue>
|
||||
DsssPhy::GetTxPowerSpectralDensity(double txPowerW,
|
||||
Ptr<const WifiPpdu> /* ppdu */,
|
||||
const WifiTxVector& txVector) const
|
||||
DsssPhy::GetTxPowerSpectralDensity(double txPowerW, Ptr<const WifiPpdu> ppdu) const
|
||||
{
|
||||
const auto& txVector = ppdu->GetTxVector();
|
||||
uint16_t centerFrequency = GetCenterFrequencyForChannelWidth(txVector);
|
||||
uint16_t channelWidth = txVector.GetChannelWidth();
|
||||
NS_LOG_FUNCTION(this << centerFrequency << channelWidth << txPowerW);
|
||||
|
||||
@@ -161,8 +161,7 @@ class DsssPhy : public PhyEntity
|
||||
private:
|
||||
PhyFieldRxStatus DoEndReceiveField(WifiPpduField field, Ptr<Event> event) override;
|
||||
Ptr<SpectrumValue> GetTxPowerSpectralDensity(double txPowerW,
|
||||
Ptr<const WifiPpdu> ppdu,
|
||||
const WifiTxVector& txVector) const override;
|
||||
Ptr<const WifiPpdu> ppdu) const override;
|
||||
uint16_t GetRxChannelWidth(const WifiTxVector& txVector) const override;
|
||||
uint16_t GetMeasurementChannelWidth(const Ptr<const WifiPpdu> ppdu) const override;
|
||||
|
||||
|
||||
@@ -361,10 +361,9 @@ OfdmPhy::IsAllConfigSupported(WifiPpduField /* field */, Ptr<const WifiPpdu> ppd
|
||||
}
|
||||
|
||||
Ptr<SpectrumValue>
|
||||
OfdmPhy::GetTxPowerSpectralDensity(double txPowerW,
|
||||
Ptr<const WifiPpdu> /* ppdu */,
|
||||
const WifiTxVector& txVector) const
|
||||
OfdmPhy::GetTxPowerSpectralDensity(double txPowerW, Ptr<const WifiPpdu> ppdu) const
|
||||
{
|
||||
const auto& txVector = ppdu->GetTxVector();
|
||||
uint16_t centerFrequency = GetCenterFrequencyForChannelWidth(txVector);
|
||||
uint16_t channelWidth = txVector.GetChannelWidth();
|
||||
NS_LOG_FUNCTION(this << centerFrequency << channelWidth << txPowerW);
|
||||
|
||||
@@ -324,8 +324,7 @@ class OfdmPhy : public PhyEntity
|
||||
protected:
|
||||
PhyFieldRxStatus DoEndReceiveField(WifiPpduField field, Ptr<Event> event) override;
|
||||
Ptr<SpectrumValue> GetTxPowerSpectralDensity(double txPowerW,
|
||||
Ptr<const WifiPpdu> ppdu,
|
||||
const WifiTxVector& txVector) const override;
|
||||
Ptr<const WifiPpdu> ppdu) const override;
|
||||
uint32_t GetMaxPsduSize() const override;
|
||||
uint16_t GetMeasurementChannelWidth(const Ptr<const WifiPpdu> ppdu) const override;
|
||||
|
||||
|
||||
@@ -1279,23 +1279,23 @@ PhyEntity::NotifyPayloadBegin(const WifiTxVector& txVector, const Time& payloadD
|
||||
}
|
||||
|
||||
void
|
||||
PhyEntity::StartTx(Ptr<const WifiPpdu> ppdu, const WifiTxVector& txVector)
|
||||
PhyEntity::StartTx(Ptr<const WifiPpdu> ppdu)
|
||||
{
|
||||
NS_LOG_FUNCTION(this << ppdu << txVector);
|
||||
NS_LOG_FUNCTION(this << ppdu);
|
||||
auto txPowerDbm = m_wifiPhy->GetTxPowerForTransmission(ppdu) + m_wifiPhy->GetTxGain();
|
||||
auto txPowerSpectrum = GetTxPowerSpectralDensity(DbmToW(txPowerDbm), ppdu, txVector);
|
||||
Transmit(ppdu->GetTxDuration(), ppdu, txVector, txPowerDbm, txPowerSpectrum, "transmission");
|
||||
auto txVector = ppdu->GetTxVector();
|
||||
auto txPowerSpectrum = GetTxPowerSpectralDensity(DbmToW(txPowerDbm), ppdu);
|
||||
Transmit(ppdu->GetTxDuration(), ppdu, txPowerDbm, txPowerSpectrum, "transmission");
|
||||
}
|
||||
|
||||
void
|
||||
PhyEntity::Transmit(Time txDuration,
|
||||
Ptr<const WifiPpdu> ppdu,
|
||||
const WifiTxVector& txVector,
|
||||
double txPowerDbm,
|
||||
Ptr<SpectrumValue> txPowerSpectrum,
|
||||
const std::string& type)
|
||||
{
|
||||
NS_LOG_FUNCTION(this << txDuration << ppdu << txVector << txPowerDbm << type);
|
||||
NS_LOG_FUNCTION(this << txDuration << ppdu << txPowerDbm << type);
|
||||
NS_LOG_DEBUG("Start " << type << ": signal power before antenna gain=" << txPowerDbm << "dBm");
|
||||
auto txParams = Create<WifiSpectrumSignalParameters>();
|
||||
txParams->duration = txDuration;
|
||||
|
||||
@@ -476,9 +476,8 @@ class PhyEntity : public SimpleRefCount<PhyEntity>
|
||||
* \see SpectrumWifiPhy::StartTx
|
||||
*
|
||||
* \param ppdu the PPDU to send
|
||||
* \param txVector the TXVECTOR used for the transmission of the PPDU
|
||||
*/
|
||||
virtual void StartTx(Ptr<const WifiPpdu> ppdu, const WifiTxVector& txVector);
|
||||
virtual void StartTx(Ptr<const WifiPpdu> ppdu);
|
||||
|
||||
/**
|
||||
* This function prepares most of the WifiSpectrumSignalParameters
|
||||
@@ -487,14 +486,12 @@ class PhyEntity : public SimpleRefCount<PhyEntity>
|
||||
*
|
||||
* \param txDuration the duration of the transmission
|
||||
* \param ppdu the PPDU to send
|
||||
* \param txVector the TXVECTOR used for the transmission of the PPDU
|
||||
* \param txPowerDbm the total TX power in dBm
|
||||
* \param txPowerSpectrum the TX PSD
|
||||
* \param type the type of transmission (for logging)
|
||||
*/
|
||||
void Transmit(Time txDuration,
|
||||
Ptr<const WifiPpdu> ppdu,
|
||||
const WifiTxVector& txVector,
|
||||
double txPowerDbm,
|
||||
Ptr<SpectrumValue> txPowerSpectrum,
|
||||
const std::string& type);
|
||||
@@ -833,15 +830,13 @@ class PhyEntity : public SimpleRefCount<PhyEntity>
|
||||
/**
|
||||
* \param txPowerW power in W to spread across the bands
|
||||
* \param ppdu the PPDU that will be transmitted
|
||||
* \param txVector the transmission parameters
|
||||
* \return Pointer to SpectrumValue
|
||||
*
|
||||
* This is a helper function to create the right TX PSD corresponding
|
||||
* to the amendment of this PHY.
|
||||
*/
|
||||
virtual Ptr<SpectrumValue> GetTxPowerSpectralDensity(double txPowerW,
|
||||
Ptr<const WifiPpdu> ppdu,
|
||||
const WifiTxVector& txVector) const = 0;
|
||||
Ptr<const WifiPpdu> ppdu) const = 0;
|
||||
|
||||
/**
|
||||
* Get the center frequency of the channel corresponding the current TxVector rather than
|
||||
|
||||
@@ -444,10 +444,10 @@ SpectrumWifiPhy::CreateWifiSpectrumPhyInterface(Ptr<NetDevice> device)
|
||||
}
|
||||
|
||||
void
|
||||
SpectrumWifiPhy::StartTx(Ptr<const WifiPpdu> ppdu, const WifiTxVector& txVector)
|
||||
SpectrumWifiPhy::StartTx(Ptr<const WifiPpdu> ppdu)
|
||||
{
|
||||
NS_LOG_FUNCTION(this << ppdu);
|
||||
GetPhyEntity(ppdu->GetModulation())->StartTx(ppdu, txVector);
|
||||
GetPhyEntity(ppdu->GetModulation())->StartTx(ppdu);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -69,7 +69,7 @@ class SpectrumWifiPhy : public WifiPhy
|
||||
~SpectrumWifiPhy() override;
|
||||
|
||||
// Implementation of pure virtual method.
|
||||
void StartTx(Ptr<const WifiPpdu> ppdu, const WifiTxVector& txVector) override;
|
||||
void StartTx(Ptr<const WifiPpdu> ppdu) override;
|
||||
Ptr<Channel> GetChannel() const override;
|
||||
uint16_t GetGuardBandwidth(uint16_t currentChannelWidth) const override;
|
||||
std::tuple<double, double, double> GetTxMaskRejectionParams() const override;
|
||||
|
||||
@@ -1727,7 +1727,7 @@ WifiPhy::Send(WifiConstPsduMap psdus, const WifiTxVector& txVector)
|
||||
m_endTxEvent =
|
||||
Simulator::Schedule(txDuration, &WifiPhy::NotifyTxEnd, this, psdus); // TODO: fix for MU
|
||||
|
||||
StartTx(ppdu, txVector);
|
||||
StartTx(ppdu);
|
||||
ppdu->ResetTxVector();
|
||||
|
||||
m_channelAccessRequested = false;
|
||||
@@ -2073,7 +2073,7 @@ double
|
||||
WifiPhy::GetTxPowerForTransmission(Ptr<const WifiPpdu> ppdu) const
|
||||
{
|
||||
NS_LOG_FUNCTION(this << m_powerRestricted << ppdu);
|
||||
const WifiTxVector& txVector = ppdu->GetTxVector();
|
||||
const auto& txVector = ppdu->GetTxVector();
|
||||
// Get transmit power before antenna gain
|
||||
double txPowerDbm;
|
||||
if (!m_powerRestricted)
|
||||
|
||||
@@ -151,9 +151,8 @@ class WifiPhy : public Object
|
||||
|
||||
/**
|
||||
* \param ppdu the PPDU to send
|
||||
* \param txVector the TXVECTOR to use to send the PPDU
|
||||
*/
|
||||
virtual void StartTx(Ptr<const WifiPpdu> ppdu, const WifiTxVector& txVector) = 0;
|
||||
virtual void StartTx(Ptr<const WifiPpdu> ppdu) = 0;
|
||||
|
||||
/**
|
||||
* Put in sleep mode.
|
||||
|
||||
@@ -87,11 +87,11 @@ YansWifiPhy::SetChannel(const Ptr<YansWifiChannel> channel)
|
||||
}
|
||||
|
||||
void
|
||||
YansWifiPhy::StartTx(Ptr<const WifiPpdu> ppdu, const WifiTxVector& txVector)
|
||||
YansWifiPhy::StartTx(Ptr<const WifiPpdu> ppdu)
|
||||
{
|
||||
NS_LOG_FUNCTION(this << ppdu);
|
||||
NS_LOG_DEBUG("Start transmission: signal power before antenna gain="
|
||||
<< GetPowerDbm(txVector.GetTxPowerLevel()) << "dBm");
|
||||
<< GetPowerDbm(ppdu->GetTxVector().GetTxPowerLevel()) << "dBm");
|
||||
m_channel->Send(this, ppdu, GetTxPowerForTransmission(ppdu) + GetTxGain());
|
||||
}
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ class YansWifiPhy : public WifiPhy
|
||||
~YansWifiPhy() override;
|
||||
|
||||
void SetInterferenceHelper(const Ptr<InterferenceHelper> helper) override;
|
||||
void StartTx(Ptr<const WifiPpdu> ppdu, const WifiTxVector& txVector) override;
|
||||
void StartTx(Ptr<const WifiPpdu> ppdu) override;
|
||||
Ptr<Channel> GetChannel() const override;
|
||||
uint16_t GetGuardBandwidth(uint16_t currentChannelWidth) const override;
|
||||
std::tuple<double, double, double> GetTxMaskRejectionParams() const override;
|
||||
|
||||
@@ -149,6 +149,7 @@ class OfdmaSpectrumWifiPhy : public SpectrumWifiPhy
|
||||
void DoDispose() override;
|
||||
|
||||
using WifiPhy::Reset;
|
||||
void StartTx(Ptr<const WifiPpdu> ppdu) override;
|
||||
|
||||
/**
|
||||
* TracedCallback signature for UID of transmitted PPDU.
|
||||
@@ -157,12 +158,6 @@ class OfdmaSpectrumWifiPhy : public SpectrumWifiPhy
|
||||
*/
|
||||
typedef void (*TxPpduUidCallback)(uint64_t uid);
|
||||
|
||||
/**
|
||||
* \param ppdu the PPDU to send
|
||||
* \param txVector the TXVECTOR used for the transmission of the PPDU
|
||||
*/
|
||||
void StartTx(Ptr<const WifiPpdu> ppdu, const WifiTxVector& txVector) override;
|
||||
|
||||
/**
|
||||
* Set the global PPDU UID counter.
|
||||
*
|
||||
@@ -263,10 +258,10 @@ OfdmaSpectrumWifiPhy::SetTriggerFrameUid(uint64_t uid)
|
||||
}
|
||||
|
||||
void
|
||||
OfdmaSpectrumWifiPhy::StartTx(Ptr<const WifiPpdu> ppdu, const WifiTxVector& txVector)
|
||||
OfdmaSpectrumWifiPhy::StartTx(Ptr<const WifiPpdu> ppdu)
|
||||
{
|
||||
m_phyTxPpduUidTrace(ppdu->GetUid());
|
||||
SpectrumWifiPhy::StartTx(ppdu, txVector);
|
||||
SpectrumWifiPhy::StartTx(ppdu);
|
||||
}
|
||||
|
||||
std::map<std::pair<uint64_t, WifiPreamble>, Ptr<Event>>&
|
||||
|
||||
Reference in New Issue
Block a user