INET Framework for OMNeT++/OMNEST
inet::physicallayer::StateBasedEpEnergyConsumer Class Reference

This is a simple radio power consumer model. More...

#include <StateBasedEpEnergyConsumer.h>

Inheritance diagram for inet::physicallayer::StateBasedEpEnergyConsumer:
inet::power::IEpEnergyConsumer inet::power::IEnergyConsumer

Public Member Functions

virtual power::IEnergySourcegetEnergySource () const override
 Returns the energy source that provides energy for this energy consumer. More...
 
virtual W getPowerConsumption () const override
 Returns the power consumption in the range [0, +infinity). More...
 
virtual void receiveSignal (cComponent *source, simsignal_t signal, intval_t value, cObject *details) override
 
- Public Member Functions inherited from inet::power::IEnergyConsumer
virtual ~IEnergyConsumer ()
 

Protected Member Functions

virtual int numInitStages () const override
 
virtual void initialize (int stage) override
 
virtual W computePowerConsumption () const
 

Protected Attributes

W offPowerConsumption = W(NaN)
 
W sleepPowerConsumption = W(NaN)
 
W switchingPowerConsumption = W(NaN)
 
W receiverIdlePowerConsumption = W(NaN)
 
W receiverBusyPowerConsumption = W(NaN)
 
W receiverReceivingPowerConsumption = W(NaN)
 
W receiverReceivingPreamblePowerConsumption = W(NaN)
 
W receiverReceivingHeaderPowerConsumption = W(NaN)
 
W receiverReceivingDataPowerConsumption = W(NaN)
 
W transmitterIdlePowerConsumption = W(NaN)
 
W transmitterTransmittingPowerConsumption = W(NaN)
 
W transmitterTransmittingPreamblePowerConsumption = W(NaN)
 
W transmitterTransmittingHeaderPowerConsumption = W(NaN)
 
W transmitterTransmittingDataPowerConsumption = W(NaN)
 
opp_component_ptr< IRadioradio
 
ModuleRefByPar< power::IEpEnergySourceenergySource
 
W powerConsumption = W(NaN)
 

Additional Inherited Members

- Static Public Attributes inherited from inet::power::IEpEnergyConsumer
static simsignal_t powerConsumptionChangedSignal = cComponent::registerSignal("powerConsumptionChanged")
 The signal that is used to publish power consumption changes. More...
 

Detailed Description

This is a simple radio power consumer model.

The power consumption is determined by the radio mode, the transmitter state and the receiver state using constant parameters.

Member Function Documentation

◆ computePowerConsumption()

W inet::physicallayer::StateBasedEpEnergyConsumer::computePowerConsumption ( ) const
protectedvirtual
71 {
72  IRadio::RadioMode radioMode = radio->getRadioMode();
73  if (radioMode == IRadio::RADIO_MODE_OFF)
74  return offPowerConsumption;
75  else if (radioMode == IRadio::RADIO_MODE_SLEEP)
76  return sleepPowerConsumption;
77  else if (radioMode == IRadio::RADIO_MODE_SWITCHING)
79  W powerConsumption = W(0);
80  IRadio::ReceptionState receptionState = radio->getReceptionState();
81  IRadio::TransmissionState transmissionState = radio->getTransmissionState();
82  if (radioMode == IRadio::RADIO_MODE_RECEIVER || radioMode == IRadio::RADIO_MODE_TRANSCEIVER) {
83  switch (receptionState) {
86  break;
89  break;
91  auto part = radio->getReceivedSignalPart();
92  switch (part) {
94  break;
97  break;
100  break;
103  break;
106  break;
107  default:
108  throw cRuntimeError("Unknown received signal part");
109  }
110  break;
111  }
113  break;
114  default:
115  throw cRuntimeError("Unknown radio reception state");
116  }
117  }
118  if (radioMode == IRadio::RADIO_MODE_TRANSMITTER || radioMode == IRadio::RADIO_MODE_TRANSCEIVER) {
119  switch (transmissionState) {
122  break;
124  auto part = radio->getTransmittedSignalPart();
125  switch (part) {
127  break;
130  break;
133  break;
136  break;
139  break;
140  default:
141  throw cRuntimeError("Unknown transmitted signal part");
142  }
143  break;
144  }
146  break;
147  default:
148  throw cRuntimeError("Unknown radio transmission state");
149  }
150  }
151  return powerConsumption;
152 }

