diff --git a/src/spectrum/model/multi-model-spectrum-channel.cc b/src/spectrum/model/multi-model-spectrum-channel.cc index 1461a8e5f..6f40d96e5 100644 --- a/src/spectrum/model/multi-model-spectrum-channel.cc +++ b/src/spectrum/model/multi-model-spectrum-channel.cc @@ -438,14 +438,21 @@ void MultiModelSpectrumChannel::AddPropagationLossModel (Ptr 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 loss) { - NS_ASSERT (m_spectrumPropagationLoss == 0); + NS_LOG_FUNCTION (this << loss); + if (m_spectrumPropagationLoss) + { + loss->SetNext (m_spectrumPropagationLoss); + } m_spectrumPropagationLoss = loss; } diff --git a/src/spectrum/model/single-model-spectrum-channel.cc b/src/spectrum/model/single-model-spectrum-channel.cc index 8a4e104da..fcceb1462 100644 --- a/src/spectrum/model/single-model-spectrum-channel.cc +++ b/src/spectrum/model/single-model-spectrum-channel.cc @@ -239,7 +239,10 @@ void SingleModelSpectrumChannel::AddPropagationLossModel (Ptr 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 loss) { NS_LOG_FUNCTION (this << loss); - NS_ASSERT (m_spectrumPropagationLoss == 0); + if (m_spectrumPropagationLoss) + { + loss->SetNext (m_spectrumPropagationLoss); + } m_spectrumPropagationLoss = loss; } diff --git a/src/spectrum/model/spectrum-channel.h b/src/spectrum/model/spectrum-channel.h index 1de4fbb06..09b95d562 100644 --- a/src/spectrum/model/spectrum-channel.h +++ b/src/spectrum/model/spectrum-channel.h @@ -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 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 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 delay) = 0;