A Discrete-Event Network Simulator
API
ns3::DcfManager Class Reference

Manage a set of ns3::DcfStateHandle a set of independent ns3::DcfState, each of which represents a single DCF within a MAC stack. More...

#include "dcf-manager.h"

+ Collaboration diagram for ns3::DcfManager:

Public Member Functions

 DcfManager ()
 
 ~DcfManager ()
 
void Add (DcfState *dcf)
 
Time GetEifsNoDifs () const
 
void NotifyAckTimeoutResetNow ()
 Notify that ACK timer has resetted. More...
 
void NotifyAckTimeoutStartNow (Time duration)
 Notify that ACK timer has started for the given duration. More...
 
void NotifyCtsTimeoutResetNow ()
 Notify that CTS timer has resetted. More...
 
void NotifyCtsTimeoutStartNow (Time duration)
 Notify that CTS timer has started for the given duration. More...
 
void NotifyMaybeCcaBusyStartNow (Time duration)
 
void NotifyNavResetNow (Time duration)
 
void NotifyNavStartNow (Time duration)
 
void NotifyRxEndErrorNow (void)
 Notify the DCF that a packet reception was just completed unsuccessfully. More...
 
void NotifyRxEndOkNow (void)
 Notify the DCF that a packet reception was just completed successfully. More...
 
void NotifyRxStartNow (Time duration)
 
void NotifySleepNow (void)
 Notify the DCF that the device has been put in sleep mode. More...
 
void NotifySwitchingStartNow (Time duration)
 
void NotifyTxStartNow (Time duration)
 
void NotifyWakeupNow (void)
 Notify the DCF that the device has been resumed from sleep mode. More...
 
void RemovePhyListener (Ptr< WifiPhy > phy)
 Remove current registered listener for Phy events. More...
 
void RequestAccess (DcfState *state)
 
void SetEifsNoDifs (Time eifsNoDifs)
 
void SetSifs (Time sifs)
 
void SetSlot (Time slotTime)
 
void SetupLowListener (Ptr< MacLow > low)
 Set up listener for MacLow events. More...
 
void SetupPhyListener (Ptr< WifiPhy > phy)
 Set up listener for Phy events. More...
 

Private Types

typedef std::vector< DcfState * > States
 typedef for a vector of DcfStates More...
 

Private Member Functions

