Public Member Functions

ns3::DcfManager Class Reference

Manage a set of ns3::DcfState. More...

#include <dcf-manager.h>

Collaboration diagram for ns3::DcfManager:
Collaboration graph
[legend]

List of all members.

Public Member Functions

void SetupPhyListener (Ptr< WifiPhy > phy)
void SetupLowListener (Ptr< MacLow > low)
void SetSlot (Time slotTime)
void SetSifs (Time sifs)
void SetEifsNoDifs (Time eifsNoDifs)
Time GetEifsNoDifs () const
void Add (DcfState *dcf)
void RequestAccess (DcfState *state)
void NotifyRxStartNow (Time duration)
void NotifyRxEndOkNow (void)
void NotifyRxEndErrorNow (void)
void NotifyTxStartNow (Time duration)
void NotifyMaybeCcaBusyStartNow (Time duration)
void NotifySwitchingStartNow (Time duration)
void NotifyNavResetNow (Time duration)
void NotifyNavStartNow (Time duration)
void NotifyAckTimeoutStartNow (Time duration)
void NotifyAckTimeoutResetNow ()
void NotifyCtsTimeoutStartNow (Time duration)
void NotifyCtsTimeoutResetNow ()

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.


Member Function Documentation

void ns3::DcfManager::Add ( DcfState dcf  ) 
Parameters:
dcf a 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.

Time ns3::DcfManager::GetEifsNoDifs (  )  const
Returns:
value set previously using SetEifsNoDifs.
void ns3::DcfManager::NotifyMaybeCcaBusyStartNow ( Time  duration  ) 
Parameters:
duration expected duration of cca busy period

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

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

Called at end of rx

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

Called at end of rx

void ns3::DcfManager::NotifyRxEndErrorNow ( void   ) 

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

void ns3::DcfManager::NotifyRxEndOkNow ( void   ) 

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

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

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

void ns3::DcfManager::NotifySwitchingStartNow ( Time  duration  ) 
Parameters:
duration expected 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.

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

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

void ns3::DcfManager::RequestAccess ( DcfState state  ) 
Parameters:
state a 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.

void ns3::DcfManager::SetEifsNoDifs ( Time  eifsNoDifs  ) 
Parameters:
eifsNoDifs the 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.

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

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

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

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


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