23 #include "ns3/simulator.h"
37 Time duration,
double rxPower)
39 m_payloadMode (payloadMode),
40 m_preamble (preamble),
42 m_endTime (m_startTime + duration),
53 return m_endTime - m_startTime;
109 return (m_time < o.
m_time);
131 Time duration,
double rxPowerW)
135 event = Create<InterferenceHelper::Event> (size,
173 double noiseInterferenceW = 0.0;
178 noiseInterferenceW += i->GetDelta ();
184 if (noiseInterferenceW < energyW)
198 NiChanges::iterator nowIterator =
GetPosition (now);
199 for (NiChanges::iterator i =
m_niChanges.begin (); i != nowIterator; i++)
219 static const double BOLTZMANN = 1.3803e-23;
224 double noise = noiseFloor + noiseInterference;
225 double snr = signal / noise;
236 if ((event->GetEndTime () == i->GetTime ()) && event->GetRxPowerW () == -i->GetDelta ())
242 ni->insert (ni->begin (),
NiChange (event->GetStartTime (), noiseInterference));
243 ni->push_back (
NiChange (event->GetEndTime (), 0));
244 return noiseInterference;
255 uint64_t nbits = (uint64_t)(rate * duration.
GetSeconds ());
264 NiChanges::iterator j = ni->begin ();
265 Time previous = (*j).GetTime ();
266 WifiMode payloadMode =
event->GetPayloadMode ();
271 double noiseInterferenceW = (*j).GetDelta ();
272 double powerW =
event->GetRxPowerW ();
275 while (ni->end () != j)
277 Time current = (*j).GetTime ();
280 if (previous >= plcpPayloadStart)
288 else if (previous >= plcpHeaderStart)
290 if (current >= plcpPayloadStart)
295 plcpPayloadStart - previous,
300 current - plcpPayloadStart,
315 if (current >= plcpPayloadStart)
320 plcpPayloadStart - plcpHeaderStart,
325 current - plcpPayloadStart,
328 else if (current >= plcpHeaderStart)
333 current - plcpHeaderStart,
338 noiseInterferenceW += (*j).GetDelta ();
339 previous = (*j).GetTime ();
343 double per = 1 - psr;
355 event->GetPayloadMode ());
375 InterferenceHelper::NiChanges::iterator