void AccessTimeout (void)
 Called when access timeout should occur (e.g. More...
 
void DoGrantAccess (void)
 Grant access to DCF. More...
 
void DoRestartAccessTimeoutIfNeeded (void)
 
Time GetAccessGrantStart (void) const
 Access will never be granted to the medium before the time returned by this method. More...
 
Time GetBackoffEndFor (DcfState *state)
 Return the time when the backoff procedure ended (or will ended) for the given DcfState. More...
 
Time GetBackoffStartFor (DcfState *state)
 Return the time when the backoff procedure started for the given DcfState. More...
 
bool IsBusy (void) const
 Check if the device is busy sending or receiving, or NAV or CCA busy. More...
 
bool IsWithinAifs (DcfState *state) const
 Check if the device is between frames (in DIFS or AIFS interval) More...
 
Time MostRecent (Time a, Time b) const
 Return the most recent time. More...
 
Time MostRecent (Time a, Time b, Time c) const
 Return the most recent time. More...
 
Time MostRecent (Time a, Time b, Time c, Time d) const
 Return the most recent time. More...
 
Time MostRecent (Time a, Time b, Time c, Time d, Time e, Time f) const
 Return the most recent time. More...
 
Time MostRecent (Time a, Time b, Time c, Time d, Time e, Time f, Time g) const
 Return the most recent time. More...
 
void UpdateBackoff (void)
 Update backoff slots for all DcfStates. More...
 

Private Attributes

EventId m_accessTimeout
 
Time m_eifsNoDifs
 
Time m_lastAckTimeoutEnd
 
Time m_lastBusyDuration
 
Time m_lastBusyStart
 
Time m_lastCtsTimeoutEnd
 
Time m_lastNavDuration
 
Time m_lastNavStart
 
Time m_lastRxDuration
 
Time m_lastRxEnd
 
bool m_lastRxReceivedOk
 
Time m_lastRxStart
 
Time m_lastSwitchingDuration
 
Time m_lastSwitchingStart
 
Time m_lastTxDuration
 
Time m_lastTxStart
 
LowDcfListenerm_lowListener
 
PhyListenerm_phyListener
 
bool m_rxing
 
Time m_sifs
 
bool m_sleeping
 
uint32_t m_slotTimeUs
 
States m_states
 

Detailed Description

Manage a set of ns3::DcfState

Handle a set of independent ns3::DcfState, each of which represents a single DCF within a MAC stack.

Each ns3::DcfState has a priority implicitely associated with it (the priority is determined when the ns3::DcfState is added to the DcfManager: the first DcfState to be added gets the highest priority, the second, the second highest priority, and so on.) which is used to handle "internal" collisions. i.e., when two local DcfState are expected to get access to the medium at the same time, the highest priority local DcfState wins access to the medium and the other DcfState suffers a "internal" collision.

Definition at line 279 of file dcf-manager.h.

Member Typedef Documentation

typedef std::vector<DcfState *> ns3::DcfManager::States
private

typedef for a vector of DcfStates

Definition at line 553 of file dcf-manager.h.

Constructor & Destructor Documentation

ns3::DcfManager::DcfManager ( )

Definition at line 326 of file dcf-manager.cc.

References NS_LOG_FUNCTION.

ns3::DcfManager::~DcfManager ( )

Definition at line 351 of file dcf-manager.cc.

References m_lowListener, and m_phyListener.

Member Function Documentation

void ns3::DcfManager::AccessTimeout ( void  )
private

Called when access timeout should occur (e.g.

backoff procedure expired).

Definition at line 629 of file dcf-manager.cc.

References DoGrantAccess(), DoRestartAccessTimeoutIfNeeded(), NS_LOG_FUNCTION, and UpdateBackoff().

Referenced by DoRestartAccessTimeoutIfNeeded().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::Add ( DcfState dcf)
Parameters
dcfa new DcfState.

The DcfManager does not take ownership of this pointer so, the callee must make sure that the DcfState pointer will stay valid as long as the DcfManager is valid. Note that the order in which DcfState objects are added to a DcfManager matters: the first DcfState added has the highest priority, the second DcfState added, has the second highest priority, etc.

Definition at line 424 of file dcf-manager.cc.

References m_states, and NS_LOG_FUNCTION.

Referenced by DcfManagerTest::AddDcfState(), ns3::DcaTxop::SetManager(), and ns3::EdcaTxopN::SetManager().

+ Here is the caller graph for this function:

void ns3::DcfManager::DoGrantAccess ( void  )
private

Grant access to DCF.

This is the first dcf we find with an expired backoff and which needs access to the medium. i.e., it has data to send.

all other dcfs with a lower priority whose backoff has expired and which needed access to the medium must be notified that we did get an internal collision.

Now, we notify all of these changes in one go. It is necessary to perform first the calculations of which states are colliding and then only apply the changes because applying the changes through notification could change the global state of the manager, and, thus, could change the result of the calculations.

Definition at line 574 of file dcf-manager.cc.

References GetBackoffEndFor(), ns3::DcfState::GetBackoffSlots(), ns3::DcfState::IsAccessRequested(), m_states, MY_DEBUG, ns3::DcfState::NotifyAccessGranted(), ns3::Simulator::Now(), and NS_LOG_FUNCTION.

Referenced by AccessTimeout(), and RequestAccess().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::DoRestartAccessTimeoutIfNeeded ( void  )
private

Is there a DcfState which needs to access the medium, and, if there is one, how many slots for AIFS+backoff does it require ?

Definition at line 734 of file dcf-manager.cc.

References AccessTimeout(), ns3::EventId::Cancel(), GetBackoffEndFor(), ns3::Simulator::GetDelayLeft(), ns3::Simulator::GetMaximumSimulationTime(), ns3::DcfState::IsAccessRequested(), ns3::EventId::IsExpired(), ns3::EventId::IsRunning(), m_accessTimeout, m_states, min, MY_DEBUG, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::Simulator::Schedule().

Referenced by AccessTimeout(), NotifyAckTimeoutResetNow(), NotifyCtsTimeoutResetNow(), NotifyNavResetNow(), and RequestAccess().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Time ns3::DcfManager::GetAccessGrantStart ( void  ) const
private

Access will never be granted to the medium before the time returned by this method.

Returns
the absolute time at which access could start to be granted

Definition at line 638 of file dcf-manager.cc.

References m_eifsNoDifs, m_lastAckTimeoutEnd, m_lastBusyDuration, m_lastBusyStart, m_lastCtsTimeoutEnd, m_lastNavDuration, m_lastNavStart, m_lastRxDuration, m_lastRxEnd, m_lastRxReceivedOk, m_lastRxStart, m_lastSwitchingDuration, m_lastSwitchingStart, m_lastTxDuration, m_lastTxStart, m_rxing, m_sifs, MostRecent(), NS_LOG_FUNCTION, and NS_LOG_INFO.

Referenced by GetBackoffStartFor(), and IsWithinAifs().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Time ns3::DcfManager::GetBackoffEndFor ( DcfState state)
private

Return the time when the backoff procedure ended (or will ended) for the given DcfState.

Parameters
state
Returns
the time when the backoff procedure ended (or will ended)

Definition at line 687 of file dcf-manager.cc.

References ns3::Time::As(), ns3::DcfState::GetBackoffSlots(), GetBackoffStartFor(), m_slotTimeUs, ns3::MicroSeconds(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::Time::US.

Referenced by DoGrantAccess(), and DoRestartAccessTimeoutIfNeeded().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Time ns3::DcfManager::GetBackoffStartFor ( DcfState state)
private

Return the time when the backoff procedure started for the given DcfState.

Parameters
state
Returns
the time when the backoff procedure started

Definition at line 677 of file dcf-manager.cc.

References GetAccessGrantStart(), ns3::DcfState::GetAifsn(), ns3::DcfState::GetBackoffStart(), m_slotTimeUs, ns3::MicroSeconds(), MostRecent(), and NS_LOG_FUNCTION.

Referenced by GetBackoffEndFor(), and UpdateBackoff().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Time ns3::DcfManager::GetEifsNoDifs ( ) const
Returns
value set previously using SetEifsNoDifs.

Definition at line 417 of file dcf-manager.cc.

References m_eifsNoDifs, and NS_LOG_FUNCTION.

Referenced by ns3::RegularWifiMac::GetEifsNoDifs().

+ Here is the caller graph for this function:

bool ns3::DcfManager::IsBusy ( void  ) const
private

Check if the device is busy sending or receiving, or NAV or CCA busy.

Returns
true if the device is busy, false otherwise

Definition at line 483 of file dcf-manager.cc.

References m_lastBusyDuration, m_lastBusyStart, m_lastNavDuration, m_lastNavStart, m_lastTxDuration, m_lastTxStart, m_rxing, ns3::Simulator::Now(), and NS_LOG_FUNCTION.

Referenced by RequestAccess().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::DcfManager::IsWithinAifs ( DcfState state) const
private

Check if the device is between frames (in DIFS or AIFS interval)

Parameters
statethe state to check
Returns
true if the device is within AIFS, false otherwise

Definition at line 512 of file dcf-manager.cc.

References GetAccessGrantStart(), ns3::DcfState::GetAifsn(), ns3::Time::GetSeconds(), m_slotTimeUs, ns3::MicroSeconds(), ns3::Simulator::Now(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.

Referenced by RequestAccess().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Time ns3::DcfManager::MostRecent ( Time  a,
Time  b 
) const
private

Return the most recent time.

Parameters
a
b
Returns
the most recent time

Definition at line 431 of file dcf-manager.cc.

References ns3::Max(), and NS_LOG_FUNCTION.

Referenced by GetAccessGrantStart(), and GetBackoffStartFor().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Time ns3::DcfManager::MostRecent ( Time  a,
Time  b,
Time  c 
) const
private

Return the most recent time.

Parameters
a
b
c
Returns
the most recent time

Definition at line 438 of file dcf-manager.cc.

References ns3::Max(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

Time ns3::DcfManager::MostRecent ( Time  a,
Time  b,
Time  c,
Time  d 
) const
private

Return the most recent time.

Parameters
a
b
c
d
Returns
the most recent time

Definition at line 448 of file dcf-manager.cc.

References f(), ns3::Max(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

Time ns3::DcfManager::MostRecent ( Time  a,
Time  b,
Time  c,
Time  d,
Time  e,
Time  f 
) const
private

Return the most recent time.

Parameters
a
b
c
d
e
f
Returns
the most recent time

Definition at line 458 of file dcf-manager.cc.

References ns3::Max(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

Time ns3::DcfManager::MostRecent ( Time  a,
Time  b,
Time  c,
Time  d,
Time  e,
Time  f,
Time  g 
) const
private

Return the most recent time.

Parameters
a
b
c
d
e
f
g
Returns
the most recent time

Definition at line 470 of file dcf-manager.cc.

References ns3::Max(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

void ns3::DcfManager::NotifyAckTimeoutResetNow ( )

Notify that ACK timer has resetted.

Definition at line 990 of file dcf-manager.cc.

References DoRestartAccessTimeoutIfNeeded(), m_lastAckTimeoutEnd, ns3::Simulator::Now(), and NS_LOG_FUNCTION.

Referenced by ns3::LowDcfListener::AckTimeoutReset().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::NotifyAckTimeoutStartNow ( Time  duration)

Notify that ACK timer has started for the given duration.

Parameters
duration

Definition at line 982 of file dcf-manager.cc.

References m_lastAckTimeoutEnd, ns3::Simulator::Now(), NS_ASSERT, and NS_LOG_FUNCTION.

Referenced by ns3::LowDcfListener::AckTimeoutStart(), and DcfManagerTest::NotifyAccessGranted().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::NotifyCtsTimeoutResetNow ( )

Notify that CTS timer has resetted.

Definition at line 1005 of file dcf-manager.cc.

References DoRestartAccessTimeoutIfNeeded(), m_lastCtsTimeoutEnd, ns3::Simulator::Now(), and NS_LOG_FUNCTION.

Referenced by ns3::LowDcfListener::CtsTimeoutReset().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::NotifyCtsTimeoutStartNow ( Time  duration)

Notify that CTS timer has started for the given duration.

Parameters
duration

Definition at line 998 of file dcf-manager.cc.

References m_lastCtsTimeoutEnd, ns3::Simulator::Now(), and NS_LOG_FUNCTION.

Referenced by ns3::LowDcfListener::CtsTimeoutStart().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::NotifyMaybeCcaBusyStartNow ( Time  duration)
Parameters
durationexpected duration of cca busy period

Notify the DCF that a CCA busy period has just started.

Definition at line 840 of file dcf-manager.cc.

References m_lastBusyDuration, m_lastBusyStart, MY_DEBUG, ns3::Simulator::Now(), NS_LOG_FUNCTION, and UpdateBackoff().

Referenced by ns3::OcbWifiMac::MakeVirtualBusy(), and ns3::PhyListener::NotifyMaybeCcaBusyStart().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::NotifyNavResetNow ( Time  duration)
Parameters
durationthe value of the received NAV.

Called at end of rx

If the nav reset indicates an end-of-nav which is earlier than the previous end-of-nav, the expected end of backoff might be later than previously thought so, we might need to restart a new access timeout.

Definition at line 949 of file dcf-manager.cc.

References DoRestartAccessTimeoutIfNeeded(), m_lastNavDuration, m_lastNavStart, MY_DEBUG, ns3::Simulator::Now(), NS_LOG_FUNCTION, and UpdateBackoff().

Referenced by ns3::LowDcfListener::NavReset(), and ns3::MeshWifiInterfaceMac::SwitchFrequencyChannel().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::NotifyNavStartNow ( Time  duration)
Parameters
durationthe value of the received NAV.

Called at end of rx

Definition at line 966 of file dcf-manager.cc.

References m_lastNavDuration, m_lastNavStart, MY_DEBUG, ns3::Simulator::Now(), NS_ASSERT, NS_LOG_FUNCTION, and UpdateBackoff().

Referenced by ns3::LowDcfListener::NavStart().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::NotifyRxEndErrorNow ( void  )

Notify the DCF that a packet reception was just completed unsuccessfully.

Definition at line 796 of file dcf-manager.cc.

References m_lastRxEnd, m_lastRxReceivedOk, m_rxing, MY_DEBUG, ns3::Simulator::Now(), and NS_LOG_FUNCTION.

Referenced by ns3::PhyListener::NotifyRxEndError().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::NotifyRxEndOkNow ( void  )

Notify the DCF that a packet reception was just completed successfully.

Definition at line 786 of file dcf-manager.cc.

References m_lastRxEnd, m_lastRxReceivedOk, m_rxing, MY_DEBUG, ns3::Simulator::Now(), and NS_LOG_FUNCTION.

Referenced by ns3::PhyListener::NotifyRxEndOk().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::NotifyRxStartNow ( Time  duration)
Parameters
durationexpected duration of reception

Notify the DCF that a packet reception started for the expected duration.

Definition at line 775 of file dcf-manager.cc.

References m_lastRxDuration, m_lastRxStart, m_rxing, MY_DEBUG, ns3::Simulator::Now(), NS_LOG_FUNCTION, and UpdateBackoff().

Referenced by ns3::PhyListener::NotifyRxStart().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::NotifySleepNow ( void  )

Notify the DCF that the device has been put in sleep mode.

Definition at line 910 of file dcf-manager.cc.

References ns3::EventId::Cancel(), ns3::EventId::IsRunning(), m_accessTimeout, m_sleeping, m_states, ns3::DcfState::NotifySleep(), and NS_LOG_FUNCTION.

Referenced by ns3::PhyListener::NotifySleep(), and ns3::OcbWifiMac::Suspend().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::NotifySwitchingStartNow ( Time  duration)
Parameters
durationexpected duration of channel switching period

Notify the DCF that a channel switching period has just started. During switching state, new packets can be enqueued in DcaTxop/EdcaTxop but they won't access to the medium until the end of the channel switching.

Definition at line 850 of file dcf-manager.cc.

References ns3::EventId::Cancel(), ns3::DcfState::GetBackoffSlots(), ns3::EventId::IsRunning(), ns3::DcfState::m_accessRequested, m_accessTimeout, m_lastAckTimeoutEnd, m_lastBusyDuration, m_lastBusyStart, m_lastCtsTimeoutEnd, m_lastNavDuration, m_lastNavStart, m_lastRxDuration, m_lastRxEnd, m_lastRxReceivedOk, m_lastRxStart, m_lastSwitchingDuration, m_lastSwitchingStart, m_lastTxDuration, m_lastTxStart, m_rxing, m_states, MY_DEBUG, ns3::DcfState::NotifyChannelSwitching(), ns3::Simulator::Now(), NS_ASSERT, NS_LOG_FUNCTION, ns3::DcfState::ResetCw(), and ns3::DcfState::UpdateBackoffSlotsNow().

Referenced by ns3::PhyListener::NotifySwitchingStart(), and ns3::OcbWifiMac::Reset().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::NotifyTxStartNow ( Time  duration)
Parameters
durationexpected duration of transmission

Notify the DCF that a packet transmission was just started and is expected to last for the specified duration.

Definition at line 806 of file dcf-manager.cc.

References m_lastRxDuration, m_lastRxEnd, m_lastRxReceivedOk, m_lastRxStart, m_lastTxDuration, m_lastTxStart, m_rxing, m_sifs, MY_DEBUG, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and UpdateBackoff().

Referenced by DcfManagerTest::NotifyAccessGranted(), and ns3::PhyListener::NotifyTxStart().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::NotifyWakeupNow ( void  )

Notify the DCF that the device has been resumed from sleep mode.

Definition at line 929 of file dcf-manager.cc.

References ns3::DcfState::GetBackoffSlots(), ns3::DcfState::m_accessRequested, m_sleeping, m_states, ns3::DcfState::NotifyWakeUp(), ns3::Simulator::Now(), NS_ASSERT, NS_LOG_FUNCTION, ns3::DcfState::ResetCw(), and ns3::DcfState::UpdateBackoffSlotsNow().

Referenced by ns3::PhyListener::NotifyWakeup(), and ns3::OcbWifiMac::Resume().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::RemovePhyListener ( Ptr< WifiPhy phy)

Remove current registered listener for Phy events.

Parameters
phy

Definition at line 372 of file dcf-manager.cc.

References m_phyListener, NS_LOG_FUNCTION, and ns3::WifiPhy::UnregisterListener().

Referenced by ns3::RegularWifiMac::ResetWifiPhy().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::RequestAccess ( DcfState state)
Parameters
statea DcfState

Notify the DcfManager that a specific DcfState needs access to the medium. The DcfManager is then responsible for starting an access timer and, invoking DcfState::DoNotifyAccessGranted when the access is granted if it ever gets granted.

If there is a collision, generate a backoff by notifying the collision to the user.

Definition at line 526 of file dcf-manager.cc.

References DoGrantAccess(), DoRestartAccessTimeoutIfNeeded(), ns3::DcfState::GetBackoffSlots(), ns3::DcfState::IsAccessRequested(), IsBusy(), IsWithinAifs(), m_lastTxDuration, m_lastTxStart, m_sleeping, MY_DEBUG, ns3::DcfState::NotifyAccessRequested(), ns3::DcfState::NotifyCollision(), ns3::DcfState::NotifyInternalCollision(), ns3::Simulator::Now(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, and UpdateBackoff().

Referenced by DcfManagerTest::DoAccessRequest(), ns3::DcaTxop::RestartAccessIfNeeded(), ns3::EdcaTxopN::RestartAccessIfNeeded(), ns3::DcaTxop::StartAccessIfNeeded(), and ns3::EdcaTxopN::StartAccessIfNeeded().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::SetEifsNoDifs ( Time  eifsNoDifs)
Parameters
eifsNoDifsthe duration of a EIFS minus the duration of DIFS.

It is a bad idea to call this method after RequestAccess or one of the Notify methods has been invoked.

Definition at line 410 of file dcf-manager.cc.

References m_eifsNoDifs, and NS_LOG_FUNCTION.

Referenced by ns3::RegularWifiMac::SetEifsNoDifs(), and DcfManagerTest::StartTest().

+ Here is the caller graph for this function:

void ns3::DcfManager::SetSifs ( Time  sifs)
Parameters
sifsthe duration of a SIFS.

It is a bad idea to call this method after RequestAccess or one of the Notify methods has been invoked.

Definition at line 403 of file dcf-manager.cc.

References m_sifs, and NS_LOG_FUNCTION.

Referenced by ns3::RegularWifiMac::SetSifs(), and DcfManagerTest::StartTest().

+ Here is the caller graph for this function:

void ns3::DcfManager::SetSlot ( Time  slotTime)
Parameters
slotTimethe duration of a slot.

It is a bad idea to call this method after RequestAccess or one of the Notify methods has been invoked.

Definition at line 396 of file dcf-manager.cc.

References ns3::Time::GetMicroSeconds(), m_slotTimeUs, and NS_LOG_FUNCTION.

Referenced by AmpduAggregationTest::DoRun(), ns3::RegularWifiMac::SetSlot(), and DcfManagerTest::StartTest().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::SetupLowListener ( Ptr< MacLow low)

Set up listener for MacLow events.

Parameters
low

Definition at line 384 of file dcf-manager.cc.

References m_lowListener, NS_LOG_FUNCTION, and ns3::MacLow::RegisterDcfListener().

Referenced by AmpduAggregationTest::DoRun(), ns3::OcbWifiMac::EnableForWave(), and ns3::RegularWifiMac::RegularWifiMac().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::SetupPhyListener ( Ptr< WifiPhy phy)

Set up listener for Phy events.

Parameters
phy

Definition at line 360 of file dcf-manager.cc.

References m_phyListener, NS_LOG_FUNCTION, and ns3::WifiPhy::RegisterListener().

Referenced by AmpduAggregationTest::DoRun(), and ns3::RegularWifiMac::SetWifiPhy().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfManager::UpdateBackoff ( void  )
private

Member Data Documentation

EventId ns3::DcfManager::m_accessTimeout
private
Time ns3::DcfManager::m_eifsNoDifs
private

Definition at line 572 of file dcf-manager.h.

Referenced by GetAccessGrantStart(), GetEifsNoDifs(), and SetEifsNoDifs().

Time ns3::DcfManager::m_lastAckTimeoutEnd
private
Time ns3::DcfManager::m_lastBusyDuration
private
Time ns3::DcfManager::m_lastBusyStart
private
Time ns3::DcfManager::m_lastCtsTimeoutEnd
private
Time ns3::DcfManager::m_lastNavDuration
private
Time ns3::DcfManager::m_lastNavStart
private
Time ns3::DcfManager::m_lastRxDuration
private
Time ns3::DcfManager::m_lastRxEnd
private
bool ns3::DcfManager::m_lastRxReceivedOk
private
Time ns3::DcfManager::m_lastRxStart
private
Time ns3::DcfManager::m_lastSwitchingDuration
private

Definition at line 569 of file dcf-manager.h.

Referenced by GetAccessGrantStart(), and NotifySwitchingStartNow().

Time ns3::DcfManager::m_lastSwitchingStart
private

Definition at line 568 of file dcf-manager.h.

Referenced by GetAccessGrantStart(), and NotifySwitchingStartNow().

Time ns3::DcfManager::m_lastTxDuration
private
Time ns3::DcfManager::m_lastTxStart
private
LowDcfListener* ns3::DcfManager::m_lowListener
private

Definition at line 577 of file dcf-manager.h.

Referenced by SetupLowListener(), and ~DcfManager().

PhyListener* ns3::DcfManager::m_phyListener
private

Definition at line 576 of file dcf-manager.h.

Referenced by RemovePhyListener(), SetupPhyListener(), and ~DcfManager().

bool ns3::DcfManager::m_rxing
private
Time ns3::DcfManager::m_sifs
private

Definition at line 575 of file dcf-manager.h.

Referenced by GetAccessGrantStart(), NotifyTxStartNow(), and SetSifs().

bool ns3::DcfManager::m_sleeping
private

Definition at line 571 of file dcf-manager.h.

Referenced by NotifySleepNow(), NotifyWakeupNow(), and RequestAccess().

uint32_t ns3::DcfManager::m_slotTimeUs
private
States ns3::DcfManager::m_states
private

The documentation for this class was generated from the following files: