View | Details | Raw Unified | Return to bug 2947
Collapse All | Expand All

(-)a/src/wifi/model/interference-helper.cc (-9 / +15 lines)
 Lines 203-222    Link Here 
203
InterferenceHelper::AppendEvent (Ptr<InterferenceHelper::Event> event)
203
InterferenceHelper::AppendEvent (Ptr<InterferenceHelper::Event> event)
204
{
204
{
205
  NS_LOG_FUNCTION (this);
205
  NS_LOG_FUNCTION (this);
206
  double previousPowerStart = 0;
206
207
  double previousPowerEnd = 0;
207
  auto start = m_niChanges.upper_bound (event->GetStartTime ());
208
  previousPowerStart = GetPreviousPosition (event->GetStartTime ())->second.GetPower ();
208
  auto end = m_niChanges.upper_bound (event->GetEndTime ());
209
  previousPowerEnd = GetPreviousPosition (event->GetEndTime ())->second.GetPower ();
209
210
  auto startPrev = std::prev(start);
211
  auto endPrev = std::prev(end);
212
213
  double previousPowerStart = startPrev->second.GetPower ();
214
  double previousPowerEnd = endPrev->second.GetPower ();
210
215
211
  if (!m_rxing)
216
  if (!m_rxing)
212
    {
217
    {
213
      m_firstPower = previousPowerStart;
218
      m_firstPower = previousPowerStart;
214
      // Always leave the first zero power noise event in the list
219
      // Always leave the first zero power noise event in the list
215
      m_niChanges.erase (++(m_niChanges.begin ()),
220
      m_niChanges.erase (std::next(m_niChanges.begin ()), start);
216
                         GetNextPosition (event->GetStartTime ()));
217
    }
221
    }
218
  auto first = AddNiChangeEvent (event->GetStartTime (), NiChange (previousPowerStart, event));
222
219
  auto last = AddNiChangeEvent (event->GetEndTime (), NiChange (previousPowerEnd, event));
223
  auto first = m_niChanges.emplace_hint (start, event->GetStartTime (), NiChange(previousPowerStart, event));
224
  auto last = m_niChanges.emplace_hint (end, event->GetEndTime (), NiChange(previousPowerEnd, event));
225
220
  for (auto i = first; i != last; ++i)
226
  for (auto i = first; i != last; ++i)
221
    {
227
    {
222
      i->second.AddPower (event->GetRxPowerW ());
228
      i->second.AddPower (event->GetRxPowerW ());
 Lines 810-816    Link Here 
810
InterferenceHelper::NiChanges::iterator
816
InterferenceHelper::NiChanges::iterator
811
InterferenceHelper::AddNiChangeEvent (Time moment, NiChange change)
817
InterferenceHelper::AddNiChangeEvent (Time moment, NiChange change)
812
{
818
{
813
  return m_niChanges.insert (GetNextPosition (moment), std::make_pair (moment, change));
819
  return m_niChanges.emplace (moment, change);
814
}
820
}
815
821
816
void
822
void

Return to bug 2947