+int NetworkWifiLink::get_host_count() const
+{
+ return static_cast<int>(host_rates_.size());
+}
+
+void NetworkWifiLink::refresh_decay_bandwidths(){
+ // Compute number of STAtion on the Access Point
+ int nSTA = get_host_count();
+
+ std::vector<Metric> new_bandwidths;
+ for (auto const& bandwidth : bandwidths_) {
+ // Instantiate decay model relatively to the actual bandwidth
+ double max_bw=bandwidth.peak;
+ double min_bw=bandwidth.peak-(wifi_max_rate_-wifi_min_rate_);
+ double model_rate=bandwidth.peak-(wifi_max_rate_-model_rate_);
+
+ xbt_assert(min_bw > 0, "Your WIFI link is using bandwidth(s) which is too low for the decay model.");
+
+ double N0=max_bw-min_bw;
+ double lambda=(-log(model_rate-min_bw)+log(N0))/model_n_;
+ // Since decay model start at 0 we should use (nSTA-1)
+ double new_peak=N0*exp(-lambda*(nSTA-1))+min_bw;
+ new_bandwidths.push_back({new_peak, 1.0, nullptr});
+ }
+ decay_bandwidths_=new_bandwidths;
+}
+
+bool NetworkWifiLink::toggle_decay_model(){
+ use_decay_model_ = not use_decay_model_;
+ return use_decay_model_;
+}
+
+void NetworkWifiLink::set_latency(double value)
+{
+ xbt_assert(value == 0, "Latency cannot be set for WiFi Links.");
+}