23 #include "ns3/mac48-address.h" 33 acknowledgmentTime (
Time::
Min ())
67 std::unique_ptr<WifiAcknowledgment>
70 return std::unique_ptr<WifiAcknowledgment> (
new WifiNoAck (*
this));
99 std::unique_ptr<WifiAcknowledgment>
102 return std::unique_ptr<WifiAcknowledgment> (
new WifiNormalAck (*
this));
130 std::unique_ptr<WifiAcknowledgment>
133 return std::unique_ptr<WifiAcknowledgment> (
new WifiBlockAck (*
this));
162 std::unique_ptr<WifiAcknowledgment>
165 return std::unique_ptr<WifiAcknowledgment> (
new WifiBarBlockAck (*
this));
181 os <<
"BAR_BLOCK_ACK";
194 std::unique_ptr<WifiAcknowledgment>
233 os <<
"DL_MU_BAR_BA_SEQUENCE [";
236 os <<
" (ACK) " << sta.first;
240 os <<
" (BA) " << sta.first;
244 os <<
" (BAR+BA) " << sta.first;
260 std::unique_ptr<WifiAcknowledgment>
263 return std::unique_ptr<WifiAcknowledgment> (
new WifiDlMuTfMuBar (*
this));
282 os <<
"DL_MU_TF_MU_BAR [";
285 os <<
" (BA) " << sta.first;
301 std::unique_ptr<WifiAcknowledgment>
323 os <<
"DL_MU_AGGREGATE_TF [";
326 os <<
" (BA) " << sta.first;
341 std::unique_ptr<WifiAcknowledgment>
358 os <<
"UL_MU_MULTI_STA_BA [";
361 os <<
"(" << sta.first.first <<
"," << +sta.first.second <<
") ";
376 std::unique_ptr<WifiAcknowledgment>
397 os <<
"ACK_AFTER_TB_PPDU";
403 acknowledgment->
Print (os);
std::map< Mac48Address, BlockAckInfo > stationsReplyingWithBlockAck
Set of stations replying with a BlockAck frame.
Simulation virtual time values and global simulation resolution.
WifiAcknowledgment(Method m)
Constructor.
std::unique_ptr< WifiAcknowledgment > Copy(void) const override
Clone this object.
std::unique_ptr< WifiAcknowledgment > Copy(void) const override
Clone this object.
std::unique_ptr< WifiAcknowledgment > Copy(void) const override
Clone this object.
virtual void Print(std::ostream &os) const =0
Print the object contents.
std::unique_ptr< WifiAcknowledgment > Copy(void) const override
Clone this object.
void Print(std::ostream &os) const override
Print the object contents.
Time acknowledgmentTime
time required by the acknowledgment method
WifiAcknowledgment is an abstract base struct.
void Print(std::ostream &os) const override
Print the object contents.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
void Print(std::ostream &os) const override
Print the object contents.
virtual ~WifiAcknowledgment()
std::map< Mac48Address, BlockAckInfo > stationsReplyingWithBlockAck
Set of stations replying with a BlockAck frame.
std::map< std::pair< Mac48Address, uint8_t >, WifiMacHeader::QosAckPolicy > m_ackPolicy
Qos Ack Policy to set for MPDUs addressed to a given receiver and having a given TID.
virtual bool CheckQosAckPolicy(Mac48Address receiver, uint8_t tid, WifiMacHeader::QosAckPolicy ackPolicy) const =0
Check whether the given QoS Ack policy can be used for the MPDUs addressed to the given receiver and ...
bool CheckQosAckPolicy(Mac48Address receiver, uint8_t tid, WifiMacHeader::QosAckPolicy ackPolicy) const override
Check whether the given QoS Ack policy can be used for the MPDUs addressed to the given receiver and ...
WifiMacHeader::QosAckPolicy GetQosAckPolicy(Mac48Address receiver, uint8_t tid) const
Get the QoS Ack policy to use for the MPDUs addressed to the given receiver and belonging to the give...
void Print(std::ostream &os) const override
Print the object contents.
std::map< std::pair< Mac48Address, uint8_t >, std::size_t > stationsReceivingMultiStaBa
Map (originator, tid) pairs to the their index in baType.
void Print(std::ostream &os) const override
Print the object contents.
std::ostream & operator<<(std::ostream &os, const Angles &a)
std::unique_ptr< WifiAcknowledgment > Copy(void) const override
Clone this object.
int64x64_t Min(const int64x64_t &a, const int64x64_t &b)
Minimum.
std::unique_ptr< WifiAcknowledgment > Copy(void) const override
Clone this object.
bool CheckQosAckPolicy(Mac48Address receiver, uint8_t tid, WifiMacHeader::QosAckPolicy ackPolicy) const override
Check whether the given QoS Ack policy can be used for the MPDUs addressed to the given receiver and ...
std::map< Mac48Address, BlockAckInfo > stationsReplyingWithBlockAck
Set of stations replying with a BlockAck frame (no more than one)
Method
Available acknowledgment methods.
bool CheckQosAckPolicy(Mac48Address receiver, uint8_t tid, WifiMacHeader::QosAckPolicy ackPolicy) const override
Check whether the given QoS Ack policy can be used for the MPDUs addressed to the given receiver and ...
bool CheckQosAckPolicy(Mac48Address receiver, uint8_t tid, WifiMacHeader::QosAckPolicy ackPolicy) const override
Check whether the given QoS Ack policy can be used for the MPDUs addressed to the given receiver and ...
void Print(std::ostream &os) const override
Print the object contents.
void Print(std::ostream &os) const override
Print the object contents.
void Print(std::ostream &os) const override
Print the object contents.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::unique_ptr< WifiAcknowledgment > Copy(void) const override
Clone this object.
bool CheckQosAckPolicy(Mac48Address receiver, uint8_t tid, WifiMacHeader::QosAckPolicy ackPolicy) const override
Check whether the given QoS Ack policy can be used for the MPDUs addressed to the given receiver and ...
std::unique_ptr< WifiAcknowledgment > Copy(void) const override
Clone this object.
bool CheckQosAckPolicy(Mac48Address receiver, uint8_t tid, WifiMacHeader::QosAckPolicy ackPolicy) const override
Check whether the given QoS Ack policy can be used for the MPDUs addressed to the given receiver and ...
bool CheckQosAckPolicy(Mac48Address receiver, uint8_t tid, WifiMacHeader::QosAckPolicy ackPolicy) const override
Check whether the given QoS Ack policy can be used for the MPDUs addressed to the given receiver and ...
bool CheckQosAckPolicy(Mac48Address receiver, uint8_t tid, WifiMacHeader::QosAckPolicy ackPolicy) const override
Check whether the given QoS Ack policy can be used for the MPDUs addressed to the given receiver and ...
#define NS_ABORT_MSG_IF(cond, msg)
Abnormal program termination if a condition is true, with a message.
void Print(std::ostream &os) const override
Print the object contents.
void SetQosAckPolicy(Mac48Address receiver, uint8_t tid, WifiMacHeader::QosAckPolicy ackPolicy)
Set the QoS Ack policy to use for the MPDUs addressed to the given receiver and belonging to the give...
Time Seconds(double value)
Construct a Time in the indicated unit.
std::map< Mac48Address, BlockAckReqInfo > stationsSendBlockAckReqTo
Set of stations receiving a BlockAckReq frame and replying with a BlockAck frame. ...
std::map< Mac48Address, AckInfo > stationsReplyingWithNormalAck
Set of stations replying with an Ack frame (no more than one)
bool CheckQosAckPolicy(Mac48Address receiver, uint8_t tid, WifiMacHeader::QosAckPolicy ackPolicy) const override
Check whether the given QoS Ack policy can be used for the MPDUs addressed to the given receiver and ...
std::unique_ptr< WifiAcknowledgment > Copy(void) const override
Clone this object.