A WiFi radio energy model. More...
#include "wifi-radio-energy-model.h"
Public Types | |
typedef Callback< void > | WifiRadioEnergyDepletionCallback |
Callback type for energy depletion handling. More... | |
typedef Callback< void > | WifiRadioEnergyRechargedCallback |
Callback type for energy recharged handling. More... | |
![]() | |
typedef Callback< void, int > | ChangeStateCallback |
Callback type for ChangeState function. More... | |
Public Member Functions | |
WifiRadioEnergyModel () | |
virtual | ~WifiRadioEnergyModel () |
virtual void | ChangeState (int newState) |
Changes state of the WifiRadioEnergyMode. More... | |
double | GetCcaBusyCurrentA (void) const |
WifiPhy::State | GetCurrentState (void) const |
double | GetIdleCurrentA (void) const |
WifiRadioEnergyModelPhyListener * | GetPhyListener (void) |
double | GetRxCurrentA (void) const |
double | GetSleepCurrentA (void) const |
double | GetSwitchingCurrentA (void) const |
virtual double | GetTotalEnergyConsumption (void) const |
double | GetTxCurrentA (void) const |
virtual void | HandleEnergyDepletion (void) |
Handles energy depletion. More... | |
virtual void | HandleEnergyRecharged (void) |
Handles energy recharged. More... | |
void | SetCcaBusyCurrentA (double ccaBusyCurrentA) |
void | SetEnergyDepletionCallback (WifiRadioEnergyDepletionCallback callback) |
void | SetEnergyRechargedCallback (WifiRadioEnergyRechargedCallback callback) |
virtual void | SetEnergySource (Ptr< EnergySource > source) |
Sets pointer to EnergySouce installed on node. More... | |
void | SetIdleCurrentA (double idleCurrentA) |
void | SetRxCurrentA (double rxCurrentA) |
void | SetSleepCurrentA (double sleepCurrentA) |
void | SetSwitchingCurrentA (double switchingCurrentA) |
void | SetTxCurrentA (double txCurrentA) |
void | SetTxCurrentFromModel (double txPowerDbm) |
Calls the CalcTxCurrent method of the tx current model to compute the tx current based on such model. More... | |
void | SetTxCurrentModel (Ptr< WifiTxCurrentModel > model) |
![]() | |
DeviceEnergyModel () | |
virtual | ~DeviceEnergyModel () |
double | GetCurrentA (void) const |
![]() | |
Object () | |
Constructor. More... | |
virtual | ~Object () |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose (void) |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator (void) const |
Get an iterator to the Objects aggregated to this one. More... | |
virtual TypeId | GetInstanceTypeId (void) const |
Implement the GetInstanceTypeId method defined in ObjectBase. More... | |
template<typename T > | |
Ptr< T > | GetObject (void) const |
Get a pointer to the requested aggregated Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
void | Initialize (void) |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
![]() | |
SimpleRefCount () | |
Constructor. More... | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
![]() | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising erros. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static void | Cleanup (void) |
Noop. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Private Member Functions | |
void | DoDispose (void) |
Destructor implementation. More... | |
virtual double | DoGetCurrentA (void) const |
void | SetWifiRadioState (const WifiPhy::State state) |
Private Attributes | |
double | m_ccaBusyCurrentA |
WifiPhy::State | m_currentState |
WifiRadioEnergyDepletionCallback | m_energyDepletionCallback |
WifiRadioEnergyRechargedCallback | m_energyRechargedCallback |
double | m_idleCurrentA |
bool | m_isSupersededChangeState |
Time | m_lastUpdateTime |
WifiRadioEnergyModelPhyListener * | m_listener |
uint8_t | m_nPendingChangeState |
double | m_rxCurrentA |
double | m_sleepCurrentA |
Ptr< EnergySource > | m_source |
double | m_switchingCurrentA |
TracedValue< double > | m_totalEnergyConsumption |
double | m_txCurrentA |
Ptr< WifiTxCurrentModel > | m_txCurrentModel |
Additional Inherited Members | |
![]() | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | DoInitialize (void) |
Initialize() implementation. More... | |
virtual void | NotifyNewAggregate (void) |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted (void) |
Notifier called once the ObjectBase is fully constructed. More... | |
![]() | |
static TypeId | GetObjectIid (void) |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
A WiFi radio energy model.
Introspection did not find any typical Config paths.
4 states are defined for the radio: TX, RX, IDLE, SLEEP. Default state is IDLE. The different types of transactions that are defined are:
Energy calculation: For each transaction, this model notifies EnergySource object. The EnergySource object will query this model for the total current. Then the EnergySource object uses the total current to calculate energy.
Default values for power consumption are based on measurements reported in:
Daniel Halperin, Ben Greenstein, Anmol Sheth, David Wetherall, "Demystifying 802.11n power consumption", Proceedings of HotPower'10
Power consumption in Watts (single antenna):
(transmit at 0dBm)
Hence, considering the default supply voltage of 3.0 V for the basic energy source, the default current values in Ampere are:
The dependence of the power consumption in transmission mode on the nominal transmit power can also be achieved through a wifi tx current model.
Size of this type is 168 bytes (on a 64-bit architecture).
Definition at line 202 of file wifi-radio-energy-model.h.
Callback type for energy depletion handling.
Definition at line 208 of file wifi-radio-energy-model.h.
Callback type for energy recharged handling.
Definition at line 213 of file wifi-radio-energy-model.h.
ns3::WifiRadioEnergyModel::WifiRadioEnergyModel | ( | ) |
Definition at line 91 of file wifi-radio-energy-model.cc.
References ns3::DeviceEnergyModel::ChangeState(), ns3::WifiPhy::IDLE, m_currentState, m_energyDepletionCallback, m_isSupersededChangeState, m_lastUpdateTime, m_listener, m_nPendingChangeState, m_source, ns3::MakeCallback(), NS_LOG_FUNCTION, ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Nullify(), ns3::Seconds(), ns3::WifiRadioEnergyModelPhyListener::SetChangeStateCallback(), SetTxCurrentFromModel(), and ns3::WifiRadioEnergyModelPhyListener::SetUpdateTxCurrentCallback().
|
virtual |
Definition at line 107 of file wifi-radio-energy-model.cc.
References m_listener, and NS_LOG_FUNCTION.
|
virtual |
Changes state of the WifiRadioEnergyMode.
newState | New state the wifi radio is in. |
Implements DeviceEnergyModel::ChangeState.
Implements ns3::DeviceEnergyModel.
Definition at line 259 of file wifi-radio-energy-model.cc.
References ns3::WifiPhy::CCA_BUSY, ns3::Time::GetNanoSeconds(), ns3::Time::GetSeconds(), ns3::WifiPhy::IDLE, m_ccaBusyCurrentA, m_currentState, m_idleCurrentA, m_isSupersededChangeState, m_lastUpdateTime, m_nPendingChangeState, m_rxCurrentA, m_sleepCurrentA, m_source, m_switchingCurrentA, m_totalEnergyConsumption, m_txCurrentA, ns3::Simulator::Now(), NS_ASSERT, NS_FATAL_ERROR, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::WifiPhy::RX, SetWifiRadioState(), ns3::WifiPhy::SLEEP, ns3::WifiPhy::SWITCHING, and ns3::WifiPhy::TX.
Referenced by BasicEnergyUpdateTest::StateSwitchTest().
|
privatevirtual |
Destructor implementation.
This method is called by 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.
Definition at line 362 of file wifi-radio-energy-model.cc.
References m_energyDepletionCallback, m_source, NS_LOG_FUNCTION, and ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Nullify().
|
privatevirtual |
Implements DeviceEnergyModel::GetCurrentA.
Reimplemented from ns3::DeviceEnergyModel.
Definition at line 370 of file wifi-radio-energy-model.cc.
References ns3::WifiPhy::CCA_BUSY, ns3::WifiPhy::IDLE, m_ccaBusyCurrentA, m_currentState, m_idleCurrentA, m_rxCurrentA, m_sleepCurrentA, m_switchingCurrentA, m_txCurrentA, NS_FATAL_ERROR, NS_LOG_FUNCTION, ns3::WifiPhy::RX, ns3::WifiPhy::SLEEP, ns3::WifiPhy::SWITCHING, and ns3::WifiPhy::TX.
double ns3::WifiRadioEnergyModel::GetCcaBusyCurrentA | ( | void | ) | const |
Definition at line 143 of file wifi-radio-energy-model.cc.
References m_ccaBusyCurrentA, and NS_LOG_FUNCTION.
Referenced by GetTypeId(), and BasicEnergyUpdateTest::StateSwitchTest().
WifiPhy::State ns3::WifiRadioEnergyModel::GetCurrentState | ( | void | ) | const |
Definition at line 213 of file wifi-radio-energy-model.cc.
References m_currentState, and NS_LOG_FUNCTION.
Referenced by BasicEnergyUpdateTest::StateSwitchTest().
double ns3::WifiRadioEnergyModel::GetIdleCurrentA | ( | void | ) | const |
Definition at line 129 of file wifi-radio-energy-model.cc.
References m_idleCurrentA, and NS_LOG_FUNCTION.
Referenced by GetTypeId(), and BasicEnergyUpdateTest::StateSwitchTest().
WifiRadioEnergyModelPhyListener * ns3::WifiRadioEnergyModel::GetPhyListener | ( | void | ) |
Definition at line 351 of file wifi-radio-energy-model.cc.
References m_listener, and NS_LOG_FUNCTION.
double ns3::WifiRadioEnergyModel::GetRxCurrentA | ( | void | ) | const |
Definition at line 171 of file wifi-radio-energy-model.cc.
References m_rxCurrentA, and NS_LOG_FUNCTION.
Referenced by GetTypeId(), and BasicEnergyUpdateTest::StateSwitchTest().
double ns3::WifiRadioEnergyModel::GetSleepCurrentA | ( | void | ) | const |
Definition at line 199 of file wifi-radio-energy-model.cc.
References m_sleepCurrentA, and NS_LOG_FUNCTION.
Referenced by GetTypeId(), and BasicEnergyUpdateTest::StateSwitchTest().
double ns3::WifiRadioEnergyModel::GetSwitchingCurrentA | ( | void | ) | const |
Definition at line 185 of file wifi-radio-energy-model.cc.
References m_switchingCurrentA, and NS_LOG_FUNCTION.
Referenced by GetTypeId(), and BasicEnergyUpdateTest::StateSwitchTest().
|
virtual |
Implements DeviceEnergyModel::GetTotalEnergyConsumption.
Implements ns3::DeviceEnergyModel.
Definition at line 122 of file wifi-radio-energy-model.cc.
References m_totalEnergyConsumption, and NS_LOG_FUNCTION.
double ns3::WifiRadioEnergyModel::GetTxCurrentA | ( | void | ) | const |
Definition at line 157 of file wifi-radio-energy-model.cc.
References m_txCurrentA, and NS_LOG_FUNCTION.
Referenced by GetTypeId(), and BasicEnergyUpdateTest::StateSwitchTest().
|
static |
Definition at line 37 of file wifi-radio-energy-model.cc.
References GetCcaBusyCurrentA(), GetIdleCurrentA(), GetRxCurrentA(), GetSleepCurrentA(), GetSwitchingCurrentA(), GetTxCurrentA(), m_totalEnergyConsumption, m_txCurrentModel, ns3::MakeDoubleAccessor(), ns3::MakePointerAccessor(), ns3::MakeTraceSourceAccessor(), SetCcaBusyCurrentA(), SetIdleCurrentA(), ns3::TypeId::SetParent(), SetRxCurrentA(), SetSleepCurrentA(), SetSwitchingCurrentA(), and SetTxCurrentA().
|
virtual |
Handles energy depletion.
Implements DeviceEnergyModel::HandleEnergyDepletion
Implements ns3::DeviceEnergyModel.
Definition at line 327 of file wifi-radio-energy-model.cc.
References ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_energyDepletionCallback, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
|
virtual |
Handles energy recharged.
Implements DeviceEnergyModel::HandleEnergyRecharged
Implements ns3::DeviceEnergyModel.
Definition at line 339 of file wifi-radio-energy-model.cc.
References ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_energyRechargedCallback, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
void ns3::WifiRadioEnergyModel::SetCcaBusyCurrentA | ( | double | ccaBusyCurrentA | ) |
Definition at line 150 of file wifi-radio-energy-model.cc.
References m_ccaBusyCurrentA, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::WifiRadioEnergyModel::SetEnergyDepletionCallback | ( | WifiRadioEnergyDepletionCallback | callback | ) |
callback | Callback function. |
Sets callback for energy depletion handling.
Definition at line 220 of file wifi-radio-energy-model.cc.
References ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_energyDepletionCallback, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
void ns3::WifiRadioEnergyModel::SetEnergyRechargedCallback | ( | WifiRadioEnergyRechargedCallback | callback | ) |
callback | Callback function. |
Sets callback for energy recharged handling.
Definition at line 232 of file wifi-radio-energy-model.cc.
References ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_energyRechargedCallback, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
|
virtual |
Sets pointer to EnergySouce installed on node.
source | Pointer to EnergySource installed on node. |
Implements DeviceEnergyModel::SetEnergySource.
Implements ns3::DeviceEnergyModel.
Definition at line 114 of file wifi-radio-energy-model.cc.
References m_source, NS_ASSERT, and NS_LOG_FUNCTION.
Referenced by BasicEnergyUpdateTest::StateSwitchTest().
void ns3::WifiRadioEnergyModel::SetIdleCurrentA | ( | double | idleCurrentA | ) |
Definition at line 136 of file wifi-radio-energy-model.cc.
References m_idleCurrentA, and NS_LOG_FUNCTION.
Referenced by GetTypeId(), and BatteryLifetimeTest::VariableLoadTest().
void ns3::WifiRadioEnergyModel::SetRxCurrentA | ( | double | rxCurrentA | ) |
Definition at line 178 of file wifi-radio-energy-model.cc.
References m_rxCurrentA, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::WifiRadioEnergyModel::SetSleepCurrentA | ( | double | sleepCurrentA | ) |
Definition at line 206 of file wifi-radio-energy-model.cc.
References m_sleepCurrentA, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::WifiRadioEnergyModel::SetSwitchingCurrentA | ( | double | switchingCurrentA | ) |
Definition at line 192 of file wifi-radio-energy-model.cc.
References m_switchingCurrentA, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::WifiRadioEnergyModel::SetTxCurrentA | ( | double | txCurrentA | ) |
Definition at line 164 of file wifi-radio-energy-model.cc.
References m_txCurrentA, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::WifiRadioEnergyModel::SetTxCurrentFromModel | ( | double | txPowerDbm | ) |
Calls the CalcTxCurrent method of the tx current model to compute the tx current based on such model.
txPowerDbm | the nominal tx power in dBm |
Definition at line 250 of file wifi-radio-energy-model.cc.
References m_txCurrentA, and m_txCurrentModel.
Referenced by WifiRadioEnergyModel().
void ns3::WifiRadioEnergyModel::SetTxCurrentModel | ( | Ptr< WifiTxCurrentModel > | model | ) |
model | the model used to compute the wifi tx current. |
Definition at line 244 of file wifi-radio-energy-model.cc.
References m_txCurrentModel.
|
private |
state | New state the radio device is currently in. |
Sets current state. This function is private so that only the energy model can change its own state.
Definition at line 393 of file wifi-radio-energy-model.cc.
References ns3::WifiPhy::CCA_BUSY, ns3::WifiPhy::IDLE, m_currentState, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::WifiPhy::RX, ns3::WifiPhy::SLEEP, ns3::WifiPhy::SWITCHING, and ns3::WifiPhy::TX.
Referenced by ChangeState().
|
private |
Definition at line 336 of file wifi-radio-energy-model.h.
Referenced by ChangeState(), DoGetCurrentA(), GetCcaBusyCurrentA(), and SetCcaBusyCurrentA().
|
private |
Definition at line 345 of file wifi-radio-energy-model.h.
Referenced by ChangeState(), DoGetCurrentA(), GetCurrentState(), SetWifiRadioState(), and WifiRadioEnergyModel().
|
private |
Definition at line 352 of file wifi-radio-energy-model.h.
Referenced by DoDispose(), HandleEnergyDepletion(), SetEnergyDepletionCallback(), and WifiRadioEnergyModel().
|
private |
Definition at line 355 of file wifi-radio-energy-model.h.
Referenced by HandleEnergyRecharged(), and SetEnergyRechargedCallback().
|
private |
Definition at line 335 of file wifi-radio-energy-model.h.
Referenced by ChangeState(), DoGetCurrentA(), GetIdleCurrentA(), and SetIdleCurrentA().
|
private |
Definition at line 349 of file wifi-radio-energy-model.h.
Referenced by ChangeState(), and WifiRadioEnergyModel().
|
private |
Definition at line 346 of file wifi-radio-energy-model.h.
Referenced by ChangeState(), and WifiRadioEnergyModel().
|
private |
Definition at line 358 of file wifi-radio-energy-model.h.
Referenced by GetPhyListener(), WifiRadioEnergyModel(), and ~WifiRadioEnergyModel().
|
private |
Definition at line 348 of file wifi-radio-energy-model.h.
Referenced by ChangeState(), and WifiRadioEnergyModel().
|
private |
Definition at line 334 of file wifi-radio-energy-model.h.
Referenced by ChangeState(), DoGetCurrentA(), GetRxCurrentA(), and SetRxCurrentA().
|
private |
Definition at line 338 of file wifi-radio-energy-model.h.
Referenced by ChangeState(), DoGetCurrentA(), GetSleepCurrentA(), and SetSleepCurrentA().
|
private |
Definition at line 330 of file wifi-radio-energy-model.h.
Referenced by ChangeState(), DoDispose(), SetEnergySource(), and WifiRadioEnergyModel().
|
private |
Definition at line 337 of file wifi-radio-energy-model.h.
Referenced by ChangeState(), DoGetCurrentA(), GetSwitchingCurrentA(), and SetSwitchingCurrentA().
|
private |
Definition at line 342 of file wifi-radio-energy-model.h.
Referenced by ChangeState(), GetTotalEnergyConsumption(), and GetTypeId().
|
private |
Definition at line 333 of file wifi-radio-energy-model.h.
Referenced by ChangeState(), DoGetCurrentA(), GetTxCurrentA(), SetTxCurrentA(), and SetTxCurrentFromModel().
|
private |
Definition at line 339 of file wifi-radio-energy-model.h.
Referenced by GetTypeId(), SetTxCurrentFromModel(), and SetTxCurrentModel().