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

#include <DimensionalSnir.h>

Inheritance diagram for inet::physicallayer::DimensionalSnir:
inet::physicallayer::SnirBase inet::physicallayer::ISnir inet::IPrintableObject

Public Member Functions

 DimensionalSnir (const DimensionalReception *reception, const DimensionalNoise *noise)
 
virtual std::ostream & printToStream (std::ostream &stream, int level, int evFlags=0) const override
 Prints this object to the provided output stream. More...
 
virtual double getMin () const override
 
virtual double getMax () const override
 
virtual double getMean () const override
 
- Public Member Functions inherited from inet::physicallayer::SnirBase
 SnirBase (const IReception *reception, const INoise *noise)
 
virtual const IReceptiongetReception () const override
 
virtual const INoisegetNoise () 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 Member Functions

virtual double computeMin () const
 
virtual double computeMax () const
 
virtual double computeMean () const
 

Protected Attributes

double minSNIR
 
double maxSNIR
 
double meanSNIR
 
- Protected Attributes inherited from inet::physicallayer::SnirBase
const IReceptionreception
 
const INoisenoise
 

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

◆ DimensionalSnir()

inet::physicallayer::DimensionalSnir::DimensionalSnir ( const DimensionalReception reception,
const DimensionalNoise noise 
)
14  :
16  minSNIR(NaN),
17  maxSNIR(NaN),
18  meanSNIR(NaN)
19 {
20 }

Member Function Documentation

◆ computeMax()

double inet::physicallayer::DimensionalSnir::computeMax ( ) const
protectedvirtual
56 {
57  // TODO factor out common part
58  const DimensionalNoise *dimensionalNoise = check_and_cast<const DimensionalNoise *>(noise);
59  const DimensionalReception *dimensionalReception = check_and_cast<const DimensionalReception *>(reception);
60  EV_DEBUG << "Reception power begin " << endl;
61  EV_DEBUG << *dimensionalReception->getPower() << endl;
62  EV_DEBUG << "Reception power end" << endl;
63  auto noisePower = dimensionalNoise->getPower();
64  auto receptionPower = dimensionalReception->getPower();
65  auto snir = receptionPower->divide(noisePower);
66  auto startTime = simsec(reception->getStartTime());
67  auto endTime = simsec(reception->getEndTime());
68  Hz centerFrequency = dimensionalReception->getCenterFrequency();
69  Hz bandwidth = dimensionalReception->getBandwidth();
70  Point<simsec, Hz> startPoint(startTime, centerFrequency - bandwidth / 2);
71  Point<simsec, Hz> endPoint(endTime, centerFrequency + bandwidth / 2);
72  EV_TRACE << "SNIR begin " << endl;
73  EV_TRACE << *snir << endl;
74  EV_TRACE << "SNIR end" << endl;
75  double maxSNIR = snir->getMax(Interval<simsec, Hz>(startPoint, endPoint, 0b1, 0b0, 0b0));
76  EV_DEBUG << "Computing maximum SNIR" << EV_FIELD(startPoint) << EV_FIELD(endPoint) << EV_FIELD(maxSNIR) << endl;
77  return maxSNIR;
78 }

Referenced by getMax().

◆ computeMean()

double inet::physicallayer::DimensionalSnir::computeMean ( ) const
protectedvirtual
81 {
82  // TODO factor out common part
83  const DimensionalNoise *dimensionalNoise = check_and_cast<const DimensionalNoise *>(noise);
84  const DimensionalReception *dimensionalReception = check_and_cast<const DimensionalReception *>(reception);
85  EV_TRACE << "Reception power begin " << endl;
86  EV_TRACE << *dimensionalReception->getPower() << endl;
87  EV_TRACE << "Reception power end" << endl;
88  auto noisePower = dimensionalNoise->getPower();
89  auto receptionPower = dimensionalReception->getPower();
90  auto snir = receptionPower->divide(noisePower);
91  auto startTime = simsec(reception->getStartTime());
92  auto endTime = simsec(reception->getEndTime());
93  Hz centerFrequency = dimensionalReception->getCenterFrequency();
94  Hz bandwidth = dimensionalReception->getBandwidth();
95  Point<simsec, Hz> startPoint(startTime, centerFrequency - bandwidth / 2);
96  Point<simsec, Hz> endPoint(endTime, centerFrequency + bandwidth / 2);
97  EV_TRACE << "SNIR begin " << endl;
98  EV_TRACE << *snir << endl;
99  EV_TRACE << "SNIR end" << endl;
100  double meanSNIR = snir->getMean(Interval<simsec, Hz>(startPoint, endPoint, 0b1, 0b0, 0b0));
101  EV_DEBUG << "Computing mean SNIR" << EV_FIELD(startPoint) << EV_FIELD(endPoint) << EV_FIELD(meanSNIR) << endl;
102  return meanSNIR;
103 }

Referenced by getMean().

◆ computeMin()

