A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ns3::DcfState Class Reference

keep track of the state needed for a single DCF function.Multiple instances of a DcfState can be registered in a single DcfManager to implement 802.11e-style relative QoS. DcfState::SetAifsn and DcfState::SetCwBounds allow the user to control the relative QoS differentiation. More...

#include <dcf-manager.h>

+ Inheritance diagram for ns3::DcfState:
+ Collaboration diagram for ns3::DcfState:

Public Member Functions

 DcfState ()
virtual ~DcfState ()
uint32_t GetAifsn (void) const
uint32_t GetCw (void) const
uint32_t GetCwMax (void) const
uint32_t GetCwMin (void) const
bool IsAccessRequested (void) const
void ResetCw (void)
void SetAifsn (uint32_t aifsn)
void SetCwMax (uint32_t maxCw)
void SetCwMin (uint32_t minCw)
void StartBackoffNow (uint32_t nSlots)
void UpdateFailedCw (void)

Private Member Functions

virtual void DoNotifyAccessGranted (void)=0
virtual void DoNotifyChannelSwitching ()=0
virtual void DoNotifyCollision (void)=0
virtual void DoNotifyInternalCollision (void)=0
uint32_t GetBackoffSlots (void) const
Time GetBackoffStart (void) const
void NotifyAccessGranted (void)
void NotifyAccessRequested (void)
void NotifyChannelSwitching (void)
void NotifyCollision (void)
void NotifyInternalCollision (void)
void UpdateBackoffSlotsNow (uint32_t nSlots, Time backoffUpdateBound)

Private Attributes

bool m_accessRequested
uint32_t m_aifsn
uint32_t m_backoffSlots
Time m_backoffStart
uint32_t m_cw
uint32_t m_cwMax
uint32_t m_cwMin

Friends

class DcfManager

Detailed Description

keep track of the state needed for a single DCF function.

Multiple instances of a DcfState can be registered in a single DcfManager to implement 802.11e-style relative QoS. DcfState::SetAifsn and DcfState::SetCwBounds allow the user to control the relative QoS differentiation.

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

Constructor & Destructor Documentation

ns3::DcfState::DcfState ( )

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

ns3::DcfState::~DcfState ( )
virtual

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

Member Function Documentation

virtual void ns3::DcfState::DoNotifyAccessGranted ( void  )
privatepure virtual

Called by DcfManager to notify a DcfState subclass that access to the medium is granted and can start immediately.

Referenced by NotifyAccessGranted().

+ Here is the caller graph for this function:

virtual void ns3::DcfState::DoNotifyChannelSwitching ( )
privatepure virtual

Called by DcfManager to notify a DcfState subclass that a channel switching occured.

The subclass is expected to flush the queue of packets.

Referenced by NotifyChannelSwitching().

+ Here is the caller graph for this function:

virtual void ns3::DcfState::DoNotifyCollision ( void  )
privatepure virtual

Called by DcfManager to notify a DcfState subclass that a normal collision occured, that is, that the medium was busy when access was requested.

The subclass is expected to start a new backoff by calling DcfState::StartBackoffNow and DcfManager::RequestAccess is access is still needed.

Referenced by NotifyCollision().

+ Here is the caller graph for this function:

virtual void ns3::DcfState::DoNotifyInternalCollision ( void  )
privatepure virtual

Called by DcfManager to notify a DcfState subclass that an 'internal' collision occured, that is, that the backoff timer of a higher priority DcfState expired at the same time and that access was granted to this higher priority DcfState.

The subclass is expected to start a new backoff by calling DcfState::StartBackoffNow and DcfManager::RequestAccess is access is still needed.

Referenced by NotifyInternalCollision().

+ Here is the caller graph for this function:

uint32_t ns3::DcfState::GetAifsn ( void  ) const

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

References m_aifsn.

Referenced by ns3::DcaTxop::GetAifsn(), ns3::EdcaTxopN::GetAifsn(), and ns3::DcfManager::GetBackoffStartFor().

+ Here is the caller graph for this function:

uint32_t ns3::DcfState::GetBackoffSlots ( void  ) const
private
Time ns3::DcfState::GetBackoffStart ( void  ) const
private

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

References m_backoffStart.

Referenced by ns3::DcfManager::GetBackoffStartFor().

+ Here is the caller graph for this function:

uint32_t ns3::DcfState::GetCwMax ( void  ) const

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

References m_cwMax.

Referenced by ns3::DcaTxop::GetMaxCw(), and ns3::EdcaTxopN::GetMaxCw().

+ Here is the caller graph for this function:

uint32_t ns3::DcfState::GetCwMin ( void  ) const

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

References m_cwMin.

Referenced by ns3::DcaTxop::GetMinCw(), and ns3::EdcaTxopN::GetMinCw().

+ Here is the caller graph for this function:

bool ns3::DcfState::IsAccessRequested ( void  ) const
Returns
true if access has been requested for this DcfState and has not been granted already, false otherwise.

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

References m_accessRequested.

