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

This class is used to handle the timer that a station starts when transmitting a frame that solicits a response. More...

#include "wifi-tx-timer.h"

+ Collaboration diagram for ns3::WifiTxTimer:

Public Types

typedef Callback< void, uint8_t, Ptr< const WifiMacQueueItem >, const WifiTxVector & > MpduResponseTimeout
 MPDU response timeout callback typedef. More...
 
typedef Callback< void, uint8_t, WifiPsduMap *, const std::set< Mac48Address > *, std::size_t > PsduMapResponseTimeout
 PSDU map response timeout callback typedef. More...
 
typedef Callback< void, uint8_t, Ptr< const WifiPsdu >, const WifiTxVector & > PsduResponseTimeout
 PSDU response timeout callback typedef. More...
 
enum  Reason : uint8_t {
  NOT_RUNNING = 0 , WAIT_CTS , WAIT_NORMAL_ACK , WAIT_BLOCK_ACK ,
  WAIT_NORMAL_ACK_AFTER_DL_MU_PPDU , WAIT_BLOCK_ACKS_IN_TB_PPDU , WAIT_TB_PPDU_AFTER_BASIC_TF , WAIT_QOS_NULL_AFTER_BSRP_TF ,
  WAIT_BLOCK_ACK_AFTER_TB_PPDU
}
 The reason why the timer was started. More...
 

Public Member Functions

 WifiTxTimer ()
 Default constructor. More...
 
virtual ~WifiTxTimer ()
 
void Cancel (void)
 Cancel the timer. More...
 
Time GetDelayLeft (void) const
 Get the remaining time until the timer will expire. More...
 
Reason GetReason (void) const
 Get the reason why the timer was started. More...
 
std::string GetReasonString (Reason reason) const
 Get a string associated with the given reason. More...
 
bool IsRunning (void) const
 Return true if the timer is running. More...
 
void Reschedule (const Time &delay)
 Reschedule the timer to time out the given amount of time from the moment this function is called. More...
 
template<typename MEM , typename OBJ , typename... Args>
void Set (Reason reason, const Time &delay, MEM mem_ptr, OBJ obj, Args... args)
 This method is called when a frame soliciting a response is transmitted. More...
 
void SetMpduResponseTimeoutCallback (MpduResponseTimeout callback) const
 Set the callback to invoke when the TX timer following the transmission of an MPDU expires. More...
 
void SetPsduMapResponseTimeoutCallback (PsduMapResponseTimeout callback) const
 Set the callback to invoke when the TX timer following the transmission of a PSDU map expires. More...
 
void SetPsduResponseTimeoutCallback (PsduResponseTimeout callback) const
 Set the callback to invoke when the TX timer following the transmission of a PSDU expires. More...
 

Private Member Functions

void Expire (void)
 Internal callback invoked when the timer expires. More...
 
void FeedTraceSource (Ptr< WifiMacQueueItem > item, WifiTxVector txVector)
 This method is called when the timer expires to feed the MPDU response timeout callback. More...
 
void FeedTraceSource (Ptr< WifiPsdu > psdu, WifiTxVector txVector)
 This method is called when the timer expires to feed the PSDU response timeout callback. More...
 
void FeedTraceSource (WifiPsduMap *psduMap, std::set< Mac48Address > *missingStations, std::size_t nTotalStations)
 This method is called when the timer expires to feed the PSDU map response timeout callback. More...
 
template<typename MEM , typename OBJ , typename... Args>
void Timeout (MEM mem_ptr, OBJ obj, Args... args)
 This method is called when the timer expires. More...
 

Private Attributes

Time m_end
 the absolute time when the timer will expire More...
 
Ptr< EventImplm_impl
 the timer implementation, which contains the bound callback function and arguments More...
 
MpduResponseTimeout m_mpduResponseTimeoutCallback
 the MPDU response timeout callback More...
 
