21 #include "ns3/assert.h"
22 #include "ns3/packet.h"
24 #include "ns3/simulator.h"
26 #include "ns3/uinteger.h"
27 #include "ns3/pointer.h"
40 #undef NS_LOG_APPEND_CONTEXT
41 #define NS_LOG_APPEND_CONTEXT if (m_low != 0) { std::clog << "[mac=" << m_low->GetAddress () << "] "; }
123 .AddAttribute (
"Queue",
"The WifiMacQueue object",
126 MakePointerChecker<WifiMacQueue> ())
138 m_queue = CreateObject<WifiMacQueue> ();
249 packet, fullPacketSize);
250 m_queue->Enqueue (packet, hdr);
460 Low ()->StartTransmission (fragment, &hdr, params,
647 NS_LOG_DEBUG (
"a transmission that did not require an ACK just finished");
void NotifyInternalCollision(void)
virtual uint32_t GetMaxCw(void) const
smart pointer class similar to boost::intrusive_ptr
uint32_t GetFragmentOffset(void)
#define NS_LOG_FUNCTION(parameters)
TypeId AddConstructor(void)
virtual void DoNotifyInternalCollision(void)
void SetTxFailedCallback(TxFailed callback)
uint32_t GetCwMin(void) const
virtual void MissedAck(void)
virtual void SetMaxCw(uint32_t maxCw)
void RequestAccess(DcfState *state)
TransmissionListener(DcaTxop *txop)
#define NS_ASSERT(condition)
virtual int64_t AssignStreams(int64_t stream)=0
#define NS_LOG_COMPONENT_DEFINE(name)
uint32_t GetSize(void) const
virtual uint32_t GetAifsn(void) const
void SetAifsn(uint32_t aifsn)
int64_t AssignStreams(int64_t stream)
listen to events coming from ns3::MacLow.
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
virtual void GotCts(double snr, WifiMode txMode)
static TypeId GetTypeId(void)
control how a packet is transmitted.The ns3::MacLow::StartTransmission method expects an instance of ...
void SetTxOkCallback(TxOk callback)
Ptr< Packet > GetFragmentPacket(WifiMacHeader *hdr)
virtual void GotAck(double snr, WifiMode txMode)
Ptr< Packet > CreateFragment(uint32_t start, uint32_t length) const
void Queue(Ptr< const Packet > packet, const WifiMacHeader &hdr)
void SetLow(Ptr< MacLow > low)
bool NeedFragmentation(void)
Ptr< WifiMacQueue > m_queue
void GotCts(double snr, WifiMode txMode)
NS_OBJECT_ENSURE_REGISTERED(AntennaModel)
void NotifyChannelSwitching(void)
Manage a set of ns3::DcfStateHandle a set of independent ns3::DcfState, each of which represents a si...
bool IsLastFragment(void)
keep track of the state needed for a single DCF function.Multiple instances of a DcfState can be regi...
bool IsAccessRequested(void) const
Ptr< WifiRemoteStationManager > m_stationManager
virtual void DoNotifyChannelSwitching(void)
uint32_t GetCwMax(void) const
bool NeedRts(Ptr< const Packet > packet, const WifiMacHeader *header)
void SetCwMin(uint32_t minCw)
virtual void SetAifsn(uint32_t aifsn)
void SetWifiRemoteStationManager(Ptr< WifiRemoteStationManager > remoteManager)
void StartBackoffNow(uint32_t nSlots)
uint16_t GetNextSequenceNumberfor(const WifiMacHeader *hdr)
hold objects of type Ptr<T>
bool NeedsAccess(void) const
WifiMacHeader m_currentHdr
virtual void EndTxNoAck(void)
Ptr< WifiMacQueue > GetQueue() const
virtual void Cancel(void)
bool NeedRtsRetransmission(void)
friend class TransmissionListener
Ptr< const Packet > m_currentPacket
virtual void MissedCts(void)
void SetCwMax(uint32_t maxCw)
virtual void SetMinCw(uint32_t minCw)
void GotAck(double snr, WifiMode txMode)
virtual void DoNotifyCollision(void)
static TypeId GetTypeId(void)
virtual ~TransmissionListener()
uint32_t GetCw(void) const
uint32_t GetAifsn(void) const
void SetManager(DcfManager *manager)
#define NS_LOG_DEBUG(msg)
uint32_t GetNextFragmentSize(void)
virtual void StartNext(void)
virtual void DoDispose(void)
void EnableNextData(uint32_t size)
void NotifyCollision(void)
void DisableOverrideDurationId(void)
void StartAccessIfNeeded(void)
void DisableNextData(void)
TransmissionListener * m_transmissionListener
virtual void DoNotifyAccessGranted(void)
void RestartAccessIfNeeded(void)
virtual uint32_t GetNext(uint32_t min, uint32_t max)=0
void UpdateFailedCw(void)
handle packet fragmentation and retransmissions.This class implements the packet fragmentation and re...
bool NeedDataRetransmission(void)
virtual uint32_t GetMinCw(void) const
uint32_t GetFragmentSize(void)
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
void NotifyAccessGranted(void)
virtual void DoInitialize(void)
virtual uint32_t GetSerializedSize(void) const
TxFailed m_txFailedCallback