◆ getEnergySource()

virtual power::IEnergySource* inet::physicallayer::StateBasedEpEnergyConsumer::getEnergySource ( ) const
inlineoverridevirtual

Returns the energy source that provides energy for this energy consumer.

This function never returns nullptr.

Implements inet::power::IEnergyConsumer.

58 { return energySource; }

◆ getPowerConsumption()

virtual W inet::physicallayer::StateBasedEpEnergyConsumer::getPowerConsumption ( ) const
inlineoverridevirtual

Returns the power consumption in the range [0, +infinity).

Implements inet::power::IEpEnergyConsumer.

59 { return powerConsumption; }

◆ initialize()

void inet::physicallayer::StateBasedEpEnergyConsumer::initialize ( int  stage)
overrideprotectedvirtual
21 {
22  cSimpleModule::initialize(stage);
23  if (stage == INITSTAGE_LOCAL) {
24  offPowerConsumption = W(par("offPowerConsumption"));
25  sleepPowerConsumption = W(par("sleepPowerConsumption"));
26  switchingPowerConsumption = W(par("switchingPowerConsumption"));
27  receiverIdlePowerConsumption = W(par("receiverIdlePowerConsumption"));
28  receiverBusyPowerConsumption = W(par("receiverBusyPowerConsumption"));
29  receiverReceivingPowerConsumption = W(par("receiverReceivingPowerConsumption"));
30  receiverReceivingPreamblePowerConsumption = W(par("receiverReceivingPreamblePowerConsumption"));
31  receiverReceivingHeaderPowerConsumption = W(par("receiverReceivingHeaderPowerConsumption"));
32  receiverReceivingDataPowerConsumption = W(par("receiverReceivingDataPowerConsumption"));
33  transmitterIdlePowerConsumption = W(par("transmitterIdlePowerConsumption"));
34  transmitterTransmittingPowerConsumption = W(par("transmitterTransmittingPowerConsumption"));
35  transmitterTransmittingPreamblePowerConsumption = W(par("transmitterTransmittingPreamblePowerConsumption"));
36  transmitterTransmittingHeaderPowerConsumption = W(par("transmitterTransmittingHeaderPowerConsumption"));
37  transmitterTransmittingDataPowerConsumption = W(par("transmitterTransmittingDataPowerConsumption"));
38  cModule *radioModule = getParentModule();
39  radioModule->subscribe(IRadio::radioModeChangedSignal, this);
40  radioModule->subscribe(IRadio::receptionStateChangedSignal, this);
41  radioModule->subscribe(IRadio::transmissionStateChangedSignal, this);
42  radioModule->subscribe(IRadio::receivedSignalPartChangedSignal, this);
43  radioModule->subscribe(IRadio::transmittedSignalPartChangedSignal, this);
44  radio = check_and_cast<IRadio *>(radioModule);
45  powerConsumption = W(0);
46  energySource.reference(this, "energySourceModule", true);
47  WATCH(powerConsumption);
48  }
49  else if (stage == INITSTAGE_POWER)
50  energySource->addEnergyConsumer(this);
51 }

◆ numInitStages()

virtual int inet::physicallayer::StateBasedEpEnergyConsumer::numInitStages ( ) const
inlineoverrideprotectedvirtual
53 { return NUM_INIT_STAGES; }

◆ receiveSignal()