PsduMapResponseTimeout m_psduMapResponseTimeoutCallback
 the PSDU map response timeout callback More...
 
PsduResponseTimeout m_psduResponseTimeoutCallback
 the PSDU response timeout callback More...
 
Reason m_reason
 the reason why the timer was started More...
 
EventId m_timeoutEvent
 the timeout event after a missing response More...
 

Detailed Description

This class is used to handle the timer that a station starts when transmitting a frame that solicits a response.

The timeout can be rescheduled (multiple times) when the RXSTART.indication is received from the PHY.

Definition at line 47 of file wifi-tx-timer.h.

Member Typedef Documentation

◆ MpduResponseTimeout

MPDU response timeout callback typedef.

Definition at line 136 of file wifi-tx-timer.h.

◆ PsduMapResponseTimeout

typedef Callback<void, uint8_t, WifiPsduMap*, const std::set<Mac48Address>*, std::size_t> ns3::WifiTxTimer::PsduMapResponseTimeout

PSDU map response timeout callback typedef.

Definition at line 146 of file wifi-tx-timer.h.

◆ PsduResponseTimeout

PSDU response timeout callback typedef.

Definition at line 141 of file wifi-tx-timer.h.

Member Enumeration Documentation

◆ Reason

enum ns3::WifiTxTimer::Reason : uint8_t

The reason why the timer was started.

Enumerator
NOT_RUNNING 
WAIT_CTS 
WAIT_NORMAL_ACK 
WAIT_BLOCK_ACK 
WAIT_NORMAL_ACK_AFTER_DL_MU_PPDU 
WAIT_BLOCK_ACKS_IN_TB_PPDU 
WAIT_TB_PPDU_AFTER_BASIC_TF 
WAIT_QOS_NULL_AFTER_BSRP_TF 
WAIT_BLOCK_ACK_AFTER_TB_PPDU 

Definition at line 54 of file wifi-tx-timer.h.

Constructor & Destructor Documentation

◆ WifiTxTimer()

ns3::WifiTxTimer::WifiTxTimer ( )

Default constructor.

Definition at line 32 of file wifi-tx-timer.cc.

◆ ~WifiTxTimer()

ns3::WifiTxTimer::~WifiTxTimer ( )
virtual

Definition at line 40 of file wifi-tx-timer.cc.

References ns3::EventId::Cancel(), m_impl, and m_timeoutEvent.

+ Here is the call graph for this function:

Member Function Documentation

◆ Cancel()

◆ Expire()

void ns3::WifiTxTimer::Expire ( void  )
private

Internal callback invoked when the timer expires.

Definition at line 71 of file wifi-tx-timer.cc.

References m_end, m_impl, m_timeoutEvent, ns3::Simulator::Now(), NS_LOG_FUNCTION, and ns3::Simulator::Schedule().

Referenced by Reschedule(), and Set().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ FeedTraceSource() [1/3]

void ns3::WifiTxTimer::FeedTraceSource ( Ptr< WifiMacQueueItem item,
WifiTxVector  txVector 
)
private

This method is called when the timer expires to feed the MPDU response timeout callback.

Parameters
itemthe MPDU followed by no response
txVectorthe TXVECTOR used to transmit the MPDU

Definition at line 147 of file wifi-tx-timer.cc.

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

Referenced by Timeout().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ FeedTraceSource() [2/3]

void ns3::WifiTxTimer::FeedTraceSource ( Ptr< WifiPsdu psdu,
WifiTxVector  txVector 
)
private

This method is called when the timer expires to feed the PSDU response timeout callback.

Parameters
psduthe PSDU followed by no response
txVectorthe TXVECTOR used to transmit the PSDU

Definition at line 162 of file wifi-tx-timer.cc.

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

+ Here is the call graph for this function:

◆ FeedTraceSource() [3/3]

