--- 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;