src/devices/wifi/nqap-wifi-mac.cc
changeset 5524 efed7493f2c1
parent 4720 15221757964f
child 5819 514ec98954ab
--- a/src/devices/wifi/nqap-wifi-mac.cc	Sat Nov 14 17:47:05 2009 +0100
+++ b/src/devices/wifi/nqap-wifi-mac.cc	Sat Nov 14 17:47:05 2009 +0100
@@ -90,6 +90,8 @@
   m_dca->SetManager (m_dcfManager);
   m_dca->SetTxOkCallback (MakeCallback (&NqapWifiMac::TxOk, this));
   m_dca->SetTxFailedCallback (MakeCallback (&NqapWifiMac::TxFailed, this));
+
+  m_enableBeaconGeneration = false;
 }
 NqapWifiMac::~NqapWifiMac ()
 {
@@ -110,6 +112,7 @@
   m_dca = 0;
   m_beaconDca = 0;
   m_stationManager = 0;
+  m_enableBeaconGeneration = false;
   m_beaconEvent.Cancel ();
   WifiMac::DoDispose ();
 }
@@ -118,20 +121,21 @@
 NqapWifiMac::SetBeaconGeneration (bool enable)
 {
   NS_LOG_FUNCTION (this << enable);
-  if (enable)
+  if (!enable)
+    {
+      m_beaconEvent.Cancel ();
+    } 
+  else if (enable && !m_enableBeaconGeneration)
     {
       m_beaconEvent = Simulator::ScheduleNow (&NqapWifiMac::SendOneBeacon, this);
     }
-  else
-    {
-      m_beaconEvent.Cancel ();
-    }
+  m_enableBeaconGeneration = enable;
 }
 
 bool
 NqapWifiMac::GetBeaconGeneration (void) const
 {
-  return m_beaconEvent.IsRunning ();
+  return m_enableBeaconGeneration;
 }
 Time 
 NqapWifiMac::GetBeaconInterval (void) const
@@ -594,4 +598,15 @@
 }
 
 
+void
+NqapWifiMac::DoStart (void)
+{
+  m_beaconEvent.Cancel ();
+  if (m_enableBeaconGeneration)
+    {
+      m_beaconEvent = Simulator::ScheduleNow (&NqapWifiMac::SendOneBeacon, this);
+    }
+  WifiMac::DoStart ();
+}
+
 } // namespace ns3