void ns3::WifiTxTimer::FeedTraceSource ( WifiPsduMap psduMap,
std::set< Mac48Address > *  missingStations,
std::size_t  nTotalStations 
)
private

This method is called when the timer expires to feed the PSDU map response timeout callback.

Parameters
psduMapthe PSDU map for which not all responses were received
missingStationsthe set of stations that did not respond
nTotalStationsthe total number of expected responses

Definition at line 177 of file wifi-tx-timer.cc.

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

+ Here is the call graph for this function:

◆ GetDelayLeft()

Time ns3::WifiTxTimer::GetDelayLeft ( void  ) const

Get the remaining time until the timer will expire.

Returns
the remaining time until the timer will expire. If the timer is not running, this method returns zero.

Definition at line 135 of file wifi-tx-timer.cc.

References ns3::Simulator::GetDelayLeft(), and m_timeoutEvent.

+ Here is the call graph for this function:

◆ GetReason()

WifiTxTimer::Reason ns3::WifiTxTimer::GetReason ( void  ) const

Get the reason why the timer was started.

Call this method only if the timer is running

Returns
the reason why the timer was started

Definition at line 87 of file wifi-tx-timer.cc.

References IsRunning(), m_reason, and NS_ASSERT.

Referenced by ns3::FrameExchangeManager::ReceiveMpdu(), and ns3::HtFrameExchangeManager::ReceiveMpdu().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetReasonString()

std::string ns3::WifiTxTimer::GetReasonString ( Reason  reason) const

Get a string associated with the given reason.

Parameters
reasonthe given reason
Returns
a string associated with the given reason

Definition at line 94 of file wifi-tx-timer.cc.

References FOO, NOT_RUNNING, and NS_ABORT_MSG.

Referenced by Cancel(), and Reschedule().

+ Here is the caller graph for this function:

◆ IsRunning()

◆ Reschedule()

void ns3::WifiTxTimer::Reschedule ( const Time delay)

Reschedule the timer to time out the given amount of time from the moment this function is called.

Note that nothing is done if the timer is not running.

Parameters
delaythe time to the expiration of the timer

Definition at line 47 of file wifi-tx-timer.cc.

References ns3::Time::As(), ns3::EventId::Cancel(), Expire(), GetReasonString(), ns3::EventId::IsRunning(), m_end, m_reason, m_timeoutEvent, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), and ns3::Time::US.

Referenced by ns3::FrameExchangeManager::NotifySwitchingStartNow(), and ns3::FrameExchangeManager::RxStartIndication().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Set()

template<typename MEM , typename OBJ , typename... Args>
void ns3::WifiTxTimer::Set ( Reason  reason,
const Time delay,
MEM  mem_ptr,
OBJ  obj,
Args...  args 
)

This method is called when a frame soliciting a response is transmitted.

This method starts a timer of the given duration and schedules a call to the given method in case the timer expires.

Template Parameters
MEM[deduced] Class method function signature type
OBJ[deduced] Class type of the object
Args[deduced] Type template parameter pack
Parameters
reasonthe reason why the timer was started
delaythe time to the expiration of the timer
mem_ptrMember method pointer to invoke
objThe object on which to invoke the member method
argsThe arguments to pass to the invoked method

Definition at line 246 of file wifi-tx-timer.h.

References Expire(), m_end, m_impl, m_reason, m_timeoutEvent, ns3::Simulator::Now(), ns3::Simulator::Schedule(), and Timeout().

Referenced by ns3::FrameExchangeManager::SendMpdu(), ns3::HtFrameExchangeManager::SendPsdu(), ns3::HeFrameExchangeManager::SendPsduMap(), and ns3::FrameExchangeManager::SendRts().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetMpduResponseTimeoutCallback()

void ns3::WifiTxTimer::SetMpduResponseTimeoutCallback ( MpduResponseTimeout  callback) const

Set the callback to invoke when the TX timer following the transmission of an MPDU expires.

