derive WifiPhy from Object and manage it with a Ptr<>
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Wed, 31 Oct 2007 12:05:25 +0100
changeset 2054 ba8e810bae4c
parent 2053 012487e16e31
child 2055 8899d6ef5d52
derive WifiPhy from Object and manage it with a Ptr<>
src/devices/wifi/dca-txop.cc
src/devices/wifi/dca-txop.h
src/devices/wifi/mac-high-adhoc.cc
src/devices/wifi/mac-high-adhoc.h
src/devices/wifi/mac-high-nqap.cc
src/devices/wifi/mac-high-nqap.h
src/devices/wifi/mac-high-nqsta.cc
src/devices/wifi/mac-high-nqsta.h
src/devices/wifi/mac-low.cc
src/devices/wifi/mac-low.h
src/devices/wifi/wifi-net-device.cc
src/devices/wifi/wifi-net-device.h
src/devices/wifi/wifi-phy.h
--- a/src/devices/wifi/dca-txop.cc	Wed Oct 31 11:45:04 2007 +0100
+++ b/src/devices/wifi/dca-txop.cc	Wed Oct 31 12:05:25 2007 +0100
@@ -165,7 +165,7 @@
   m_low->RegisterNavListener (m_navListener);
 }
 void
-DcaTxop::SetPhy (WifiPhy *phy)
+DcaTxop::SetPhy (Ptr<WifiPhy> phy)
 {
   m_phyListener = new DcaTxop::PhyListener (m_dcf);
   phy->RegisterListener (m_phyListener);
--- a/src/devices/wifi/dca-txop.h	Wed Oct 31 11:45:04 2007 +0100
+++ b/src/devices/wifi/dca-txop.h	Wed Oct 31 12:05:25 2007 +0100
@@ -48,7 +48,7 @@
   ~DcaTxop ();
 
   void SetLow (MacLow *low);
-  void SetPhy (WifiPhy *phy);
+  void SetPhy (Ptr<WifiPhy> phy);
   void SetParameters (MacParameters *parameters);
   void SetTxMiddle (MacTxMiddle *txMiddle);
   void SetTxOkCallback (TxOk callback);
--- a/src/devices/wifi/mac-high-adhoc.cc	Wed Oct 31 11:45:04 2007 +0100
+++ b/src/devices/wifi/mac-high-adhoc.cc	Wed Oct 31 12:05:25 2007 +0100
@@ -33,7 +33,9 @@
 MacHighAdhoc::MacHighAdhoc ()
 {}
 MacHighAdhoc::~MacHighAdhoc ()
-{}
+{
+  m_phy = 0;
+}
 
 void
 MacHighAdhoc::SetDevice (WifiNetDevice *device)
@@ -57,7 +59,7 @@
   m_stations = stations;
 }
 void 
-MacHighAdhoc::SetPhy (WifiPhy *phy)
+MacHighAdhoc::SetPhy (Ptr<WifiPhy> phy)
 {
   m_phy = phy;
 }
--- a/src/devices/wifi/mac-high-adhoc.h	Wed Oct 31 11:45:04 2007 +0100
+++ b/src/devices/wifi/mac-high-adhoc.h	Wed Oct 31 12:05:25 2007 +0100
@@ -44,7 +44,7 @@
   void SetForwardCallback (ForwardCallback callback);
   void SetDcaTxop (DcaTxop *dca);
   void SetStations (MacStations *stations);
-  void SetPhy (WifiPhy *phy);
+  void SetPhy (Ptr<WifiPhy> phy);
 
   Mac48Address GetBssid (void) const;
 
@@ -57,7 +57,7 @@
   WifiNetDevice *m_device;
   ForwardCallback m_callback;
   MacStations *m_stations;
-  WifiPhy *m_phy;
+  Ptr<WifiPhy> m_phy;
 };
 
 } // namespace ns3
--- a/src/devices/wifi/mac-high-nqap.cc	Wed Oct 31 11:45:04 2007 +0100
+++ b/src/devices/wifi/mac-high-nqap.cc	Wed Oct 31 12:05:25 2007 +0100
@@ -39,7 +39,9 @@
   : m_beaconIntervalUs (500000)
 {}
 MacHighNqap::~MacHighNqap ()
-{}
+{
+  m_phy = 0;
+}
 
 void 
 MacHighNqap::SetDcaTxop (DcaTxop *dca)
@@ -59,7 +61,7 @@
   m_stations = stations;
 }
 void
-MacHighNqap::SetPhy (WifiPhy *phy)
+MacHighNqap::SetPhy (Ptr<WifiPhy> phy)
 {
   m_phy = phy;
 }
--- a/src/devices/wifi/mac-high-nqap.h	Wed Oct 31 11:45:04 2007 +0100
+++ b/src/devices/wifi/mac-high-nqap.h	Wed Oct 31 12:05:25 2007 +0100
@@ -44,7 +44,7 @@
   void SetDcaTxop (DcaTxop *dca);
   void SetDevice (WifiNetDevice *device);
   void SetStations (MacStations *stations);
-  void SetPhy (WifiPhy *phy);
+  void SetPhy (Ptr<WifiPhy> phy);
   void SetForwardCallback (ForwardCallback callback);
   void SetBeaconIntervalUs (uint64_t us);
 
@@ -62,7 +62,7 @@
   DcaTxop *m_dca;
   WifiNetDevice *m_device;
   MacStations *m_stations;
-  WifiPhy *m_phy;
+  Ptr<WifiPhy> m_phy;
   ForwardCallback m_forwardUp;
   uint64_t m_beaconIntervalUs;
 };
--- a/src/devices/wifi/mac-high-nqsta.cc	Wed Oct 31 11:45:04 2007 +0100
+++ b/src/devices/wifi/mac-high-nqsta.cc	Wed Oct 31 12:05:25 2007 +0100
@@ -69,7 +69,9 @@
 }
 
 MacHighNqsta::~MacHighNqsta ()
