User Manual, Developers Guide and API Documentation

wifimac::draftn::DeAggregation Class Reference

FU required for the correct simulation of frame errors according to A-MPDUs in IEEE 802.11n Draft 8.0. More...

#include <draftn/DeAggregation.hpp>

Inheritance diagram for wifimac::draftn::DeAggregation:

Inheritance graph
[legend]
Collaboration diagram for wifimac::draftn::DeAggregation:

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.
 DeAggregation (wns::ldk::fun::FUN *fun, const wns::pyconfig::View &config)
void onTxEnd (const wns::ldk::CompoundPtr &compound)
 Observe TxEnd of single fragments and relay the end of the last one to upper FUs.
void onTxStart (const wns::ldk::CompoundPtr &compound)
 Observe TxStart of single fragments and relay the start of the first one to upper FUs.
virtual ~DeAggregation ()

Private Member Functions

wns::ldk::CompoundPtr getSomethingToSend ()
 Gets the next fragment for transmission.
bool hasCapacity () const
 Checks if currently a compound is transmitted.
const wns::ldk::CompoundPtr hasSomethingToSend () const
 Checks if fragments for transmission are pending.
void onFUNCreated ()
 Initialization.
void onTimeout ()
 CanTimeout realization.
void processIncoming (const wns::ldk::CompoundPtr &compound)
 Re-assemble incoming fragments into one compounds, possibly with missing fragments due to reception errors.
void processOutgoing (const wns::ldk::CompoundPtr &compound)
 Split outgoing compounds into smaller fragments according to their transmission duration and send them piece by piece.

Private Attributes

const std::string aggregationCommandName
wns::ldk::CompoundPtr currentRxContainer
 Storage of received fragments until last fragment is received (or timeout).
wns::ldk::CompoundPtr currentTxCompound
 Storage of aggregated compounds until all fragments are send.
bool doSignalTxStart
 signal the tx start only for the first fragment
struct
wifimac::draftn::DeAggregation::Friends 
friends
wns::logger::Logger logger
const std::string managerName
int numEntries
 Number of entries in current rx container.
wifimac::management::ProtocolCalculatorprotocolCalculator
 Pointer to the protocol calculator the calculate the length of the fragments.
const std::string protocolCalculatorName
std::deque< wns::ldk::CompoundPtrtxQueue
 Storage of outgoing fragments of a single aggregated compound.
const std::string txStartEndName

Classes

struct  Friends


Detailed Description

The aggregation according to A-MPDUs (in contrast to A-MSDUs) allows to extract single MPDUs out of an aggregation train even if other MPDUs have bit errors: Each MPDUs is prefixed with a small header that can be identified even if previous MPDUs have errors.

To implement this feature, the train of MPDUs must not be handled as a single compound (as generated by the aggregation FU wifimac::draftN::Aggregation) and thus as a single event on the channel, but as multiple events with their own SINR and error statistic. Hence, the compound must be broken into fragments, one for each MPDU, before the transmission, and re-assembled, if it was received error-free. This is the task of the wifimac::draftN::DeAggregation FU, which should be placed below the wifimac::lowerMAC and above the wifimac::convergence::ErrorModel and CRC.

Of course, the FU has to "translate" the onTxStart/onTxEnd of the fragments into one onTxStart/onTxEnd for the whole frame - hence it is both subject and observer for the wifimac::convergence::ITxStartEnd.

Definition at line 95 of file DeAggregation.hpp.


Constructor & Destructor Documentation

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

Definition at line 44 of file DeAggregation.cpp.

DeAggregation::~DeAggregation (  )  [virtual]

Definition at line 67 of file DeAggregation.cpp.


Member Function Documentation

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

Implements wns::ldk::CommandTypeSpecifierInterface.

Definition at line 303 of file DeAggregation.cpp.

wns::ldk::CompoundPtr DeAggregation::getSomethingToSend (  )  [private, virtual]

Implements wns::ldk::DelayedInterface.

Definition at line 289 of file DeAggregation.cpp.

bool DeAggregation::hasCapacity (  )  const [private, virtual]

Implements wns::ldk::DelayedInterface.

Definition at line 297 of file DeAggregation.cpp.

const wns::ldk::CompoundPtr DeAggregation::hasSomethingToSend (  )  const [private, virtual]

Implements wns::ldk::DelayedInterface.

Definition at line 276 of file DeAggregation.cpp.

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

Reimplemented from wns::ldk::FunctionalUnit.

Definition at line 71 of file DeAggregation.cpp.

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

Implements wns::events::CanTimeout.

Definition at line 152 of file DeAggregation.cpp.

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

Implements wifimac::convergence::ITxStartEnd.

Definition at line 320 of file DeAggregation.cpp.

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

Implements wifimac::convergence::ITxStartEnd.

Definition at line 310 of file DeAggregation.cpp.

void DeAggregation::processIncoming ( const wns::ldk::CompoundPtr compound  )  [private, virtual]

Implements wns::ldk::DelayedInterface.

Definition at line 82 of file DeAggregation.cpp.

void DeAggregation::processOutgoing ( const wns::ldk::CompoundPtr compound  )  [private, virtual]

The single fragments are stored into a txQueue which is worked on using the onTimeout() function.

Implements wns::ldk::DelayedInterface.

Definition at line 171 of file DeAggregation.cpp.


Member Data Documentation

Definition at line 163 of file DeAggregation.hpp.

Definition at line 174 of file DeAggregation.hpp.

Definition at line 169 of file DeAggregation.hpp.

Definition at line 177 of file DeAggregation.hpp.

Definition at line 182 of file DeAggregation.hpp.

const std::string wifimac::draftn::DeAggregation::managerName [private]

Definition at line 160 of file DeAggregation.hpp.

Definition at line 180 of file DeAggregation.hpp.

Definition at line 186 of file DeAggregation.hpp.

Definition at line 161 of file DeAggregation.hpp.

Definition at line 166 of file DeAggregation.hpp.

Definition at line 162 of file DeAggregation.hpp.


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

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