User Manual, Developers Guide and API Documentation

wifimac::lowerMAC::RTSCTS Class Reference

Implementation of the RTS/CTS frame exchange in IEEE 802.11. More...

#include <lowerMAC/RTSCTS.hpp>

Inheritance diagram for wifimac::lowerMAC::RTSCTS:

Inheritance graph
[legend]
Collaboration diagram for wifimac::lowerMAC::RTSCTS:

Collaboration graph
[legend]

List of all members.

Public Member Functions

void calculateSizes (const wns::ldk::CommandPool *commandPool, Bit &commandPoolSize, Bit &dataSize) const
 SDU and PCI size calculation.
void onNAVBusy (const wns::service::dll::UnicastAddress setter)
void onNAVIdle ()
void onRxEnd ()
void onRxError ()
void onRxStart (wns::simulator::Time expRxTime)
void onTxEnd (const wns::ldk::CompoundPtr &compound)
 Called when the transmission ends.
void onTxStart (const wns::ldk::CompoundPtr &compound)
 Called when the transmission starts.
 RTSCTS (wns::ldk::fun::FUN *fun, const wns::pyconfig::View &config)
virtual ~RTSCTS ()

Private Types

enum  RTSCTSState {
  idle, transmitRTS, waitForCTS, receiveCTS,
  receptionFinished
}

Private Member Functions

virtual bool doIsAccepting (const wns::ldk::CompoundPtr &compound) const
virtual void doOnData (const wns::ldk::CompoundPtr &compound)
virtual void doSendData (const wns::ldk::CompoundPtr &compound)
virtual void doWakeup ()
void onFUNCreated ()
 Resolve inter-FU dependencies.
void onTimeout ()
 CanTimeout interface.
wns::ldk::CompoundPtr prepareCTS (const wns::ldk::CompoundPtr &rts)
wns::ldk::CompoundPtr prepareRTS (const wns::ldk::CompoundPtr &mpdu)

Private Attributes

const std::string arqName
const Bit ctsBits
wns::simulator::Time ctsPrepared
const wns::simulator::Time ctsTimeout
struct
wifimac::lowerMAC::RTSCTS::Friends 
friends
wns::simulator::Time lastTimeout
wns::logger::Logger logger
const std::string managerName
const wns::simulator::Time maximumACKDuration
const wns::simulator::Time maximumCTSDuration
bool nav
const std::string navName
wns::service::dll::UnicastAddress navSetter
wns::ldk::CompoundPtr pendingCTS
wns::ldk::CompoundPtr pendingMPDU
wns::ldk::CompoundPtr pendingRTS
const std::string phyUserName
const wns::simulator::Time preambleProcessingDelay
wifimac::management::ProtocolCalculatorprotocolCalculator
const std::string protocolCalculatorName
const Bit rtsBits
const bool rtsctsOnTxopData
const wifimac::convergence::PhyMode rtsctsPhyMode
const Bit rtsctsThreshold
wns::probe::bus::ContextCollectorPtr rtsSuccessProbe
const std::string rxsName
const wns::simulator::Time sifsDuration
 Duration of the Short InterFrame Space.
enum
wifimac::lowerMAC::RTSCTS::RTSCTSState 
state
const std::string txStartEndName

Classes

struct  Friends


Detailed Description

The RTS/CTS frame exchange works in the following way, assuming no transmission errors.

inline_mscgraph_4

The three-way handshake of the RTS/CTS/DATA/ACK increases the overhead, but also the probability for a successful frame exchange, as the RTS and CTS set the NAV of all overhearing STAs in reach of both the transmitter and the receiver.

Definition at line 96 of file RTSCTS.hpp.


Member Enumeration Documentation

Enumerator:
idle 
transmitRTS 
waitForCTS 
receiveCTS 
receptionFinished 

Definition at line 201 of file RTSCTS.hpp.


Constructor & Destructor Documentation

RTSCTS::RTSCTS ( wns::ldk::fun::FUN fun,
const wns::pyconfig::View config 
)

Definition at line 49 of file RTSCTS.cpp.

RTSCTS::~RTSCTS (  )  [virtual]

Definition at line 103 of file RTSCTS.cpp.


Member Function Documentation

void RTSCTS::calculateSizes ( const wns::ldk::CommandPool commandPool,
Bit commandPoolSize,
Bit dataSize 
) const [virtual]

Implements wns::ldk::CommandTypeSpecifierInterface.

Definition at line 575 of file RTSCTS.cpp.

bool RTSCTS::doIsAccepting ( const wns::ldk::CompoundPtr compound  )  const [private, virtual]

Definition at line 133 of file RTSCTS.cpp.

void RTSCTS::doOnData ( const wns::ldk::CompoundPtr compound  )  [private, virtual]

Definition at line 287 of file RTSCTS.cpp.

void RTSCTS::doSendData ( const wns::ldk::CompoundPtr compound  )  [private, virtual]

