WHOI micro-modem energy model. More...
#include "acoustic-modem-energy-model.h"
Public Types | |
typedef Callback< void > | AcousticModemEnergyDepletionCallback |
Callback type for energy depletion handling. More... | |
typedef Callback< void > | AcousticModemEnergyRechargeCallback |
Callback type for energy recharge handling. More... | |
Public Types inherited from ns3::DeviceEnergyModel | |
typedef Callback< void, int > | ChangeStateCallback |
Callback type for ChangeState function. More... | |
Public Member Functions | |
AcousticModemEnergyModel () | |
Constructor. More... | |
~AcousticModemEnergyModel () override | |
Dummy destructor, see DoDispose. More... | |
void | ChangeState (int newState) override |
Changes state of the AcousticModemEnergyModel. More... | |
int | GetCurrentState () const |
Get the current state of the modem. More... | |
double | GetIdlePowerW () const |
Get the idle power of the modem. More... | |
virtual Ptr< Node > | GetNode () const |
Gets pointer to node. More... | |
double | GetRxPowerW () const |
Get the receiving power. More... | |
double | GetSleepPowerW () const |
Get the sleep state power of the modem. More... | |
double | GetTotalEnergyConsumption () const override |
double | GetTxPowerW () const |
Get the transmission power of the modem. More... | |
void | HandleEnergyChanged () override |
Handles energy changed. More... | |
void | HandleEnergyDepletion () override |
Handles energy depletion. More... | |
void | HandleEnergyRecharged () override |
Handles energy recharged. More... | |
void | SetEnergyDepletionCallback (AcousticModemEnergyDepletionCallback callback) |
void | SetEnergyRechargeCallback (AcousticModemEnergyRechargeCallback callback) |
void | SetEnergySource (Ptr< EnergySource > source) override |
void | SetIdlePowerW (double idlePowerW) |
Set the idle state power of the modem. More... | |
virtual void | SetNode (Ptr< Node > node) |
Sets pointer to node. More... | |
void | SetRxPowerW (double rxPowerW) |
Set the receiving power of the modem. More... | |
void | SetSleepPowerW (double sleepPowerW) |
Set the sleep power of the modem. More... | |
void | SetTxPowerW (double txPowerW) |
Set the transmission power of the modem. More... | |
Public Member Functions inherited from ns3::DeviceEnergyModel | |
DeviceEnergyModel () | |
~DeviceEnergyModel () override | |
double | GetCurrentA () const |
Public Member Functions inherited from ns3::Object | |
Object () | |
Constructor. More... | |
~Object () override | |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose () |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator () const |
Get an iterator to the Objects aggregated to this one. More... | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. More... | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. More... | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. More... | |
void | Initialize () |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
bool | IsInitialized () const |
Check if the object has been initialized. More... | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o[[maybe_unused]]) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o[[maybe_unused]]) |
Assignment operator. More... | |
void | Ref () const |
Increment the reference count. More... | |
void | Unref () const |
Decrement the reference count. More... | |
Public Member Functions inherited from ns3::ObjectBase | |
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 errors. 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 () |
Register this type. More... | |
Static Public Member Functions inherited from ns3::DeviceEnergyModel | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId () |
Register this type. More... | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Private Member Functions | |
void | DoDispose () override |
Destructor implementation. More... | |
double | DoGetCurrentA () const override |
bool | IsStateTransitionValid (const int destState) |
void | SetMicroModemState (const int state) |
Private Attributes | |
int | m_currentState |
Current modem state. More... | |
AcousticModemEnergyDepletionCallback | m_energyDepletionCallback |
Energy depletion callback. More... | |
AcousticModemEnergyRechargeCallback | m_energyRechargeCallback |
Energy recharge callback. More... | |
double | m_idlePowerW |
The idle power, in watts. More... | |
Time | m_lastUpdateTime |
Time stamp of previous energy update. More... | |
Ptr< Node > | m_node |
The node hosting this transducer. More... | |
double | m_rxPowerW |
The receiver power, in watts. More... | |
double | m_sleepPowerW |
The sleep power, in watts. More... | |
Ptr< EnergySource > | m_source |
The energy source. More... | |
TracedValue< double > | m_totalEnergyConsumption |
The total energy consumed by this model. More... | |
double | m_txPowerW |
The transmitter power, in watts. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | DoInitialize () |
Initialize() implementation. More... | |
virtual void | NotifyNewAggregate () |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. More... | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
WHOI micro-modem energy model.
Basing on the Device Energy Model interface, has been implemented a specific energy model for the WHOI micro modem. The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio, with identical states (rx, tx, idle, sleep).
The power consumption values implemented into the model are as follows [1]:
Modem State Power Consumption TX 50 W RX 158 mW Idle 158 mW Sleep 5.8 mW
References: [1] Freitag et al., The whoi micro-modem: an acoustic communications and navigation system for multiple platforms, in In Proc. IEEE OCEANS05 Conf, 2005. URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf
Definition at line 55 of file acoustic-modem-energy-model.h.
Callback type for energy depletion handling.
Definition at line 59 of file acoustic-modem-energy-model.h.
Callback type for energy recharge handling.
Definition at line 62 of file acoustic-modem-energy-model.h.
ns3::AcousticModemEnergyModel::AcousticModemEnergyModel | ( | ) |
Constructor.
Definition at line 77 of file acoustic-modem-energy-model.cc.
References ns3::UanPhy::IDLE, m_currentState, m_energyDepletionCallback, m_lastUpdateTime, m_node, m_source, NS_LOG_FUNCTION, ns3::Callback< R, UArgs >::Nullify(), and ns3::Seconds().
|
override |
Dummy destructor, see DoDispose.
Definition at line 87 of file acoustic-modem-energy-model.cc.
|
overridevirtual |
Changes state of the AcousticModemEnergyModel.
newState | New state the modem is in. |
Implements ns3::DeviceEnergyModel.
Definition at line 206 of file acoustic-modem-energy-model.cc.
References ns3::UanPhy::DISABLED, ns3::Node::GetId(), ns3::Time::GetNanoSeconds(), ns3::Time::GetSeconds(), ns3::UanPhy::IDLE, m_currentState, m_idlePowerW, m_lastUpdateTime, m_node, m_rxPowerW, m_sleepPowerW, m_source, m_totalEnergyConsumption, m_txPowerW, ns3::Simulator::Now(), NS_ASSERT, NS_FATAL_ERROR, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::UanPhy::RX, SetMicroModemState(), ns3::UanPhy::SLEEP, and ns3::UanPhy::TX.
|
overrideprivatevirtual |
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 overridden 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 302 of file acoustic-modem-energy-model.cc.
References m_energyDepletionCallback, m_node, m_source, NS_LOG_FUNCTION, and ns3::Callback< R, UArgs >::Nullify().
|
overrideprivatevirtual |
Reimplemented from ns3::DeviceEnergyModel.
Definition at line 311 of file acoustic-modem-energy-model.cc.
References ns3::UanPhy::DISABLED, ns3::UanPhy::IDLE, m_currentState, m_idlePowerW, m_rxPowerW, m_sleepPowerW, m_source, m_txPowerW, NS_ASSERT, NS_FATAL_ERROR, NS_LOG_FUNCTION, ns3::UanPhy::RX, ns3::UanPhy::SLEEP, and ns3::UanPhy::TX.
int ns3::AcousticModemEnergyModel::GetCurrentState | ( | ) | const |
Get the current state of the modem.
Definition at line 177 of file acoustic-modem-energy-model.cc.
References m_currentState, and NS_LOG_FUNCTION.
double ns3::AcousticModemEnergyModel::GetIdlePowerW | ( | ) | const |
Get the idle power of the modem.
Definition at line 149 of file acoustic-modem-energy-model.cc.
References m_idlePowerW, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
Gets pointer to node.
Definition at line 100 of file acoustic-modem-energy-model.cc.
References m_node.
double ns3::AcousticModemEnergyModel::GetRxPowerW | ( | ) | const |
Get the receiving power.
Definition at line 135 of file acoustic-modem-energy-model.cc.
References m_rxPowerW, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
double ns3::AcousticModemEnergyModel::GetSleepPowerW | ( | ) | const |
Get the sleep state power of the modem.
Definition at line 163 of file acoustic-modem-energy-model.cc.
References m_sleepPowerW, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
|
overridevirtual |
DeviceEnergyModel records its own energy consumption during simulation.
Implements ns3::DeviceEnergyModel.
Definition at line 114 of file acoustic-modem-energy-model.cc.
References m_totalEnergyConsumption, and NS_LOG_FUNCTION.
double ns3::AcousticModemEnergyModel::GetTxPowerW | ( | ) | const |
Get the transmission power of the modem.
Definition at line 121 of file acoustic-modem-energy-model.cc.
References m_txPowerW, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
|
static |
Register this type.
Definition at line 39 of file acoustic-modem-energy-model.cc.
References GetIdlePowerW(), GetRxPowerW(), GetSleepPowerW(), GetTxPowerW(), m_totalEnergyConsumption, ns3::MakeDoubleAccessor(), ns3::MakeTraceSourceAccessor(), SetIdlePowerW(), ns3::TypeId::SetParent(), SetRxPowerW(), SetSleepPowerW(), and SetTxPowerW().
|
overridevirtual |
Handles energy changed.
Not implemented
Implements ns3::DeviceEnergyModel.
Definition at line 291 of file acoustic-modem-energy-model.cc.
References NS_LOG_FUNCTION.
|
overridevirtual |
Handles energy depletion.
Implements ns3::DeviceEnergyModel.
Definition at line 259 of file acoustic-modem-energy-model.cc.
References ns3::UanPhy::DISABLED, ns3::Node::GetDevice(), ns3::Node::GetId(), ns3::Callback< R, UArgs >::IsNull(), m_energyDepletionCallback, m_node, NS_LOG_DEBUG, NS_LOG_FUNCTION, and SetMicroModemState().
|
overridevirtual |
Handles energy recharged.
Implements ns3::DeviceEnergyModel.
Definition at line 275 of file acoustic-modem-energy-model.cc.
References ns3::Node::GetDevice(), ns3::Node::GetId(), ns3::UanPhy::IDLE, ns3::Callback< R, UArgs >::IsNull(), m_energyRechargeCallback, m_node, NS_LOG_DEBUG, NS_LOG_FUNCTION, and SetMicroModemState().
|
private |
destState | Modem state to switch to. |
This function checks if a given modem state transition is allowed.
Definition at line 343 of file acoustic-modem-energy-model.cc.
References NS_LOG_FUNCTION.
Referenced by SetMicroModemState().
void ns3::AcousticModemEnergyModel::SetEnergyDepletionCallback | ( | AcousticModemEnergyDepletionCallback | callback | ) |
callback | Callback function. |
Sets callback for energy depletion handling.
Definition at line 184 of file acoustic-modem-energy-model.cc.
References ns3::Callback< R, UArgs >::IsNull(), m_energyDepletionCallback, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
void ns3::AcousticModemEnergyModel::SetEnergyRechargeCallback | ( | AcousticModemEnergyRechargeCallback | callback | ) |
callback | Callback function. |
Sets callback for energy recharge handling.
Definition at line 195 of file acoustic-modem-energy-model.cc.
References ns3::Callback< R, UArgs >::IsNull(), m_energyRechargeCallback, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
|
overridevirtual |
source | Pointer to energy source installed on node. |
This function sets the pointer to energy source installed on node. Should be called only by DeviceEnergyModel helper classes.
Implements ns3::DeviceEnergyModel.
Definition at line 106 of file acoustic-modem-energy-model.cc.
References m_source, NS_ASSERT, and NS_LOG_FUNCTION.
void ns3::AcousticModemEnergyModel::SetIdlePowerW | ( | double | idlePowerW | ) |
Set the idle state power of the modem.
idlePowerW | Idle power of the modem in watts. |
Definition at line 156 of file acoustic-modem-energy-model.cc.
References m_idlePowerW, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
|
private |
state | New state the modem is currently in. |
Sets current state. This function is private so that only the energy model can change its own state.
Definition at line 350 of file acoustic-modem-energy-model.cc.
References ns3::UanPhy::DISABLED, ns3::UanPhy::IDLE, IsStateTransitionValid(), m_currentState, ns3::Simulator::Now(), NS_FATAL_ERROR, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::UanPhy::RX, ns3::UanPhy::SLEEP, and ns3::UanPhy::TX.
Referenced by ChangeState(), HandleEnergyDepletion(), and HandleEnergyRecharged().
Sets pointer to node.
node | Pointer to node. |
Definition at line 92 of file acoustic-modem-energy-model.cc.
References m_node, NS_ASSERT, and NS_LOG_FUNCTION.
void ns3::AcousticModemEnergyModel::SetRxPowerW | ( | double | rxPowerW | ) |
Set the receiving power of the modem.
rxPowerW | Receiving power in watts |
Definition at line 142 of file acoustic-modem-energy-model.cc.
References m_rxPowerW, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::AcousticModemEnergyModel::SetSleepPowerW | ( | double | sleepPowerW | ) |
Set the sleep power of the modem.
sleepPowerW | Sleep power of the modem in watts. |
Definition at line 170 of file acoustic-modem-energy-model.cc.
References m_sleepPowerW, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::AcousticModemEnergyModel::SetTxPowerW | ( | double | txPowerW | ) |
Set the transmission power of the modem.
txPowerW | Transmission power in watts. |
Definition at line 128 of file acoustic-modem-energy-model.cc.
References m_txPowerW, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
|
private |
Current modem state.
Definition at line 232 of file acoustic-modem-energy-model.h.
Referenced by AcousticModemEnergyModel(), ChangeState(), DoGetCurrentA(), GetCurrentState(), and SetMicroModemState().
|
private |
Energy depletion callback.
Definition at line 236 of file acoustic-modem-energy-model.h.
Referenced by AcousticModemEnergyModel(), DoDispose(), HandleEnergyDepletion(), and SetEnergyDepletionCallback().
|
private |
Energy recharge callback.
Definition at line 239 of file acoustic-modem-energy-model.h.
Referenced by HandleEnergyRecharged(), and SetEnergyRechargeCallback().
|
private |
The idle power, in watts.
Definition at line 225 of file acoustic-modem-energy-model.h.
Referenced by ChangeState(), DoGetCurrentA(), GetIdlePowerW(), and SetIdlePowerW().
|
private |
Time stamp of previous energy update.
Definition at line 233 of file acoustic-modem-energy-model.h.
Referenced by AcousticModemEnergyModel(), and ChangeState().
The node hosting this transducer.
Definition at line 219 of file acoustic-modem-energy-model.h.
Referenced by AcousticModemEnergyModel(), ChangeState(), DoDispose(), GetNode(), HandleEnergyDepletion(), HandleEnergyRecharged(), and SetNode().
|
private |
The receiver power, in watts.
Definition at line 224 of file acoustic-modem-energy-model.h.
Referenced by ChangeState(), DoGetCurrentA(), GetRxPowerW(), and SetRxPowerW().
|
private |
The sleep power, in watts.
Definition at line 226 of file acoustic-modem-energy-model.h.
Referenced by ChangeState(), DoGetCurrentA(), GetSleepPowerW(), and SetSleepPowerW().
|
private |
The energy source.
Definition at line 220 of file acoustic-modem-energy-model.h.
Referenced by AcousticModemEnergyModel(), ChangeState(), DoDispose(), DoGetCurrentA(), and SetEnergySource().
|
private |
The total energy consumed by this model.
Definition at line 229 of file acoustic-modem-energy-model.h.
Referenced by ChangeState(), GetTotalEnergyConsumption(), and GetTypeId().
|
private |
The transmitter power, in watts.
Definition at line 223 of file acoustic-modem-energy-model.h.
Referenced by ChangeState(), DoGetCurrentA(), GetTxPowerW(), and SetTxPowerW().