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

Implements the UnitDiskAnalogModel model, see the NED file for details. More...

#include <UnitDiskAnalogModel.h>

Inheritance diagram for inet::physicallayer::UnitDiskAnalogModel:
inet::physicallayer::IAnalogModel inet::IPrintableObject

Public Member Functions

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 IReceptioncomputeReception (const IRadio *radio, const ITransmission *transmission, const IArrival *arrival) const override
 Returns the reception for the provided transmission at the receiver. More...
 
virtual const INoisecomputeNoise (const IListening *listening, const IInterference *interference) const override
 Returns the total noise summing up all the interfering receptions and noises. More...
 
virtual const INoisecomputeNoise (const IReception *reception, const INoise *noise) const override
 Returns the total noise summing up all the reception and the noise. More...
 
virtual const ISnircomputeSNIR (const IReception *reception, const INoise *noise) const override
 Returns the signal to noise and interference ratio. More...
 
- 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
 

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) }
 

Detailed Description

Implements the UnitDiskAnalogModel model, see the NED file for details.

Member Function Documentation

◆ computeNoise() [1/2]

const INoise * inet::physicallayer::UnitDiskAnalogModel::computeNoise ( const IListening listening,
const IInterference interference 
) const
overridevirtual

Returns the total noise summing up all the interfering receptions and noises.

This function never returns nullptr.

Implements inet::physicallayer::IAnalogModel.

55 {
56  bool isInterfering = false;
57  for (auto interferingReception : *interference->getInterferingReceptions())
58  if (check_and_cast<const UnitDiskReception *>(interferingReception)->getPower() >= UnitDiskReception::POWER_INTERFERING)
59  isInterfering = true;
60  return new UnitDiskNoise(listening->getStartTime(), listening->getEndTime(), isInterfering);
61 }

◆ computeNoise() [2/2]

const INoise * inet::physicallayer::UnitDiskAnalogModel::computeNoise ( const IReception reception,
const INoise noise 
) const
overridevirtual

Returns the total noise summing up all the reception and the noise.

This function never returns nullptr.

Implements inet::physicallayer::IAnalogModel.

64 {
65  bool isInterfering = check_and_cast<const UnitDiskReception *>(reception)->getPower() >= UnitDiskReception::POWER_INTERFERING;
66  return new UnitDiskNoise(reception->getStartTime(), reception->getEndTime(), isInterfering);
67 }

◆ computeReception()

const IReception * inet::physicallayer::UnitDiskAnalogModel::computeReception ( const IRadio receiver,
const ITransmission transmission,
const IArrival arrival 
) const
overridevirtual

Returns the reception for the provided transmission at the receiver.

The result incorporates all modeled attenuation. This function never returns nullptr.

Implements inet::physicallayer::IAnalogModel.

28 {
29  const IRadioMedium *radioMedium = receiverRadio->getMedium();
30  const UnitDiskTransmission *idealTransmission = check_and_cast<const UnitDiskTransmission *>(transmission);
31  const simtime_t receptionStartTime = arrival->getStartTime();
32  const simtime_t receptionEndTime = arrival->getEndTime();
33  const Coord& receptionStartPosition = arrival->getStartPosition();
34  const Coord& receptionEndPosition = arrival->getEndPosition();
35  const Quaternion& receptionStartOrientation = arrival->getStartOrientation();
36  const Quaternion& receptionEndOrientation = arrival->getEndOrientation();
37  m distance = m(transmission->getStartPosition().distance(receptionStartPosition));
38  double obstacleLoss = radioMedium->getObstacleLoss() ? radioMedium->getObstacleLoss()->computeObstacleLoss(Hz(NaN), transmission->getStartPosition(), receptionStartPosition) : 1;
39  ASSERT(obstacleLoss == 0 || obstacleLoss == 1);
41  if (obstacleLoss == 0)
43  else if (distance <= idealTransmission->getCommunicationRange())
45  else if (distance <= idealTransmission->getInterferenceRange())
47  else if (distance <= idealTransmission->getDetectionRange())
49  else
51  return new UnitDiskReception(receiverRadio, transmission, receptionStartTime, receptionEndTime, receptionStartPosition, receptionEndPosition, receptionStartOrientation, receptionEndOrientation, power);
52 }

◆ computeSNIR()

const ISnir * inet::physicallayer::UnitDiskAnalogModel::computeSNIR ( const IReception reception,
const INoise noise 
) const
overridevirtual

Returns the signal to noise and interference ratio.

This function never returns nullptr.

Implements inet::physicallayer::IAnalogModel.

70 {
71  return new UnitDiskSnir(reception, noise);
72 }

◆ printToStream()

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

Prints this object to the provided output stream.

Reimplemented from inet::IPrintableObject.

23 {
24  return stream << "UnitDiskAnalogModel";
25 }

The documentation for this class was generated from the following files:
inet::units::units::Hz
pow< s, -1 > Hz
Definition: Units.h:935
inet::physicallayer::UnitDiskReception::Power
Power
Definition: UnitDiskReception.h:25
NaN
#define NaN
Definition: INETMath.h:91
inet::physicallayer::UnitDiskReception::POWER_DETECTABLE
@ POWER_DETECTABLE
Definition: UnitDiskReception.h:27
inet::physicallayer::UnitDiskReception::POWER_INTERFERING
@ POWER_INTERFERING
Definition: UnitDiskReception.h:28
inet::units::values::m
value< double, units::m > m
Definition: Units.h:1233
inet::physicallayer::UnitDiskReception::POWER_UNDETECTABLE
@ POWER_UNDETECTABLE
Definition: UnitDiskReception.h:26
inet::physicallayer::UnitDiskReception::POWER_RECEIVABLE
@ POWER_RECEIVABLE
Definition: UnitDiskReception.h:29