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

handle packet fragmentation and retransmissions. More...

#include "dca-txop.h"

+ Inheritance diagram for ns3::DcaTxop:
+ Collaboration diagram for ns3::DcaTxop:

Public Types

typedef Callback< void, Ptr< const Packet > > TxDropped
 typedef for a callback to invoke when a packet is dropped. More...
 
typedef Callback< void, const WifiMacHeader & > TxFailed
 typedef for a callback to invoke when a packet transmission was failed. More...
 
typedef Callback< void, const WifiMacHeader & > TxOk
 typedef for a callback to invoke when a packet transmission was completed successfully. More...
 

Public Member Functions

 DcaTxop ()
 
virtual ~DcaTxop ()
 
int64_t AssignStreams (int64_t stream)
 Assign a fixed random variable stream number to the random variables used by this model. More...
 
virtual void Cancel (void)
 Cancel the transmission. More...
 
virtual void EndTxNoAck (void)
 Event handler when a transmission that does not require an ACK has completed. More...
 
uint32_t GetAifsn (void) const
 Return the number of slots that make up an AIFS. More...
 
Ptr< MacLowGetLow (void) const
 Return the MacLow associated with this DcaTxop. More...
 
uint32_t GetMaxCw (void) const
 Return the maximum contention window size. More...
 
uint32_t GetMinCw (void) const
 Return the minimum contention window size. More...
 
Ptr< WifiMacQueueGetQueue () const
 Return the packet queue associated with this DcaTxop. More...
 
Time GetTxopLimit (void) const
 Return the TXOP limit. More...
 
virtual void GotAck (void)
 Event handler when an ACK is received. More...
 
virtual void GotBlockAck (const CtrlBAckResponseHeader *blockAck, Mac48Address recipient, double rxSnr, WifiMode txMode, double dataSnr)
 Event handler when a Block ACK is received. More...
 
virtual bool HasTxop (void) const
 Check if the station has TXOP granted for the next MPDU. More...
 
virtual bool IsEdca ()
 Check for EDCA. More...
 
virtual void MissedAck (void)
 Event handler when an ACK is missed. More...
 
virtual void MissedBlockAck (uint8_t nMpdus)
 Event handler when a Block ACK timeout has occurred. More...
 
virtual void MissedCts (void)
 Event handler when a CTS timeout has occurred. More...
 
virtual void NotifyChannelSwitching (void)
 When a channel switching occurs, enqueued packets are removed. More...
 
virtual void NotifySleep (void)
 When sleep operation occurs, if there is a pending packet transmission, it will be reinserted to the front of the queue. More...
 
virtual void NotifyWakeUp (void)
 When wake up operation occurs, channel access will be restarted. More...
 
virtual void Queue (Ptr< const Packet > packet, const WifiMacHeader &hdr)
 
void SetAifsn (uint32_t aifsn)
 Set the number of slots that make up an AIFS. More...
 
void SetLow (const Ptr< MacLow > low)
 Set MacLow associated with this DcaTxop. More...
 
void SetManager (const Ptr< DcfManager > manager)
 Set DcfManager this DcaTxop is associated to. More...
 
void SetMaxCw (uint32_t maxCw)
 Set the maximum contention window size. More...
 
void SetMinCw (uint32_t minCw)
 Set the minimum contention window size. More...
 
void SetTxDroppedCallback (TxDropped callback)
 
void SetTxFailedCallback (TxFailed callback)
 
void SetTxMiddle (const Ptr< MacTxMiddle > txMiddle)
 Set MacTxMiddle this DcaTxop is associated to. More...
 
void SetTxOkCallback (TxOk callback)
 
void SetTxopLimit (Time txopLimit)
 Set the TXOP limit. More...
 
virtual void SetWifiRemoteStationManager (const Ptr< WifiRemoteStationManager > remoteManager)
 Set WifiRemoteStationsManager this DcaTxop is associated to. More...
 
virtual void StartNextFragment (void)
 Start transmission for the next fragment. More...
 
virtual void StartNextPacket (void)
 Start transmission for the next packet if allowed by the TxopLimit. More...
 
