--- a/src/devices/wifi/yans-wifi-phy.cc Wed Jun 03 10:04:51 2009 +0200
+++ b/src/devices/wifi/yans-wifi-phy.cc Wed Jun 03 11:53:26 2009 +0200
@@ -121,8 +121,10 @@
}
YansWifiPhy::YansWifiPhy ()
- : m_endSyncEvent (),
- m_random (0.0, 1.0)
+ : m_channelFreqMhz(2437),
+ m_endSyncEvent (),
+ m_random (0.0, 1.0)
+
{
NS_LOG_FUNCTION (this);
m_state = CreateObject<WifiPhyStateHelper> ();
@@ -408,7 +410,9 @@
m_endSyncEvent.Cancel ();
}
NotifyTxBegin (packet);
- NotifyPromiscSniff (packet);
+ uint32_t dataRate500KbpsUnits = txMode.GetDataRate () / 500000;
+ bool isShortPreamble = (WIFI_PREAMBLE_SHORT == preamble);
+ NotifyPromiscSniffTx (packet, m_channelFreqMhz, dataRate500KbpsUnits, isShortPreamble);
m_state->SwitchToTx (txDuration, packet, txMode, preamble, txPower);
m_channel->Send (this, packet, GetPowerDbm (txPower) + m_txGainDb, txMode, preamble);
}
@@ -577,11 +581,14 @@
NS_LOG_DEBUG ("mode="<<(event->GetPayloadMode ().GetDataRate ())<<
", snr="<<snrPer.snr<<", per="<<snrPer.per<<", size="<<packet->GetSize ());
-
if (m_random.GetValue () > snrPer.per)
{
- NotifyRxEnd (packet);
- NotifyPromiscSniff (packet);
+ NotifyRxEnd (packet);
+ uint32_t dataRate500KbpsUnits = event->GetPayloadMode ().GetDataRate () / 500000;
+ bool isShortPreamble = (WIFI_PREAMBLE_SHORT == event->GetPreambleType ());
+ double signalDbm = RatioToDb (event->GetRxPowerW ()) + 30;
+ double noiseDbm = RatioToDb(event->GetRxPowerW() / snrPer.snr) - GetRxNoiseFigure() + 30 ;
+ NotifyPromiscSniffRx (packet, m_channelFreqMhz, dataRate500KbpsUnits, isShortPreamble, signalDbm, noiseDbm);
m_state->SwitchFromSyncEndOk (packet, snrPer.snr, event->GetPayloadMode (), event->GetPreambleType ());
}
else
@@ -591,5 +598,4 @@
m_state->SwitchFromSyncEndError (packet, snrPer.snr);
}
}
-
} // namespace ns3