src/devices/wifi/yans-wifi-phy.cc
changeset 4492 3ebeb7bf3c15
parent 4470 51b5c1a272d3
child 4680 a52c39181dd4
child 5050 5c2002bda934
--- 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