- Public Member Functions inherited from ns3::Object
 Object ()
 Constructor. More...
 
virtual ~Object ()
 Destructor. More...
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together. More...
 
void Dispose (void)
 Dispose of this Object. More...
 
AggregateIterator GetAggregateIterator (void) const
 Get an iterator to the Objects aggregated to this one. More...
 
virtual TypeId GetInstanceTypeId (void) const
 Get the most derived TypeId for this Object. More...
 
template<typename T >
Ptr< T > GetObject (void) const
 Get a pointer to the requested aggregated Object. More...
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 Get a pointer to the requested aggregated Object by TypeId. More...
 
void Initialize (void)
 Invoke DoInitialize on all Objects aggregated to this one. More...
 
bool IsInitialized (void) const
 Check if the object has been initialized. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 Default constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) const
 Decrement the reference count. More...
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor. More...
 
void GetAttribute (std::string name, AttributeValue &value) const
 Get the value of an attribute, raising fatal errors if unsuccessful. More...
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising erros. More...
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful. More...
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors. More...
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context. More...
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context. More...
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context. More...
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context. More...
 

Static Public Member Functions

static TypeId GetTypeId (void)
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 Get the type ID. More...
 

Protected Member Functions

virtual void DoDispose (void)
 Destructor implementation. More...
 
virtual void DoInitialize (void)
 Initialize() implementation. More...
 
virtual uint32_t GetFragmentOffset (void) const
 Calculate the offset for the current fragment. More...
 
virtual Ptr< PacketGetFragmentPacket (WifiMacHeader *hdr)
 Get the next fragment from the packet with appropriate Wifi header for the fragment. More...
 
virtual uint32_t GetFragmentSize (void) const
 Calculate the size of the current fragment. More...
 
virtual uint32_t GetNextFragmentSize (void) const
 Calculate the size of the next fragment. More...
 
virtual bool IsLastFragment (void) const
 Check if the current fragment is the last fragment. More...
 
bool NeedDataRetransmission (Ptr< const Packet > packet, const WifiMacHeader &hdr)
 Check if DATA should be re-transmitted if ACK was missed. More...
 
virtual bool NeedFragmentation (void) const
 Check if the current packet should be fragmented. More...
 
bool NeedRtsRetransmission (Ptr< const Packet > packet, const WifiMacHeader &hdr)
 Check if RTS should be re-transmitted if CTS was missed. More...
 
virtual bool NeedsAccess (void) const
 Check if the DCF requires access. More...
 
void NextFragment (void)
 Continue to the next fragment. More...
 
virtual void NotifyAccessGranted (void)
 Notify the DCF that access has been granted. More...
 
virtual void NotifyCollision (void)
 Notify the DCF that collision has occurred. More...
 
virtual void NotifyInternalCollision (void)
 Notify the DCF that internal collision has occurred. More...
 
virtual void RestartAccessIfNeeded (void)
 Restart access request if needed. More...
 
virtual void StartAccessIfNeeded (void)
 Request access from DCF manager if needed. More...
 
void TxDroppedPacket (Ptr< const WifiMacQueueItem > item)
 Pass the packet included in the wifi MAC queue item to the packet dropped callback. More...
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object. More...
 
virtual void NotifyNewAggregate (void)
 Notify all Objects aggregated to this one of a new Object being aggregated. More...
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes. More...
 
virtual void NotifyConstructionCompleted (void)
 Notifier called once the ObjectBase is fully constructed. More...
 

Protected Attributes

WifiMacHeader m_currentHdr
 the current header More...
 
Ptr< const Packetm_currentPacket
 the current packet More...
 
MacLowTransmissionParameters m_currentParams
 current transmission parameters More...
 
Ptr< DcfStatem_dcf
 the DCF state More...
 
uint8_t m_fragmentNumber
 the fragment number More...
 
Ptr< MacLowm_low
 the MacLow More...
 
Ptr< DcfManagerm_manager
 the DCF manager More...
 
Ptr< WifiMacQueuem_queue
 the wifi MAC queue More...
 
