25 #ifndef PROPAGATION_LOSS_MODEL_H
26 #define PROPAGATION_LOSS_MODEL_H
28 #include "ns3/object.h"
29 #include "ns3/random-variable-stream.h"
228 double DbmToW (
double dbm)
const;
231 static const double PI;
321 double DbmToW (
double dbm)
const;
324 static const double PI;
368 void SetReference (
double referenceDistance,
double referenceLoss);
static Ptr< PropagationLossModel > CreateDefaultReference(void)
PropagationLossModel & operator=(const PropagationLossModel &o)
void SetFrequency(double frequency)
virtual double DoCalcRxPower(double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
void SetDefaultLoss(double)
Set default loss (in dB, positive) to be used, infinity if not set.
virtual double DoCalcRxPower(double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
void SetPathLossExponent(double n)
void SetNext(Ptr< PropagationLossModel > next)
Enables a chain of loss models to act on the signal.
FriisPropagationLossModel & operator=(const FriisPropagationLossModel &o)
a Two-Ray Ground propagation loss model ported from NS2
double GetFrequency(void) const
virtual double DoCalcRxPower(double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
virtual double DoCalcRxPower(double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
double GetMinDistance(void) const
The propagation loss depends only on the distance (range) between transmitter and receiver...
double m_default
default loss
double GetPathLossExponent(void) const
Ptr< RandomVariableStream > m_variable
static TypeId GetTypeId(void)
static TypeId GetTypeId(void)
virtual double DoCalcRxPower(double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
RandomPropagationLossModel()
virtual int64_t DoAssignStreams(int64_t stream)
Subclasses must implement this; those not using random variables can return zero. ...
A log distance path loss propagation model with three distance fields.
static TypeId GetTypeId(void)
void SetMinDistance(double minDistance)
virtual int64_t DoAssignStreams(int64_t stream)
Subclasses must implement this; those not using random variables can return zero. ...
TwoRayGroundPropagationLossModel & operator=(const TwoRayGroundPropagationLossModel &o)
Ptr< PropagationLossModel > GetNext()
Gets the next PropagationLossModel in the chain of loss models that act on the signal.
double DbmToW(double dbm) const
RandomPropagationLossModel & operator=(const RandomPropagationLossModel &o)
static TypeId GetTypeId(void)
virtual ~RandomPropagationLossModel()
static TypeId GetTypeId(void)
virtual double DoCalcRxPower(double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
virtual double DoCalcRxPower(double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const =0
ThreeLogDistancePropagationLossModel & operator=(const ThreeLogDistancePropagationLossModel &o)
static TypeId GetTypeId(void)
double CalcRxPower(double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
The propagation loss follows a random distribution.
ThreeLogDistancePropagationLossModel()
virtual int64_t DoAssignStreams(int64_t stream)
Subclasses must implement this; those not using random variables can return zero. ...
void SetMinDistance(double minDistance)
LogDistancePropagationLossModel()
a Friis propagation loss model
Ptr< GammaRandomVariable > m_gammaRandomVariable
RangePropagationLossModel & operator=(const RangePropagationLossModel &o)
virtual ~PropagationLossModel()
FriisPropagationLossModel()
NakagamiPropagationLossModel()
Ptr< PropagationLossModel > m_next
virtual int64_t DoAssignStreams(int64_t stream)
Subclasses must implement this; those not using random variables can return zero. ...
Nakagami-m fast fading propagation loss model.
Ptr< ErlangRandomVariable > m_erlangRandomVariable
void SetSystemLoss(double systemLoss)
LogDistancePropagationLossModel & operator=(const LogDistancePropagationLossModel &o)
double GetMinDistance(void) const
virtual ~MatrixPropagationLossModel()
double m_referenceDistance
double GetSystemLoss(void) const
NakagamiPropagationLossModel & operator=(const NakagamiPropagationLossModel &o)
Modelize the propagation loss through a transmission medium.
static TypeId GetTypeId(void)
double GetSystemLoss(void) const
virtual double DoCalcRxPower(double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
static TypeId GetTypeId(void)
void SetLoss(Ptr< MobilityModel > a, Ptr< MobilityModel > b, double loss, bool symmetric=true)
Set loss (in dB, positive) between pair of ns-3 objects (typically, nodes).
virtual int64_t DoAssignStreams(int64_t stream)
Subclasses must implement this; those not using random variables can return zero. ...
virtual int64_t DoAssignStreams(int64_t stream)
Subclasses must implement this; those not using random variables can return zero. ...
double DbmToW(double dbm) const
void SetFrequency(double frequency)
void SetHeightAboveZ(double heightAboveZ)
RangePropagationLossModel()
virtual int64_t DoAssignStreams(int64_t stream)
Subclasses must implement this; those not using random variables can return zero. ...
void SetReference(double referenceDistance, double referenceLoss)
a base class which provides memory management and object aggregation
std::pair< Ptr< MobilityModel >, Ptr< MobilityModel > > MobilityPair
static TypeId GetTypeId(void)
void SetSystemLoss(double systemLoss)
a log distance propagation model.
MatrixPropagationLossModel()
a unique identifier for an interface.
The propagation loss is fixed for each pair of nodes and doesn't depend on their actual positions...
TwoRayGroundPropagationLossModel()
int64_t AssignStreams(int64_t stream)
If this loss model uses objects of type RandomVariableStream, set the stream numbers to the integers ...
double GetFrequency(void) const
virtual int64_t DoAssignStreams(int64_t stream)
Subclasses must implement this; those not using random variables can return zero. ...
double DbmFromW(double w) const
double DbmFromW(double w) const
std::map< MobilityPair, double > m_loss
Fixed loss between pair of nodes.
virtual double DoCalcRxPower(double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
virtual int64_t DoAssignStreams(int64_t stream)=0
Subclasses must implement this; those not using random variables can return zero. ...