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