|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
24 #include "ns3/simulator.h"
25 #include "ns3/packet.h"
120 NS_ABORT_MSG_IF (!msdu->GetHeader ().IsQosData () || msdu->GetHeader ().IsQosAmsdu (),
121 "Only QoS data frames that do not contain an A-MSDU can be aggregated");
166 : msdu->GetHeader ().GetAddr1 ());
167 hdr.
SetSourceAddr (!msdu->GetHeader ().IsFromDs () ? msdu->GetHeader ().GetAddr2 ()
168 : (!msdu->GetHeader ().IsToDs ()
169 ? msdu->GetHeader ().GetAddr3 ()
170 : msdu->GetHeader ().GetAddr4 ()));
171 hdr.
SetLength (
static_cast<uint16_t
> (msdu->GetPacket ()->GetSize ()));
173 m_msduList.push_back ({msdu->GetPacket (), hdr});
186 amsdu->
AddAtEnd (Create<Packet> (padding));
191 Ptr<Packet> amsduSubframe = msdu->GetPacket ()->Copy ();
272 os <<
", ack=NormalAck";
276 os <<
", ack=BlockAck";
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
virtual ~WifiMacQueueItem()
DeaggregatedMsdusCI begin(void)
Get a constant iterator pointing to the first MSDU in the list of aggregated MSDUs.
WifiMacQueueItem stores (const) packets along with their Wifi MAC headers and the time when they were...
void Aggregate(Ptr< const WifiMacQueueItem > msdu)
Aggregate the MSDU contained in the given MPDU to this MPDU (thus constituting an A-MSDU).
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
Ptr< const Packet > GetPacket(void) const
Get the packet stored in this item.
static uint8_t CalculatePadding(uint16_t amsduSize)
Calculate how much padding must be added to the end of an A-MSDU of the given size if a new MSDU is a...
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
void AddHeader(const Header &header)
Add header to this packet.
static Time Now(void)
Return the current simulation virtual time.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
static const uint16_t WIFI_MAC_FCS_LENGTH
The length in octects of the IEEE 802.11 MAC FCS field.
DeaggregatedMsdusCI end(void)
Get a constant iterator indicating past-the-last MSDU in the list of aggregated MSDUs.
AcIndex GetQueueAc(void) const
Get the AC of the queue this item is stored into.
uint32_t GetPacketSize(void) const
Return the size in bytes of the packet or control header or management header stored by this item.
WifiMacQueueItem(Ptr< const Packet > p, const WifiMacHeader &header)
Create a Wifi MAC queue item containing a packet and a Wifi MAC header.
const WifiMacHeader & GetHeader(void) const
Get the header stored in this item.
Mac48Address GetDestinationAddress(void) const
Return the destination address present in the header.
int64x64_t Max(const int64x64_t &a, const int64x64_t &b)
Maximum.
std::list< Ptr< WifiMacQueueItem > >::const_iterator ConstIterator
Const iterator typedef.
Ptr< Packet > GetProtocolDataUnit(void) const
Get the MAC protocol data unit (MPDU) corresponding to this item (i.e.
Time Now(void)
create an ns3::Time instance which contains the current simulation time.
bool IsInFlight(void) const
Return true if this MPDU is in flight, false otherwise.
void DoAggregate(Ptr< const WifiMacQueueItem > msdu)
Aggregate the MSDU contained in the given MPDU to this MPDU (thus constituting an A-MSDU).
Time m_tstamp
timestamp when the packet arrived at the queue
@ AC_UNDEF
Total number of ACs.
Simulation virtual time values and global simulation resolution.
DeaggregatedMsdus m_msduList
The list of aggregated MSDUs included in this MPDU.
#define NS_ABORT_MSG_IF(cond, msg)
Abnormal program termination if a condition is true, with a message.
std::list< std::pair< Ptr< const Packet >, AmsduSubframeHeader > >::const_iterator DeaggregatedMsdusCI
DeaggregatedMsdusCI typedef.
void SetInFlight(void)
Mark this MPDU as being in flight (only used if Block Ack agreement established).
virtual void Print(std::ostream &os) const
Print the item contents.
void AddAtEnd(Ptr< const Packet > packet)
Concatenate the input packet at the end of the current packet.
bool IsQueued(void) const
Return true if this item is stored in some queue, false otherwise.
void AddWifiMacTrailer(Ptr< Packet > packet)
Add FCS trailer to a packet.
Time GetTimeStamp(void) const
Get the timestamp included in this item.
Ptr< Packet > Copy(void) const
performs a COW copy of the packet.
static WifiMacQueueItem::DeaggregatedMsdus Deaggregate(Ptr< Packet > aggregatedPacket)
Control the scheduling of simulation events.
AcIndex
This enumeration defines the Access Categories as an enumeration with values corresponding to the AC ...
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
Ptr< const Packet > m_packet
The packet (MSDU or A-MSDU) contained in this queue item.
bool m_inFlight
whether the MPDU is in flight
bool IsFragment(void) const
Return true if this item contains an MSDU fragment, false otherwise.
ConstIterator GetQueueIterator(void) const
Get a const iterator pointing to the position of the MPDU in the queue.
void ResetInFlight(void)
Mark this MPDU as not being in flight (only used if Block Ack agreement established).
uint32_t GetSize(void) const
Return the size of the packet stored by this item, including header size and trailer size.
WifiMacHeader m_header
Wifi MAC header associated with the packet.
std::ostream & operator<<(std::ostream &os, const Angles &a)
ConstIterator m_queueIt
Queue iterator pointing to this MPDU, if queued.
AcIndex m_queueAc
AC associated with the queue this MPDU is stored into.