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

#include <ScalarNoise.h>

Inheritance diagram for inet::physicallayer::ScalarNoise:
inet::physicallayer::NarrowbandNoiseBase inet::physicallayer::NoiseBase inet::physicallayer::INoise inet::IPrintableObject

Public Member Functions

 ScalarNoise (simtime_t startTime, simtime_t endTime, Hz centerFrequency, Hz bandwidth, const std::map< simtime_t, W > *powerChanges)
 
virtual ~ScalarNoise ()
 
virtual std::ostream & printToStream (std::ostream &stream, int level, int evFlags=0) const override
 Prints this object to the provided output stream. More...
 
virtual const std::map< simtime_t, W > * getPowerChanges () const
 
virtual W computeMinPower (simtime_t startTime, simtime_t endTime) const override
 
virtual W computeMaxPower (simtime_t startTime, simtime_t endTime) const override
 
- Public Member Functions inherited from inet::physicallayer::NarrowbandNoiseBase
 NarrowbandNoiseBase (simtime_t startTime, simtime_t endTime, Hz centerFrequency, Hz bandwidth)
 
virtual Hz getCenterFrequency () const
 
virtual Hz getBandwidth () const
 
- Public Member Functions inherited from inet::physicallayer::NoiseBase
 NoiseBase (simtime_t startTime, simtime_t endTime)
 
virtual const simtime_t getStartTime () const override
 
virtual const simtime_t getEndTime () const override
 
- Public Member Functions inherited from inet::IPrintableObject
virtual ~IPrintableObject ()
 
virtual std::string printToString () const
 
virtual std::string printToString (int level, int evFlags=0) const
 
virtual std::string getInfoStringRepresentation (int evFlags=0) const
 
virtual std::string getDetailStringRepresentation (int evFlags=0) const
 
virtual std::string getDebugStringRepresentation (int evFlags=0) const
 
virtual std::string getTraceStringRepresentation (int evFlags=0) const
 
virtual std::string getCompleteStringRepresentation (int evFlags=0) const
 

Protected Attributes

const std::map< simtime_t, W > * powerChanges
 
- Protected Attributes inherited from inet::physicallayer::NarrowbandNoiseBase
const Hz centerFrequency
 
const Hz bandwidth
 
- Protected Attributes inherited from inet::physicallayer::NoiseBase
const simtime_t startTime
 
const simtime_t endTime
 

Additional Inherited Members

- Public Types inherited from inet::IPrintableObject
enum  PrintLevel {
  PRINT_LEVEL_TRACE, PRINT_LEVEL_DEBUG, PRINT_LEVEL_DETAIL, PRINT_LEVEL_INFO,
  PRINT_LEVEL_COMPLETE = INT_MIN
}
 
enum  PrintFlag { PRINT_FLAG_FORMATTED = (1 << 0), PRINT_FLAG_MULTILINE = (1 << 1) }
 

Constructor & Destructor Documentation

◆ ScalarNoise()

inet::physicallayer::ScalarNoise::ScalarNoise ( simtime_t  startTime,
simtime_t  endTime,
Hz  centerFrequency,
Hz  bandwidth,
const std::map< simtime_t, W > *  powerChanges 
)

◆ ~ScalarNoise()

virtual inet::physicallayer::ScalarNoise::~ScalarNoise ( )
inlinevirtual
24 { delete powerChanges; }

Member Function Documentation

◆ computeMaxPower()

W inet::physicallayer::ScalarNoise::computeMaxPower ( simtime_t  startTime,
simtime_t  endTime 
) const
overridevirtual

Implements inet::physicallayer::NarrowbandNoiseBase.

47 {
48  W noisePower = W(0);
49  W maxNoisePower = W(NaN);
50  simtime_t previousTime;
51  for (const auto& elem : *powerChanges) {
52  if ((std::isnan(maxNoisePower.get()) || noisePower > maxNoisePower) && previousTime < startTime && elem.first > endTime)
53  maxNoisePower = noisePower;
54  noisePower += elem.second;
55  if ((std::isnan(maxNoisePower.get()) || noisePower > maxNoisePower) && startTime <= elem.first && elem.first < endTime)
56  maxNoisePower = noisePower;
57  previousTime = elem.first;
58  }
59  if (std::isnan(maxNoisePower.get()))
60  maxNoisePower = previousTime < startTime ? W(0) : noisePower;
61  return maxNoisePower;
62 }