Parameters
callbackthe callback to invoke when the TX timer following the transmission of an MPDU expires

Definition at line 141 of file wifi-tx-timer.cc.

References m_mpduResponseTimeoutCallback.

◆ SetPsduMapResponseTimeoutCallback()

void ns3::WifiTxTimer::SetPsduMapResponseTimeoutCallback ( PsduMapResponseTimeout  callback) const

Set the callback to invoke when the TX timer following the transmission of a PSDU map expires.

Parameters
callbackthe callback to invoke when the TX timer following the transmission of a PSDU map expires

Definition at line 171 of file wifi-tx-timer.cc.

References m_psduMapResponseTimeoutCallback.

◆ SetPsduResponseTimeoutCallback()

void ns3::WifiTxTimer::SetPsduResponseTimeoutCallback ( PsduResponseTimeout  callback) const

Set the callback to invoke when the TX timer following the transmission of a PSDU expires.

Parameters
callbackthe callback to invoke when the TX timer following the transmission of a PSDU expires

Definition at line 156 of file wifi-tx-timer.cc.

References m_psduResponseTimeoutCallback.

◆ Timeout()

template<typename MEM , typename OBJ , typename... Args>
void ns3::WifiTxTimer::Timeout ( MEM  mem_ptr,
OBJ  obj,
Args...  args 
)
private

This method is called when the timer expires.

It invokes the callbacks and the method set by the user.

Template Parameters
MEM[deduced] Class method function signature type
OBJ[deduced] Class type of the object
Args[deduced] Type template parameter pack
Parameters
mem_ptrMember method pointer to invoke
objThe object on which to invoke the member method
argsThe arguments to pass to the invoked method

Definition at line 261 of file wifi-tx-timer.h.

References FeedTraceSource().

Referenced by Set().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ m_end

Time ns3::WifiTxTimer::m_end
private

the absolute time when the timer will expire

Definition at line 225 of file wifi-tx-timer.h.

Referenced by Expire(), Reschedule(), and Set().

◆ m_impl

Ptr<EventImpl> ns3::WifiTxTimer::m_impl
private

the timer implementation, which contains the bound callback function and arguments

Definition at line 223 of file wifi-tx-timer.h.

Referenced by ~WifiTxTimer(), Cancel(), Expire(), and Set().

◆ m_mpduResponseTimeoutCallback

MpduResponseTimeout ns3::WifiTxTimer::m_mpduResponseTimeoutCallback
mutableprivate

the MPDU response timeout callback

Definition at line 228 of file wifi-tx-timer.h.

Referenced by FeedTraceSource(), and SetMpduResponseTimeoutCallback().

◆ m_psduMapResponseTimeoutCallback

PsduMapResponseTimeout ns3::WifiTxTimer::m_psduMapResponseTimeoutCallback
mutableprivate

the PSDU map response timeout callback

Definition at line 232 of file wifi-tx-timer.h.

Referenced by FeedTraceSource(), and SetPsduMapResponseTimeoutCallback().

◆ m_psduResponseTimeoutCallback

PsduResponseTimeout ns3::WifiTxTimer::m_psduResponseTimeoutCallback
mutableprivate

the PSDU response timeout callback

Definition at line 230 of file wifi-tx-timer.h.

Referenced by FeedTraceSource(), and SetPsduResponseTimeoutCallback().

◆ m_reason

Reason ns3::WifiTxTimer::m_reason
private

the reason why the timer was started

Definition at line 222 of file wifi-tx-timer.h.

Referenced by Cancel(), FeedTraceSource(), GetReason(), Reschedule(), and Set().

◆ m_timeoutEvent

EventId ns3::WifiTxTimer::m_timeoutEvent
private

the timeout event after a missing response

Definition at line 221 of file wifi-tx-timer.h.

Referenced by ~WifiTxTimer(), Cancel(), Expire(), GetDelayLeft(), IsRunning(), Reschedule(), and Set().


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