spectrum: Make it possible to chain propagation loss models

For example, this change makes it possible to chain fading model with
frequency-dependent pathloss model.
This commit is contained in:
Alexander Krotov
2016-04-05 14:56:46 +03:00
parent 6bfbef9f30
commit be325774b3
3 changed files with 20 additions and 7 deletions

View File

@@ -438,14 +438,21 @@ void
MultiModelSpectrumChannel::AddPropagationLossModel (Ptr<PropagationLossModel> loss)
{
NS_LOG_FUNCTION (this << loss);
NS_ASSERT (m_propagationLoss == 0);
if (m_propagationLoss)
{
loss->SetNext (m_propagationLoss);
}
m_propagationLoss = loss;
}
void
MultiModelSpectrumChannel::AddSpectrumPropagationLossModel (Ptr<SpectrumPropagationLossModel> loss)
{
NS_ASSERT (m_spectrumPropagationLoss == 0);
NS_LOG_FUNCTION (this << loss);
if (m_spectrumPropagationLoss)
{
loss->SetNext (m_spectrumPropagationLoss);
}
m_spectrumPropagationLoss = loss;
}

View File

@@ -239,7 +239,10 @@ void
SingleModelSpectrumChannel::AddPropagationLossModel (Ptr<PropagationLossModel> loss)
{
NS_LOG_FUNCTION (this << loss);
NS_ASSERT (m_propagationLoss == 0);
if (m_propagationLoss)
{
loss->SetNext (m_propagationLoss);
}
m_propagationLoss = loss;
}
@@ -248,7 +251,10 @@ void
SingleModelSpectrumChannel::AddSpectrumPropagationLossModel (Ptr<SpectrumPropagationLossModel> loss)
{
NS_LOG_FUNCTION (this << loss);
NS_ASSERT (m_spectrumPropagationLoss == 0);
if (m_spectrumPropagationLoss)
{
loss->SetNext (m_spectrumPropagationLoss);
}
m_spectrumPropagationLoss = loss;
}

View File

@@ -55,7 +55,7 @@ public:
static TypeId GetTypeId (void);
/**
* Set the single-frequency propagation loss model to be used
* Add the single-frequency propagation loss model to be used
* \warning only models that do not depend on the TX power should be used.
*
* \param loss a pointer to the propagation loss model to be used.
@@ -63,13 +63,13 @@ public:
virtual void AddPropagationLossModel (Ptr<PropagationLossModel> loss) = 0;
/**
* Set the frequency-dependent propagation loss model to be used
* Add the frequency-dependent propagation loss model to be used
* \param loss a pointer to the propagation loss model to be used.
*/
virtual void AddSpectrumPropagationLossModel (Ptr<SpectrumPropagationLossModel> loss) = 0;
/**
* Set the propagation delay model to be used
* Set the propagation delay model to be used
* \param delay Ptr to the propagation delay model to be used.
*/
virtual void SetPropagationDelayModel (Ptr<PropagationDelayModel> delay) = 0;