move Address and ack timeout down to MacLow
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Tue, 02 Sep 2008 12:00:11 -0700
changeset 3596 6c39b712a535
parent 3585 0404af4cacf0
child 3597 fe35e5be4b78
move Address and ack timeout down to MacLow
src/devices/wifi/adhoc-wifi-mac.cc
src/devices/wifi/adhoc-wifi-mac.h
src/devices/wifi/mac-low.cc
src/devices/wifi/mac-low.h
src/devices/wifi/nqap-wifi-mac.cc
src/devices/wifi/nqap-wifi-mac.h
src/devices/wifi/nqsta-wifi-mac.cc
src/devices/wifi/nqsta-wifi-mac.h
src/devices/wifi/wifi-mac.cc
src/devices/wifi/wifi-mac.h
--- a/src/devices/wifi/adhoc-wifi-mac.cc	Tue Sep 02 11:39:26 2008 -0700
+++ b/src/devices/wifi/adhoc-wifi-mac.cc	Tue Sep 02 12:00:11 2008 -0700
@@ -94,6 +94,11 @@
   m_dcfManager->SetEifsNoDifs (eifsNoDifs);
   m_eifsNoDifs = eifsNoDifs;
 }
+void 
+AdhocWifiMac::SetAckTimeout (Time ackTimeout)
+{
+  m_low->SetAckTimeout (ackTimeout);
+}
 Time 
 AdhocWifiMac::GetSlot (void) const
 {
@@ -109,7 +114,11 @@
 {
   return m_eifsNoDifs;
 }
-
+Time 
+AdhocWifiMac::GetAckTimeout (void) const
+{
+  return m_low->GetAckTimeout ();
+}
 void 
 AdhocWifiMac::SetWifiPhy (Ptr<WifiPhy> phy)
 {
@@ -141,7 +150,7 @@
 Mac48Address 
 AdhocWifiMac::GetAddress (void) const
 {
-  return m_address;
+  return m_low->GetAddress ();
 }
 Ssid 
 AdhocWifiMac::GetSsid (void) const
@@ -158,7 +167,7 @@
 void 
 AdhocWifiMac::SetAddress (Mac48Address address)
 {
-  m_address = address;
+  m_low->SetAddress (address);
 }
 void 
 AdhocWifiMac::SetSsid (Ssid ssid)
--- a/src/devices/wifi/adhoc-wifi-mac.h	Tue Sep 02 11:39:26 2008 -0700
+++ b/src/devices/wifi/adhoc-wifi-mac.h	Tue Sep 02 12:00:11 2008 -0700
@@ -56,9 +56,11 @@
   virtual void SetSlot (Time slotTime);
   virtual void SetSifs (Time sifs);
   virtual void SetEifsNoDifs (Time eifsNoDifs);
+  virtual void SetAckTimeout (Time ackTimeout);
   virtual Time GetSlot (void) const;
   virtual Time GetSifs (void) const;
   virtual Time GetEifsNoDifs (void) const;
+  virtual Time GetAckTimeout (void) const;
   virtual void SetWifiPhy (Ptr<WifiPhy> phy);
   virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
   virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
@@ -86,7 +88,6 @@
   DcfManager *m_dcfManager;
   MacRxMiddle *m_rxMiddle;
   Ptr<MacLow> m_low;
-  Mac48Address m_address;
   Ssid m_ssid;
   Time m_slot;
   Time m_sifs;
--- a/src/devices/wifi/mac-low.cc	Tue Sep 02 11:39:26 2008 -0700
+++ b/src/devices/wifi/mac-low.cc	Tue Sep 02 12:00:11 2008 -0700
@@ -33,7 +33,7 @@
 NS_LOG_COMPONENT_DEFINE ("MacLow");
 
 #define MY_DEBUG(x) \
-  NS_LOG_DEBUG (m_mac->GetAddress () << " " << x)
+  NS_LOG_DEBUG (m_self << " " << x)
 
 namespace ns3 {
 
@@ -356,6 +356,28 @@
 {
   return m_mac;
 }
+
+void 
+MacLow::SetAddress (Mac48Address ad)
+{
+  m_self = ad;
+}
+void 
+MacLow::SetAckTimeout (Time ackTimeout)
+{
+  m_ackTimeout = ackTimeout;
+}
+Mac48Address 
+MacLow::GetAddress (void) const
+{
+  return m_self;
+}
+Time 
+MacLow::GetAckTimeout (void) const
+{
+  return m_ackTimeout;
+}
+
 void 
 MacLow::SetRxCallback (Callback<void,Ptr<Packet>,const WifiMacHeader *> callback)
 {
@@ -451,7 +473,7 @@
        * that STA shall not respond to the RTS frame.
        */
       if (isPrevNavZero &&
-          hdr.GetAddr1 () == m_mac->GetAddress ()) 
+          hdr.GetAddr1 () == m_self) 
         {
           MY_DEBUG ("rx RTS from=" << hdr.GetAddr2 () << ", schedule CTS");
           NS_ASSERT (m_sendCtsEvent.IsExpired ());
@@ -470,7 +492,7 @@
         }
     } 
   else if (hdr.IsCts () &&
-           hdr.GetAddr1 () == m_mac->GetAddress () &&
+           hdr.GetAddr1 () == m_self &&
            m_ctsTimeoutEvent.IsRunning () &&
            m_currentPacket != 0) 
     {
@@ -491,7 +513,7 @@
                                              txMode);
     } 
   else if (hdr.IsAck () &&
-           hdr.GetAddr1 () == m_mac->GetAddress () &&
+           hdr.GetAddr1 () == m_self &&
            (m_normalAckTimeoutEvent.IsRunning () || 
             m_fastAckTimeoutEvent.IsRunning () ||
             m_superFastAckTimeoutEvent.IsRunning ()) &&
@@ -530,7 +552,7 @@
     {
       MY_DEBUG ("rx drop " << hdr.GetTypeString ());
     } 
-  else if (hdr.GetAddr1 () == m_mac->GetAddress ()) 
+  else if (hdr.GetAddr1 () == m_self) 
     {
       WifiRemoteStation *station = GetStation (hdr.GetAddr2 ());
       station->ReportRxOk (rxSnr, txMode);
@@ -625,11 +647,6 @@
   return m_mac->GetPifs ();
 }
 Time
-MacLow::GetAckTimeout (void) const
-{
-  return m_mac->GetAckTimeout ();
-}
-Time
 MacLow::GetCtsTimeout (void) const
 {
   return m_mac->GetCtsTimeout ();
@@ -722,7 +739,7 @@
     }
   // XXX Note that we should also handle CF_END specially here
   // but we don't for now because we do not generate them.
-  else if (hdr.GetAddr1 () != m_mac->GetAddress ())
+  else if (hdr.GetAddr1 () != m_self)
     {
       // see section 9.2.5.4 802.11-1999
       bool navUpdated = DoNavStartNow (duration);
@@ -884,7 +901,7 @@
   rts.SetDsNotTo ();
   rts.SetNoMoreFragments ();
   rts.SetAddr1 (m_currentHdr.GetAddr1 ());
-  rts.SetAddr2 (m_mac->GetAddress ());
+  rts.SetAddr2 (m_self);
   WifiMode rtsTxMode = GetRtsTxMode (m_currentPacket, &m_currentHdr);
   Time duration = Seconds (0);
   if (m_txParams.HasDurationId ()) 
--- a/src/devices/wifi/mac-low.h	Tue Sep 02 11:39:26 2008 -0700
+++ b/src/devices/wifi/mac-low.h	Tue Sep 02 12:00:11 2008 -0700
@@ -284,6 +284,11 @@
 
   Ptr<WifiMac> GetMac (void);
 
+  void SetAddress (Mac48Address ad);
+  void SetAckTimeout (Time ackTimeout);
+  Mac48Address GetAddress (void) const;
+  Time GetAckTimeout (void) const;
+
   /**
    * \param callback the callback which receives every incoming packet.
    *
@@ -349,7 +354,6 @@
   Time GetSifs (void) const;
   Time GetPifs (void) const;
   Time GetSlotTime (void) const;
-  Time GetAckTimeout (void) const;
   Time GetCtsTimeout (void) const;
   uint32_t GetSize (Ptr<const Packet> packet, const WifiMacHeader *hdr) const;
   Time NowUs (void) const;
@@ -411,6 +415,8 @@
   WifiMacHeader m_currentHdr;
   MacLowTransmissionParameters m_txParams;
   MacLowTransmissionListener *m_listener;
+  Mac48Address m_self;
+  Time m_ackTimeout;
 
   Time m_lastNavStart;
   Time m_lastNavDuration;
--- a/src/devices/wifi/nqap-wifi-mac.cc	Tue Sep 02 11:39:26 2008 -0700
+++ b/src/devices/wifi/nqap-wifi-mac.cc	Tue Sep 02 12:00:11 2008 -0700
@@ -147,6 +147,11 @@
   m_dcfManager->SetEifsNoDifs (eifsNoDifs);
   m_eifsNoDifs = eifsNoDifs;
 }
+void 
+NqapWifiMac::SetAckTimeout (Time ackTimeout)
+{
+  m_low->SetAckTimeout (ackTimeout);
+}
 Time 
 NqapWifiMac::GetSlot (void) const
 {
@@ -162,8 +167,11 @@
 {
   return m_eifsNoDifs;
 }
-
-
+Time 
+NqapWifiMac::GetAckTimeout (void) const
+{
+  return m_low->GetAckTimeout ();
+}
 void 
 NqapWifiMac::SetWifiPhy (Ptr<WifiPhy> phy)
 {
@@ -204,7 +212,7 @@
 Mac48Address 
 NqapWifiMac::GetAddress (void) const
 {
-  return m_address;
+  return m_low->GetAddress ();
 }
 Ssid 
 NqapWifiMac::GetSsid (void) const
@@ -220,7 +228,7 @@
 NqapWifiMac::SetAddress (Mac48Address address)
 {
   NS_LOG_FUNCTION (address);
-  m_address = address;
+  m_low->SetAddress (address);
 }
 void 
 NqapWifiMac::SetSsid (Ssid ssid)
--- a/src/devices/wifi/nqap-wifi-mac.h	Tue Sep 02 11:39:26 2008 -0700
+++ b/src/devices/wifi/nqap-wifi-mac.h	Tue Sep 02 12:00:11 2008 -0700
@@ -62,9 +62,11 @@
   virtual void SetSlot (Time slotTime);
   virtual void SetSifs (Time sifs);
   virtual void SetEifsNoDifs (Time eifsNoDifs);
+  virtual void SetAckTimeout (Time ackTimeout);
   virtual Time GetSlot (void) const;
   virtual Time GetSifs (void) const;
   virtual Time GetEifsNoDifs (void) const;
+  virtual Time GetAckTimeout (void) const;
   virtual void SetWifiPhy (Ptr<WifiPhy> phy);
   virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
   virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
--- a/src/devices/wifi/nqsta-wifi-mac.cc	Tue Sep 02 11:39:26 2008 -0700
+++ b/src/devices/wifi/nqsta-wifi-mac.cc	Tue Sep 02 12:00:11 2008 -0700
@@ -147,6 +147,11 @@
   m_dcfManager->SetEifsNoDifs (eifsNoDifs);
   m_eifsNoDifs = eifsNoDifs;
 }
+void 
+NqstaWifiMac::SetAckTimeout (Time ackTimeout)
+{
+  m_low->SetAckTimeout (ackTimeout);
+}
 Time 
 NqstaWifiMac::GetSlot (void) const
 {
@@ -162,7 +167,11 @@
 {
   return m_eifsNoDifs;
 }
-
+Time 
+NqstaWifiMac::GetAckTimeout (void) const
+{
+  return m_low->GetAckTimeout ();
+}
 void 
 NqstaWifiMac::SetWifiPhy (Ptr<WifiPhy> phy)
 {
--- a/src/devices/wifi/nqsta-wifi-mac.h	Tue Sep 02 11:39:26 2008 -0700
+++ b/src/devices/wifi/nqsta-wifi-mac.h	Tue Sep 02 12:00:11 2008 -0700
@@ -62,9 +62,11 @@
   virtual void SetSlot (Time slotTime);
   virtual void SetSifs (Time sifs);
   virtual void SetEifsNoDifs (Time eifsNoDifs);
+  virtual void SetAckTimeout (Time ackTimeout);
   virtual Time GetSlot (void) const;
   virtual Time GetSifs (void) const;
   virtual Time GetEifsNoDifs (void) const;
+  virtual Time GetAckTimeout (void) const;
   virtual void SetWifiPhy (Ptr<WifiPhy> phy);
   virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
   virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
--- a/src/devices/wifi/wifi-mac.cc	Tue Sep 02 11:39:26 2008 -0700
+++ b/src/devices/wifi/wifi-mac.cc	Tue Sep 02 12:00:11 2008 -0700
@@ -79,7 +79,8 @@
                    MakeTimeChecker ())
     .AddAttribute ("AckTimeout", "When this timeout expires, the DATA/ACK handshake has failed.",
                    TimeValue (GetDefaultCtsAckTimeout ()),
-                   MakeTimeAccessor (&WifiMac::m_ackTimeout),
+                   MakeTimeAccessor (&WifiMac::GetAckTimeout,
+                                     &WifiMac::SetAckTimeout),
                    MakeTimeChecker ())
     .AddAttribute ("Sifs", "The value of the SIFS constant.",
                    TimeValue (GetDefaultSifs ()),
@@ -129,11 +130,6 @@
   m_ctsTimeout = ctsTimeout;
 }
 void 
-WifiMac::SetAckTimeout (Time ackTimeout)
-{
-  m_ackTimeout = ackTimeout;
-}
-void 
 WifiMac::SetMaxPropagationDelay (Time delay)
 {
   m_maxPropagationDelay = delay;
@@ -148,11 +144,6 @@
 {
   return m_ctsTimeout;
 }
-Time
-WifiMac::GetAckTimeout (void) const
-{
-  return m_ackTimeout;
-}
 
 Time
 WifiMac::GetMsduLifetime (void) const
--- a/src/devices/wifi/wifi-mac.h	Tue Sep 02 11:39:26 2008 -0700
+++ b/src/devices/wifi/wifi-mac.h	Tue Sep 02 12:00:11 2008 -0700
@@ -68,7 +68,7 @@
   /**
    * \param ackTimeout the duration of an ACK timeout.
    */
-  void SetAckTimeout (Time ackTimeout);
+  virtual void SetAckTimeout (Time ackTimeout) = 0;
   /**
    * \param delay the max propagation delay.
    *
@@ -99,7 +99,7 @@
   /**
    * \returns the current ACK timeout duration.
    */
-  Time GetAckTimeout (void) const;
+  virtual Time GetAckTimeout (void) const = 0;
   /**
    * Unused for now.
    */
@@ -180,7 +180,6 @@
 
   Time m_pifs;
   Time m_ctsTimeout;
-  Time m_ackTimeout;
   Time m_maxPropagationDelay;
   uint32_t m_maxMsduSize;
 };