Ptr< UniformRandomVariablem_rng
 the random stream More...
 
Ptr< WifiRemoteStationManagerm_stationManager
 the wifi remote station manager More...
 
TxDropped m_txDroppedCallback
 the packet dropped callback More...
 
TxFailed m_txFailedCallback
 the transmit failed callback More...
 
Ptr< MacTxMiddlem_txMiddle
 the MacTxMiddle More...
 
TxOk m_txOkCallback
 the transmit OK callback More...
 

Friends

class DcfListener
 allow DcfListener class access More...
 
class DcfState
 < DcfState associated class More...
 
class MacLowTransmissionListener
 allow MacLowTransmissionListener class access More...
 

Additional Inherited Members

Detailed Description

handle packet fragmentation and retransmissions.

This class implements the packet fragmentation and retransmission policy. It uses the ns3::MacLow and ns3::DcfManager helper classes to respectively send packets and decide when to send them. Packets are stored in a ns3::WifiMacQueue until they can be sent.

The policy currently implemented uses a simple fragmentation threshold: any packet bigger than this threshold is fragmented in fragments whose size is smaller than the threshold.

The retransmission policy is also very simple: every packet is retransmitted until it is either successfully transmitted or it has been retransmitted up until the ssrc or slrc thresholds.

The rts/cts policy is similar to the fragmentation policy: when a packet is bigger than a threshold, the rts/cts protocol is used.

Config Paths

ns3::DcaTxop is accessible through the following paths with Config::Set and Config::Connect:

  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Mac/$ns3::RegularWifiMac/DcaTxop"

Attributes

  • MinCw: The minimum value of the contention window.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 15
    • Flags: construct write read
  • MaxCw: The maximum value of the contention window.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 1023
    • Flags: construct write read
  • Aifsn: The AIFSN: the default value conforms to simple DCA.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 2
    • Flags: construct write read
  • TxopLimit: The TXOP limit: the default value conforms to simple DCA.
    • Set with class: ns3::TimeValue
    • Underlying type: Time –9223372036854775808.0ns:+9223372036854775807.0ns
    • Initial value: +0.0ns
    • Flags: construct write read
  • Queue: The WifiMacQueue object

No TraceSources are defined for this type.
Size of this type is 208 bytes (on a 64-bit architecture).

Definition at line 58 of file dca-txop.h.

Member Typedef Documentation

typedef Callback<void, Ptr<const Packet> > ns3::DcaTxop::TxDropped

typedef for a callback to invoke when a packet is dropped.

Definition at line 89 of file dca-txop.h.

typedef for a callback to invoke when a packet transmission was failed.

Definition at line 84 of file dca-txop.h.

typedef Callback<void, const WifiMacHeader&> ns3::DcaTxop::TxOk

typedef for a callback to invoke when a packet transmission was completed successfully.

Definition at line 79 of file dca-txop.h.

Constructor & Destructor Documentation

ns3::DcaTxop::DcaTxop ( )

Definition at line 73 of file dca-txop.cc.

References m_dcf, m_queue, m_rng, and NS_LOG_FUNCTION.

ns3::DcaTxop::~DcaTxop ( )
virtual

Definition at line 83 of file dca-txop.cc.

References NS_LOG_FUNCTION.

Member Function Documentation

int64_t ns3::DcaTxop::AssignStreams ( int64_t  stream)

Assign a fixed random variable stream number to the random variables used by this model.

Return the number of streams (possibly zero) that have been assigned.

Parameters
streamfirst stream index to use.
Returns
the number of stream indices assigned by this model.

Definition at line 228 of file dca-txop.cc.

References m_rng, NS_LOG_FUNCTION, and ns3::RandomVariableStream::SetStream().

Referenced by ns3::MeshHelper::AssignStreams(), ns3::WaveHelper::AssignStreams(), ns3::WifiHelper::AssignStreams(), and AssignWifiRandomStreams().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcaTxop::Cancel ( void  )
virtual

Cancel the transmission.

Definition at line 571 of file dca-txop.cc.