Referenced by inet::physicallayer::ScalarSnir::computeMin().

◆ computeMinPower()

W inet::physicallayer::ScalarNoise::computeMinPower ( simtime_t  startTime,
simtime_t  endTime 
) const
overridevirtual

Implements inet::physicallayer::NarrowbandNoiseBase.

29 {
30  W noisePower = W(0);
31  W minNoisePower = W(NaN);
32  simtime_t previousTime;
33  for (const auto& elem : *powerChanges) {
34  if ((std::isnan(minNoisePower.get()) || noisePower < minNoisePower) && previousTime < startTime && elem.first > endTime)
35  minNoisePower = noisePower;
36  noisePower += elem.second;
37  if ((std::isnan(minNoisePower.get()) || noisePower < minNoisePower) && startTime <= elem.first && elem.first < endTime)
38  minNoisePower = noisePower;
39  previousTime = elem.first;
40  }
41  if (std::isnan(minNoisePower.get()))
42  minNoisePower = previousTime < startTime ? W(0) : noisePower;
43  return minNoisePower;
44 }

Referenced by inet::physicallayer::ScalarSnir::computeMax().

◆ getPowerChanges()

virtual const std::map<simtime_t, W>* inet::physicallayer::ScalarNoise::getPowerChanges ( ) const
inlinevirtual

◆ printToStream()

std::ostream & inet::physicallayer::ScalarNoise::printToStream ( std::ostream &  stream,
int  level,
int  evFlags = 0 
) const
overridevirtual

Prints this object to the provided output stream.

Reimplemented from inet::physicallayer::NarrowbandNoiseBase.

21 {
22  stream << "ScalarNoise";
23  if (level <= PRINT_LEVEL_DETAIL)
24  stream << EV_FIELD(powerChanges);
25  return NarrowbandNoiseBase::printToStream(stream, level);
26 }

Member Data Documentation

◆ powerChanges

const std::map<simtime_t, W>* inet::physicallayer::ScalarNoise::powerChanges
protected

The documentation for this class was generated from the following files:
inet::IPrintableObject::PRINT_LEVEL_DETAIL
@ PRINT_LEVEL_DETAIL
Definition: IPrintableObject.h:24
inet::units::units::W
compose< J, pow< s, -1 > > W
Definition: Units.h:939
inet::physicallayer::NoiseBase::startTime
const simtime_t startTime
Definition: NoiseBase.h:20
inet::physicallayer::NarrowbandNoiseBase::centerFrequency
const Hz centerFrequency
Definition: NarrowbandNoiseBase.h:23
inet::physicallayer::NarrowbandNoiseBase::NarrowbandNoiseBase
NarrowbandNoiseBase(simtime_t startTime, simtime_t endTime, Hz centerFrequency, Hz bandwidth)
Definition: NarrowbandNoiseBase.cc:14
EV_FIELD
#define EV_FIELD(...)
Definition: INETDefs.h:112
NaN
#define NaN
Definition: INETMath.h:91
inet::physicallayer::NarrowbandNoiseBase::printToStream
virtual std::ostream & printToStream(std::ostream &stream, int level, int evFlags=0) const override
Prints this object to the provided output stream.
Definition: NarrowbandNoiseBase.cc:21
inet::physicallayer::NoiseBase::endTime
const simtime_t endTime
Definition: NoiseBase.h:21
inet::physicallayer::NarrowbandNoiseBase::bandwidth
const Hz bandwidth
Definition: NarrowbandNoiseBase.h:24
inet::physicallayer::ScalarNoise::powerChanges
const std::map< simtime_t, W > * powerChanges
Definition: ScalarNoise.h:20