-{}
+{
+  m_phy = 0;
+}
 
 void 
 MacHighNqsta::SetDcaTxop (DcaTxop *dca)
@@ -97,7 +99,7 @@
   m_disAssociatedCallback = callback;
 }
 void 
-MacHighNqsta::SetPhy (WifiPhy *phy)
+MacHighNqsta::SetPhy (Ptr<WifiPhy> phy)
 {
   m_phy = phy;
 }
--- a/src/devices/wifi/mac-high-nqsta.h	Wed Oct 31 11:45:04 2007 +0100
+++ b/src/devices/wifi/mac-high-nqsta.h	Wed Oct 31 12:05:25 2007 +0100
@@ -52,7 +52,7 @@
   void SetForwardCallback (ForwardCallback callback);
   void SetAssociatedCallback (AssociatedCallback callback);
   void SetDisAssociatedCallback (DisAssociatedCallback callback);
-  void SetPhy (WifiPhy *phy);
+  void SetPhy (Ptr<WifiPhy> phy);
   void SetStations (MacStations *stations);
 
   void SetMaxMissedBeacons (uint32_t missed);
@@ -98,7 +98,7 @@
   Time m_beaconWatchdogEnd;
   Mac48Address m_bssid;
   uint32_t m_maxMissedBeacons;
-  WifiPhy *m_phy;
+  Ptr<WifiPhy> m_phy;
   MacStations *m_stations;
 };
 
--- a/src/devices/wifi/mac-low.cc	Wed Oct 31 11:45:04 2007 +0100
+++ b/src/devices/wifi/mac-low.cc	Wed Oct 31 12:05:25 2007 +0100
@@ -237,6 +237,7 @@
 MacLow::~MacLow ()
 {
   CancelAllEvents ();
+  m_phy = 0;
 }
 
 void
@@ -304,7 +305,7 @@
   m_device = device;
 }
 void
-MacLow::SetPhy (WifiPhy *phy)
+MacLow::SetPhy (Ptr<WifiPhy> phy)
 {
   m_phy = phy;
 }
--- a/src/devices/wifi/mac-low.h	Wed Oct 31 11:45:04 2007 +0100
+++ b/src/devices/wifi/mac-low.h	Wed Oct 31 12:05:25 2007 +0100
@@ -152,7 +152,7 @@
   ~MacLow ();
 
   void SetDevice (Ptr<WifiNetDevice> device);
-  void SetPhy (WifiPhy *phy);
+  void SetPhy (Ptr<WifiPhy> phy);
   void SetStations (MacStations *stations);
   void SetParameters (MacParameters *parameters);
   void SetRxCallback (MacLowRxCallback callback);
@@ -216,7 +216,7 @@
   void StartDataTxTimers (void);
 
   Ptr<WifiNetDevice> m_device;
-  WifiPhy *m_phy;
+  Ptr<WifiPhy> m_phy;
   MacStations *m_stations;
   MacParameters *m_parameters;
   MacLowRxCallback m_rxCallback;
--- a/src/devices/wifi/wifi-net-device.cc	Wed Oct 31 11:45:04 2007 +0100
+++ b/src/devices/wifi/wifi-net-device.cc	Wed Oct 31 12:05:25 2007 +0100
@@ -81,7 +81,7 @@
 
 
 static WifiMode 
-GetWifiModeForPhyMode (WifiPhy *phy, enum WifiDefaultParameters::PhyModeParameter mode)
+GetWifiModeForPhyMode (Ptr<WifiPhy> phy, enum WifiDefaultParameters::PhyModeParameter mode)
 {
   uint32_t phyRate = (uint32_t)mode;
   for (uint32_t i= 0; i < phy->GetNModes (); i++)
@@ -112,7 +112,7 @@
 WifiNetDevice::Construct (void)
 {
   // the physical layer.
-  m_phy = new WifiPhy (this);
+  m_phy = Create<WifiPhy> (this);
 
   // the rate control algorithm
   switch (WifiDefaultParameters::GetRateControlAlgorithm ()) {
@@ -282,7 +282,6 @@
   NetDevice::DoDispose ();
   // cleanup local
   m_channel = 0;
-  delete m_phy;
   delete m_stations;
   delete m_low;
   delete m_rxMiddle;
--- a/src/devices/wifi/wifi-net-device.h	Wed Oct 31 11:45:04 2007 +0100
+++ b/src/devices/wifi/wifi-net-device.h	Wed Oct 31 12:05:25 2007 +0100
@@ -120,7 +120,7 @@
   DcaTxop *CreateDca (uint32_t minCw, uint32_t maxCw) const;
 
   Ptr<WifiChannel> m_channel;
-  WifiPhy *m_phy;
+  Ptr<WifiPhy> m_phy;
   MacStations *m_stations;
   MacLow *m_low;
   MacRxMiddle *m_rxMiddle;
--- a/src/devices/wifi/wifi-phy.h	Wed Oct 31 11:45:04 2007 +0100
+++ b/src/devices/wifi/wifi-phy.h	Wed Oct 31 12:05:25 2007 +0100
@@ -27,6 +27,7 @@
 #include "ns3/callback.h"
 #include "ns3/event-id.h"
 #include "ns3/packet.h"
+#include "ns3/object.h"
 #include "ns3/callback-trace-source.h"
 #include "ns3/nstime.h"
 #include "ns3/ptr.h"
@@ -68,7 +69,7 @@
 
 
 
-class WifiPhy
+class WifiPhy : public Object
 {
 public:
   typedef Callback<void,Packet, double, WifiMode, enum WifiPreamble> SyncOkCallback;