|
|
| 182 |
Time |
182 |
Time |
| 183 |
InterferenceHelper::GetEnergyDuration (double energyW) |
183 |
InterferenceHelper::GetEnergyDuration (double energyW) |
| 184 |
{ |
184 |
{ |
|
|
185 |
NS_LOG_FUNCTION (this << energyW); |
| 185 |
Time now = Simulator::Now (); |
186 |
Time now = Simulator::Now (); |
| 186 |
|
187 |
|
| 187 |
// first, we iterate over all events and, each event |
188 |
// first, we iterate over all events and, each event |
|
|
| 227 |
Time |
228 |
Time |
| 228 |
InterferenceHelper::CalculateTxDuration (uint32_t size, WifiMode payloadMode, WifiPreamble preamble) const |
229 |
InterferenceHelper::CalculateTxDuration (uint32_t size, WifiMode payloadMode, WifiPreamble preamble) const |
| 229 |
{ |
230 |
{ |
|
|
231 |
NS_LOG_FUNCTION (this << size << payloadMode << preamble); |
| 230 |
uint64_t delay = 0; |
232 |
uint64_t delay = 0; |
| 231 |
switch (m_80211_standard) |
233 |
switch (m_80211_standard) |
| 232 |
{ |
234 |
{ |
|
|
| 280 |
void |
282 |
void |
| 281 |
InterferenceHelper::AppendEvent (Ptr<InterferenceHelper::Event> event) |
283 |
InterferenceHelper::AppendEvent (Ptr<InterferenceHelper::Event> event) |
| 282 |
{ |
284 |
{ |
|
|
285 |
NS_LOG_FUNCTION_NOARGS (); |
| 283 |
/* attempt to remove the events which are |
286 |
/* attempt to remove the events which are |
| 284 |
* not useful anymore. |
287 |
* not useful anymore. |
| 285 |
* i.e.: all events which end _before_ |
288 |
* i.e.: all events which end _before_ |
|
|
| 304 |
double |
307 |
double |
| 305 |
InterferenceHelper::CalculateSnr (double signal, double noiseInterference, WifiMode mode) const |
308 |
InterferenceHelper::CalculateSnr (double signal, double noiseInterference, WifiMode mode) const |
| 306 |
{ |
309 |
{ |
|
|
310 |
NS_LOG_FUNCTION (this << signal << noiseInterference << mode); |
| 307 |
// thermal noise at 290K in J/s = W |
311 |
// thermal noise at 290K in J/s = W |
| 308 |
static const double BOLTZMANN = 1.3803e-23; |
312 |
static const double BOLTZMANN = 1.3803e-23; |
| 309 |
// Nt is the power of thermal noise in W |
313 |
// Nt is the power of thermal noise in W |
|
|
| 318 |
double |
322 |
double |
| 319 |
InterferenceHelper::CalculateNoiseInterferenceW (Ptr<InterferenceHelper::Event> event, NiChanges *ni) const |
323 |
InterferenceHelper::CalculateNoiseInterferenceW (Ptr<InterferenceHelper::Event> event, NiChanges *ni) const |
| 320 |
{ |
324 |
{ |
|
|
325 |
NS_LOG_FUNCTION (this); |
| 321 |
Events::const_iterator i = m_events.begin (); |
326 |
Events::const_iterator i = m_events.begin (); |
| 322 |
double noiseInterference = 0.0; |
327 |
double noiseInterference = 0.0; |
| 323 |
while (i != m_events.end ()) |
328 |
while (i != m_events.end ()) |
|
|
| 353 |
double |
358 |
double |
| 354 |
InterferenceHelper::CalculateChunkSuccessRate (double snir, Time duration, WifiMode mode) const |
359 |
InterferenceHelper::CalculateChunkSuccessRate (double snir, Time duration, WifiMode mode) const |
| 355 |
{ |
360 |
{ |
|
|
361 |
NS_LOG_FUNCTION (this << snir << duration << mode); |
| 356 |
if (duration == NanoSeconds (0)) { |
362 |
if (duration == NanoSeconds (0)) { |
| 357 |
return 1.0; |
363 |
return 1.0; |
| 358 |
} |
364 |
} |
|
|
| 365 |
double |
371 |
double |
| 366 |
InterferenceHelper::CalculatePer (Ptr<const InterferenceHelper::Event> event, NiChanges *ni) const |
372 |
InterferenceHelper::CalculatePer (Ptr<const InterferenceHelper::Event> event, NiChanges *ni) const |
| 367 |
{ |
373 |
{ |
|
|
374 |
NS_LOG_FUNCTION (this); |
| 368 |
double psr = 1.0; /* Packet Success Rate */ |
375 |
double psr = 1.0; /* Packet Success Rate */ |
| 369 |
NiChanges::iterator j = ni->begin (); |
376 |
NiChanges::iterator j = ni->begin (); |
| 370 |
Time previous = (*j).GetTime (); |
377 |
Time previous = (*j).GetTime (); |
|
Lines 470-475
struct InterferenceHelper::SnrPer
|
Link Here
|
|---|
|
| 470 |
struct InterferenceHelper::SnrPer |
477 |
struct InterferenceHelper::SnrPer |
| 471 |
InterferenceHelper::CalculateSnrPer (Ptr<InterferenceHelper::Event> event) |
478 |
InterferenceHelper::CalculateSnrPer (Ptr<InterferenceHelper::Event> event) |
| 472 |
{ |
479 |
{ |
|
|
480 |
NS_LOG_FUNCTION (this); |
| 473 |
NiChanges ni; |
481 |
NiChanges ni; |
| 474 |
double noiseInterferenceW = CalculateNoiseInterferenceW (event, &ni); |
482 |
double noiseInterferenceW = CalculateNoiseInterferenceW (event, &ni); |
| 475 |
double snr = CalculateSnr (event->GetRxPowerW (), |
483 |
double snr = CalculateSnr (event->GetRxPowerW (), |