References NS_LOG_DEBUG, and NS_LOG_FUNCTION.

void ns3::DcaTxop::DoDispose ( void  )
protectedvirtual

Destructor implementation.

This method is called by Dispose() or by the Object's destructor, whichever comes first.

Subclasses are expected to implement their real destruction code in an overriden version of this method and chain up to their parent's implementation once they are done. i.e, for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose() method.

It is safe to call GetObject() from within this method.

Reimplemented from ns3::Object.

Reimplemented in ns3::EdcaTxopN, and DcaTxopTest.

Definition at line 89 of file dca-txop.cc.

References m_dcf, m_low, m_queue, m_rng, m_stationManager, m_txMiddle, and NS_LOG_FUNCTION.

Referenced by ns3::EdcaTxopN::DoDispose().

+ Here is the caller graph for this function:

void ns3::DcaTxop::DoInitialize ( void  )
protectedvirtual

Initialize() implementation.

This method is called only once by Initialize(). If the user calls Initialize() multiple times, DoInitialize() is called only the first time.

Subclasses are expected to override this method and chain up to their parent's implementation once they are done. It is safe to call GetObject() and AggregateObject() from within this method.

Reimplemented from ns3::Object.

Reimplemented in ns3::EdcaTxopN.

Definition at line 267 of file dca-txop.cc.

References ns3::DcfState::GetCw(), ns3::RandomVariableStream::GetInteger(), m_dcf, m_rng, NS_LOG_FUNCTION, ns3::DcfState::ResetCw(), and ns3::DcfState::StartBackoffNow().

+ Here is the call graph for this function:

void ns3::DcaTxop::EndTxNoAck ( void  )
virtual

Event handler when a transmission that does not require an ACK has completed.

Reimplemented in ns3::EdcaTxopN.

Definition at line 578 of file dca-txop.cc.

References ns3::DcfState::GetCw(), ns3::RandomVariableStream::GetInteger(), m_currentPacket, m_dcf, m_rng, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::DcfState::ResetCw(), StartAccessIfNeeded(), and ns3::DcfState::StartBackoffNow().

+ Here is the call graph for this function:

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

Return the number of slots that make up an AIFS.

Returns
the number of slots that make up an AIFS.

Definition at line 207 of file dca-txop.cc.

References ns3::DcfState::GetAifsn(), and m_dcf.

Referenced by ns3::ApWifiMac::GetEdcaParameterSet(), and GetTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint32_t ns3::DcaTxop::GetFragmentOffset ( void  ) const
protectedvirtual

Calculate the offset for the current fragment.

Returns
the offset for the current fragment.

Reimplemented in ns3::EdcaTxopN.

Definition at line 328 of file dca-txop.cc.

References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::GetFragmentOffset(), m_currentHdr, m_currentPacket, m_fragmentNumber, m_stationManager, and NS_LOG_FUNCTION.

Referenced by GetFragmentPacket().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Ptr< Packet > ns3::DcaTxop::GetFragmentPacket ( WifiMacHeader hdr)
protectedvirtual

Get the next fragment from the packet with appropriate Wifi header for the fragment.

Parameters
hdrWi-Fi header.
Returns
the fragment with the current fragment number.

Reimplemented in ns3::EdcaTxopN.

Definition at line 336 of file dca-txop.cc.

References ns3::Packet::CreateFragment(), GetFragmentOffset(), GetFragmentSize(), IsLastFragment(), m_currentHdr, m_currentPacket, m_fragmentNumber, NS_LOG_FUNCTION, ns3::WifiMacHeader::SetFragmentNumber(), ns3::WifiMacHeader::SetMoreFragments(), and ns3::WifiMacHeader::SetNoMoreFragments().

Referenced by NotifyAccessGranted(), and StartNextFragment().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint32_t ns3::DcaTxop::GetFragmentSize ( void  ) const
protectedvirtual

Calculate the size of the current fragment.

Returns
the size of the current fragment.

Reimplemented in ns3::EdcaTxopN.

Definition at line 304 of file dca-txop.cc.

