diff --git a/src/wifi/model/aarf-wifi-manager.cc b/src/wifi/model/aarf-wifi-manager.cc index 1f3faaf..e8cb824 100644 --- a/src/wifi/model/aarf-wifi-manager.cc +++ b/src/wifi/model/aarf-wifi-manager.cc @@ -273,4 +273,18 @@ AarfWifiManager::IsLowLatency (void) const return true; } +bool +AarfWifiManager::IsHtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + +bool +AarfWifiManager::IsVhtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + } //namespace ns3 diff --git a/src/wifi/model/aarf-wifi-manager.h b/src/wifi/model/aarf-wifi-manager.h index ecabc3f..f86084a 100644 --- a/src/wifi/model/aarf-wifi-manager.h +++ b/src/wifi/model/aarf-wifi-manager.h @@ -56,6 +56,8 @@ private: virtual WifiTxVector DoGetDataTxVector (WifiRemoteStation *station); virtual WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station); virtual bool IsLowLatency (void) const; + virtual bool IsHtSupported (void) const; + virtual bool IsVhtSupported (void) const; uint32_t m_minTimerThreshold; uint32_t m_minSuccessThreshold; diff --git a/src/wifi/model/aarfcd-wifi-manager.cc b/src/wifi/model/aarfcd-wifi-manager.cc index e282757..9834606 100644 --- a/src/wifi/model/aarfcd-wifi-manager.cc +++ b/src/wifi/model/aarfcd-wifi-manager.cc @@ -356,6 +356,20 @@ AarfcdWifiManager::IsLowLatency (void) const return true; } +bool +AarfcdWifiManager::IsHtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + +bool +AarfcdWifiManager::IsVhtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + void AarfcdWifiManager::CheckRts (AarfcdWifiRemoteStation *station) { diff --git a/src/wifi/model/aarfcd-wifi-manager.h b/src/wifi/model/aarfcd-wifi-manager.h index bd92d5a..9f461b9 100644 --- a/src/wifi/model/aarfcd-wifi-manager.h +++ b/src/wifi/model/aarfcd-wifi-manager.h @@ -73,6 +73,8 @@ private: virtual bool DoNeedRts (WifiRemoteStation *station, Ptr packet, bool normally); virtual bool IsLowLatency (void) const; + virtual bool IsHtSupported (void) const; + virtual bool IsVhtSupported (void) const; /** * Check if the use of RTS for the given station can be turned off. diff --git a/src/wifi/model/amrr-wifi-manager.cc b/src/wifi/model/amrr-wifi-manager.cc index 25591c8..6082fc6 100644 --- a/src/wifi/model/amrr-wifi-manager.cc +++ b/src/wifi/model/amrr-wifi-manager.cc @@ -375,4 +375,18 @@ AmrrWifiManager::IsLowLatency (void) const return true; } +bool +AmrrWifiManager::IsHtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + +bool +AmrrWifiManager::IsVhtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + } //namespace ns3 diff --git a/src/wifi/model/amrr-wifi-manager.h b/src/wifi/model/amrr-wifi-manager.h index 415b358..7218c0e 100644 --- a/src/wifi/model/amrr-wifi-manager.h +++ b/src/wifi/model/amrr-wifi-manager.h @@ -61,6 +61,8 @@ private: virtual WifiTxVector DoGetDataTxVector (WifiRemoteStation *station); virtual WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station); virtual bool IsLowLatency (void) const; + virtual bool IsHtSupported (void) const; + virtual bool IsVhtSupported (void) const; //void UpdateRetry (AmrrWifiRemoteStation *station); /** diff --git a/src/wifi/model/aparf-wifi-manager.cc b/src/wifi/model/aparf-wifi-manager.cc index d7970e8..2203bfd 100644 --- a/src/wifi/model/aparf-wifi-manager.cc +++ b/src/wifi/model/aparf-wifi-manager.cc @@ -364,4 +364,18 @@ AparfWifiManager::IsLowLatency (void) const return true; } +bool +AparfWifiManager::IsHtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + +bool +AparfWifiManager::IsVhtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + } //namespace ns3 diff --git a/src/wifi/model/aparf-wifi-manager.h b/src/wifi/model/aparf-wifi-manager.h index 6c1584c..8abe772 100644 --- a/src/wifi/model/aparf-wifi-manager.h +++ b/src/wifi/model/aparf-wifi-manager.h @@ -78,6 +78,8 @@ private: virtual WifiTxVector DoGetDataTxVector (WifiRemoteStation *station); virtual WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station); virtual bool IsLowLatency (void) const; + virtual bool IsHtSupported (void) const; + virtual bool IsVhtSupported (void) const; /** Check for initializations. * diff --git a/src/wifi/model/arf-wifi-manager.cc b/src/wifi/model/arf-wifi-manager.cc index 9a54822..5a7da53 100644 --- a/src/wifi/model/arf-wifi-manager.cc +++ b/src/wifi/model/arf-wifi-manager.cc @@ -249,4 +249,18 @@ ArfWifiManager::IsLowLatency (void) const return true; } +bool +ArfWifiManager::IsHtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + +bool +ArfWifiManager::IsVhtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + } //namespace ns3 diff --git a/src/wifi/model/arf-wifi-manager.h b/src/wifi/model/arf-wifi-manager.h index 59f48c5..b4c2893 100644 --- a/src/wifi/model/arf-wifi-manager.h +++ b/src/wifi/model/arf-wifi-manager.h @@ -64,6 +64,8 @@ private: virtual WifiTxVector DoGetDataTxVector (WifiRemoteStation *station); virtual WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station); virtual bool IsLowLatency (void) const; + virtual bool IsHtSupported (void) const; + virtual bool IsVhtSupported (void) const; uint32_t m_timerThreshold; uint32_t m_successThreshold; diff --git a/src/wifi/model/cara-wifi-manager.cc b/src/wifi/model/cara-wifi-manager.cc index b0f510e..5209c5b 100644 --- a/src/wifi/model/cara-wifi-manager.cc +++ b/src/wifi/model/cara-wifi-manager.cc @@ -232,4 +232,18 @@ CaraWifiManager::IsLowLatency (void) const return true; } +bool +CaraWifiManager::IsHtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + +bool +CaraWifiManager::IsVhtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + } //namespace ns3 diff --git a/src/wifi/model/cara-wifi-manager.h b/src/wifi/model/cara-wifi-manager.h index 1827dad..f1a4492 100644 --- a/src/wifi/model/cara-wifi-manager.h +++ b/src/wifi/model/cara-wifi-manager.h @@ -62,6 +62,8 @@ private: virtual bool DoNeedRts (WifiRemoteStation *station, Ptr packet, bool normally); virtual bool IsLowLatency (void) const; + virtual bool IsHtSupported (void) const; + virtual bool IsVhtSupported (void) const; uint32_t m_timerTimeout; uint32_t m_successThreshold; diff --git a/src/wifi/model/constant-rate-wifi-manager.cc b/src/wifi/model/constant-rate-wifi-manager.cc index 8412a38..e258e97 100644 --- a/src/wifi/model/constant-rate-wifi-manager.cc +++ b/src/wifi/model/constant-rate-wifi-manager.cc @@ -134,4 +134,18 @@ ConstantRateWifiManager::IsLowLatency (void) const return true; } +bool +ConstantRateWifiManager::IsHtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return true; +} + +bool +ConstantRateWifiManager::IsVhtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return true; +} + } //namespace ns3 diff --git a/src/wifi/model/constant-rate-wifi-manager.h b/src/wifi/model/constant-rate-wifi-manager.h index 07defff..145007c 100644 --- a/src/wifi/model/constant-rate-wifi-manager.h +++ b/src/wifi/model/constant-rate-wifi-manager.h @@ -57,6 +57,8 @@ private: virtual WifiTxVector DoGetDataTxVector (WifiRemoteStation *station); virtual WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station); virtual bool IsLowLatency (void) const; + virtual bool IsHtSupported (void) const; + virtual bool IsVhtSupported (void) const; WifiMode m_dataMode; //!< Wifi mode for unicast DATA frames WifiMode m_ctlMode; //!< Wifi mode for RTS frames diff --git a/src/wifi/model/ideal-wifi-manager.cc b/src/wifi/model/ideal-wifi-manager.cc index 60a4771..9154a63 100644 --- a/src/wifi/model/ideal-wifi-manager.cc +++ b/src/wifi/model/ideal-wifi-manager.cc @@ -411,4 +411,18 @@ IdealWifiManager::IsLowLatency (void) const return true; } +bool +IdealWifiManager::IsHtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return true; +} + +bool +IdealWifiManager::IsVhtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return true; +} + } //namespace ns3 diff --git a/src/wifi/model/ideal-wifi-manager.h b/src/wifi/model/ideal-wifi-manager.h index f3fff69..9cf216a 100644 --- a/src/wifi/model/ideal-wifi-manager.h +++ b/src/wifi/model/ideal-wifi-manager.h @@ -72,6 +72,8 @@ private: virtual WifiTxVector DoGetDataTxVector (WifiRemoteStation *station); virtual WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station); virtual bool IsLowLatency (void) const; + virtual bool IsHtSupported (void) const; + virtual bool IsVhtSupported (void) const; /** * Return the minimum SNR needed to successfully transmit diff --git a/src/wifi/model/minstrel-ht-wifi-manager.cc b/src/wifi/model/minstrel-ht-wifi-manager.cc index 97968eb..4d0d659 100644 --- a/src/wifi/model/minstrel-ht-wifi-manager.cc +++ b/src/wifi/model/minstrel-ht-wifi-manager.cc @@ -1080,6 +1080,20 @@ MinstrelHtWifiManager::IsLowLatency (void) const return true; } +bool +MinstrelHtWifiManager::IsHtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return true; +} + +bool +MinstrelHtWifiManager::IsVhtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return true; +} + uint32_t MinstrelHtWifiManager::GetNextSample (MinstrelHtWifiRemoteStation *station) { diff --git a/src/wifi/model/minstrel-ht-wifi-manager.h b/src/wifi/model/minstrel-ht-wifi-manager.h index 8e047e8..289390c 100644 --- a/src/wifi/model/minstrel-ht-wifi-manager.h +++ b/src/wifi/model/minstrel-ht-wifi-manager.h @@ -252,6 +252,8 @@ private: virtual WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station); virtual void DoReportAmpduTxStatus (WifiRemoteStation *station, uint32_t nSuccessfulMpdus, uint32_t nFailedMpdus, double rxSnr, double dataSnr); virtual bool IsLowLatency (void) const; + virtual bool IsHtSupported (void) const; + virtual bool IsVhtSupported (void) const; virtual bool DoNeedDataRetransmission (WifiRemoteStation *st, Ptr packet, bool normally); virtual void DoDisposeStation (WifiRemoteStation *station); diff --git a/src/wifi/model/minstrel-wifi-manager.cc b/src/wifi/model/minstrel-wifi-manager.cc index 1127f1b..15601b8 100644 --- a/src/wifi/model/minstrel-wifi-manager.cc +++ b/src/wifi/model/minstrel-wifi-manager.cc @@ -866,6 +866,20 @@ MinstrelWifiManager::IsLowLatency (void) const return true; } +bool +MinstrelWifiManager::IsHtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + +bool +MinstrelWifiManager::IsVhtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + uint32_t MinstrelWifiManager::GetNextSample (MinstrelWifiRemoteStation *station) { diff --git a/src/wifi/model/minstrel-wifi-manager.h b/src/wifi/model/minstrel-wifi-manager.h index 249d11d..1c9d583 100644 --- a/src/wifi/model/minstrel-wifi-manager.h +++ b/src/wifi/model/minstrel-wifi-manager.h @@ -216,6 +216,8 @@ private: virtual bool DoNeedDataRetransmission (WifiRemoteStation *st, Ptr packet, bool normally); virtual bool IsLowLatency (void) const; + virtual bool IsHtSupported (void) const; + virtual bool IsVhtSupported (void) const; //for estimating the TxTime of a packet with a given mode Time GetCalcTxTime (WifiMode mode) const; diff --git a/src/wifi/model/onoe-wifi-manager.cc b/src/wifi/model/onoe-wifi-manager.cc index b5a6ba0..3474a6d 100644 --- a/src/wifi/model/onoe-wifi-manager.cc +++ b/src/wifi/model/onoe-wifi-manager.cc @@ -315,4 +315,18 @@ OnoeWifiManager::IsLowLatency (void) const return false; } +bool +OnoeWifiManager::IsHtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + +bool +OnoeWifiManager::IsVhtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + } //namespace ns3 diff --git a/src/wifi/model/onoe-wifi-manager.h b/src/wifi/model/onoe-wifi-manager.h index 6182311..8142c32 100644 --- a/src/wifi/model/onoe-wifi-manager.h +++ b/src/wifi/model/onoe-wifi-manager.h @@ -63,6 +63,8 @@ private: virtual WifiTxVector DoGetDataTxVector (WifiRemoteStation *station); virtual WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station); virtual bool IsLowLatency (void) const; + virtual bool IsHtSupported (void) const; + virtual bool IsVhtSupported (void) const; /** * Update the number of retry (both short and long). diff --git a/src/wifi/model/parf-wifi-manager.cc b/src/wifi/model/parf-wifi-manager.cc index 1c5218b..9e14d63 100644 --- a/src/wifi/model/parf-wifi-manager.cc +++ b/src/wifi/model/parf-wifi-manager.cc @@ -336,4 +336,18 @@ ParfWifiManager::IsLowLatency (void) const return true; } +bool +ParfWifiManager::IsHtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + +bool +ParfWifiManager::IsVhtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + } //namespace ns3 diff --git a/src/wifi/model/parf-wifi-manager.h b/src/wifi/model/parf-wifi-manager.h index c93e955..1f98f60 100644 --- a/src/wifi/model/parf-wifi-manager.h +++ b/src/wifi/model/parf-wifi-manager.h @@ -67,6 +67,8 @@ private: virtual WifiTxVector DoGetDataTxVector (WifiRemoteStation *station); virtual WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station); virtual bool IsLowLatency (void) const; + virtual bool IsHtSupported (void) const; + virtual bool IsVhtSupported (void) const; /** Check for initializations. * diff --git a/src/wifi/model/rraa-wifi-manager.cc b/src/wifi/model/rraa-wifi-manager.cc index 3113b90..5a6198f 100644 --- a/src/wifi/model/rraa-wifi-manager.cc +++ b/src/wifi/model/rraa-wifi-manager.cc @@ -496,4 +496,18 @@ RraaWifiManager::IsLowLatency (void) const return true; } +bool +RraaWifiManager::IsHtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + +bool +RraaWifiManager::IsVhtSupported (void) const +{ + NS_LOG_FUNCTION (this); + return false; +} + } //namespace ns3 diff --git a/src/wifi/model/rraa-wifi-manager.h b/src/wifi/model/rraa-wifi-manager.h index 9955263..911fcec 100644 --- a/src/wifi/model/rraa-wifi-manager.h +++ b/src/wifi/model/rraa-wifi-manager.h @@ -72,6 +72,8 @@ private: virtual bool DoNeedRts (WifiRemoteStation *st, Ptr packet, bool normally); virtual bool IsLowLatency (void) const; + virtual bool IsHtSupported (void) const; + virtual bool IsVhtSupported (void) const; /** * Return the index for the maximum transmission rate for diff --git a/src/wifi/model/wifi-remote-station-manager.cc b/src/wifi/model/wifi-remote-station-manager.cc index 0d90657..4e02342 100644 --- a/src/wifi/model/wifi-remote-station-manager.cc +++ b/src/wifi/model/wifi-remote-station-manager.cc @@ -414,6 +414,10 @@ WifiRemoteStationManager::SetupMac (Ptr mac) void WifiRemoteStationManager::SetHtSupported (bool enable) { + if (enable && !IsHtSupported()) + { + NS_FATAL_ERROR ("WifiRemoteStationManager selected does not support HT rates"); + } m_htSupported = enable; } @@ -486,6 +490,10 @@ WifiRemoteStationManager::HasHtSupported (void) const void WifiRemoteStationManager::SetVhtSupported (bool enable) { + if (enable && !IsVhtSupported()) + { + NS_FATAL_ERROR ("WifiRemoteStationManager selected does not support VHT rates"); + } m_vhtSupported = enable; } diff --git a/src/wifi/model/wifi-remote-station-manager.h b/src/wifi/model/wifi-remote-station-manager.h index 445777d..f836ae7 100644 --- a/src/wifi/model/wifi-remote-station-manager.h +++ b/src/wifi/model/wifi-remote-station-manager.h @@ -978,6 +978,14 @@ private: */ virtual bool IsLowLatency (void) const = 0; /** + * \return whether this manager is a manager designed to work with HTstandards. + */ + virtual bool IsHtSupported (void) const = 0; + /** + * \return whether this manager is a manager designed to work with VHT standards. + */ + virtual bool IsVhtSupported (void) const = 0; + /** * \return a new station data structure */ virtual WifiRemoteStation* DoCreateStation (void) const = 0;