15#include "ns3/fatal-error.h"
16#include "ns3/nstime.h"
55 return (os <<
"DOWNLINK");
57 return (os <<
"UPLINK");
59 return (os <<
"BOTH_DIRECTIONS");
62 return (os <<
"INVALID");
137 NS_ASSERT(
static_cast<uint16_t
>(channelWidth) % 20 == 0);
138 return channelWidth /
MHz_u{20};
155 NS_ASSERT((
static_cast<uint16_t
>(width) % 20 == 0));
Simulation virtual time values and global simulation resolution.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
static constexpr uint16_t SEQNO_SPACE_HALF_SIZE
Size of the half the space of sequence numbers (used to determine old packets)
static constexpr uint8_t WIFI_TID_UNDEFINED
Invalid TID identifier.
const Time WIFI_TU
Wi-Fi Time Unit (see IEEE 802.11-2020 sec. 3.1)
double MHz_u
MHz weak type.
uint32_t GetRtsSize()
Return the total RTS size (including FCS trailer).
dB_u RatioToDb(double ratio)
Convert from ratio to dB.
std::ostream & operator<<(std::ostream &os, const Angles &a)
MHz_u HzToMHz(Hz_u val)
Convert from Hz to MHz.
dBm_u WToDbm(Watt_u val)
Convert from Watts to dBm.
bool IsGroupcast(const Mac48Address &adr)
Check whether a MAC destination address corresponds to a groupcast transmission.
std::size_t Count20MHzSubchannels(MHz_u channelWidth)
Return the number of 20 MHz subchannels covering the channel width.
uint32_t GetBlockAckRequestSize(BlockAckReqType type)
Return the total BlockAckRequest size (including FCS trailer).
static constexpr uint8_t SINGLE_LINK_OP_ID
Link ID for single link operations (helps tracking places where correct link ID is to be used to supp...
constexpr int WIFI_TU_US
Wi-Fi Time Unit value in microseconds (see IEEE 802.11-2020 sec.
double DbToRatio(dB_u val)
Convert from dB to ratio.
uint32_t GetMuBarSize(std::list< BlockAckReqType > types)
Return the total MU-BAR size (including FCS trailer).
double Watt_u
Watt weak type.
double dBm_u
dBm weak type
WifiDirection
Wifi direction.
Watt_u DbmToW(dBm_u val)
Convert from dBm to Watts.
static constexpr uint16_t SEQNO_SPACE_SIZE
Size of the space of sequence numbers.
bool TidToLinkMappingValidForNegType1(const WifiTidLinkMapping &dlLinkMapping, const WifiTidLinkMapping &ulLinkMapping)
Check if the given TID-to-Link Mappings are valid for a negotiation type of 1.
uint32_t GetBlockAckSize(BlockAckType type)
Return the total BlockAck size (including FCS trailer).
void AddWifiMacTrailer(Ptr< Packet > packet)
Add FCS trailer to a packet.
static constexpr uint8_t WIFI_LINKID_UNDEFINED
Invalid link identifier.
Hz_u MHzToHz(MHz_u val)
Convert from MHz to Hz.
std::map< uint8_t, std::set< uint8_t > > WifiTidLinkMapping
TID-indexed map of the link set to which the TID is mapped.
uint32_t GetAckSize()
Return the total Ack size (including FCS trailer).
uint32_t GetSize(Ptr< const Packet > packet, const WifiMacHeader *hdr, bool isAmpdu)
Return the total size of the packet after WifiMacHeader and FCS trailer have been added.
bool IsGcr(Ptr< WifiMac > mac, const WifiMacHeader &hdr)
Return whether a given packet is transmitted using the GCR service.
uint32_t GetCtsSize()
Return the total CTS size (including FCS trailer).
Mac48Address GetIndividuallyAddressedRecipient(Ptr< WifiMac > mac, const WifiMacHeader &hdr)
Get the MAC address of the individually addressed recipient to use for a given packet.
bool IsInWindow(uint16_t seq, uint16_t winstart, uint16_t winsize)