20 #ifndef BLOCK_ACK_MANAGER_H 
   21 #define BLOCK_ACK_MANAGER_H 
   27 #include "ns3/packet.h" 
   36 class MgtAddBaResponseHeader;
 
   37 class MgtAddBaRequestHeader;
 
  272   typedef std::map<std::pair<Mac48Address, uint8_t>,
 
  273                    std::pair<OriginatorBlockAckAgreement, PacketQueue> > 
Agreements;
 
  274   typedef std::map<std::pair<Mac48Address, uint8_t>,
 
  275                    std::pair<OriginatorBlockAckAgreement, PacketQueue> >::iterator 
AgreementsI;
 
  276   typedef std::map<std::pair<Mac48Address, uint8_t>,
 
  277                    std::pair<OriginatorBlockAckAgreement, PacketQueue> >::const_iterator 
AgreementsCI;
 
std::map< std::pair< Mac48Address, uint8_t >, std::pair< OriginatorBlockAckAgreement, PacketQueue > > Agreements
 
void SetUnblockDestinationCallback(Callback< void, Mac48Address, uint8_t > callback)
 
keep track of time values and allow control of global simulation resolution 
 
std::list< Item > PacketQueue
 
void NotifyGotBlockAck(const CtrlBAckResponseHeader *blockAck, Mac48Address recipient)
 
std::map< std::pair< Mac48Address, uint8_t >, std::pair< OriginatorBlockAckAgreement, PacketQueue > >::const_iterator AgreementsCI
 
void CreateAgreement(const MgtAddBaRequestHeader *reqHdr, Mac48Address recipient)
 
void StorePacket(Ptr< const Packet > packet, const WifiMacHeader &hdr, Time tStamp)
 
uint8_t m_blockAckThreshold
 
bool HasBar(struct Bar &bar)
 
void InactivityTimeout(Mac48Address, uint8_t)
 
std::map< std::pair< Mac48Address, uint8_t >, std::pair< OriginatorBlockAckAgreement, PacketQueue > >::iterator AgreementsI
 
void SetBlockAckType(enum BlockAckType bAckType)
 
bool HasPackets(void) const 
 
Ptr< Packet > ScheduleBlockAckReqIfNeeded(Mac48Address recipient, uint8_t tid)
 
void SetQueue(Ptr< WifiMacQueue > queue)
 
void NotifyAgreementEstablished(Mac48Address recipient, uint8_t tid, uint16_t startingSeq)
 
void UpdateAgreement(const MgtAddBaResponseHeader *respHdr, Mac48Address recipient)
 
uint32_t GetNRetryNeededPackets(Mac48Address recipient, uint8_t tid) const 
 
uint32_t GetNextPacketSize(void) const 
 
uint16_t GetSeqNumOfNextRetryPacket(Mac48Address recipient, uint8_t tid) const 
 
void NotifyAgreementUnsuccessful(Mac48Address recipient, uint8_t tid)
 
bool HasOtherFragments(uint16_t sequenceNumber) const 
 
std::list< PacketQueueI > m_retryPackets
 
void SetTxMiddle(MacTxMiddle *txMiddle)
 
void SetBlockDestinationCallback(Callback< void, Mac48Address, uint8_t > callback)
 
void DestroyAgreement(Mac48Address recipient, uint8_t tid)
 
Callback< void, Mac48Address, uint8_t, bool > m_blockAckInactivityTimeout
 
bool ExistsAgreementInState(Mac48Address recipient, uint8_t tid, enum OriginatorBlockAckAgreement::State state) const 
 
Callback< void, Mac48Address, uint8_t > m_blockPackets
 
Ptr< const Packet > GetNextPacket(WifiMacHeader &hdr)
 
void SetBlockAckInactivityCallback(Callback< void, Mac48Address, uint8_t, bool > callback)
 
void SetMaxPacketDelay(Time maxDelay)
 
bool SwitchToBlockAckIfNeeded(Mac48Address recipient, uint8_t tid, uint16_t startingSeq)
 
std::list< Item >::const_iterator PacketQueueCI
 
BlockAckManager & operator=(const BlockAckManager &)
 
Callback< void, Mac48Address, uint8_t > m_unblockPackets
 
uint32_t GetNBufferedPackets(Mac48Address recipient, uint8_t tid) const 
 
enum BlockAckType m_blockAckType
 
void CleanupBuffers(void)
 
void SetBlockAckThreshold(uint8_t nPackets)
 
Manages all block ack agreements for an originator station. 
 
bool ExistsAgreement(Mac48Address recipient, uint8_t tid) const 
 
Ptr< const Packet > packet
 
void NotifyMpduTransmission(Mac48Address recipient, uint8_t tid, uint16_t nextSeqNumber)
 
void TearDownBlockAck(Mac48Address recipient, uint8_t tid)
 
Ptr< WifiMacQueue > m_queue
 
std::list< Item >::iterator PacketQueueI