Referenced by ns3::DcfManager::DoGrantAccess(), ns3::DcfManager::DoRestartAccessTimeoutIfNeeded(), ns3::DcfManager::RequestAccess(), ns3::EdcaTxopN::RestartAccessIfNeeded(), ns3::DcaTxop::RestartAccessIfNeeded(), ns3::EdcaTxopN::StartAccessIfNeeded(), and ns3::DcaTxop::StartAccessIfNeeded().

+ Here is the caller graph for this function:

void ns3::DcfState::NotifyAccessGranted ( void  )
private

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

References DoNotifyAccessGranted(), m_accessRequested, and NS_ASSERT.

Referenced by ns3::DcfManager::DoGrantAccess().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfState::NotifyAccessRequested ( void  )
private

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

References m_accessRequested.

Referenced by ns3::DcfManager::RequestAccess().

+ Here is the caller graph for this function:

void ns3::DcfState::NotifyChannelSwitching ( void  )
private

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

References DoNotifyChannelSwitching().

Referenced by ns3::DcfManager::NotifySwitchingStartNow().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfState::NotifyCollision ( void  )
private

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

References DoNotifyCollision().

Referenced by ns3::DcfManager::RequestAccess().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfState::NotifyInternalCollision ( void  )
private

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

References DoNotifyInternalCollision().

+ Here is the call graph for this function:

void ns3::DcfState::ResetCw ( void  )

Update the value of the CW variable to take into account a transmission success or a transmission abort (stop transmission of a packet after the maximum number of retransmissions has been reached). By default, this resets the CW variable to minCW.

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

References m_cw, and m_cwMin.

Referenced by ns3::EdcaTxopN::CompleteTx(), ns3::DcaTxop::DoStart(), ns3::EdcaTxopN::DoStart(), ns3::EdcaTxopN::GotAck(), ns3::DcaTxop::GotAck(), ns3::EdcaTxopN::GotBlockAck(), ns3::EdcaTxopN::MissedAck(), ns3::DcaTxop::MissedAck(), ns3::EdcaTxopN::MissedCts(), ns3::DcaTxop::MissedCts(), ns3::EdcaTxopN::NotifyAccessGranted(), ns3::DcaTxop::NotifyAccessGranted(), ns3::DcfManager::NotifySwitchingStartNow(), SetCwMax(), and SetCwMin().

+ Here is the caller graph for this function:

void ns3::DcfState::SetAifsn ( uint32_t  aifsn)
Parameters
aifsnthe number of slots which make up an AIFS for a specific DCF. a DIFS corresponds to an AIFSN = 2.

Calling this method after DcfManager::Add has been called is not recommended.

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

References m_aifsn.

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

+ Here is the caller graph for this function:

void ns3::DcfState::SetCwMax ( uint32_t  maxCw)

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

References m_cwMax, and ResetCw().

Referenced by ns3::DcaTxop::SetMaxCw(), and ns3::EdcaTxopN::SetMaxCw().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfState::SetCwMin ( uint32_t  minCw)

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

References m_cwMin, and ResetCw().

Referenced by ns3::DcaTxop::SetMinCw(), and ns3::EdcaTxopN::SetMinCw().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcfState::StartBackoffNow ( uint32_t  nSlots)
void ns3::DcfState::UpdateBackoffSlotsNow ( uint32_t  nSlots,
Time  backoffUpdateBound 
)
private

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

References m_backoffSlots, m_backoffStart, and MY_DEBUG.

Referenced by ns3::DcfManager::NotifySwitchingStartNow(), and ns3::DcfManager::UpdateBackoff().

+ Here is the caller graph for this function:

void ns3::DcfState::UpdateFailedCw ( void  )

Update the value of the CW variable to take into account a transmission failure. By default, this triggers a doubling of CW (capped by maxCW).

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

References m_cw, and m_cwMax.

Referenced by ns3::EdcaTxopN::MissedAck(), ns3::DcaTxop::MissedAck(), ns3::EdcaTxopN::MissedBlockAck(), ns3::EdcaTxopN::MissedCts(), and ns3::DcaTxop::MissedCts().

+ Here is the caller graph for this function:

Friends And Related Function Documentation

friend class DcfManager
friend

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

Member Data Documentation

bool ns3::DcfState::m_accessRequested
private
uint32_t ns3::DcfState::m_aifsn
private

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

Referenced by GetAifsn(), and SetAifsn().

uint32_t ns3::DcfState::m_backoffSlots
private

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

Referenced by GetBackoffSlots(), StartBackoffNow(), and UpdateBackoffSlotsNow().

Time ns3::DcfState::m_backoffStart
private

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

Referenced by GetBackoffStart(), StartBackoffNow(), and UpdateBackoffSlotsNow().

uint32_t ns3::DcfState::m_cw
private

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

Referenced by GetCw(), ResetCw(), and UpdateFailedCw().

uint32_t ns3::DcfState::m_cwMax
private

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

Referenced by GetCwMax(), SetCwMax(), and UpdateFailedCw().

uint32_t ns3::DcfState::m_cwMin
private

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

Referenced by GetCwMin(), ResetCw(), and SetCwMin().


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