double inet::physicallayer::DimensionalSnir::computeMin ( ) const
protectedvirtual
31 {
32  // TODO factor out common part
33  const DimensionalNoise *dimensionalNoise = check_and_cast<const DimensionalNoise *>(noise);
34  const DimensionalReception *dimensionalReception = check_and_cast<const DimensionalReception *>(reception);
35  EV_TRACE << "Reception power begin " << endl;
36  EV_TRACE << *dimensionalReception->getPower() << endl;
37  EV_TRACE << "Reception power end" << endl;
38  auto noisePower = dimensionalNoise->getPower();
39  auto receptionPower = dimensionalReception->getPower();
40  auto snir = receptionPower->divide(noisePower);
41  simsec startTime = simsec(reception->getStartTime());
42  simsec endTime = simsec(reception->getEndTime());
43  Hz centerFrequency = dimensionalReception->getCenterFrequency();
44  Hz bandwidth = dimensionalReception->getBandwidth();
45  Point<simsec, Hz> startPoint(startTime, centerFrequency - bandwidth / 2);
46  Point<simsec, Hz> endPoint(endTime, centerFrequency + bandwidth / 2);
47  EV_TRACE << "SNIR begin " << endl;
48  EV_TRACE << *snir << endl;
49  EV_TRACE << "SNIR end" << endl;
50  double minSNIR = snir->getMin(Interval<simsec, Hz>(startPoint, endPoint, 0b1, 0b0, 0b0));
51  EV_DEBUG << "Computing minimum SNIR" << EV_FIELD(startPoint) << EV_FIELD(endPoint) << EV_FIELD(minSNIR) << endl;
52  return minSNIR;
53 }

Referenced by getMin().

◆ getMax()

double inet::physicallayer::DimensionalSnir::getMax ( ) const
overridevirtual

Implements inet::physicallayer::ISnir.

113 {
114  if (std::isnan(maxSNIR))
115  maxSNIR = computeMax();
116  return maxSNIR;
117 }

◆ getMean()

double inet::physicallayer::DimensionalSnir::getMean ( ) const
overridevirtual

Implements inet::physicallayer::ISnir.

120 {
121  if (std::isnan(meanSNIR))
122  meanSNIR = computeMean();
123  return meanSNIR;
124 }

◆ getMin()

double inet::physicallayer::DimensionalSnir::getMin ( ) const
overridevirtual

Implements inet::physicallayer::ISnir.

106 {
107  if (std::isnan(minSNIR))
108  minSNIR = computeMin();
109  return minSNIR;
110 }

◆ printToStream()

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

Prints this object to the provided output stream.

Reimplemented from inet::physicallayer::SnirBase.

23 {
24  stream << "DimensionalSnir";
25  if (level <= PRINT_LEVEL_DETAIL)
26  stream << EV_FIELD(minSNIR);
27  return SnirBase::printToStream(stream, level);
28 }

Member Data Documentation

◆ maxSNIR

double inet::physicallayer::DimensionalSnir::maxSNIR
mutableprotected

Referenced by computeMax(), and getMax().

◆ meanSNIR

double inet::physicallayer::DimensionalSnir::meanSNIR
mutableprotected

Referenced by computeMean(), and getMean().

◆ minSNIR

double inet::physicallayer::DimensionalSnir::minSNIR
mutableprotected

Referenced by computeMin(), getMin(), and printToStream().


The documentation for this class was generated from the following files:
inet::physicallayer::DimensionalSnir::maxSNIR
double maxSNIR
Definition: DimensionalSnir.h:23
inet::units::values::simsec
value< simtime_t, units::s > simsec
Definition: Units.h:1236
inet::units::units::Hz
pow< s, -1 > Hz
Definition: Units.h:935
inet::IPrintableObject::PRINT_LEVEL_DETAIL
@ PRINT_LEVEL_DETAIL
Definition: IPrintableObject.h:24
inet::physicallayer::IReception::getEndTime
virtual const simtime_t getEndTime() const =0
Returns the time when the receiver ended to receive the corresponding transmission.
inet::physicallayer::DimensionalSnir::meanSNIR
double meanSNIR
Definition: DimensionalSnir.h:24
inet::physicallayer::SnirBase::reception
const IReception * reception
Definition: SnirBase.h:22
inet::physicallayer::SnirBase::printToStream
virtual std::ostream & printToStream(std::ostream &stream, int level, int evFlags=0) const override
Prints this object to the provided output stream.
Definition: SnirBase.cc:20
inet::physicallayer::SnirBase::noise
const INoise * noise
Definition: SnirBase.h:23
EV_FIELD
#define EV_FIELD(...)
Definition: INETDefs.h:112
inet::physicallayer::IReception::getStartTime
virtual const simtime_t getStartTime() const =0
Returns the time when the receiver started to receive the corresponding transmission.
NaN
#define NaN
Definition: INETMath.h:91
inet::physicallayer::DimensionalSnir::computeMax
virtual double computeMax() const
Definition: DimensionalSnir.cc:55
inet::physicallayer::DimensionalSnir::computeMin
virtual double computeMin() const
Definition: DimensionalSnir.cc:30
inet::physicallayer::SnirBase::SnirBase
SnirBase(const IReception *reception, const INoise *noise)
Definition: SnirBase.cc:14
inet::physicallayer::DimensionalSnir::minSNIR
double minSNIR
Definition: DimensionalSnir.h:22
inet::physicallayer::DimensionalSnir::computeMean
virtual double computeMean() const
Definition: DimensionalSnir.cc:80