References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::GetFragmentSize(), m_currentHdr, m_currentPacket, m_fragmentNumber, m_stationManager, and NS_LOG_FUNCTION.

Referenced by GetFragmentPacket().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Ptr< MacLow > ns3::DcaTxop::GetLow ( void  ) const

Return the MacLow associated with this DcaTxop.

Returns
MacLow

Definition at line 260 of file dca-txop.cc.

References m_low, and NS_LOG_FUNCTION.

Referenced by ns3::EdcaTxopN::GetTxopFragmentSize(), ns3::EdcaTxopN::HasTxop(), ns3::EdcaTxopN::NeedFragmentation(), NotifyAccessGranted(), StartNextFragment(), and ns3::EdcaTxopN::StartNextPacket().

+ Here is the caller graph for this function:

uint32_t ns3::DcaTxop::GetMaxCw ( void  ) const

Return the maximum contention window size.

Returns
the maximum contention window size.

Definition at line 201 of file dca-txop.cc.

References ns3::DcfState::GetCwMax(), and m_dcf.

Referenced by ns3::ApWifiMac::GetEdcaParameterSet(), and GetTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint32_t ns3::DcaTxop::GetMinCw ( void  ) const

Return the minimum contention window size.

Returns
the minimum contention window size.

Definition at line 195 of file dca-txop.cc.

References ns3::DcfState::GetCwMin(), and m_dcf.

Referenced by ns3::ApWifiMac::GetEdcaParameterSet(), and GetTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint32_t ns3::DcaTxop::GetNextFragmentSize ( void  ) const
protectedvirtual

Calculate the size of the next fragment.

Returns
the size of the next fragment.

Reimplemented in ns3::EdcaTxopN.

Definition at line 320 of file dca-txop.cc.

References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::GetFragmentSize(), m_currentHdr, m_currentPacket, m_fragmentNumber, m_stationManager, and NS_LOG_FUNCTION.

Referenced by NotifyAccessGranted(), and StartNextFragment().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Ptr< WifiMacQueue > ns3::DcaTxop::GetQueue ( void  ) const

Return the packet queue associated with this DcaTxop.

Returns
WifiMacQueue

Definition at line 160 of file dca-txop.cc.

References m_queue, and NS_LOG_FUNCTION.

Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), and GetTypeId().

+ Here is the caller graph for this function:

Time ns3::DcaTxop::GetTxopLimit ( void  ) const
TypeId ns3::DcaTxop::GetTypeId ( void  )
static
void ns3::DcaTxop::GotBlockAck ( const CtrlBAckResponseHeader blockAck,
Mac48Address  recipient,
double  rxSnr,
WifiMode  txMode,
double  dataSnr 
)
virtual

Event handler when a Block ACK is received.

Parameters
blockAckblock ack.
recipientaddress of the recipient.
rxSnrSNR of the block ack itself.
txModewifi mode.
dataSnrreported data SNR from the peer.

Reimplemented in ns3::EdcaTxopN.

Definition at line 601 of file dca-txop.cc.

References NS_LOG_WARN.

bool ns3::DcaTxop::HasTxop ( void  ) const
virtual

Check if the station has TXOP granted for the next MPDU.

Returns
true if the station has TXOP granted for the next MPDU, false otherwise

Reimplemented in ns3::EdcaTxopN.

Definition at line 613 of file dca-txop.cc.

bool ns3::DcaTxop::IsEdca ( )
virtual

Check for EDCA.

Returns
true if EDCA.

Reimplemented in ns3::EdcaTxopN.

Definition at line 589 of file dca-txop.cc.

bool ns3::DcaTxop::IsLastFragment ( void  ) const
protectedvirtual

Check if the current fragment is the last fragment.

Returns
true if the current fragment is the last fragment, false otherwise.

Reimplemented in ns3::EdcaTxopN.

Definition at line 312 of file dca-txop.cc.

References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::IsLastFragment(), m_currentHdr, m_currentPacket, m_fragmentNumber, m_stationManager, and NS_LOG_FUNCTION.