void inet::physicallayer::StateBasedEpEnergyConsumer::receiveSignal ( cComponent *  source,
simsignal_t  signal,
intval_t  value,
cObject *  details 
)
overridevirtual
54 {
55  Enter_Method("%s", cComponent::getSignalName(signal));
56 
57  if (signal == IRadio::radioModeChangedSignal ||
62  {
65  }
66  else
67  throw cRuntimeError("Unknown signal");
68 }

Member Data Documentation

◆ energySource

ModuleRefByPar<power::IEpEnergySource> inet::physicallayer::StateBasedEpEnergyConsumer::energySource
protected

◆ offPowerConsumption

W inet::physicallayer::StateBasedEpEnergyConsumer::offPowerConsumption = W(NaN)
protected

◆ powerConsumption

W inet::physicallayer::StateBasedEpEnergyConsumer::powerConsumption = W(NaN)
protected

◆ radio

opp_component_ptr<IRadio> inet::physicallayer::StateBasedEpEnergyConsumer::radio
protected

◆ receiverBusyPowerConsumption

W inet::physicallayer::StateBasedEpEnergyConsumer::receiverBusyPowerConsumption = W(NaN)
protected

◆ receiverIdlePowerConsumption

W inet::physicallayer::StateBasedEpEnergyConsumer::receiverIdlePowerConsumption = W(NaN)
protected

◆ receiverReceivingDataPowerConsumption

W inet::physicallayer::StateBasedEpEnergyConsumer::receiverReceivingDataPowerConsumption = W(NaN)
protected

◆ receiverReceivingHeaderPowerConsumption

W inet::physicallayer::StateBasedEpEnergyConsumer::receiverReceivingHeaderPowerConsumption = W(NaN)
protected

◆ receiverReceivingPowerConsumption

W inet::physicallayer::StateBasedEpEnergyConsumer::receiverReceivingPowerConsumption = W(NaN)
protected

◆ receiverReceivingPreamblePowerConsumption

W inet::physicallayer::StateBasedEpEnergyConsumer::receiverReceivingPreamblePowerConsumption = W(NaN)
protected

◆ sleepPowerConsumption

W inet::physicallayer::StateBasedEpEnergyConsumer::sleepPowerConsumption = W(NaN)
protected

◆ switchingPowerConsumption

W inet::physicallayer::StateBasedEpEnergyConsumer::switchingPowerConsumption = W(NaN)
protected

◆ transmitterIdlePowerConsumption

W inet::physicallayer::StateBasedEpEnergyConsumer::transmitterIdlePowerConsumption = W(NaN)
protected

◆ transmitterTransmittingDataPowerConsumption

W inet::physicallayer::StateBasedEpEnergyConsumer::transmitterTransmittingDataPowerConsumption = W(NaN)
protected

◆ transmitterTransmittingHeaderPowerConsumption

W inet::physicallayer::StateBasedEpEnergyConsumer::transmitterTransmittingHeaderPowerConsumption = W(NaN)
protected

◆ transmitterTransmittingPowerConsumption

W inet::physicallayer::StateBasedEpEnergyConsumer::transmitterTransmittingPowerConsumption = W(NaN)
protected

◆ transmitterTransmittingPreamblePowerConsumption

W inet::physicallayer::StateBasedEpEnergyConsumer::transmitterTransmittingPreamblePowerConsumption = W(NaN)
protected

The documentation for this class was generated from the following files:
inet::physicallayer::IRadioSignal::SIGNAL_PART_WHOLE
@ SIGNAL_PART_WHOLE
Definition: IRadioSignal.h:26
inet::physicallayer::StateBasedEpEnergyConsumer::receiverIdlePowerConsumption
W receiverIdlePowerConsumption
Definition: StateBasedEpEnergyConsumer.h:33
inet::physicallayer::IRadio::RECEPTION_STATE_IDLE
@ RECEPTION_STATE_IDLE
The radio medium is free, no signal is detected.
Definition: IRadio.h:136
inet::physicallayer::IRadio::RADIO_MODE_TRANSCEIVER
@ RADIO_MODE_TRANSCEIVER
The radio is prepared for simultaneous frame reception and transmission, power consumption is low whe...
Definition: IRadio.h:111
inet::INITSTAGE_POWER
INET_API InitStage INITSTAGE_POWER
Initialization of the power model: energy storage, energy consumer, energy generator,...
inet::physicallayer::IRadioSignal::SIGNAL_PART_NONE
@ SIGNAL_PART_NONE
Definition: IRadioSignal.h:25
inet::physicallayer::IRadio::RADIO_MODE_OFF
@ RADIO_MODE_OFF
The radio is turned off, frame reception or transmission is not possible, power consumption is zero,...
Definition: IRadio.h:84
inet::physicallayer::StateBasedEpEnergyConsumer::switchingPowerConsumption
W switchingPowerConsumption
Definition: StateBasedEpEnergyConsumer.h:32
inet::physicallayer::IRadio::RADIO_MODE_SWITCHING
@ RADIO_MODE_SWITCHING
The radio is switching from one mode to another, frame reception or transmission is not possible,...
Definition: IRadio.h:117
inet::physicallayer::IRadio::RADIO_MODE_SLEEP
@ RADIO_MODE_SLEEP
The radio is sleeping, frame reception or transmission is not possible, power consumption is minimal,...
Definition: IRadio.h:90
inet::power::IEpEnergyConsumer::powerConsumptionChangedSignal
static simsignal_t powerConsumptionChangedSignal
The signal that is used to publish power consumption changes.
Definition: IEpEnergyConsumer.h:32
inet::units::units::W
compose< J, pow< s, -1 > > W
Definition: Units.h:939
inet::physicallayer::IRadio::RECEPTION_STATE_RECEIVING
@ RECEPTION_STATE_RECEIVING
The radio medium is busy, a signal strong enough to receive is detected.
Definition: IRadio.h:149
inet::physicallayer::StateBasedEpEnergyConsumer::transmitterTransmittingDataPowerConsumption
W transmitterTransmittingDataPowerConsumption
Definition: StateBasedEpEnergyConsumer.h:43
inet::physicallayer::StateBasedEpEnergyConsumer::computePowerConsumption
virtual W computePowerConsumption() const
Definition: StateBasedEpEnergyConsumer.cc:70
inet::physicallayer::StateBasedEpEnergyConsumer::receiverReceivingPreamblePowerConsumption
W receiverReceivingPreamblePowerConsumption
Definition: StateBasedEpEnergyConsumer.h:36
inet::physicallayer::StateBasedEpEnergyConsumer::transmitterIdlePowerConsumption
W transmitterIdlePowerConsumption
Definition: StateBasedEpEnergyConsumer.h:39
inet::physicallayer::IRadio::RECEPTION_STATE_UNDEFINED
@ RECEPTION_STATE_UNDEFINED
The radio medium state is unknown, reception state is meaningless, signal detection is not possible.
Definition: IRadio.h:130
inet::physicallayer::IRadio::transmissionStateChangedSignal
static simsignal_t transmissionStateChangedSignal
This signal is emitted when the radio transmission state of the radio is changed.
Definition: IRadio.h:60
inet::physicallayer::IRadio::RADIO_MODE_TRANSMITTER
@ RADIO_MODE_TRANSMITTER
The radio is prepared for frame transmission, frame reception is not possible, power consumption is l...
Definition: IRadio.h:104
inet::physicallayer::IRadio::ReceptionState
ReceptionState
This enumeration specifies the reception state of the radio.
Definition: IRadio.h:124
inet::physicallayer::IRadio::receivedSignalPartChangedSignal
static simsignal_t receivedSignalPartChangedSignal
This signal is emitted when the received part is changed by the radio.
Definition: IRadio.h:66
inet::physicallayer::IRadio::transmittedSignalPartChangedSignal
static simsignal_t transmittedSignalPartChangedSignal
This signal is emitted when the transmitted part is changed by the radio.
Definition: IRadio.h:72
inet::physicallayer::IRadioSignal::SIGNAL_PART_HEADER
@ SIGNAL_PART_HEADER
Definition: IRadioSignal.h:28
inet::physicallayer::IRadioSignal::SIGNAL_PART_PREAMBLE
@ SIGNAL_PART_PREAMBLE
Definition: IRadioSignal.h:27
inet::physicallayer::StateBasedEpEnergyConsumer::sleepPowerConsumption
W sleepPowerConsumption
Definition: StateBasedEpEnergyConsumer.h:31
inet::physicallayer::IRadio::RADIO_MODE_RECEIVER
@ RADIO_MODE_RECEIVER
The radio is prepared for frame reception, frame transmission is not possible, power consumption is l...
Definition: IRadio.h:97
inet::physicallayer::StateBasedEpEnergyConsumer::receiverReceivingPowerConsumption
W receiverReceivingPowerConsumption
Definition: StateBasedEpEnergyConsumer.h:35
inet::physicallayer::StateBasedEpEnergyConsumer::powerConsumption
W powerConsumption
Definition: StateBasedEpEnergyConsumer.h:50
inet::physicallayer::StateBasedEpEnergyConsumer::receiverReceivingHeaderPowerConsumption
W receiverReceivingHeaderPowerConsumption
Definition: StateBasedEpEnergyConsumer.h:37
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::physicallayer::IRadio::TRANSMISSION_STATE_TRANSMITTING
@ TRANSMISSION_STATE_TRANSMITTING
The radio medium is busy, the radio is currently transmitting a signal.
Definition: IRadio.h:171
inet::physicallayer::StateBasedEpEnergyConsumer::energySource
ModuleRefByPar< power::IEpEnergySource > energySource
Definition: StateBasedEpEnergyConsumer.h:47
NUM_INIT_STAGES
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
inet::physicallayer::IRadioSignal::SIGNAL_PART_DATA
@ SIGNAL_PART_DATA
Definition: IRadioSignal.h:29
inet::physicallayer::StateBasedEpEnergyConsumer::offPowerConsumption
W offPowerConsumption
Definition: StateBasedEpEnergyConsumer.h:30
inet::physicallayer::IRadio::RECEPTION_STATE_BUSY
@ RECEPTION_STATE_BUSY
The radio medium is busy, a signal is detected but it is not strong enough to receive.
Definition: IRadio.h:143
inet::physicallayer::StateBasedEpEnergyConsumer::transmitterTransmittingPowerConsumption
W transmitterTransmittingPowerConsumption
Definition: StateBasedEpEnergyConsumer.h:40
Enter_Method
#define Enter_Method(...)
Definition: SelfDoc.h:71
inet::physicallayer::IRadio::TransmissionState
TransmissionState
This enumeration specifies the transmission state of the radio.
Definition: IRadio.h:155
inet::physicallayer::StateBasedEpEnergyConsumer::radio
opp_component_ptr< IRadio > radio
Definition: StateBasedEpEnergyConsumer.h:46
inet::units::value::get
const value_type & get() const
Definition: Units.h:108
inet::physicallayer::StateBasedEpEnergyConsumer::receiverReceivingDataPowerConsumption
W receiverReceivingDataPowerConsumption
Definition: StateBasedEpEnergyConsumer.h:38
inet::physicallayer::StateBasedEpEnergyConsumer::transmitterTransmittingHeaderPowerConsumption
W transmitterTransmittingHeaderPowerConsumption
Definition: StateBasedEpEnergyConsumer.h:42
inet::physicallayer::StateBasedEpEnergyConsumer::receiverBusyPowerConsumption
W receiverBusyPowerConsumption
Definition: StateBasedEpEnergyConsumer.h:34
inet::physicallayer::IRadio::RadioMode
RadioMode
This enumeration specifies the requested operational mode of the radio.
Definition: IRadio.h:79
inet::physicallayer::StateBasedEpEnergyConsumer::transmitterTransmittingPreamblePowerConsumption
W transmitterTransmittingPreamblePowerConsumption
Definition: StateBasedEpEnergyConsumer.h:41
inet::physicallayer::IRadio::TRANSMISSION_STATE_UNDEFINED
@ TRANSMISSION_STATE_UNDEFINED
The transmission state is undefined or meaningless.
Definition: IRadio.h:160
inet::physicallayer::IRadio::TRANSMISSION_STATE_IDLE
@ TRANSMISSION_STATE_IDLE
The radio is not transmitting a signal on the radio medium.
Definition: IRadio.h:166
inet::physicallayer::IRadio::receptionStateChangedSignal
static simsignal_t receptionStateChangedSignal
This signal is emitted when the radio reception state of the radio is changed.
Definition: IRadio.h:54
inet::physicallayer::IRadio::radioModeChangedSignal
static simsignal_t radioModeChangedSignal
This signal is emitted when the radio mode of the radio is changed.
Definition: IRadio.h:42