Definition at line 158 of file RTSCTS.cpp.

void RTSCTS::doWakeup (  )  [private, virtual]

Definition at line 217 of file RTSCTS.cpp.

void RTSCTS::onFUNCreated (  )  [private, virtual]

Often FunctionalUnits require the collaboration with other FunctionalUnits to accomplish their task. For the collaboration between FunctionalUnits we coined the term "friendship".

The onFUNCreated method is a hook being called after the complete FUN has been set up. FunctionalUnits requiring the collaboration with other FunctionalUnits should resolve these dependencies by implementing this hook accordingly.

Finding friends is usually done calling wns::ldk::fun::FUN::findFriend.

When building reconfigurable FUNs, this method may get called multiple times (e.g., after each FUN reconfiguration). Keep that in mind when allocating resources in your onFUNCreated implementation.

Reimplemented from wns::ldk::FunctionalUnit.

Definition at line 107 of file RTSCTS.cpp.

void RTSCTS::onNAVBusy ( const wns::service::dll::UnicastAddress  setter  )  [virtual]

Implements wifimac::convergence::INetworkAllocationVector.

Definition at line 468 of file RTSCTS.cpp.

void RTSCTS::onNAVIdle (  )  [virtual]

Implements wifimac::convergence::INetworkAllocationVector.

Definition at line 475 of file RTSCTS.cpp.

void RTSCTS::onRxEnd (  )  [virtual]

Implements wifimac::convergence::IRxStartEnd.

Definition at line 436 of file RTSCTS.cpp.

void RTSCTS::onRxError (  )  [virtual]

Implements wifimac::convergence::IRxStartEnd.

Definition at line 451 of file RTSCTS.cpp.

void RTSCTS::onRxStart ( wns::simulator::Time  expRxTime  )  [virtual]

Implements wifimac::convergence::IRxStartEnd.

Definition at line 422 of file RTSCTS.cpp.

void RTSCTS::onTimeout (  )  [private, virtual]

Implements wns::events::CanTimeout.

Definition at line 482 of file RTSCTS.cpp.

void RTSCTS::onTxEnd ( const wns::ldk::CompoundPtr compound  )  [virtual]

Implements wifimac::convergence::ITxStartEnd.

Definition at line 404 of file RTSCTS.cpp.

void RTSCTS::onTxStart ( const wns::ldk::CompoundPtr compound  )  [virtual]

Implements wifimac::convergence::ITxStartEnd.

Definition at line 398 of file RTSCTS.cpp.

wns::ldk::CompoundPtr RTSCTS::prepareCTS ( const wns::ldk::CompoundPtr rts  )  [private]

Definition at line 549 of file RTSCTS.cpp.

wns::ldk::CompoundPtr RTSCTS::prepareRTS ( const wns::ldk::CompoundPtr mpdu  )  [private]

Definition at line 509 of file RTSCTS.cpp.


Member Data Documentation

const std::string wifimac::lowerMAC::RTSCTS::arqName [private]

Definition at line 163 of file RTSCTS.hpp.

Definition at line 180 of file RTSCTS.hpp.

Definition at line 210 of file RTSCTS.hpp.

Definition at line 175 of file RTSCTS.hpp.

Definition at line 211 of file RTSCTS.hpp.

Definition at line 187 of file RTSCTS.hpp.

const std::string wifimac::lowerMAC::RTSCTS::managerName [private]

Definition at line 162 of file RTSCTS.hpp.

Definition at line 172 of file RTSCTS.hpp.

Definition at line 173 of file RTSCTS.hpp.

Definition at line 184 of file RTSCTS.hpp.

const std::string wifimac::lowerMAC::RTSCTS::navName [private]

Definition at line 164 of file RTSCTS.hpp.

Definition at line 185 of file RTSCTS.hpp.

Definition at line 190 of file RTSCTS.hpp.

Definition at line 191 of file RTSCTS.hpp.

Definition at line 189 of file RTSCTS.hpp.

const std::string wifimac::lowerMAC::RTSCTS::phyUserName [private]

Definition at line 161 of file RTSCTS.hpp.

Definition at line 174 of file RTSCTS.hpp.

Definition at line 193 of file RTSCTS.hpp.

Definition at line 167 of file RTSCTS.hpp.

Definition at line 179 of file RTSCTS.hpp.

Definition at line 182 of file RTSCTS.hpp.

Definition at line 177 of file RTSCTS.hpp.

Definition at line 181 of file RTSCTS.hpp.

Definition at line 213 of file RTSCTS.hpp.

const std::string wifimac::lowerMAC::RTSCTS::rxsName [private]

Definition at line 165 of file RTSCTS.hpp.

Definition at line 170 of file RTSCTS.hpp.

const std::string wifimac::lowerMAC::RTSCTS::txStartEndName [private]

Definition at line 166 of file RTSCTS.hpp.


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

Generated on Sat May 26 03:32:42 2012 for openWNS by  doxygen 1.5.5