|
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 ()); |
|
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 |