src/devices/wifi/wifi-channel.cc
changeset 1891 add6fb8761f3
parent 1885 9ccfbfb25477
child 1919 46ed9ed9dac0
--- a/src/devices/wifi/wifi-channel.cc	Tue Oct 02 12:42:16 2007 +0200
+++ b/src/devices/wifi/wifi-channel.cc	Wed Oct 03 11:01:17 2007 +0200
@@ -29,19 +29,40 @@
 
 namespace ns3 {
 
+WifiChannel::ReceiveData::ReceiveData (const Packet &packet, double rxPowerDbm,
+                                       WifiMode txMode, WifiMode headerMode, uint32_t extra)
+  : m_packet (packet),
+    m_rxPowerDbm (rxPowerDbm),
+    m_wifiMode (txMode),
+    m_headerMode (headerMode),
+    m_extra (extra)
+{}
+
+
 WifiChannel::WifiChannel ()
 {}
 WifiChannel::~WifiChannel ()
 {}
 
 void 
+WifiChannel::SetPropationLossModel (Ptr<PropagationLossModel> loss)
+{
+  m_loss = loss;
+}
+void 
+WifiChannel::SetPropagationDelayModel (Ptr<PropagationDelayModel> delay)
+{
+  m_delay = delay;
+}
+
+void 
 WifiChannel::Add (Ptr<NetDevice> device,  ReceiveCallback callback)
 {
   m_deviceList.push_back (std::make_pair (device, callback));
 }
 void 
 WifiChannel::Send (Ptr<NetDevice> sender, const Packet &packet, double txPowerDbm,
-                   uint64_t wifiMode) const
+                   WifiMode wifiMode, WifiMode headerMode, uint32_t extra) const
 {
   Ptr<MobilityModel> senderMobility = sender->GetNode ()->QueryInterface<MobilityModel> (MobilityModel::iid);
   uint32_t j = 0;
@@ -53,8 +74,9 @@
           double distance = senderMobility->GetDistanceFrom (receiverMobility);
           Time delay = m_delay->GetDelay (distance);
           double rxPowerDbm = m_loss->GetRxPower (txPowerDbm, distance);
+          struct ReceiveData data = ReceiveData (packet, rxPowerDbm, wifiMode, headerMode, extra);
           Simulator::Schedule (delay, &WifiChannel::Receive, this, 
-                               j, packet, rxPowerDbm, wifiMode);
+                               j, data);
         }
       j++;
     }
@@ -62,10 +84,9 @@
 
 void
 WifiChannel::Receive (uint32_t i,
-                      const Packet &packet, double rxPowerDbm,
-                      uint64_t wifiMode) const
+                      const struct ReceiveData &data) const
 {
-  m_deviceList[i].second (packet, rxPowerDbm, wifiMode);
+  m_deviceList[i].second (data.m_packet, data.m_rxPowerDbm, data.m_wifiMode, data.m_headerMode, data.m_extra);
 }
 
 uint32_t