Ptr<WifiTxCurrentModel> txCurrentModel;
radioEnergyHelper.Set("TxCurrentModel", PointerValue(txCurrentModel));
WifiRadioEnergyModel a;
a.SetTxCurrentFromModel (Prss);
DeviceEnergyModelContainer deviceModels = radioEnergyHelper.Install (devices, sources);
radioEnergyHelper.SetTxCurrentModel ("ns3::LinearWifiTxCurrentModel",
"Voltage", DoubleValue (voltage),
"IdleCurrent", DoubleValue (idleCurrent),
"Eta", DoubleValue (eta));
double
LinearWifiTxCurrentModel::CalcTxCurrent (void) const
{
return DbmToW (m_txPowerDbm) / (m_voltage * m_eta) + m_idleCurrent;
}
double
LinearWifiTxCurrentModel::CalcTxCurrent (double txPowerDbm) const
{
return DbmToW (m_txPowerDbm) / (m_voltage * m_eta) + m_idleCurrent;
}
radioEnergyHelper.Set("txPowerDbm", DoubleValue(-80));
double GetTxPowerDbm (void) const;
void SetTxPowerDbm (double txPowerDbm);
[...]
double m_txPowerDbm;
.AddAttribute ("txPowerDbm",
"Power transmission in dBm",
DoubleValue (-80))
MakeDoubleAccessor (&WifiRadioEnergyModel::SetTxPowerDbm,
&WifiRadioEnergyModel::GetTxPowerDbm),
MakeDoubleChecker<double> ())
void
WifiRadioEnergyModel::SetTxPowerDbm (double txPowerDbm)
{
NS_LOG_FUNCTION (this << txPowerDbm);
m_txPowerDbm = txPowerDbm;
}
double
WifiRadioEnergyModel::GetTxPowerDbm (void) const
{
NS_LOG_FUNCTION (this);
return m_txPowerDbm;
}
void
WifiRadioEnergyModel::SetTxCurrentFromModel (double m_txPowerDbm)
{
if (m_txCurrentModel)
{
m_txCurrentA = m_txCurrentModel->CalcTxCurrent (m_txPowerDbm);
}
}
../src/energy/model/wifi-radio-energy-model.cc:85:6: error: no matching member function for call to 'AddAttribute'
.AddAttribute ("txPowerDbm",
~^~~~~~~~~~~~
./ns3/type-id.h:292:10: note: candidate function not viable: requires 5 arguments, but 3 were provided
TypeId AddAttribute (std::string name,
^
./ns3/type-id.h:318:10: note: candidate function not viable: requires 6 arguments, but 3 were provided
TypeId AddAttribute (std::string name,
^
../src/energy/model/wifi-radio-energy-model.cc:39:3: error: function declared in block scope cannot have 'static' storage class
static TypeId tid = TypeId ("ns3::WifiRadioEnergyModel")
^
../src/energy/model/wifi-radio-energy-model.cc:90:20: error: template specialization requires 'template<>'
MakeDoubleChecker<double> ())
^ ~~~~~~~~
../src/energy/model/wifi-radio-energy-model.cc:90:20: error: no function template matches function template specialization 'MakeDoubleChecker'
./ns3/double.h:91:29: note: candidate template ignored: could not match 'Ptr<const ns3::AttributeChecker> ()' against 'ns3::TypeId ()'
Ptr<const AttributeChecker> MakeDoubleChecker (void)
^
./ns3/double.h:99:29: note: candidate template ignored: could not match 'Ptr<const ns3::AttributeChecker> (double)' against 'ns3::TypeId ()'
Ptr<const AttributeChecker> MakeDoubleChecker (double min)
^
./ns3/double.h:107:29: note: candidate template ignored: could not match 'Ptr<const ns3::AttributeChecker> (double, double)' against 'ns3::TypeId ()'
Ptr<const AttributeChecker> MakeDoubleChecker (double min, double max)
^
../src/energy/model/wifi-radio-energy-model.cc:90:48: error: expected ';' at end of declaration
MakeDoubleChecker<double> ())
^
;
5 errors generated.
.AddAttribute ("txPowerDbm",
"Tx Power Transmission",
DoubleValue (-80),
MakeDoubleAccessor (&WifiRadioEnergyModel::m_txPowerDbm),
MakeDoubleChecker<double> ())
void
WifiRadioEnergyModel::SetTxCurrentFromModel (double txPowerDbm)
{
if (m_txCurrentModel)
{
m_txCurrentA = m_txCurrentModel->CalcTxCurrent (m_txPowerDbm);
}
}
WifiRadioEnergyModelHelper radioEnergyHelper;
radioEnergyHelper.SetTxCurrentModel ("ns3::LinearWifiTxCurrentModel");
radioEnergyHelper.Set("txPowerDbm", DoubleValue(Prss));
Ptr<WifiRadioEnergyModel> txdBm;
txdBm->SetTxCurrentFromModel (Prss);
DeviceEnergyModelContainer deviceModels = radioEnergyHelper.Install (devices, sources);
| "txPowerDbm | - the nominal tx power in dBm" |
double rxPowerDbm = m_loss->CalcRxPower (txPowerDbm, senderMobility, receiverMobility); rxPowerDbm += m_rxGainDb;
double rxPowerW = DbmToW (rxPowerDbm); m_channel->Send (this, packet, GetPowerDbm (txVector.GetTxPowerLevel ()) + m_txGainDb, txVector, preamble, aMpdu, txDuration);| LinearWifiTxCurrentModel::CalcTxCurrent | ( | double | txPowerDbm | ) |