From a31a3245f2fd13d1c43ba773bd0169c8ccdfc476 Mon Sep 17 00:00:00 2001 From: Junling Bu Date: Mon, 26 Jan 2015 15:17:35 -0800 Subject: [PATCH] patch to support IEEE 1609.4 MAC extension in wave module --- src/wifi/helper/wifi-helper.h | 6 +++- src/wifi/helper/yans-wifi-helper.cc | 8 ++++- src/wifi/helper/yans-wifi-helper.h | 11 +++++- src/wifi/model/adhoc-wifi-mac.cc | 5 +-- src/wifi/model/dca-txop.cc | 24 +++++++++++++ src/wifi/model/dca-txop.h | 9 +++++ src/wifi/model/dcf-manager.cc | 32 ++++++++++++++++- src/wifi/model/dcf-manager.h | 35 +++++++++++++++++-- src/wifi/model/edca-txop-n.cc | 24 +++++++++++++ src/wifi/model/edca-txop-n.h | 8 +++++ src/wifi/model/mac-low.cc | 24 ++++++++++++- src/wifi/model/mac-low.h | 18 +++++++++- src/wifi/model/regular-wifi-mac.cc | 12 ++++++- src/wifi/model/regular-wifi-mac.h | 8 +++-- src/wifi/model/wifi-mac.h | 13 +++++++ src/wifi/model/wifi-phy-state-helper.cc | 10 ++++++ src/wifi/model/wifi-phy-state-helper.h | 7 ++++ src/wifi/model/wifi-phy.h | 13 ++++++- src/wifi/model/wifi-remote-station-manager.cc | 12 +++++++ src/wifi/model/wifi-remote-station-manager.h | 8 +++++ src/wifi/model/yans-wifi-phy.cc | 14 +++++++- src/wifi/model/yans-wifi-phy.h | 7 +++- src/wifi/test/dcf-manager-test.cc | 11 ++++++ 23 files changed, 300 insertions(+), 19 deletions(-) diff --git a/src/wifi/helper/wifi-helper.h b/src/wifi/helper/wifi-helper.h index 84db6d1f6..4a4f9a53f 100644 --- a/src/wifi/helper/wifi-helper.h +++ b/src/wifi/helper/wifi-helper.h @@ -55,8 +55,12 @@ public: * * Subclasses must implement this method to allow the ns3::WifiHelper class * to create PHY objects from ns3::WifiHelper::Install. + * + * Typically the device type will be of class WifiNetDevice but the + * type of the pointer is generalized so that this method may be used + * by other Wifi device variants such as WaveNetDevice. */ - virtual Ptr Create (Ptr node, Ptr device) const = 0; + virtual Ptr Create (Ptr node, Ptr device) const = 0; }; /** diff --git a/src/wifi/helper/yans-wifi-helper.cc b/src/wifi/helper/yans-wifi-helper.cc index 58af771cf..55efe5a41 100644 --- a/src/wifi/helper/yans-wifi-helper.cc +++ b/src/wifi/helper/yans-wifi-helper.cc @@ -234,7 +234,7 @@ YansWifiPhyHelper::SetErrorRateModel (std::string name, } Ptr -YansWifiPhyHelper::Create (Ptr node, Ptr device) const +YansWifiPhyHelper::Create (Ptr node, Ptr device) const { Ptr phy = m_phy.Create (); Ptr error = m_errorRateModel.Create (); @@ -419,6 +419,12 @@ YansWifiPhyHelper::SetPcapDataLinkType (enum SupportedPcapDataLinkTypes dlt) } } +uint32_t +YansWifiPhyHelper::GetPcapDataLinkType (void) const +{ + return m_pcapDlt; +} + void YansWifiPhyHelper::EnablePcapInternal (std::string prefix, Ptr nd, bool promiscuous, bool explicitFilename) { diff --git a/src/wifi/helper/yans-wifi-helper.h b/src/wifi/helper/yans-wifi-helper.h index 0d7a7c66f..e2798fc0f 100644 --- a/src/wifi/helper/yans-wifi-helper.h +++ b/src/wifi/helper/yans-wifi-helper.h @@ -243,6 +243,15 @@ public: */ void SetPcapDataLinkType (enum SupportedPcapDataLinkTypes dlt); + /** + * Get the data link type of PCAP traces to be used. + * + * @see SupportedPcapDataLinkTypes + * + * @returns The data link type of the pcap file (and packets) to be used + */ + uint32_t GetPcapDataLinkType (void) const; + private: /** * \param node the node on which we wish to create a wifi PHY @@ -251,7 +260,7 @@ private: * * This method implements the pure virtual method defined in \ref ns3::WifiPhyHelper. */ - virtual Ptr Create (Ptr node, Ptr device) const; + virtual Ptr Create (Ptr node, Ptr device) const; /** * @brief Enable pcap output the indicated net device. diff --git a/src/wifi/model/adhoc-wifi-mac.cc b/src/wifi/model/adhoc-wifi-mac.cc index cb669ede5..257a410f9 100644 --- a/src/wifi/model/adhoc-wifi-mac.cc +++ b/src/wifi/model/adhoc-wifi-mac.cc @@ -87,10 +87,7 @@ AdhocWifiMac::Enqueue (Ptr packet, Mac48Address to) { // In ad hoc mode, we assume that every destination supports all // the rates we support. - for (uint32_t i = 0; i < m_phy->GetNModes (); i++) - { - m_stationManager->AddSupportedMode (to, m_phy->GetMode (i)); - } + m_stationManager->AddAllSupportedModes (to); m_stationManager->RecordDisassociated (to); } diff --git a/src/wifi/model/dca-txop.cc b/src/wifi/model/dca-txop.cc index 21af5ed14..722f208d4 100644 --- a/src/wifi/model/dca-txop.cc +++ b/src/wifi/model/dca-txop.cc @@ -66,6 +66,14 @@ private: { m_txop->NotifyChannelSwitching (); } + virtual void DoNotifySleep (void) + { + m_txop->NotifySleep (); + } + virtual void DoNotifyWakeUp (void) + { + m_txop->NotifyWakeUp (); + } DcaTxop *m_txop; }; @@ -512,6 +520,22 @@ DcaTxop::NotifyChannelSwitching (void) m_queue->Flush (); m_currentPacket = 0; } +void +DcaTxop::NotifySleep (void) +{ + NS_LOG_FUNCTION (this); + if (m_currentPacket != 0) + { + m_queue->PushFront (m_currentPacket, m_currentHdr); + m_currentPacket = 0; + } +} +void +DcaTxop::NotifyWakeUp (void) +{ + NS_LOG_FUNCTION (this); + RestartAccessIfNeeded (); +} void DcaTxop::GotCts (double snr, WifiMode txMode) diff --git a/src/wifi/model/dca-txop.h b/src/wifi/model/dca-txop.h index 24f186579..8ab239025 100644 --- a/src/wifi/model/dca-txop.h +++ b/src/wifi/model/dca-txop.h @@ -194,6 +194,15 @@ private: * When a channel switching occurs, enqueued packets are removed. */ void NotifyChannelSwitching (void); + /** + * When sleep operation occurs, if there is a pending packet transmission, + * it will be reinserted to the front of the queue. + */ + void NotifySleep (void); + /** + * When wake up operation occurs, channel access will be restarted + */ + void NotifyWakeUp (void); /* Event handlers */ /** diff --git a/src/wifi/model/dcf-manager.cc b/src/wifi/model/dcf-manager.cc index 4cf1805ee..c21c2436b 100644 --- a/src/wifi/model/dcf-manager.cc +++ b/src/wifi/model/dcf-manager.cc @@ -161,6 +161,16 @@ DcfState::NotifyChannelSwitching (void) { DoNotifyChannelSwitching (); } +void +DcfState::NotifySleep (void) +{ + DoNotifySleep (); +} +void +DcfState::NotifyWakeUp (void) +{ + DoNotifyWakeUp (); +} /** @@ -311,6 +321,19 @@ DcfManager::SetupPhyListener (Ptr phy) m_phyListener = new PhyListener (this); phy->RegisterListener (m_phyListener); } + +void +DcfManager::RemovePhyListener (Ptr phy) +{ + NS_LOG_FUNCTION (this << phy); + if (m_phyListener != 0) + { + phy->UnregisterListener (m_phyListener); + delete m_phyListener; + m_phyListener = 0; + } +} + void DcfManager::SetupLowListener (Ptr low) { @@ -765,6 +788,13 @@ DcfManager::NotifySleepNow (void) { m_accessTimeout.Cancel (); } + + // Reset backoffs + for (States::iterator i = m_states.begin (); i != m_states.end (); i++) + { + DcfState *state = *i; + state->NotifySleep (); + } } void @@ -772,7 +802,6 @@ DcfManager::NotifyWakeupNow (void) { NS_LOG_FUNCTION (this); m_sleeping = false; - // Reset backoffs for (States::iterator i = m_states.begin (); i != m_states.end (); i++) { DcfState *state = *i; @@ -784,6 +813,7 @@ DcfManager::NotifyWakeupNow (void) } state->ResetCw (); state->m_accessRequested = false; + state->NotifyWakeUp (); } } diff --git a/src/wifi/model/dcf-manager.h b/src/wifi/model/dcf-manager.h index 219fbb0af..790b6b9cf 100644 --- a/src/wifi/model/dcf-manager.h +++ b/src/wifi/model/dcf-manager.h @@ -160,6 +160,14 @@ private: * Notify that the device is switching channel. */ void NotifyChannelSwitching (void); + /** + * Notify that the device has started to sleep. + */ + void NotifySleep (void); + /** + * Notify that the device has started to wake up + */ + void NotifyWakeUp (void); /** @@ -194,10 +202,25 @@ private: * Called by DcfManager to notify a DcfState subclass * that a channel switching occured. * - * The subclass is expected to flush the queue of - * packets. + * The subclass is expected to flush the queue of packets. */ - virtual void DoNotifyChannelSwitching () = 0; + virtual void DoNotifyChannelSwitching (void) = 0; + /** + * Called by DcfManager to notify a DcfState subclass that the device has + * begun to sleep. + * + * The subclass is expected to re-insert the pending packet into the queue + */ + virtual void DoNotifySleep (void) = 0; + /** + * Called by DcfManager to notify a DcfState subclass that the device + * has begun to wake up. + * + * The subclass is expected to restart a new backoff by + * calling DcfState::StartBackoffNow and DcfManager::RequestAccess + * is access is still needed. + */ + virtual void DoNotifyWakeUp (void) = 0; uint32_t m_aifsn; uint32_t m_backoffSlots; @@ -238,6 +261,12 @@ public: * \param phy */ void SetupPhyListener (Ptr phy); + /** + * Remove current registered listener for Phy events. + * + * \param phy + */ + void RemovePhyListener (Ptr phy); /** * Set up listener for MacLow events. * diff --git a/src/wifi/model/edca-txop-n.cc b/src/wifi/model/edca-txop-n.cc index 45543621b..67d2a9f04 100644 --- a/src/wifi/model/edca-txop-n.cc +++ b/src/wifi/model/edca-txop-n.cc @@ -66,6 +66,14 @@ private: { m_txop->NotifyChannelSwitching (); } + virtual void DoNotifySleep (void) + { + m_txop->NotifySleep (); + } + virtual void DoNotifyWakeUp (void) + { + m_txop->NotifyWakeUp (); + } EdcaTxopN *m_txop; }; @@ -554,6 +562,22 @@ EdcaTxopN::NotifyChannelSwitching (void) m_queue->Flush (); m_currentPacket = 0; } +void +EdcaTxopN::NotifySleep (void) +{ + NS_LOG_FUNCTION (this); + if (m_currentPacket != 0) + { + m_queue->PushFront (m_currentPacket, m_currentHdr); + m_currentPacket = 0; + } +} +void +EdcaTxopN::NotifyWakeUp (void) +{ + NS_LOG_FUNCTION (this); + RestartAccessIfNeeded (); +} void EdcaTxopN::Queue (Ptr packet, const WifiMacHeader &hdr) diff --git a/src/wifi/model/edca-txop-n.h b/src/wifi/model/edca-txop-n.h index 246a8488f..229ef1476 100644 --- a/src/wifi/model/edca-txop-n.h +++ b/src/wifi/model/edca-txop-n.h @@ -187,6 +187,14 @@ public: * When a channel switching occurs, enqueued packets are removed. */ void NotifyChannelSwitching (void); + /** + * When sleep operation occurs, re-insert pending packet into front of the queue + */ + void NotifySleep (void); + /** + * When wake up operation occurs, restart channel access + */ + void NotifyWakeUp (void); /* Event handlers */ /** diff --git a/src/wifi/model/mac-low.cc b/src/wifi/model/mac-low.cc index 7880d4ee8..7595a1684 100644 --- a/src/wifi/model/mac-low.cc +++ b/src/wifi/model/mac-low.cc @@ -327,6 +327,16 @@ MacLow::SetupPhyMacLowListener (Ptr phy) phy->RegisterListener (m_phyMacLowListener); } +void +MacLow::RemovePhyMacLowListener (Ptr phy) +{ + if (m_phyMacLowListener != 0 ) + { + phy->UnregisterListener (m_phyMacLowListener); + delete m_phyMacLowListener; + m_phyMacLowListener = 0; + } +} void MacLow::DoDispose (void) @@ -433,6 +443,19 @@ MacLow::SetPhy (Ptr phy) m_phy->SetReceiveErrorCallback (MakeCallback (&MacLow::ReceiveError, this)); SetupPhyMacLowListener (phy); } +Ptr +MacLow::GetPhy (void) const +{ + return m_phy; +} +void +MacLow::ResetPhy (void) +{ + m_phy->SetReceiveOkCallback (MakeNullCallback, double, WifiMode, enum WifiPreamble> ()); + m_phy->SetReceiveErrorCallback (MakeNullCallback, double> ()); + RemovePhyMacLowListener (m_phy); + m_phy = 0; +} void MacLow::SetWifiRemoteStationManager (Ptr manager) { @@ -663,7 +686,6 @@ void MacLow::NotifySleepNow (void) { NS_LOG_DEBUG ("Device in sleep mode. Cancelling MAC pending events"); - m_stationManager->Reset (); CancelAllEvents (); if (m_navCounterResetCtsMissed.IsRunning ()) { diff --git a/src/wifi/model/mac-low.h b/src/wifi/model/mac-low.h index 7882e8b93..a41328ca7 100644 --- a/src/wifi/model/mac-low.h +++ b/src/wifi/model/mac-low.h @@ -425,6 +425,16 @@ public: * \param phy WifiPhy associated with this MacLow */ void SetPhy (Ptr phy); + /* + * \return current attached PHY device + */ + Ptr GetPhy (void) const; + /** + * Remove WifiPhy associated with this MacLow. + * + * \param phy WifiPhy associated with this MacLow + */ + void ResetPhy (void); /** * Set up WifiRemoteStationManager associated with this MacLow. * @@ -611,7 +621,7 @@ public: * Start the transmission of the input packet and notify the listener * of transmission events. */ - void StartTransmission (Ptr packet, + virtual void StartTransmission (Ptr packet, const WifiMacHeader* hdr, MacLowTransmissionParameters parameters, MacLowTransmissionListener *listener); @@ -1072,6 +1082,12 @@ private: * \param phy the WifiPhy this MacLow is connected to */ void SetupPhyMacLowListener (Ptr phy); + /** + * Remove current WifiPhy listener for this MacLow. + * + * \param phy the WifiPhy this MacLow is connected to + */ + void RemovePhyMacLowListener (Ptr phy); Ptr m_phy; //!< Pointer to WifiPhy (actually send/receives frames) Ptr m_stationManager; //!< Pointer to WifiRemoteStationManager (rate control) diff --git a/src/wifi/model/regular-wifi-mac.cc b/src/wifi/model/regular-wifi-mac.cc index c8b8e02cd..5f98a9a20 100644 --- a/src/wifi/model/regular-wifi-mac.cc +++ b/src/wifi/model/regular-wifi-mac.cc @@ -208,11 +208,21 @@ RegularWifiMac::SetWifiPhy (Ptr phy) } Ptr -RegularWifiMac::GetWifiPhy () const +RegularWifiMac::GetWifiPhy (void) const { + NS_LOG_FUNCTION (this); return m_phy; } +void +RegularWifiMac::ResetWifiPhy (void) +{ + NS_LOG_FUNCTION (this); + m_low->ResetPhy (); + m_dcfManager->RemovePhyListener (m_phy); + m_phy = 0; +} + void RegularWifiMac::SetForwardUpCallback (ForwardUpCallback upCallback) { diff --git a/src/wifi/model/regular-wifi-mac.h b/src/wifi/model/regular-wifi-mac.h index c4faff0cd..27fadf27b 100644 --- a/src/wifi/model/regular-wifi-mac.h +++ b/src/wifi/model/regular-wifi-mac.h @@ -189,7 +189,11 @@ public: /** * \return the physical layer attached to this MAC. */ - virtual Ptr GetWifiPhy () const; + virtual Ptr GetWifiPhy (void) const; + /** + * removes attached WifiPhy device from this MAC. + */ + virtual void ResetWifiPhy (void); /** * \param stationManager the station manager attached to this MAC. */ @@ -197,7 +201,7 @@ public: /** * \return the station manager attached to this MAC. */ - virtual Ptr GetWifiRemoteStationManager () const; + virtual Ptr GetWifiRemoteStationManager (void) const; /** * This type defines the callback of a higher layer that a diff --git a/src/wifi/model/wifi-mac.h b/src/wifi/model/wifi-mac.h index 5840ea6b7..d66fab4ec 100644 --- a/src/wifi/model/wifi-mac.h +++ b/src/wifi/model/wifi-mac.h @@ -189,10 +189,23 @@ public: * \param phy the physical layer attached to this MAC. */ virtual void SetWifiPhy (Ptr phy) = 0; + /** + * return current attached WifiPhy device + */ + virtual Ptr GetWifiPhy (void) const = 0; + /** + * remove current attached WifiPhy device from this MAC. + */ + virtual void ResetWifiPhy (void) = 0; /** * \param stationManager the station manager attached to this MAC. */ virtual void SetWifiRemoteStationManager (Ptr stationManager) = 0; + /** + * \return the station manager attached to this MAC. + */ + virtual Ptr GetWifiRemoteStationManager (void) const = 0; + /** * \param upCallback the callback to invoke when a packet must be forwarded up the stack. */ diff --git a/src/wifi/model/wifi-phy-state-helper.cc b/src/wifi/model/wifi-phy-state-helper.cc index 7743486a7..18d22e611 100644 --- a/src/wifi/model/wifi-phy-state-helper.cc +++ b/src/wifi/model/wifi-phy-state-helper.cc @@ -21,6 +21,7 @@ #include "ns3/log.h" #include "ns3/simulator.h" #include "ns3/trace-source-accessor.h" +#include namespace ns3 { @@ -85,6 +86,15 @@ WifiPhyStateHelper::RegisterListener (WifiPhyListener *listener) { m_listeners.push_back (listener); } +void +WifiPhyStateHelper::UnregisterListener (WifiPhyListener *listener) +{ + ListenersI i = find (m_listeners.begin(), m_listeners.end(), listener); + if (i != m_listeners.end()) + { + m_listeners.erase(i); + } +} bool WifiPhyStateHelper::IsStateIdle (void) diff --git a/src/wifi/model/wifi-phy-state-helper.h b/src/wifi/model/wifi-phy-state-helper.h index 2030fd5f3..6dde71a32 100644 --- a/src/wifi/model/wifi-phy-state-helper.h +++ b/src/wifi/model/wifi-phy-state-helper.h @@ -57,6 +57,12 @@ public: * \param listener */ void RegisterListener (WifiPhyListener *listener); + /** + * Remove WifiPhyListener from this WifiPhyStateHelper. + * + * \param listener + */ + void UnregisterListener (WifiPhyListener *listener); /** * Return the current state of WifiPhy. * @@ -232,6 +238,7 @@ private: * typedef for a list of WifiPhyListeners */ typedef std::vector Listeners; + typedef std::vector::iterator ListenersI; /** * Log the ideal and CCA states. diff --git a/src/wifi/model/wifi-phy.h b/src/wifi/model/wifi-phy.h index 12d4c1f0d..ff05c71ab 100644 --- a/src/wifi/model/wifi-phy.h +++ b/src/wifi/model/wifi-phy.h @@ -219,6 +219,13 @@ public: * PHY-level events. */ virtual void RegisterListener (WifiPhyListener *listener) = 0; + /** + * \param listener the listener to be unregistered + * + * Remove the input listener from the list of objects to be notified of + * PHY-level events. + */ + virtual void UnregisterListener (WifiPhyListener *listener) = 0; /** * Put in sleep mode. @@ -494,7 +501,11 @@ public: * * \return the current channel number */ - virtual uint16_t GetChannelNumber () const = 0; + virtual uint16_t GetChannelNumber (void) const = 0; + /** + * \return the required time for channel switch operation of this WifiPhy + */ + virtual Time GetChannelSwitchDelay (void) const = 0; /** * Configure the PHY-level parameters for different Wi-Fi standard. diff --git a/src/wifi/model/wifi-remote-station-manager.cc b/src/wifi/model/wifi-remote-station-manager.cc index 9596fa122..6f8a8952b 100644 --- a/src/wifi/model/wifi-remote-station-manager.cc +++ b/src/wifi/model/wifi-remote-station-manager.cc @@ -447,6 +447,18 @@ WifiRemoteStationManager::AddSupportedMode (Mac48Address address, WifiMode mode) } state->m_operationalRateSet.push_back (mode); } +void +WifiRemoteStationManager::AddAllSupportedModes (Mac48Address address) +{ + NS_ASSERT (!address.IsGroup ()); + WifiRemoteStationState *state = LookupState (address); + state->m_operationalRateSet.clear (); + for (uint32_t i = 0; i < m_wifiPhy->GetNModes (); i++) + { + state->m_operationalRateSet.push_back ( m_wifiPhy->GetMode (i)); + } +} + /*void WifiRemoteStationManager::AddBssMembershipParameters(Mac48Address address, uint32_t selector) { diff --git a/src/wifi/model/wifi-remote-station-manager.h b/src/wifi/model/wifi-remote-station-manager.h index 93660d87f..f28a4bec0 100644 --- a/src/wifi/model/wifi-remote-station-manager.h +++ b/src/wifi/model/wifi-remote-station-manager.h @@ -276,6 +276,14 @@ public: * \param mode the WifiMode supports by the station */ void AddSupportedMode (Mac48Address address, WifiMode mode); + /** + * Invoked in a STA or AP to store all of the modes supported + * by a destination which is also supported locally. + * The set of supported modes includes the BSSBasicRateSet. + * + * \param address the address of the station being recorded + */ + void AddAllSupportedModes (Mac48Address address); //void AddBssMembershipParameters(Mac48Address address, uint32_t selector); /** diff --git a/src/wifi/model/yans-wifi-phy.cc b/src/wifi/model/yans-wifi-phy.cc index 9f75dc677..0fcb82f3e 100644 --- a/src/wifi/model/yans-wifi-phy.cc +++ b/src/wifi/model/yans-wifi-phy.cc @@ -423,11 +423,17 @@ switchChannel: } uint16_t -YansWifiPhy::GetChannelNumber () const +YansWifiPhy::GetChannelNumber (void) const { return m_channelNumber; } +Time +YansWifiPhy::GetChannelSwitchDelay (void) const +{ + return m_channelSwitchDelay; +} + double YansWifiPhy::GetChannelFrequencyMhz () const { @@ -792,6 +798,12 @@ YansWifiPhy::RegisterListener (WifiPhyListener *listener) m_state->RegisterListener (listener); } +void +YansWifiPhy::UnregisterListener (WifiPhyListener *listener) +{ + m_state->UnregisterListener (listener); +} + bool YansWifiPhy::IsStateCcaBusy (void) { diff --git a/src/wifi/model/yans-wifi-phy.h b/src/wifi/model/yans-wifi-phy.h index 85422a03c..f3f13edbc 100644 --- a/src/wifi/model/yans-wifi-phy.h +++ b/src/wifi/model/yans-wifi-phy.h @@ -87,7 +87,11 @@ public: * * \return the current channel number */ - uint16_t GetChannelNumber () const; + uint16_t GetChannelNumber (void) const; + /** + * \return the required time for channel switch operation of this WifiPhy + */ + Time GetChannelSwitchDelay (void) const; /** * Return current center channel frequency in MHz. * @@ -249,6 +253,7 @@ public: virtual void SetReceiveErrorCallback (WifiPhy::RxErrorCallback callback); virtual void SendPacket (Ptr packet, WifiTxVector txvector, enum WifiPreamble preamble); virtual void RegisterListener (WifiPhyListener *listener); + virtual void UnregisterListener (WifiPhyListener *listener); virtual void SetSleepMode (void); virtual void ResumeFromSleep (void); virtual bool IsStateCcaBusy (void); diff --git a/src/wifi/test/dcf-manager-test.cc b/src/wifi/test/dcf-manager-test.cc index d51a2dd7a..eb1887648 100644 --- a/src/wifi/test/dcf-manager-test.cc +++ b/src/wifi/test/dcf-manager-test.cc @@ -37,6 +37,8 @@ private: virtual void DoNotifyInternalCollision (void); virtual void DoNotifyCollision (void); virtual void DoNotifyChannelSwitching (void); + virtual void DoNotifySleep (void); + virtual void DoNotifyWakeUp (void); typedef std::pair ExpectedGrant; typedef std::list ExpectedGrants; @@ -136,7 +138,16 @@ DcfStateTest::DoNotifyChannelSwitching (void) { m_test->NotifyChannelSwitching (m_i); } +void +DcfStateTest::DoNotifySleep (void) +{ +} +void +DcfStateTest::DoNotifyWakeUp (void) +{ + +} DcfManagerTest::DcfManagerTest () : TestCase ("DcfManager")