# HG changeset patch # User Federico Maguolo # Date 1206731642 25200 # Node ID 49006cbbfac79ac857d661d756fcdcc6056ff49f # Parent 6c9853569bbf5fecae1e9766a0d6b753b3bcc9aa GetMaxSsrc -> NeedRtsTransmission and GetMaxSlrc -> NeedDataRetransmission diff -r 6c9853569bbf -r 49006cbbfac7 examples/wifi-adhoc.cc --- a/examples/wifi-adhoc.cc Fri Mar 28 11:26:59 2008 -0700 +++ b/examples/wifi-adhoc.cc Fri Mar 28 12:14:02 2008 -0700 @@ -225,7 +225,6 @@ gnuplot.GenerateOutput (std::cout); - gnuplot = Gnuplot ("rate-control.png"); Config::SetDefault ("ns3::WifiPhy::Standard", String ("holland")); diff -r 6c9853569bbf -r 49006cbbfac7 src/devices/wifi/amrr-wifi-manager.cc --- a/src/devices/wifi/amrr-wifi-manager.cc Fri Mar 28 11:26:59 2008 -0700 +++ b/src/devices/wifi/amrr-wifi-manager.cc Fri Mar 28 12:14:02 2008 -0700 @@ -89,31 +89,31 @@ {} void -AmrrWifiRemoteStation::ReportRxOk (double rxSnr, WifiMode txMode) +AmrrWifiRemoteStation::DoReportRxOk (double rxSnr, WifiMode txMode) {} void -AmrrWifiRemoteStation::ReportRtsFailed (void) +AmrrWifiRemoteStation::DoReportRtsFailed (void) {} void -AmrrWifiRemoteStation::ReportDataFailed (void) +AmrrWifiRemoteStation::DoReportDataFailed (void) { m_retry++; m_tx_retr++; } void -AmrrWifiRemoteStation::ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr) +AmrrWifiRemoteStation::DoReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr) {} void -AmrrWifiRemoteStation::ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr) +AmrrWifiRemoteStation::DoReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr) { m_retry = 0; m_tx_ok++; } void -AmrrWifiRemoteStation::ReportFinalRtsFailed (void) +AmrrWifiRemoteStation::DoReportFinalRtsFailed (void) {} void -AmrrWifiRemoteStation::ReportFinalDataFailed (void) +AmrrWifiRemoteStation::DoReportFinalDataFailed (void) { m_retry = 0; m_tx_err++; diff -r 6c9853569bbf -r 49006cbbfac7 src/devices/wifi/amrr-wifi-manager.h --- a/src/devices/wifi/amrr-wifi-manager.h Fri Mar 28 11:26:59 2008 -0700 +++ b/src/devices/wifi/amrr-wifi-manager.h Fri Mar 28 12:14:02 2008 -0700 @@ -52,13 +52,14 @@ virtual ~AmrrWifiRemoteStation (); - virtual void ReportRxOk (double rxSnr, WifiMode txMode); - virtual void ReportRtsFailed (void); - virtual void ReportDataFailed (void); - virtual void ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr); - virtual void ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr); - virtual void ReportFinalRtsFailed (void); - virtual void ReportFinalDataFailed (void); +protected: + virtual void DoReportRxOk (double rxSnr, WifiMode txMode); + virtual void DoReportRtsFailed (void); + virtual void DoReportDataFailed (void); + virtual void DoReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr); + virtual void DoReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr); + virtual void DoReportFinalRtsFailed (void); + virtual void DoReportFinalDataFailed (void); private: virtual Ptr GetManager (void) const; diff -r 6c9853569bbf -r 49006cbbfac7 src/devices/wifi/arf-wifi-manager.cc --- a/src/devices/wifi/arf-wifi-manager.cc Fri Mar 28 11:26:59 2008 -0700 +++ b/src/devices/wifi/arf-wifi-manager.cc Fri Mar 28 12:14:02 2008 -0700 @@ -88,7 +88,7 @@ void -ArfWifiRemoteStation::ReportRtsFailed (void) +ArfWifiRemoteStation::DoReportRtsFailed (void) {} /** * It is important to realize that "recovery" mode starts after failure of @@ -100,7 +100,7 @@ * transmission, be it an initial transmission or a retransmission. */ void -ArfWifiRemoteStation::ReportDataFailed (void) +ArfWifiRemoteStation::DoReportDataFailed (void) { m_timer++; m_failed++; @@ -138,13 +138,13 @@ } } void -ArfWifiRemoteStation::ReportRxOk (double rxSnr, WifiMode txMode) +ArfWifiRemoteStation::DoReportRxOk (double rxSnr, WifiMode txMode) {} -void ArfWifiRemoteStation::ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr) +void ArfWifiRemoteStation::DoReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr) { NS_LOG_DEBUG ("self="< GetManager (void) const; diff -r 6c9853569bbf -r 49006cbbfac7 src/devices/wifi/constant-rate-wifi-manager.cc --- a/src/devices/wifi/constant-rate-wifi-manager.cc Fri Mar 28 11:26:59 2008 -0700 +++ b/src/devices/wifi/constant-rate-wifi-manager.cc Fri Mar 28 12:14:02 2008 -0700 @@ -32,25 +32,25 @@ {} void -ConstantRateWifiRemoteStation::ReportRxOk (double rxSnr, WifiMode txMode) +ConstantRateWifiRemoteStation::DoReportRxOk (double rxSnr, WifiMode txMode) {} void -ConstantRateWifiRemoteStation::ReportRtsFailed (void) +ConstantRateWifiRemoteStation::DoReportRtsFailed (void) {} void -ConstantRateWifiRemoteStation::ReportDataFailed (void) +ConstantRateWifiRemoteStation::DoReportDataFailed (void) {} void -ConstantRateWifiRemoteStation::ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr) +ConstantRateWifiRemoteStation::DoReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr) {} void -ConstantRateWifiRemoteStation::ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr) +ConstantRateWifiRemoteStation::DoReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr) {} void -ConstantRateWifiRemoteStation::ReportFinalRtsFailed (void) +ConstantRateWifiRemoteStation::DoReportFinalRtsFailed (void) {} void -ConstantRateWifiRemoteStation::ReportFinalDataFailed (void) +ConstantRateWifiRemoteStation::DoReportFinalDataFailed (void) {} WifiMode diff -r 6c9853569bbf -r 49006cbbfac7 src/devices/wifi/constant-rate-wifi-manager.h --- a/src/devices/wifi/constant-rate-wifi-manager.h Fri Mar 28 11:26:59 2008 -0700 +++ b/src/devices/wifi/constant-rate-wifi-manager.h Fri Mar 28 12:14:02 2008 -0700 @@ -55,13 +55,14 @@ ConstantRateWifiRemoteStation (Ptr stations); virtual ~ConstantRateWifiRemoteStation (); - virtual void ReportRxOk (double rxSnr, WifiMode txMode); - virtual void ReportRtsFailed (void); - virtual void ReportDataFailed (void); - virtual void ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr); - virtual void ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr); - virtual void ReportFinalRtsFailed (void); - virtual void ReportFinalDataFailed (void); +protected: + virtual void DoReportRxOk (double rxSnr, WifiMode txMode); + virtual void DoReportRtsFailed (void); + virtual void DoReportDataFailed (void); + virtual void DoReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr); + virtual void DoReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr); + virtual void DoReportFinalRtsFailed (void); + virtual void DoReportFinalDataFailed (void); private: virtual Ptr GetManager (void) const; diff -r 6c9853569bbf -r 49006cbbfac7 src/devices/wifi/dca-txop.cc --- a/src/devices/wifi/dca-txop.cc Fri Mar 28 11:26:59 2008 -0700 +++ b/src/devices/wifi/dca-txop.cc Fri Mar 28 12:14:02 2008 -0700 @@ -24,7 +24,6 @@ #include "ns3/simulator.h" #include "ns3/node.h" #include "ns3/uinteger.h" -#include "ns3/trace-source-accessor.h" #include "dca-txop.h" #include "dcf-manager.h" @@ -115,20 +114,13 @@ MakeUintegerAccessor (&DcaTxop::SetAifsn, &DcaTxop::GetAifsn), MakeUintegerChecker ()) - .AddTraceSource ("Ssrc", "XXX", - MakeTraceSourceAccessor (&DcaTxop::m_ssrc)) - .AddTraceSource ("Slrc", "XXX", - MakeTraceSourceAccessor (&DcaTxop::m_slrc)) ; return tid; } DcaTxop::DcaTxop () : m_manager (0), - m_currentPacket (0), - m_ssrc (0), - m_slrc (0) - + m_currentPacket (0) { m_transmissionListener = new DcaTxop::TransmissionListener (this); m_dcf = new DcaTxop::Dcf (this); @@ -279,6 +271,19 @@ } bool +DcaTxop::NeedRtsRetransmission (void) +{ + WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ()); + return station->NeedRtsRetransmission (m_currentPacket); +} + +bool +DcaTxop::NeedDataRetransmission (void) +{ + WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ()); + return station->NeedDataRetransmission (m_currentPacket); +} +bool DcaTxop::NeedFragmentation (void) { WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ()); @@ -337,19 +342,6 @@ return fragment; } -uint32_t -DcaTxop::GetMaxSsrc (void) const -{ - WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ()); - return station->GetMaxSsrc (m_currentPacket); -} -uint32_t -DcaTxop::GetMaxSlrc (void) const -{ - WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ()); - return station->GetMaxSlrc (m_currentPacket); -} - bool DcaTxop::NeedsAccess (void) const { @@ -372,8 +364,6 @@ m_currentHdr.SetFragmentNumber (0); m_currentHdr.SetNoMoreFragments (); m_currentHdr.SetNoRetry (); - m_ssrc = 0; - m_slrc = 0; m_fragmentNumber = 0; MY_DEBUG ("dequeued size="<GetSize ()<< ", to="< GetMaxSsrc ()) + if (!NeedRtsRetransmission ()) { + MY_DEBUG ("Cts Fail"); WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ()); station->ReportFinalRtsFailed (); // to reset the dcf. @@ -478,7 +467,6 @@ void DcaTxop::GotAck (double snr, WifiMode txMode) { - m_slrc = 0; if (!NeedFragmentation () || IsLastFragment ()) { @@ -505,9 +493,9 @@ DcaTxop::MissedAck (void) { MY_DEBUG ("missed ack"); - m_slrc++; - if (m_slrc > GetMaxSlrc ()) + if (!NeedDataRetransmission ()) { + MY_DEBUG ("Ack Fail"); WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ()); station->ReportFinalDataFailed (); // to reset the dcf. @@ -516,6 +504,7 @@ } else { + MY_DEBUG ("Retransmit"); m_currentHdr.SetRetry (); if (!m_txFailedCallback.IsNull ()) { diff -r 6c9853569bbf -r 49006cbbfac7 src/devices/wifi/dca-txop.h --- a/src/devices/wifi/dca-txop.h Fri Mar 28 11:26:59 2008 -0700 +++ b/src/devices/wifi/dca-txop.h Fri Mar 28 12:14:02 2008 -0700 @@ -26,7 +26,6 @@ #include "ns3/packet.h" #include "ns3/nstime.h" #include "ns3/object.h" -#include "ns3/traced-value.h" #include "wifi-mac-header.h" #include "wifi-mode.h" #include "wifi-remote-station-manager.h" @@ -114,6 +113,7 @@ class Dcf; friend class Dcf; friend class TransmissionListener; + friend class WifiRemoteStation; // Inherited from ns3::Object Ptr Low (void); @@ -134,13 +134,13 @@ void RestartAccessIfNeeded (void); void StartAccessIfNeeded (void); bool NeedRts (void); + bool NeedRtsRetransmission (void); + bool NeedDataRetransmission (void); bool NeedFragmentation (void); uint32_t GetNFragments (void); uint32_t GetNextFragmentSize (void); uint32_t GetFragmentSize (void); WifiRemoteStation *GetStation (Mac48Address to) const; - uint32_t GetMaxSsrc (void) const; - uint32_t GetMaxSlrc (void) const; bool IsLastFragment (void); void NextFragment (void); Ptr GetFragmentPacket (WifiMacHeader *hdr); @@ -161,8 +161,6 @@ bool m_accessOngoing; Ptr m_currentPacket; WifiMacHeader m_currentHdr; - TracedValue m_ssrc; - TracedValue m_slrc; uint8_t m_fragmentNumber; }; diff -r 6c9853569bbf -r 49006cbbfac7 src/devices/wifi/ideal-wifi-manager.cc --- a/src/devices/wifi/ideal-wifi-manager.cc Fri Mar 28 11:26:59 2008 -0700 +++ b/src/devices/wifi/ideal-wifi-manager.cc Fri Mar 28 12:14:02 2008 -0700 @@ -104,31 +104,31 @@ IdealWifiRemoteStation::~IdealWifiRemoteStation () {} void -IdealWifiRemoteStation::ReportRxOk (double rxSnr, WifiMode txMode) +IdealWifiRemoteStation::DoReportRxOk (double rxSnr, WifiMode txMode) {} void -IdealWifiRemoteStation::ReportRtsFailed (void) +IdealWifiRemoteStation::DoReportRtsFailed (void) {} void -IdealWifiRemoteStation::ReportDataFailed (void) +IdealWifiRemoteStation::DoReportDataFailed (void) {} void -IdealWifiRemoteStation::ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr) +IdealWifiRemoteStation::DoReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr) { TRACE ("got cts for rts snr="< stations); virtual ~RraaWifiRemoteStation (); - virtual void ReportRxOk (double rxSnr, WifiMode txMode); - virtual void ReportRtsFailed (void); - virtual void ReportDataFailed (void); - virtual void ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr); - virtual void ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr); - virtual void ReportFinalRtsFailed (void); - virtual void ReportFinalDataFailed (void); virtual bool NeedRts (Ptr packet); +protected: + virtual void DoReportRxOk (double rxSnr, WifiMode txMode); + virtual void DoReportRtsFailed (void); + virtual void DoReportDataFailed (void); + virtual void DoReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr); + virtual void DoReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr); + virtual void DoReportFinalRtsFailed (void); + virtual void DoReportFinalDataFailed (void); private: virtual Ptr GetManager (void) const; diff -r 6c9853569bbf -r 49006cbbfac7 src/devices/wifi/wifi-remote-station-manager.cc --- a/src/devices/wifi/wifi-remote-station-manager.cc Fri Mar 28 11:26:59 2008 -0700 +++ b/src/devices/wifi/wifi-remote-station-manager.cc Fri Mar 28 12:14:02 2008 -0700 @@ -25,6 +25,7 @@ #include "ns3/boolean.h" #include "ns3/uinteger.h" #include "ns3/wifi-phy.h" +#include "ns3/trace-source-accessor.h" NS_LOG_COMPONENT_DEFINE ("WifiRemoteStationManager"); @@ -41,14 +42,14 @@ { public: NonUnicastWifiRemoteStation (Ptr stations); - virtual void ReportRxOk (double rxSnr, WifiMode txMode); - virtual void ReportRtsFailed (void); - virtual void ReportDataFailed (void); - virtual void ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr); - virtual void ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr); - virtual void ReportFinalRtsFailed (void); - virtual void ReportFinalDataFailed (void); - +protected: + virtual void DoReportRxOk (double rxSnr, WifiMode txMode); + virtual void DoReportRtsFailed (void); + virtual void DoReportDataFailed (void); + virtual void DoReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr); + virtual void DoReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr); + virtual void DoReportFinalRtsFailed (void); + virtual void DoReportFinalDataFailed (void); private: virtual Ptr GetManager (void) const; virtual WifiMode DoGetDataMode (uint32_t size); @@ -62,35 +63,35 @@ RecordDisassociated (); } void -NonUnicastWifiRemoteStation::ReportRxOk (double rxSnr, WifiMode txMode) +NonUnicastWifiRemoteStation::DoReportRxOk (double rxSnr, WifiMode txMode) { NS_ASSERT (false); } void -NonUnicastWifiRemoteStation::ReportRtsFailed (void) +NonUnicastWifiRemoteStation::DoReportRtsFailed (void) { NS_ASSERT (false); } void -NonUnicastWifiRemoteStation::ReportDataFailed (void) +NonUnicastWifiRemoteStation::DoReportDataFailed (void) { NS_ASSERT (false); } void -NonUnicastWifiRemoteStation::ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr) +NonUnicastWifiRemoteStation::DoReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr) { NS_ASSERT (false); } void -NonUnicastWifiRemoteStation::ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr) +NonUnicastWifiRemoteStation::DoReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr) { NS_ASSERT (false); } void -NonUnicastWifiRemoteStation::ReportFinalRtsFailed (void) +NonUnicastWifiRemoteStation::DoReportFinalRtsFailed (void) {} void -NonUnicastWifiRemoteStation::ReportFinalDataFailed (void) +NonUnicastWifiRemoteStation::DoReportFinalDataFailed (void) {} WifiMode @@ -374,8 +375,23 @@ namespace ns3 { +TypeId +WifiRemoteStation::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::WifiRemoteStation") + .SetParent () + .AddTraceSource ("Ssrc", "XXX", + MakeTraceSourceAccessor (&WifiRemoteStation::m_ssrc)) + .AddTraceSource ("Slrc", "XXX", + MakeTraceSourceAccessor (&WifiRemoteStation::m_slrc)) + ; + return tid; +} + WifiRemoteStation::WifiRemoteStation () - : m_state (BRAND_NEW) + : m_state (BRAND_NEW), + m_ssrc (0), + m_slrc (0) {} WifiRemoteStation::~WifiRemoteStation () {} @@ -560,16 +576,16 @@ return false; } } -uint32_t -WifiRemoteStation::GetMaxSsrc (Ptr packet) +bool +WifiRemoteStation::NeedRtsRetransmission (Ptr packet) { - return GetManager ()->GetMaxSsrc (); + return (m_ssrc < GetManager ()->GetMaxSsrc ()); } -uint32_t -WifiRemoteStation::GetMaxSlrc (Ptr packet) +bool +WifiRemoteStation::NeedDataRetransmission (Ptr packet) { - return GetManager ()->GetMaxSlrc (); + return (m_slrc < GetManager ()->GetMaxSlrc ()); } bool @@ -623,5 +639,52 @@ } } +void +WifiRemoteStation::ReportRtsFailed (void) +{ + m_ssrc++; + DoReportRtsFailed (); +} + +void +WifiRemoteStation::ReportDataFailed (void) +{ + m_slrc++; + DoReportDataFailed (); +} + +void +WifiRemoteStation::ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr) +{ + m_ssrc = 0; + DoReportRtsOk (ctsSnr, ctsMode, rtsSnr); +} + +void +WifiRemoteStation::ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr) +{ + m_slrc = 0; + DoReportDataOk (ackSnr, ackMode, dataSnr); +} + +void +WifiRemoteStation::ReportFinalRtsFailed (void) +{ + m_ssrc = 0; + DoReportFinalRtsFailed (); +} + +void +WifiRemoteStation::ReportFinalDataFailed (void) +{ + m_slrc = 0; + DoReportFinalDataFailed (); +} + +void +WifiRemoteStation::ReportRxOk (double rxSnr, WifiMode txMode) +{ + DoReportRxOk (rxSnr, txMode); +} } // namespace ns3 diff -r 6c9853569bbf -r 49006cbbfac7 src/devices/wifi/wifi-remote-station-manager.h --- a/src/devices/wifi/wifi-remote-station-manager.h Fri Mar 28 11:26:59 2008 -0700 +++ b/src/devices/wifi/wifi-remote-station-manager.h Fri Mar 28 12:14:02 2008 -0700 @@ -25,6 +25,7 @@ #include "ns3/mac48-address.h" #include "ns3/packet.h" #include "ns3/object.h" +#include "ns3/traced-value.h" #include "wifi-mode.h" namespace ns3 { @@ -85,6 +86,7 @@ WifiRemoteStation *Lookup (Mac48Address address); WifiRemoteStation *LookupNonUnicast (void); protected: + friend class WifiRemoteStation; virtual void DoDispose (void); private: typedef std::vector > Stations; @@ -106,6 +108,9 @@ class WifiRemoteStation { public: + + static TypeId GetTypeId (void); + WifiRemoteStation (); virtual ~WifiRemoteStation (); @@ -130,20 +135,21 @@ void PrepareForQueue (Ptr packet, uint32_t fullPacketSize); WifiMode GetDataMode (Ptr packet, uint32_t fullPacketSize); WifiMode GetRtsMode (Ptr packet); + // transmission-related methods + void ReportRtsFailed (void); + void ReportDataFailed (void); + void ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr); + void ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr); + void ReportFinalRtsFailed (void); + void ReportFinalDataFailed (void); // reception-related method - virtual void ReportRxOk (double rxSnr, WifiMode txMode) = 0; + void ReportRxOk (double rxSnr, WifiMode txMode); - // transmission-related methods - virtual void ReportRtsFailed (void) = 0; - virtual void ReportDataFailed (void) = 0; - virtual void ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr) = 0; - virtual void ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr) = 0; - virtual void ReportFinalRtsFailed (void) = 0; - virtual void ReportFinalDataFailed (void) = 0; virtual bool NeedRts (Ptr packet); - virtual uint32_t GetMaxSsrc (Ptr packet); - virtual uint32_t GetMaxSlrc (Ptr packet); + virtual bool NeedRtsRetransmission (Ptr packet); + virtual bool NeedDataRetransmission (Ptr packet); + virtual bool NeedFragmentation (Ptr packet); virtual uint32_t GetNFragments (Ptr packet); virtual uint32_t GetFragmentSize (Ptr packet, uint32_t fragmentNumber); @@ -158,6 +164,13 @@ virtual WifiMode DoGetDataMode (uint32_t size) = 0; virtual WifiMode DoGetRtsMode (void) = 0; protected: + virtual void DoReportRtsFailed (void) = 0; + virtual void DoReportDataFailed (void) = 0; + virtual void DoReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr) = 0; + virtual void DoReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr) = 0; + virtual void DoReportFinalRtsFailed (void) = 0; + virtual void DoReportFinalDataFailed (void) = 0; + virtual void DoReportRxOk (double rxSnr, WifiMode txMode) = 0; uint32_t GetNSupportedModes (void) const; WifiMode GetSupportedMode (uint32_t i) const; private: @@ -170,6 +183,8 @@ GOT_ASSOC_TX_OK } m_state; SupportedModes m_modes; + TracedValue m_ssrc; + TracedValue m_slrc; }; } // namespace ns3