Referenced by GetFragmentPacket(), GotAck(), NotifyAccessGranted(), and StartNextFragment().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcaTxop::MissedBlockAck ( uint8_t  nMpdus)
virtual

Event handler when a Block ACK timeout has occurred.

Parameters
nMpdusthe number of MPDUs sent in the A-MPDU transmission that results in a Block ACK timeout.

Reimplemented in ns3::EdcaTxopN.

Definition at line 607 of file dca-txop.cc.

References NS_LOG_WARN.

bool ns3::DcaTxop::NeedDataRetransmission ( Ptr< const Packet packet,
const WifiMacHeader hdr 
)
protected

Check if DATA should be re-transmitted if ACK was missed.

Parameters
packetcurrent packet being transmitted.
hdrcurrent header being transmitted.
Returns
true if DATA should be re-transmitted, false otherwise.

Definition at line 282 of file dca-txop.cc.

References ns3::WifiMacHeader::GetAddr1(), m_stationManager, ns3::WifiRemoteStationManager::NeedDataRetransmission(), and NS_LOG_FUNCTION.

Referenced by ns3::EdcaTxopN::MissedAck(), MissedAck(), and ns3::EdcaTxopN::NotifyInternalCollision().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::DcaTxop::NeedFragmentation ( void  ) const
protectedvirtual

Check if the current packet should be fragmented.

Returns
true if the current packet should be fragmented, false otherwise

Reimplemented in ns3::EdcaTxopN.

Definition at line 289 of file dca-txop.cc.

References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_stationManager, ns3::WifiRemoteStationManager::NeedFragmentation(), and NS_LOG_FUNCTION.

Referenced by GotAck(), and NotifyAccessGranted().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::DcaTxop::NeedRtsRetransmission ( Ptr< const Packet packet,
const WifiMacHeader hdr 
)
protected

Check if RTS should be re-transmitted if CTS was missed.

Parameters
packetcurrent packet being transmitted.
hdrcurrent header being transmitted.
Returns
true if RTS should be re-transmitted, false otherwise.

Definition at line 275 of file dca-txop.cc.

References ns3::WifiMacHeader::GetAddr1(), m_stationManager, ns3::WifiRemoteStationManager::NeedRtsRetransmission(), and NS_LOG_FUNCTION.

Referenced by ns3::EdcaTxopN::MissedCts(), MissedCts(), and ns3::EdcaTxopN::NotifyInternalCollision().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::DcaTxop::NeedsAccess ( void  ) const
protectedvirtual

Check if the DCF requires access.

Returns
true if the DCF requires access, false otherwise

Reimplemented in ns3::EdcaTxopN.

Definition at line 357 of file dca-txop.cc.

References m_currentPacket, m_queue, and NS_LOG_FUNCTION.

void ns3::DcaTxop::NextFragment ( void  )
protected

Continue to the next fragment.

This method simply increments the internal variable that keep track of the current fragment number.

Definition at line 297 of file dca-txop.cc.

References m_fragmentNumber, and NS_LOG_FUNCTION.

Referenced by StartNextFragment().

+ Here is the caller graph for this function:

void ns3::DcaTxop::NotifyChannelSwitching ( void  )
virtual

When a channel switching occurs, enqueued packets are removed.

Reimplemented in DcaTxopTest.

Definition at line 443 of file dca-txop.cc.

References m_currentPacket, m_queue, and NS_LOG_FUNCTION.

Referenced by ns3::OcbWifiMac::CancleTx().

+ Here is the caller graph for this function:

void ns3::DcaTxop::NotifyCollision ( void  )
protectedvirtual

Notify the DCF that collision has occurred.

Reimplemented in ns3::EdcaTxopN, and DcaTxopTest.

Definition at line 435 of file dca-txop.cc.

References ns3::DcfState::GetCw(), ns3::RandomVariableStream::GetInteger(), m_dcf, m_rng, NS_LOG_FUNCTION, RestartAccessIfNeeded(), and ns3::DcfState::StartBackoffNow().

Referenced by NotifyInternalCollision().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcaTxop::NotifyInternalCollision ( void  )
protectedvirtual

