A Discrete-Event Network Simulator
API
frame-exchange-manager.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2020 Universita' degli Studi di Napoli Federico II
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Stefano Avallone <stavallo@unina.it>
19  */
20 
21 #ifndef FRAME_EXCHANGE_MANAGER_H
22 #define FRAME_EXCHANGE_MANAGER_H
23 
24 #include "ns3/object.h"
25 #include "qos-txop.h"
26 #include "wifi-tx-vector.h"
27 #include "wifi-psdu.h"
28 #include "regular-wifi-mac.h"
29 #include "mac-rx-middle.h"
30 #include "mac-tx-middle.h"
31 #include "wifi-phy.h"
32 #include "wifi-tx-timer.h"
33 #include "wifi-tx-parameters.h"
34 // Needed to compile wave bindings
35 #include "ns3/wifi-protection-manager.h"
36 #include "ns3/wifi-ack-manager.h"
37 #include "channel-access-manager.h"
38 
39 namespace ns3 {
40 
41 struct RxSignalInfo;
42 struct WifiProtection;
43 struct WifiAcknowledgment;
44 
52 {
53 public:
58  static TypeId GetTypeId (void);
60  virtual ~FrameExchangeManager ();
61 
70 
78  virtual bool StartTransmission (Ptr<Txop> dcf);
79 
91  void Receive (Ptr<WifiPsdu> psdu, RxSignalInfo rxSignalInfo,
92  WifiTxVector txVector, std::vector<bool> perMpduStatus);
93 
99  virtual void SetWifiMac (const Ptr<RegularWifiMac> mac);
105  virtual void SetMacTxMiddle (const Ptr<MacTxMiddle> txMiddle);
111  virtual void SetMacRxMiddle (const Ptr<MacRxMiddle> rxMiddle);
117  virtual void SetChannelAccessManager (const Ptr<ChannelAccessManager> channelAccessManager);
123  virtual void SetWifiPhy (const Ptr<WifiPhy> phy);
127  virtual void ResetPhy (void);
133  virtual void SetProtectionManager (Ptr<WifiProtectionManager> protectionManager);
139  virtual void SetAckManager (Ptr<WifiAckManager> ackManager);
145  virtual void SetAddress (Mac48Address address);
151  virtual void SetBssid (Mac48Address bssid);
157  virtual void SetDroppedMpduCallback (DroppedMpdu callback);
163  void SetAckedMpduCallback (AckedMpdu callback);
167  void SetPromisc (void);
174  bool IsPromisc (void) const;
175 
181  const WifiTxTimer& GetWifiTxTimer (void) const;
182 
189 
197  virtual void CalculateProtectionTime (WifiProtection* protection) const;
198 
204  Ptr<WifiAckManager> GetAckManager (void) const;
205 
213  virtual void CalculateAcknowledgmentTime (WifiAcknowledgment* acknowledgment) const;
214 
220  virtual void NotifyInternalCollision (Ptr<Txop> txop);
221 
229  void NotifySwitchingStartNow (Time duration);
230 
236  void NotifySleepNow (void);
237 
243  void NotifyOffNow (void);
244 
245 protected:
246  void DoDispose () override;
247 
258 
268 
275  virtual void UpdateNav (Ptr<const WifiPsdu> psdu, const WifiTxVector& txVector);
276 
280  virtual void NavResetTimeout (void);
281 
290  virtual void ReceiveMpdu (Ptr<WifiMacQueueItem> mpdu, RxSignalInfo rxSignalInfo,
291  const WifiTxVector& txVector, bool inAmpdu);
292 
302  virtual void EndReceiveAmpdu (Ptr<const WifiPsdu> psdu, const RxSignalInfo& rxSignalInfo,
303  const WifiTxVector& txVector, const std::vector<bool>& perMpduStatus);
304 
314  virtual void ReceivedNormalAck (Ptr<WifiMacQueueItem> mpdu, const WifiTxVector& txVector,
315  const WifiTxVector& ackTxVector, const RxSignalInfo& rxInfo, double snr);
316 
323 
329  virtual void RetransmitMpduAfterMissedAck (Ptr<WifiMacQueueItem> mpdu) const;
330 
336  virtual void RetransmitMpduAfterMissedCts (Ptr<WifiMacQueueItem> mpdu) const;
337 
345 
354  virtual void PreProcessFrame (Ptr<const WifiPsdu> psdu, const WifiTxVector& txVector);
355 
366  virtual Time GetTxDuration (uint32_t ppduPayloadSize, Mac48Address receiver,
367  const WifiTxParameters& txParams) const;
368 
376  void UpdateTxDuration (Mac48Address receiver, WifiTxParameters& txParams) const;
377 
389  bool m_promisc;
392 
399  virtual void ForwardMpduDown (Ptr<WifiMacQueueItem> mpdu, WifiTxVector& txVector);
400 
406  virtual void DequeueMpdu (Ptr<WifiMacQueueItem> mpdu);
407 
419  virtual Time GetFrameDurationId (const WifiMacHeader& header, uint32_t size,
420  const WifiTxParameters& txParams,
421  Ptr<Packet> fragmentedPacket) const;
422 
432  virtual Time GetRtsDurationId (const WifiTxVector& rtsTxVector, Time txDuration, Time response) const;
433 
439  void SendRts (const WifiTxParameters& txParams);
440 
448  void SendCtsAfterRts (const WifiMacHeader& rtsHdr, WifiMode rtsTxMode, double rtsSnr);
449 
457  void DoSendCtsAfterRts (const WifiMacHeader& rtsHdr, WifiTxVector& ctsTxVector, double rtsSnr);
458 
468  virtual Time GetCtsToSelfDurationId (const WifiTxVector& ctsTxVector, Time txDuration,
469  Time response) const;
470 
476  void SendCtsToSelf (const WifiTxParameters& txParams);
477 
485  void SendNormalAck (const WifiMacHeader& hdr, const WifiTxVector& dataTxVector, double dataSnr);
486 
494 
499  virtual void TransmissionSucceeded (void);
500 
505  virtual void TransmissionFailed (void);
506 
513  void NormalAckTimeout (Ptr<WifiMacQueueItem> mpdu, const WifiTxVector& txVector);
514 
521  virtual void CtsTimeout (Ptr<WifiMacQueueItem> rts, const WifiTxVector& txVector);
522 
523 private:
534  void RxStartIndication (WifiTxVector txVector, Time psduDuration);
535 
539  void SendMpdu (void);
540 
544  virtual void Reset (void);
545 
552 };
553 
554 } //namespace ns3
555 
556 #endif /* FRAME_EXCHANGE_MANAGER_H */
ns3::FrameExchangeManager::CalculateAcknowledgmentTime
virtual void CalculateAcknowledgmentTime(WifiAcknowledgment *acknowledgment) const
Calculate the time required to acknowledge a frame according to the given acknowledgment method.
Definition: frame-exchange-manager.cc:488
ns3::TypeId
a unique identifier for an interface.
Definition: type-id.h:59
ns3::FrameExchangeManager::RetransmitMpduAfterMissedAck
virtual void RetransmitMpduAfterMissedAck(Ptr< WifiMacQueueItem > mpdu) const
Retransmit an MPDU that was not acknowledged.
Definition: frame-exchange-manager.cc:794
ns3::FrameExchangeManager::SetChannelAccessManager
virtual void SetChannelAccessManager(const Ptr< ChannelAccessManager > channelAccessManager)
Set the channel access manager to use.
Definition: frame-exchange-manager.cc:151
ns3::FrameExchangeManager::m_txTimer
WifiTxTimer m_txTimer
the timer set upon frame transmission
Definition: frame-exchange-manager.h:379
mac-tx-middle.h
ns3::FrameExchangeManager::ReceiveMpdu
virtual void ReceiveMpdu(Ptr< WifiMacQueueItem > mpdu, RxSignalInfo rxSignalInfo, const WifiTxVector &txVector, bool inAmpdu)
This method handles the reception of an MPDU (possibly included in an A-MPDU)
Definition: frame-exchange-manager.cc:1060
ns3::FrameExchangeManager::m_phy
Ptr< WifiPhy > m_phy
the PHY layer on this station
Definition: frame-exchange-manager.h:385
ns3::FrameExchangeManager::NotifyInternalCollision
virtual void NotifyInternalCollision(Ptr< Txop > txop)
Notify that an internal collision has occurred for the given Txop.
Definition: frame-exchange-manager.cc:844
ns3::FrameExchangeManager::m_moreFragments
bool m_moreFragments
true if a fragment has to be sent after a SIFS
Definition: frame-exchange-manager.h:549
ns3::FrameExchangeManager::ResetPhy
virtual void ResetPhy(void)
Remove WifiPhy associated with this MacLow.
Definition: frame-exchange-manager.cc:168
ns3::FrameExchangeManager::GetRtsDurationId
virtual Time GetRtsDurationId(const WifiTxVector &rtsTxVector, Time txDuration, Time response) const
Compute how to set the Duration/ID field of an RTS frame to send to protect a frame transmitted with ...
Definition: frame-exchange-manager.cc:549
ns3::EventId
An identifier for simulation events.
Definition: event-id.h:54
ns3::FrameExchangeManager::SendNormalAck
void SendNormalAck(const WifiMacHeader &hdr, const WifiTxVector &dataTxVector, double dataSnr)
Send Normal Ack.
Definition: frame-exchange-manager.cc:679
regular-wifi-mac.h
ns3::FrameExchangeManager::SetMacTxMiddle
virtual void SetMacTxMiddle(const Ptr< MacTxMiddle > txMiddle)
Set the MAC TX Middle to use.
Definition: frame-exchange-manager.cc:137
ns3::Callback
Callback template class.
Definition: callback.h:1279
wifi-tx-parameters.h
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::FrameExchangeManager::SetAckManager
virtual void SetAckManager(Ptr< WifiAckManager > ackManager)
Set the Acknowledgment Manager to use.
Definition: frame-exchange-manager.cc:117
qos-txop.h
ns3::FrameExchangeManager::CalculateProtectionTime
virtual void CalculateProtectionTime(WifiProtection *protection) const
Calculate the time required to protect a frame according to the given protection method.
Definition: frame-exchange-manager.cc:459
ns3::FrameExchangeManager::m_protectionManager
Ptr< WifiProtectionManager > m_protectionManager
Protection manager.
Definition: frame-exchange-manager.h:550
ns3::FrameExchangeManager::SendCtsToSelf
void SendCtsToSelf(const WifiTxParameters &txParams)
Send CTS for a CTS-to-self mechanism.
Definition: frame-exchange-manager.cc:652
ns3::FrameExchangeManager::NavResetTimeout
virtual void NavResetTimeout(void)
Reset the NAV upon expiration of the NAV reset timer.
Definition: frame-exchange-manager.cc:1052
ns3::FrameExchangeManager::UpdateNav
virtual void UpdateNav(Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector)
Update the NAV, if needed, based on the Duration/ID of the given psdu.
Definition: frame-exchange-manager.cc:995
ns3::FrameExchangeManager::m_channelAccessManager
Ptr< ChannelAccessManager > m_channelAccessManager
the channel access manager
Definition: frame-exchange-manager.h:384
ns3::FrameExchangeManager::GetNextFragment
Ptr< WifiMacQueueItem > GetNextFragment(void)
Get the next fragment of the current MSDU.
Definition: frame-exchange-manager.cc:713
ns3::Mac48Address
an EUI-48 address
Definition: mac48-address.h:44
ns3::FrameExchangeManager::SetProtectionManager
virtual void SetProtectionManager(Ptr< WifiProtectionManager > protectionManager)
Set the Protection Manager to use.
Definition: frame-exchange-manager.cc:104
ns3::WifiTxVector
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
Definition: wifi-tx-vector.h:71
ns3::FrameExchangeManager::CtsTimeout
virtual void CtsTimeout(Ptr< WifiMacQueueItem > rts, const WifiTxVector &txVector)
Called when the CTS timeout expires.
Definition: frame-exchange-manager.cc:803
wifi-phy.h
ns3::FrameExchangeManager::NotifyOffNow
void NotifyOffNow(void)
This method is typically invoked by the PhyMacLowListener to notify the MAC layer that the device has...
Definition: frame-exchange-manager.cc:936
third.mac
mac
Definition: third.py:99
ns3::FrameExchangeManager::m_self
Mac48Address m_self
the MAC address of this device
Definition: frame-exchange-manager.h:386
ns3::FrameExchangeManager::GetCtsToSelfDurationId
virtual Time GetCtsToSelfDurationId(const WifiTxVector &ctsTxVector, Time txDuration, Time response) const
Compute how to set the Duration/ID field of a CTS-to-self frame to send to protect a frame transmitte...
Definition: frame-exchange-manager.cc:643
ns3::FrameExchangeManager::DroppedMpdu
Callback< void, WifiMacDropReason, Ptr< const WifiMacQueueItem > > DroppedMpdu
typedef for a callback to invoke when an MPDU is dropped.
Definition: frame-exchange-manager.h:65
ns3::WifiTxParameters
This class stores the TX parameters (TX vector, protection mechanism, acknowledgment mechanism,...
Definition: wifi-tx-parameters.h:45
ns3::FrameExchangeManager::SetMacRxMiddle
virtual void SetMacRxMiddle(const Ptr< MacRxMiddle > rxMiddle)
Set the MAC RX Middle to use.
Definition: frame-exchange-manager.cc:144
ns3::FrameExchangeManager::NotifySleepNow
void NotifySleepNow(void)
This method is typically invoked by the PhyMacLowListener to notify the MAC layer that the device has...
Definition: frame-exchange-manager.cc:929
ns3::FrameExchangeManager::m_ackedMpduCallback
AckedMpdu m_ackedMpduCallback
the acknowledged MPDU callback
Definition: frame-exchange-manager.h:391
ns3::FrameExchangeManager::m_droppedMpduCallback
DroppedMpdu m_droppedMpduCallback
the dropped MPDU callback
Definition: frame-exchange-manager.h:390
ns3::FrameExchangeManager::DoSendCtsAfterRts
void DoSendCtsAfterRts(const WifiMacHeader &rtsHdr, WifiTxVector &ctsTxVector, double rtsSnr)
Send CTS after receiving RTS.
Definition: frame-exchange-manager.cc:602
ns3::FrameExchangeManager::SetAckedMpduCallback
void SetAckedMpduCallback(AckedMpdu callback)
Set the callback to invoke when an MPDU is successfully acked.
Definition: frame-exchange-manager.cc:198
ns3::FrameExchangeManager::NotifyPacketDiscarded
virtual void NotifyPacketDiscarded(Ptr< const WifiMacQueueItem > mpdu)
Pass the given MPDU, discarded because of the max retry limit was reached, to the MPDU dropped callba...
Definition: frame-exchange-manager.cc:223
ns3::FrameExchangeManager::GetFirstFragmentIfNeeded
Ptr< WifiMacQueueItem > GetFirstFragmentIfNeeded(Ptr< WifiMacQueueItem > mpdu)
Fragment the given MPDU if needed.
Definition: frame-exchange-manager.cc:317
ns3::FrameExchangeManager::GetProtectionManager
Ptr< WifiProtectionManager > GetProtectionManager(void) const
Get the Protection Manager used by this node.
Definition: frame-exchange-manager.cc:111
wifi-psdu.h
ns3::WifiMacHeader
Implements the IEEE 802.11 MAC header.
Definition: wifi-mac-header.h:85
ns3::FrameExchangeManager::SendRts
void SendRts(const WifiTxParameters &txParams)
Send RTS to begin RTS-CTS-Data-Ack transaction.
Definition: frame-exchange-manager.cc:562
ns3::Ptr< Txop >
ns3::FrameExchangeManager::TransmissionSucceeded
virtual void TransmissionSucceeded(void)
Take necessary actions upon a transmission success.
Definition: frame-exchange-manager.cc:739
ns3::FrameExchangeManager::Receive
void Receive(Ptr< WifiPsdu > psdu, RxSignalInfo rxSignalInfo, WifiTxVector txVector, std::vector< bool > perMpduStatus)
This method is intended to be called by the PHY layer every time an MPDU is received and also when th...
Definition: frame-exchange-manager.cc:943
ns3::FrameExchangeManager::m_txParams
WifiTxParameters m_txParams
the TX parameters for the current frame
Definition: frame-exchange-manager.h:547
ns3::WifiMode
represent a single transmission mode
Definition: wifi-mode.h:48
ns3::FrameExchangeManager::IsPromisc
bool IsPromisc(void) const
Check if the device is operating in promiscuous mode.
Definition: frame-exchange-manager.cc:211
ns3::FrameExchangeManager::SetWifiMac
virtual void SetWifiMac(const Ptr< RegularWifiMac > mac)
Set the MAC layer to use.
Definition: frame-exchange-manager.cc:130
ns3::FrameExchangeManager::AckedMpdu
Callback< void, Ptr< const WifiMacQueueItem > > AckedMpdu
typedef for a callback to invoke when an MPDU is successfully acknowledged.
Definition: frame-exchange-manager.h:69
ns3::Object
A base class which provides memory management and object aggregation.
Definition: object.h:88
ns3::FrameExchangeManager::SetDroppedMpduCallback
virtual void SetDroppedMpduCallback(DroppedMpdu callback)
Set the callback to invoke when an MPDU is dropped.
Definition: frame-exchange-manager.cc:191
ns3::FrameExchangeManager::GetTxDuration
virtual Time GetTxDuration(uint32_t ppduPayloadSize, Mac48Address receiver, const WifiTxParameters &txParams) const
Get the updated TX duration of the frame associated with the given TX parameters if the size of the P...
Definition: frame-exchange-manager.cc:508
ns3::FrameExchangeManager::SetAddress
virtual void SetAddress(Mac48Address address)
Set the MAC address.
Definition: frame-exchange-manager.cc:177
ns3::FrameExchangeManager::m_rxMiddle
Ptr< MacRxMiddle > m_rxMiddle
the MAC RX Middle on this station
Definition: frame-exchange-manager.h:383
wifi-tx-vector.h
wifi-tx-timer.h
ns3::FrameExchangeManager::m_mpdu
Ptr< WifiMacQueueItem > m_mpdu
the MPDU being transmitted
Definition: frame-exchange-manager.h:546
first.address
address
Definition: first.py:44
ns3::FrameExchangeManager::SetWifiPhy
virtual void SetWifiPhy(const Ptr< WifiPhy > phy)
Set the PHY layer to use.
Definition: frame-exchange-manager.cc:158
mac-rx-middle.h
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:104
ns3::FrameExchangeManager::SetPromisc
void SetPromisc(void)
Enable promiscuous mode.
Definition: frame-exchange-manager.cc:205
ns3::WifiProtection
WifiProtection is an abstract base struct.
Definition: wifi-protection.h:40
ns3::FrameExchangeManager::Reset
virtual void Reset(void)
Reset this frame exchange manager.
Definition: frame-exchange-manager.cc:68
ns3::FrameExchangeManager::GetFrameDurationId
virtual Time GetFrameDurationId(const WifiMacHeader &header, uint32_t size, const WifiTxParameters &txParams, Ptr< Packet > fragmentedPacket) const
Compute how to set the Duration/ID field of a frame being transmitted with the given TX parameters.
Definition: frame-exchange-manager.cc:521
ns3::FrameExchangeManager::m_navEnd
Time m_navEnd
NAV expiration time.
Definition: frame-exchange-manager.h:388
ns3::FrameExchangeManager::GetAckManager
Ptr< WifiAckManager > GetAckManager(void) const
Get the Acknowledgment Manager used by this node.
Definition: frame-exchange-manager.cc:124
ns3::FrameExchangeManager::StartTransmission
virtual bool StartTransmission(Ptr< Txop > dcf)
Request the FrameExchangeManager to start a frame exchange sequence.
Definition: frame-exchange-manager.cc:259
ns3::FrameExchangeManager::DequeueMpdu
virtual void DequeueMpdu(Ptr< WifiMacQueueItem > mpdu)
Dequeue the given MPDU from the queue in which it is stored.
Definition: frame-exchange-manager.cc:446
ns3::FrameExchangeManager::m_navResetEvent
EventId m_navResetEvent
the event to reset the NAV after an RTS
Definition: frame-exchange-manager.h:380
ns3::FrameExchangeManager::NotifySwitchingStartNow
void NotifySwitchingStartNow(Time duration)
Definition: frame-exchange-manager.cc:921
ns3::FrameExchangeManager::m_ackManager
Ptr< WifiAckManager > m_ackManager
Acknowledgment manager.
Definition: frame-exchange-manager.h:551
ns3::FrameExchangeManager::UpdateTxDuration
void UpdateTxDuration(Mac48Address receiver, WifiTxParameters &txParams) const
Update the TX duration field of the given TX parameters after that the PSDU addressed to the given re...
Definition: frame-exchange-manager.cc:515
ns3::FrameExchangeManager::m_txMiddle
Ptr< MacTxMiddle > m_txMiddle
the MAC TX Middle on this station
Definition: frame-exchange-manager.h:382
ns3::RxSignalInfo
RxSignalInfo structure containing info on the received signal.
Definition: phy-entity.h:67
ns3::FrameExchangeManager::m_promisc
bool m_promisc
Flag if the device is operating in promiscuous mode.
Definition: frame-exchange-manager.h:389
ns3::WifiAcknowledgment
WifiAcknowledgment is an abstract base struct.
Definition: wifi-acknowledgment.h:45
ns3::FrameExchangeManager
FrameExchangeManager is a base class handling the basic frame exchange sequences for non-QoS stations...
Definition: frame-exchange-manager.h:52
ns3::FrameExchangeManager::NotifyReceivedNormalAck
virtual void NotifyReceivedNormalAck(Ptr< WifiMacQueueItem > mpdu)
Notify other components that an MPDU was acknowledged.
Definition: frame-exchange-manager.cc:1194
ns3::FrameExchangeManager::SendMpduWithProtection
void SendMpduWithProtection(Ptr< WifiMacQueueItem > mpdu, WifiTxParameters &txParams)
Send an MPDU with the given TX parameters (with the specified protection).
Definition: frame-exchange-manager.cc:345
ns3::FrameExchangeManager::m_mac
Ptr< RegularWifiMac > m_mac
the MAC layer on this station
Definition: frame-exchange-manager.h:381
ns3::FrameExchangeManager::m_bssid
Mac48Address m_bssid
BSSID address (Mac48Address)
Definition: frame-exchange-manager.h:387
ns3::FrameExchangeManager::TransmissionFailed
virtual void TransmissionFailed(void)
Take necessary actions upon a transmission failure.
Definition: frame-exchange-manager.cc:759
ns3::FrameExchangeManager::ForwardMpduDown
virtual void ForwardMpduDown(Ptr< WifiMacQueueItem > mpdu, WifiTxVector &txVector)
Forward an MPDU down to the PHY layer.
Definition: frame-exchange-manager.cc:435
ns3::FrameExchangeManager::DoDispose
void DoDispose() override
Destructor implementation.
Definition: frame-exchange-manager.cc:83
ns3::FrameExchangeManager::RxStartIndication
void RxStartIndication(WifiTxVector txVector, Time psduDuration)
Definition: frame-exchange-manager.cc:232
ns3::FrameExchangeManager::RetransmitMpduAfterMissedCts
virtual void RetransmitMpduAfterMissedCts(Ptr< WifiMacQueueItem > mpdu) const
Retransmit an MPDU that was not sent because a CTS was not received.
Definition: frame-exchange-manager.cc:829
ns3::FrameExchangeManager::SendCtsAfterRts
void SendCtsAfterRts(const WifiMacHeader &rtsHdr, WifiMode rtsTxMode, double rtsSnr)
Send CTS after receiving RTS.
Definition: frame-exchange-manager.cc:634
ns3::FrameExchangeManager::~FrameExchangeManager
virtual ~FrameExchangeManager()
Definition: frame-exchange-manager.cc:62
ns3::FrameExchangeManager::GetWifiTxTimer
const WifiTxTimer & GetWifiTxTimer(void) const
Get a const reference to the WifiTxTimer object.
Definition: frame-exchange-manager.cc:217
ns3::FrameExchangeManager::EndReceiveAmpdu
virtual void EndReceiveAmpdu(Ptr< const WifiPsdu > psdu, const RxSignalInfo &rxSignalInfo, const WifiTxVector &txVector, const std::vector< bool > &perMpduStatus)
This method is called when the reception of an A-MPDU including multiple MPDUs is completed.
Definition: frame-exchange-manager.cc:1206
ns3::FrameExchangeManager::ReceivedNormalAck
virtual void ReceivedNormalAck(Ptr< WifiMacQueueItem > mpdu, const WifiTxVector &txVector, const WifiTxVector &ackTxVector, const RxSignalInfo &rxInfo, double snr)
Perform the actions needed when a Normal Ack is received.
Definition: frame-exchange-manager.cc:1158
ns3::FrameExchangeManager::SetBssid
virtual void SetBssid(Mac48Address bssid)
Set the Basic Service Set Identification.
Definition: frame-exchange-manager.cc:184
ns3::FrameExchangeManager::PreProcessFrame
virtual void PreProcessFrame(Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector)
Perform actions that are possibly needed when receiving any frame, independently of whether the frame...
Definition: frame-exchange-manager.cc:987
ns3::FrameExchangeManager::SendMpdu
void SendMpdu(void)
Send the current MPDU, which can be acknowledged by a Normal Ack.
Definition: frame-exchange-manager.cc:387
ns3::FrameExchangeManager::GetTypeId
static TypeId GetTypeId(void)
Get the type ID.
Definition: frame-exchange-manager.cc:44
ns3::FrameExchangeManager::m_fragmentedPacket
Ptr< Packet > m_fragmentedPacket
the MSDU being fragmented
Definition: frame-exchange-manager.h:548
channel-access-manager.h
ns3::WifiTxTimer
This class is used to handle the timer that a station starts when transmitting a frame that solicits ...
Definition: wifi-tx-timer.h:48
ns3::FrameExchangeManager::FrameExchangeManager
FrameExchangeManager()
Definition: frame-exchange-manager.cc:54
third.phy
phy
Definition: third.py:93
ns3::FrameExchangeManager::NormalAckTimeout
void NormalAckTimeout(Ptr< WifiMacQueueItem > mpdu, const WifiTxVector &txVector)
Called when the Ack timeout expires.
Definition: frame-exchange-manager.cc:768
ns3::FrameExchangeManager::m_dcf
Ptr< Txop > m_dcf
the DCF/EDCAF that gained channel access
Definition: frame-exchange-manager.h:378