src/devices/wifi/wifi-channel.cc
changeset 2159 20f882e85b4a
parent 2051 83f33d9b66cb
child 2171 ac7f5126fd7e
--- a/src/devices/wifi/wifi-channel.cc	Thu Nov 22 10:44:48 2007 +0100
+++ b/src/devices/wifi/wifi-channel.cc	Thu Nov 22 14:27:22 2007 +0100
@@ -57,7 +57,7 @@
   m_deviceList.push_back (std::make_pair (device, callback));
 }
 void 
-WifiChannel::Send (Ptr<NetDevice> sender, const Packet &packet, double txPowerDbm,
+WifiChannel::Send (Ptr<NetDevice> sender, Ptr<const Packet> packet, double txPowerDbm,
                    WifiMode wifiMode, WifiPreamble preamble) const
 {
   Ptr<MobilityModel> senderMobility = sender->GetNode ()->QueryInterface<MobilityModel> (MobilityModel::iid);
@@ -71,15 +71,16 @@
           double rxPowerDbm = m_loss->GetRxPower (txPowerDbm, senderMobility, receiverMobility);
           NS_LOG_DEBUG ("propagation: txPower="<<txPowerDbm<<"dbm, rxPower="<<rxPowerDbm<<"dbm, "<<
                         "distance="<<senderMobility->GetDistanceFrom (receiverMobility)<<"m, delay="<<delay);
+          Ptr<Packet> copy = packet->Copy ();
           Simulator::Schedule (delay, &WifiChannel::Receive, this, 
-                               j, packet, rxPowerDbm, wifiMode, preamble);
+                               j, copy, rxPowerDbm, wifiMode, preamble);
         }
       j++;
     }
 }
 
 void
-WifiChannel::Receive (uint32_t i, const Packet &packet, double rxPowerDbm,
+WifiChannel::Receive (uint32_t i, Ptr<Packet> packet, double rxPowerDbm,
                       WifiMode txMode, WifiPreamble preamble) const
 {
   m_deviceList[i].second (packet, rxPowerDbm, txMode, preamble);