37 #include "ns3/mac48-address.h"
38 #include "ns3/callback.h"
39 #include "ns3/event-id.h"
40 #include "ns3/packet.h"
41 #include "ns3/nstime.h"
127 virtual void Cancel (
void) = 0;
497 uint16_t startingSeq);
677 typedef std::map<AgreementKey, AgreementValue>::iterator
AgreementsI;
bool MustSendRts(void) const
uint32_t GetAckSize(void) const
virtual ~MacLowDcfListener()
keep track of time values and allow control of global simulation resolution
EventId m_navCounterResetCtsMissed
void ResetBlockAckInactivityTimerIfNeeded(BlockAckAgreement &agreement)
virtual void CtsTimeoutReset()=0
EventId m_blockAckTimeoutEvent
Time GetBlockAckDuration(Mac48Address to, WifiTxVector blockAckReqTxVector, enum BlockAckType type) const
virtual ~MacLowTransmissionListener()
Time GetAckDuration(WifiTxVector ackTxVector) const
enum ns3::MacLowTransmissionParameters::@87 m_waitAck
virtual void GotAck(double snr, WifiMode txMode)=0
void SendDataAfterCts(Mac48Address source, Time duration, WifiMode txMode)
void DoNavResetNow(Time duration)
void EnableBasicBlockAck(void)
EventId m_fastAckTimeoutEvent
void FastAckFailedTimeout(void)
bool DoNavStartNow(Time duration)
Mac48Address GetBssid(void) const
virtual void MissedAck(void)=0
std::pair< Mac48Address, uint8_t > AgreementKey
WifiTxVector GetCtsToSelfTxVector(Ptr< const Packet > packet, const WifiMacHeader *hdr) const
void SetupPhyMacLowListener(Ptr< WifiPhy > phy)
virtual void BlockAckInactivityTimeout(Mac48Address originator, uint8_t tid)=0
friend std::ostream & operator<<(std::ostream &os, const MacLowTransmissionParameters ¶ms)
bool HasDurationId(void) const
DcfListeners m_dcfListeners
virtual void CtsTimeoutStart(Time duration)=0
void SetRxCallback(Callback< void, Ptr< Packet >, const WifiMacHeader * > callback)
Time GetCompressedBlockAckTimeout() const
MacLowRxCallback m_rxCallback
Time GetCtsTimeout(void) const
EventId m_superFastAckTimeoutEvent
listen to events coming from ns3::MacLow.
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
Time GetCtsDuration(WifiTxVector ctsTxVector) const
bool MustWaitFastAck(void) const
control how a packet is transmitted.The ns3::MacLow::StartTransmission method expects an instance of ...
MacLowTransmissionParameters()
void WaitSifsAfterEndTx(void)
MacLowTransmissionListener()
std::vector< MacLowDcfListener * >::const_iterator DcfListenersCI
void SetCtsToSelfSupported(bool enable)
void NormalAckTimeout(void)
void SetBasicBlockAckTimeout(Time blockAckTimeout)
BlockAckCaches m_bAckCaches
void DestroyBlockAckAgreement(Mac48Address originator, uint8_t tid)
std::pair< Ptr< Packet >, WifiMacHeader > BufferedPacket
bool m_ctsToSelfSupported
void CreateBlockAckAgreement(const MgtAddBaResponseHeader *respHdr, Mac48Address originator, uint16_t startingSeq)
uint32_t GetBlockAckSize(enum BlockAckType type) const
void EnableSuperFastAck(void)
virtual void StartNext(void)=0
std::map< AgreementKey, BlockAckCache >::iterator BlockAckCachesI
std::map< AcIndex, MacLowBlockAckEventListener * > QueueListeners
std::vector< MacLowDcfListener * > DcfListeners
virtual void EndTxNoAck(void)=0
WifiTxVector GetAckTxVector(Mac48Address to, WifiMode dataTxMode) const
void SetAckTimeout(Time ackTimeout)
virtual void GotCts(double snr, WifiMode txMode)=0
void SendBlockAckResponse(const CtrlBAckResponseHeader *blockAck, Mac48Address originator, bool immediate, Time duration, WifiMode blockAckReqTxMode)
void NavCounterResetCtsMissed(Time rtsEndRxTime)
Ptr< WifiRemoteStationManager > m_stationManager
bool MustWaitMultiTidBlockAck(void) const
Mac48Address GetAddress(void) const
uint32_t GetNextPacketSize(void) const
Agreements m_bAckAgreements
bool HasNextPacket(void) const
WifiTxVector GetAckTxVectorForData(Mac48Address to, WifiMode dataTxMode) const
void RegisterDcfListener(MacLowDcfListener *listener)
void NotifySwitchingStartNow(Time duration)
void CancelAllEvents(void)
void StartTransmission(Ptr< const Packet > packet, const WifiMacHeader *hdr, MacLowTransmissionParameters parameters, MacLowTransmissionListener *listener)
std::ostream & operator<<(std::ostream &os, const Angles &a)
std::list< BufferedPacket >::iterator BufferedPacketI
void BlockAckTimeout(void)
void NotifyCtsTimeoutStartNow(Time duration)
Time m_overrideDurationId
void SendBlockAckAfterBlockAckRequest(const CtrlBAckRequestHeader reqHdr, Mac48Address originator, Time duration, WifiMode blockAckReqTxMode)
std::map< AgreementKey, BlockAckCache > BlockAckCaches
virtual void NavStart(Time duration)=0
void EnableCompressedBlockAck(void)
void SuperFastAckTimeout(void)
void SetBssid(Mac48Address ad)
listen for block ack events.
uint32_t GetRtsSize(void) const
Time CalculateTransmissionTime(Ptr< const Packet > packet, const WifiMacHeader *hdr, const MacLowTransmissionParameters ¶meters) const
EventId m_normalAckTimeoutEvent
void StartDataTxTimers(WifiTxVector dataTxVector)
void NotifyCtsTimeoutResetNow()
bool MustWaitBasicBlockAck(void) const
bool MustWaitCompressedBlockAck(void) const
virtual ~MacLowBlockAckEventListener()
virtual void Cancel(void)=0
Callback< void, Ptr< Packet >, const WifiMacHeader * > MacLowRxCallback
virtual void AckTimeoutStart(Time duration)=0
listen to NAV eventsThis class is typically connected to an instance of ns3::Dcf and calls to its met...
void FastAckTimeout(void)
void EnableMultiTidBlockAck(void)
EventId m_ctsTimeoutEvent
void RxCompleteBufferedPacketsWithSmallerSequence(uint16_t seq, Mac48Address originator, uint8_t tid)
void SetPhy(Ptr< WifiPhy > phy)
Time m_basicBlockAckTimeout
Time GetDurationId(void) const
virtual void MissedBlockAck(void)
void ReceiveError(Ptr< const Packet > packet, double rxSnr)
Time GetSlotTime(void) const
WifiTxVector GetRtsTxVector(Ptr< const Packet > packet, const WifiMacHeader *hdr) const
std::map< AgreementKey, AgreementValue > Agreements
WifiTxVector GetDataTxVector(Ptr< const Packet > packet, const WifiMacHeader *hdr) const
handle RTS/CTS/DATA/ACK transactions.
virtual void MissedCts(void)=0
MacLowTransmissionParameters m_txParams
virtual void DoDispose(void)
MacLowBlockAckEventListener()
void NotifyAckTimeoutResetNow()
bool MustWaitSuperFastAck(void) const
Time CalculateOverallTxTime(Ptr< const Packet > packet, const WifiMacHeader *hdr, const MacLowTransmissionParameters ¶ms) const
QueueListeners m_edcaListeners
WifiTxVector GetBlockAckTxVector(Mac48Address to, WifiMode dataTxMode) const
Maintains information for a block ack agreement.
an identifier for simulation events.
EventId m_fastAckFailedTimeoutEvent
bool IsNavZero(void) const
void NotifyAckTimeoutStartNow(Time duration)
virtual void NavReset(Time duration)=0
void SetSlotTime(Time slotTime)
Ptr< Packet > m_currentPacket
void SendCtsAfterRts(Mac48Address source, Time duration, WifiMode txMode, double rtsSnr)
std::map< AgreementKey, AgreementValue >::iterator AgreementsI
EventId m_endTxNoAckEvent
virtual void GotBlockAck(const CtrlBAckResponseHeader *blockAck, Mac48Address source)
void EnableOverrideDurationId(Time durationId)
bool GetCtsToSelfSupported() const
void SetCtsTimeout(Time ctsTimeout)
void EnableNextData(uint32_t size)
void DisableOverrideDurationId(void)
Time GetAckTimeout(void) const
void DisableNextData(void)
void SendDataPacket(void)
uint32_t GetCtsSize(void) const
WifiMacHeader m_currentHdr
void SetAddress(Mac48Address ad)
a base class which provides memory management and object aggregation
void ForwardDown(Ptr< const Packet > packet, const WifiMacHeader *hdr, WifiTxVector txVector, WifiPreamble preamble)
void ReceiveOk(Ptr< Packet > packet, double rxSnr, WifiMode txMode, WifiPreamble preamble)
Time m_compressedBlockAckTimeout
bool MustWaitAck(void) const
virtual void AckTimeoutReset()=0
void RegisterBlockAckListenerForAc(enum AcIndex ac, MacLowBlockAckEventListener *listener)
std::pair< BlockAckAgreement, std::list< BufferedPacket > > AgreementValue
WifiTxVector GetCtsTxVectorForRts(Mac48Address to, WifiMode rtsTxMode) const
Time GetBasicBlockAckTimeout() const
void NotifyNav(Ptr< const Packet > packet, const WifiMacHeader &hdr, WifiMode txMode, WifiPreamble preamble)
void SendAckAfterData(Mac48Address source, Time duration, WifiMode txMode, double rtsSnr)
WifiTxVector GetCtsTxVector(Mac48Address to, WifiMode rtsTxMode) const
bool StoreMpduIfNeeded(Ptr< Packet > packet, WifiMacHeader hdr)
bool MustWaitNormalAck(void) const
void SetCompressedBlockAckTimeout(Time blockAckTimeout)
void SetWifiRemoteStationManager(Ptr< WifiRemoteStationManager > manager)
class PhyMacLowListener * m_phyMacLowListener
uint32_t GetSize(Ptr< const Packet > packet, const WifiMacHeader *hdr) const
MacLowTransmissionListener * m_listener
void SendRtsForPacket(void)
void RxCompleteBufferedPacketsUntilFirstLost(Mac48Address originator, uint8_t tid)