Notify the DCF that internal collision has occurred.

Reimplemented in ns3::EdcaTxopN, and DcaTxopTest.

Definition at line 428 of file dca-txop.cc.

References NotifyCollision(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

void ns3::DcaTxop::NotifySleep ( void  )
virtual

When sleep operation occurs, if there is a pending packet transmission, it will be reinserted to the front of the queue.

Reimplemented in DcaTxopTest.

Definition at line 451 of file dca-txop.cc.

References m_currentHdr, m_currentPacket, m_queue, and NS_LOG_FUNCTION.

void ns3::DcaTxop::NotifyWakeUp ( void  )
virtual

When wake up operation occurs, channel access will be restarted.

Reimplemented in DcaTxopTest.

Definition at line 462 of file dca-txop.cc.

References NS_LOG_FUNCTION, and RestartAccessIfNeeded().

+ Here is the call graph for this function:

void ns3::DcaTxop::Queue ( Ptr< const Packet packet,
const WifiMacHeader hdr 
)
virtual
Parameters
packetpacket to send.
hdrheader of packet to send.

Store the packet in the internal queue until it can be sent safely.

Definition at line 219 of file dca-txop.cc.

References ns3::WifiMacHeader::GetAddr1(), m_queue, m_stationManager, NS_LOG_FUNCTION, ns3::WifiRemoteStationManager::PrepareForQueue(), and StartAccessIfNeeded().

+ Here is the call graph for this function:

void ns3::DcaTxop::RestartAccessIfNeeded ( void  )
protectedvirtual

Restart access request if needed.

Reimplemented in ns3::EdcaTxopN.

Definition at line 236 of file dca-txop.cc.

References ns3::DcfState::IsAccessRequested(), m_currentPacket, m_dcf, m_manager, m_queue, NS_LOG_FUNCTION, and ns3::DcfManager::RequestAccess().

Referenced by GotAck(), MissedAck(), MissedCts(), NotifyCollision(), and NotifyWakeUp().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcaTxop::SetAifsn ( uint32_t  aifsn)

Set the number of slots that make up an AIFS.

Parameters
aifsnthe number of slots that make up an AIFS.

Definition at line 181 of file dca-txop.cc.

References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetAifsn().

Referenced by GetTypeId(), and ns3::StaWifiMac::SetEdcaParameters().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcaTxop::SetLow ( const Ptr< MacLow low)

Set MacLow associated with this DcaTxop.

Parameters
lowMacLow.

Definition at line 115 of file dca-txop.cc.

References m_low, and NS_LOG_FUNCTION.

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

+ Here is the caller graph for this function:

void ns3::DcaTxop::SetManager ( const Ptr< DcfManager manager)

Set DcfManager this DcaTxop is associated to.

Parameters
managerDcfManager.

Definition at line 101 of file dca-txop.cc.

References ns3::DcfManager::Add(), m_dcf, m_manager, and NS_LOG_FUNCTION.

Referenced by AmpduAggregationTest::DoRun().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcaTxop::SetMaxCw ( uint32_t  maxCw)

Set the maximum contention window size.

Parameters
maxCwthe maximum contention window size.

Definition at line 174 of file dca-txop.cc.

References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetCwMax().

Referenced by GetTypeId(), and ns3::StaWifiMac::SetEdcaParameters().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcaTxop::SetMinCw ( uint32_t  minCw)

Set the minimum contention window size.

Parameters
minCwthe minimum contention window size.

Definition at line 167 of file dca-txop.cc.

References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetCwMin().

Referenced by GetTypeId(), and ns3::StaWifiMac::SetEdcaParameters().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcaTxop::SetTxDroppedCallback ( TxDropped  callback)
Parameters
callbackthe callback to invoke when a packet is dropped.

Definition at line 143 of file dca-txop.cc.

References m_queue, m_txDroppedCallback, ns3::MakeCallback(), NS_LOG_FUNCTION, and TxDroppedPacket().

+ Here is the call graph for this function:

void ns3::DcaTxop::SetTxFailedCallback ( TxFailed  callback)
Parameters
callbackthe callback to invoke when a packet transmission was completed unsuccessfully.

Definition at line 136 of file dca-txop.cc.

References m_txFailedCallback, and NS_LOG_FUNCTION.

void ns3::DcaTxop::SetTxMiddle ( const Ptr< MacTxMiddle txMiddle)

Set MacTxMiddle this DcaTxop is associated to.

Parameters
txMiddleMacTxMiddle.

Definition at line 108 of file dca-txop.cc.

References m_txMiddle, and NS_LOG_FUNCTION.

Referenced by AmpduAggregationTest::DoRun().

+ Here is the caller graph for this function:

void ns3::DcaTxop::SetTxOkCallback ( TxOk  callback)
Parameters
callbackthe callback to invoke when a packet transmission was completed successfully.

Definition at line 129 of file dca-txop.cc.

References m_txOkCallback, and NS_LOG_FUNCTION.

void ns3::DcaTxop::SetTxopLimit ( Time  txopLimit)

Set the TXOP limit.

Parameters
txopLimitthe TXOP limit. Value zero corresponds to default DCF.

Definition at line 188 of file dca-txop.cc.

References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetTxopLimit().

Referenced by GetTypeId(), Experiment::Run(), and ns3::StaWifiMac::SetEdcaParameters().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcaTxop::SetWifiRemoteStationManager ( const Ptr< WifiRemoteStationManager remoteManager)
virtual

Set WifiRemoteStationsManager this DcaTxop is associated to.

Parameters
remoteManagerWifiRemoteStationManager.

Reimplemented in ns3::EdcaTxopN.

Definition at line 122 of file dca-txop.cc.

References m_stationManager, and NS_LOG_FUNCTION.

Referenced by ns3::EdcaTxopN::SetWifiRemoteStationManager().

+ Here is the caller graph for this function:

void ns3::DcaTxop::StartAccessIfNeeded ( void  )
protectedvirtual

Request access from DCF manager if needed.

Reimplemented in ns3::EdcaTxopN.

Definition at line 248 of file dca-txop.cc.

References ns3::DcfState::IsAccessRequested(), m_currentPacket, m_dcf, m_manager, m_queue, NS_LOG_FUNCTION, and ns3::DcfManager::RequestAccess().

Referenced by EndTxNoAck(), and Queue().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::DcaTxop::StartNextPacket ( void  )
virtual

Start transmission for the next packet if allowed by the TxopLimit.

Reimplemented in ns3::EdcaTxopN.

Definition at line 595 of file dca-txop.cc.

References NS_LOG_WARN.

void ns3::DcaTxop::TxDroppedPacket ( Ptr< const WifiMacQueueItem item)
protected

Pass the packet included in the wifi MAC queue item to the packet dropped callback.

Parameters
itemthe wifi MAC queue item.

Definition at line 151 of file dca-txop.cc.

References ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), and m_txDroppedCallback.

Referenced by SetTxDroppedCallback().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Friends And Related Function Documentation

friend class DcfListener
friend

allow DcfListener class access

Definition at line 62 of file dca-txop.h.

friend class DcfState
friend

< DcfState associated class

Definition at line 297 of file dca-txop.h.

friend class MacLowTransmissionListener
friend

allow MacLowTransmissionListener class access

Definition at line 64 of file dca-txop.h.

Member Data Documentation

Ptr<DcfManager> ns3::DcaTxop::m_manager
protected
TxDropped ns3::DcaTxop::m_txDroppedCallback
protected

the packet dropped callback

Definition at line 412 of file dca-txop.h.

Referenced by SetTxDroppedCallback(), and TxDroppedPacket().

TxFailed ns3::DcaTxop::m_txFailedCallback
protected
TxOk ns3::DcaTxop::m_txOkCallback
protected

the transmit OK callback

Definition at line 410 of file dca-txop.h.

Referenced by ns3::EdcaTxopN::BaTxOk(), ns3::EdcaTxopN::GotAck(), GotAck(), ns3::EdcaTxopN::GotBlockAck(), and SetTxOkCallback().


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