25 #include "ns3/object.h"
26 #include "ns3/mac48-address.h"
27 #include "ns3/packet.h"
29 #include "wifi-mode.h"
30 #include "wifi-mac-header.h"
31 #include "wifi-remote-station-manager.h"
32 #include "qos-utils.h"
34 #include "ctrl-headers.h"
35 #include "block-ack-manager.h"
47 class WifiMacParameters;
50 class QosBlockedDestinations;
52 class MgtAddBaResponseHeader;
53 class BlockAckManager;
83 static TypeId GetTypeId (
void);
91 void SetTxOkCallback (
TxOk callback);
92 void SetTxFailedCallback (
TxFailed callback);
94 void SetTypeOfStation (
enum TypeOfStation type);
95 enum TypeOfStation GetTypeOfStation (
void)
const;
98 virtual void SetMinCw (uint32_t minCw);
99 virtual void SetMaxCw (uint32_t maxCw);
100 virtual void SetAifsn (uint32_t aifsn);
101 virtual uint32_t GetMinCw (
void)
const;
102 virtual uint32_t GetMaxCw (
void)
const;
103 virtual uint32_t GetAifsn (
void)
const;
109 bool NeedsAccess (
void)
const;
110 void NotifyAccessGranted (
void);
111 void NotifyInternalCollision (
void);
112 void NotifyCollision (
void);
117 void NotifyChannelSensing (
void);
120 void GotCts (
double snr,
WifiMode txMode);
121 void MissedCts (
void);
122 void GotAck (
double snr,
WifiMode txMode);
124 void MissedBlockAck (
void);
127 void MissedAck (
void);
128 void StartNext (
void);
130 void EndTxNoAck (
void);
132 void RestartAccessIfNeeded (
void);
133 void StartAccessIfNeeded (
void);
135 bool NeedRtsRetransmission (
void);
136 bool NeedDataRetransmission (
void);
137 bool NeedFragmentation (
void)
const;
138 uint32_t GetNextFragmentSize (
void);
139 uint32_t GetFragmentSize (
void);
140 uint32_t GetFragmentOffset (
void);
141 bool IsLastFragment (
void)
const;
142 void NextFragment (
void);
145 void SetAccessCategory (
enum AcIndex ac);
149 void CompleteConfig (
void);
150 void SetBlockAckThreshold (uint8_t threshold);
151 uint8_t GetBlockAckThreshold (
void)
const;
152 void SetBlockAckInactivityTimeout (uint16_t timeout);
153 void SendDelbaFrame (
Mac48Address addr, uint8_t tid,
bool byOriginator);
184 bool SetupBlockAckIfNeeded ();
188 void SendAddBaRequest (
Mac48Address recipient, uint8_t tid, uint16_t startSeq,
189 uint16_t timeout,
bool immediateBAck);
193 void SendBlockAckRequest (
const struct Bar &bar);
197 void CompleteTx (
void);
201 void VerifyBlockAck (
void);
220 uint8_t m_fragmentNumber;
229 TypeOfStation m_typeOfStation;
235 uint8_t m_blockAckThreshold;
236 enum BlockAckType m_blockAckType;
237 Time m_currentPacketTimestamp;
238 uint16_t m_blockAckInactivityTimeout;
239 struct Bar m_currentBar;
smart pointer class similar to boost::intrusive_ptr
void NotifyChannelSwitching(Time duration)
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
Abstract base class for packet Queues.
Manage a set of ns3::DcfStateHandle a set of independent ns3::DcfState, each of which represents a si...
int64_t AssignStreams(int64_t stream)
Manages all block ack agreements for an originator station.
a unique identifier for an interface.
Mac48Address MapSrcAddressForAggregation(const WifiMacHeader &hdr)