![]() |
User Manual, Developers Guide and API Documentation |
![]() |
#include <draftn/DeAggregation.hpp>


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::ProtocolCalculator * | protocolCalculator |
| Pointer to the protocol calculator the calculate the length of the fragments. | |
| const std::string | protocolCalculatorName |
| std::deque< wns::ldk::CompoundPtr > | txQueue |
| Storage of outgoing fragments of a single aggregated compound. | |
| const std::string | txStartEndName |
Classes | |
| struct | Friends |
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.
| 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.
| 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] |
| bool DeAggregation::hasCapacity | ( | ) | const [private, virtual] |
| const wns::ldk::CompoundPtr DeAggregation::hasSomethingToSend | ( | ) | const [private, virtual] |
| void DeAggregation::onFUNCreated | ( | ) | [private, virtual] |
| void DeAggregation::onTimeout | ( | ) | [private, virtual] |
| void DeAggregation::onTxEnd | ( | const wns::ldk::CompoundPtr & | compound | ) | [virtual] |
| void DeAggregation::onTxStart | ( | const wns::ldk::CompoundPtr & | compound | ) | [virtual] |
| void DeAggregation::processIncoming | ( | const wns::ldk::CompoundPtr & | compound | ) | [private, virtual] |
| 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.
const std::string wifimac::draftn::DeAggregation::aggregationCommandName [private] |
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.
wifimac::management::ProtocolCalculator* wifimac::draftn::DeAggregation::protocolCalculator [private] |
Definition at line 186 of file DeAggregation.hpp.
const std::string wifimac::draftn::DeAggregation::protocolCalculatorName [private] |
Definition at line 161 of file DeAggregation.hpp.
std::deque<wns::ldk::CompoundPtr> wifimac::draftn::DeAggregation::txQueue [private] |
Definition at line 166 of file DeAggregation.hpp.
const std::string wifimac::draftn::DeAggregation::txStartEndName [private] |
Definition at line 162 of file DeAggregation.hpp.
1.5.5