diff --git a/src/devices/wifi/adhoc-wifi-mac.cc b/src/devices/wifi/adhoc-wifi-mac.cc index 969140404..a925db7c0 100644 --- a/src/devices/wifi/adhoc-wifi-mac.cc +++ b/src/devices/wifi/adhoc-wifi-mac.cc @@ -80,7 +80,7 @@ void AdhocWifiMac::SetSlot (Time slotTime) { m_dcfManager->SetSlot (slotTime); - m_slot = slotTime; + m_low->SetSlotTime (slotTime); } void AdhocWifiMac::SetSifs (Time sifs) @@ -104,10 +104,15 @@ AdhocWifiMac::SetCtsTimeout (Time ctsTimeout) { m_low->SetCtsTimeout (ctsTimeout); } +void +AdhocWifiMac::SetPifs (Time pifs) +{ + m_low->SetPifs (pifs); +} Time AdhocWifiMac::GetSlot (void) const { - return m_slot; + return m_low->GetSlotTime (); } Time AdhocWifiMac::GetSifs (void) const @@ -129,6 +134,11 @@ AdhocWifiMac::GetCtsTimeout (void) const { return m_low->GetCtsTimeout (); } +Time +AdhocWifiMac::GetPifs (void) const +{ + return m_low->GetPifs (); +} void AdhocWifiMac::SetWifiPhy (Ptr phy) { diff --git a/src/devices/wifi/adhoc-wifi-mac.h b/src/devices/wifi/adhoc-wifi-mac.h index 126a3ab1e..b9b0532fd 100644 --- a/src/devices/wifi/adhoc-wifi-mac.h +++ b/src/devices/wifi/adhoc-wifi-mac.h @@ -58,11 +58,13 @@ public: virtual void SetEifsNoDifs (Time eifsNoDifs); virtual void SetAckTimeout (Time ackTimeout); virtual void SetCtsTimeout (Time ctsTimeout); + virtual void SetPifs (Time pifs); virtual Time GetSlot (void) const; virtual Time GetSifs (void) const; virtual Time GetEifsNoDifs (void) const; virtual Time GetAckTimeout (void) const; virtual Time GetCtsTimeout (void) const; + virtual Time GetPifs (void) const; virtual void SetWifiPhy (Ptr phy); virtual void SetWifiRemoteStationManager (Ptr stationManager); virtual void Enqueue (Ptr packet, Mac48Address to, Mac48Address from); @@ -91,7 +93,6 @@ private: MacRxMiddle *m_rxMiddle; Ptr m_low; Ssid m_ssid; - Time m_slot; Time m_eifsNoDifs; }; diff --git a/src/devices/wifi/mac-low.cc b/src/devices/wifi/mac-low.cc index 654454d80..a36bea3eb 100644 --- a/src/devices/wifi/mac-low.cc +++ b/src/devices/wifi/mac-low.cc @@ -377,6 +377,16 @@ MacLow::SetSifs (Time sifs) { m_sifs = sifs; } +void +MacLow::SetSlotTime (Time slotTime) +{ + m_slotTime = slotTime; +} +void +MacLow::SetPifs (Time pifs) +{ + m_pifs = pifs; +} Mac48Address MacLow::GetAddress (void) const { @@ -397,6 +407,16 @@ MacLow::GetSifs (void) const { return m_sifs; } +Time +MacLow::GetSlotTime (void) const +{ + return m_slotTime; +} +Time +MacLow::GetPifs (void) const +{ + return m_pifs; +} void MacLow::SetRxCallback (Callback,const WifiMacHeader *> callback) @@ -651,16 +671,6 @@ MacLow::GetCtsSize (void) const cts.SetType (WIFI_MAC_CTL_CTS); return cts.GetSize () + 4; } -Time -MacLow::GetSlotTime (void) const -{ - return m_mac->GetSlot (); -} -Time -MacLow::GetPifs (void) const -{ - return m_mac->GetPifs (); -} uint32_t MacLow::GetSize (Ptr packet, const WifiMacHeader *hdr) const { diff --git a/src/devices/wifi/mac-low.h b/src/devices/wifi/mac-low.h index 3aba92dba..8c3521e68 100644 --- a/src/devices/wifi/mac-low.h +++ b/src/devices/wifi/mac-low.h @@ -288,10 +288,14 @@ public: void SetAckTimeout (Time ackTimeout); void SetCtsTimeout (Time ctsTimeout); void SetSifs (Time sifs); + void SetSlotTime (Time slotTime); + void SetPifs (Time pifs); Mac48Address GetAddress (void) const; Time GetAckTimeout (void) const; Time GetCtsTimeout (void) const; Time GetSifs (void) const; + Time GetSlotTime (void) const; + Time GetPifs (void) const; /** * \param callback the callback which receives every incoming packet. @@ -355,8 +359,6 @@ private: uint32_t GetAckSize (void) const; uint32_t GetRtsSize (void) const; uint32_t GetCtsSize (void) const; - Time GetPifs (void) const; - Time GetSlotTime (void) const; uint32_t GetSize (Ptr packet, const WifiMacHeader *hdr) const; Time NowUs (void) const; WifiRemoteStation *GetStation (Mac48Address to) const; @@ -421,6 +423,8 @@ private: Time m_ackTimeout; Time m_ctsTimeout; Time m_sifs; + Time m_slotTime; + Time m_pifs; Time m_lastNavStart; Time m_lastNavDuration; diff --git a/src/devices/wifi/nqap-wifi-mac.cc b/src/devices/wifi/nqap-wifi-mac.cc index a071f1d24..b47f8969c 100644 --- a/src/devices/wifi/nqap-wifi-mac.cc +++ b/src/devices/wifi/nqap-wifi-mac.cc @@ -131,7 +131,7 @@ NqapWifiMac::SetSlot (Time slotTime) { NS_LOG_FUNCTION (this << slotTime); m_dcfManager->SetSlot (slotTime); - m_slot = slotTime; + m_low->SetSlotTime (slotTime); } void NqapWifiMac::SetSifs (Time sifs) @@ -157,10 +157,15 @@ NqapWifiMac::SetCtsTimeout (Time ctsTimeout) { m_low->SetCtsTimeout (ctsTimeout); } +void +NqapWifiMac::SetPifs (Time pifs) +{ + m_low->SetPifs (pifs); +} Time NqapWifiMac::GetSlot (void) const { - return m_slot; + return m_low->GetSlotTime (); } Time NqapWifiMac::GetSifs (void) const @@ -182,6 +187,11 @@ NqapWifiMac::GetCtsTimeout (void) const { return m_low->GetCtsTimeout (); } +Time +NqapWifiMac::GetPifs (void) const +{ + return m_low->GetPifs (); +} void NqapWifiMac::SetWifiPhy (Ptr phy) { diff --git a/src/devices/wifi/nqap-wifi-mac.h b/src/devices/wifi/nqap-wifi-mac.h index 3a09c4940..8eb08da88 100644 --- a/src/devices/wifi/nqap-wifi-mac.h +++ b/src/devices/wifi/nqap-wifi-mac.h @@ -64,11 +64,13 @@ public: virtual void SetEifsNoDifs (Time eifsNoDifs); virtual void SetAckTimeout (Time ackTimeout); virtual void SetCtsTimeout (Time ctsTimeout); + virtual void SetPifs (Time pifs); virtual Time GetSlot (void) const; virtual Time GetSifs (void) const; virtual Time GetEifsNoDifs (void) const; virtual Time GetAckTimeout (void) const; virtual Time GetCtsTimeout (void) const; + virtual Time GetPifs (void) const; virtual void SetWifiPhy (Ptr phy); virtual void SetWifiRemoteStationManager (Ptr stationManager); virtual void Enqueue (Ptr packet, Mac48Address to, Mac48Address from); @@ -123,7 +125,6 @@ private: Mac48Address m_address; Ssid m_ssid; EventId m_beaconEvent; - Time m_slot; Time m_eifsNoDifs; }; diff --git a/src/devices/wifi/nqsta-wifi-mac.cc b/src/devices/wifi/nqsta-wifi-mac.cc index ee3c59af8..b3237c717 100644 --- a/src/devices/wifi/nqsta-wifi-mac.cc +++ b/src/devices/wifi/nqsta-wifi-mac.cc @@ -131,7 +131,7 @@ NqstaWifiMac::SetSlot (Time slotTime) { NS_LOG_FUNCTION (this << slotTime); m_dcfManager->SetSlot (slotTime); - m_slot = slotTime; + m_low->SetSlotTime (slotTime); } void NqstaWifiMac::SetSifs (Time sifs) @@ -157,10 +157,15 @@ NqstaWifiMac::SetCtsTimeout (Time ctsTimeout) { m_low->SetCtsTimeout (ctsTimeout); } +void +NqstaWifiMac::SetPifs (Time pifs) +{ + m_low->SetPifs (pifs); +} Time NqstaWifiMac::GetSlot (void) const { - return m_slot; + return m_low->GetSlotTime (); } Time NqstaWifiMac::GetSifs (void) const @@ -182,6 +187,12 @@ NqstaWifiMac::GetCtsTimeout (void) const { return m_low->GetCtsTimeout (); } +Time +NqstaWifiMac::GetPifs (void) const +{ + return m_low->GetPifs (); +} + void NqstaWifiMac::SetWifiPhy (Ptr phy) { diff --git a/src/devices/wifi/nqsta-wifi-mac.h b/src/devices/wifi/nqsta-wifi-mac.h index 1a366f6c0..7dbe8cf88 100644 --- a/src/devices/wifi/nqsta-wifi-mac.h +++ b/src/devices/wifi/nqsta-wifi-mac.h @@ -64,11 +64,13 @@ public: virtual void SetEifsNoDifs (Time eifsNoDifs); virtual void SetAckTimeout (Time ackTimeout); virtual void SetCtsTimeout (Time ctsTimeout); + virtual void SetPifs (Time pifs); virtual Time GetSlot (void) const; virtual Time GetSifs (void) const; virtual Time GetEifsNoDifs (void) const; virtual Time GetAckTimeout (void) const; virtual Time GetCtsTimeout (void) const; + virtual Time GetPifs (void) const; virtual void SetWifiPhy (Ptr phy); virtual void SetWifiRemoteStationManager (Ptr stationManager); virtual void Enqueue (Ptr packet, Mac48Address to, Mac48Address from); @@ -153,7 +155,6 @@ private: Ptr m_low; Mac48Address m_address; Ssid m_ssid; - Time m_slot; Time m_eifsNoDifs; }; diff --git a/src/devices/wifi/wifi-mac.cc b/src/devices/wifi/wifi-mac.cc index 129e5393c..f070ef214 100644 --- a/src/devices/wifi/wifi-mac.cc +++ b/src/devices/wifi/wifi-mac.cc @@ -99,7 +99,8 @@ WifiMac::GetTypeId (void) MakeTimeChecker ()) .AddAttribute ("Pifs", "The value of the PIFS constant.", TimeValue (GetDefaultSifs () + GetDefaultSlot ()), - MakeTimeAccessor (&WifiMac::m_pifs), + MakeTimeAccessor (&WifiMac::SetPifs, + &WifiMac::GetPifs), MakeTimeChecker ()) .AddAttribute ("MaxPropagationDelay", "The maximum propagation delay. Unused for now.", TimeValue (GetDefaultMaxPropagationDelay ()), diff --git a/src/devices/wifi/wifi-mac.h b/src/devices/wifi/wifi-mac.h index 3446c43ec..a07294750 100644 --- a/src/devices/wifi/wifi-mac.h +++ b/src/devices/wifi/wifi-mac.h @@ -60,7 +60,7 @@ public: /** * \param pifs the pifs duration. */ - void SetPifs (Time pifs); + virtual void SetPifs (Time pifs) = 0; /** * \param ctsTimeout the duration of a CTS timeout. */ @@ -79,7 +79,7 @@ public: /** * \returns the current PIFS duration. */ - Time GetPifs (void) const; + virtual Time GetPifs (void) const = 0; /** * \returns the current SIFS duration. */