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 () | |
virtual | ~Object () |
void | AggregateObject (Ptr< Object > other) |
void | Dispose (void) |
Run the DoDispose methods of this object and all the objects aggregated to it. More... | |
AggregateIterator | GetAggregateIterator (void) const |
virtual TypeId | GetInstanceTypeId (void) const |
template<typename T > | |
Ptr< T > | GetObject (void) const |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
void | Initialize (void) |
This method calls the virtual DoInitialize method on all the objects aggregated to this object. 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 |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
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) |
This method is called by Object::Dispose or by the object's destructor, whichever comes first. 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) | |
virtual void | DoInitialize (void) |
This method is called only once by Object::Initialize. More... | |
virtual void | NotifyNewAggregate (void) |
This method is invoked whenever two sets of objects are aggregated together. More... | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
virtual void | NotifyConstructionCompleted (void) |
This method is invoked once all member attributes have been initialized. More... | |
A WiFi radio energy model.
Doxygen 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.
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 89 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 105 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 257 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.
|
privatevirtual |
This method is called by Object::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 360 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 368 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 141 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 211 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 127 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 349 of file wifi-radio-energy-model.cc.
References m_listener, and NS_LOG_FUNCTION.
double ns3::WifiRadioEnergyModel::GetRxCurrentA | ( | void | ) | const |
Definition at line 169 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 197 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 183 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 120 of file wifi-radio-energy-model.cc.
References m_totalEnergyConsumption, and NS_LOG_FUNCTION.
double ns3::WifiRadioEnergyModel::GetTxCurrentA | ( | void | ) | const |
Definition at line 155 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::MakeTraceSourceAccessor(), SetCcaBusyCurrentA(), SetIdleCurrentA(), ns3::TypeId::SetParent(), SetRxCurrentA(), SetSleepCurrentA(), SetSwitchingCurrentA(), and SetTxCurrentA().
|
virtual |
Handles energy depletion.
Implements DeviceEnergyModel::HandleEnergyDepletion
Implements ns3::DeviceEnergyModel.
Definition at line 325 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 337 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 148 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 218 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 230 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 112 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 134 of file wifi-radio-energy-model.cc.
References m_idleCurrentA, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::WifiRadioEnergyModel::SetRxCurrentA | ( | double | rxCurrentA | ) |
Definition at line 176 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 204 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 190 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 162 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 248 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 242 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 391 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().