X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/040d8fa855d2b6ac9884f68108a09b935570be21..fcd1f70709a193338f818adff2b3b1fa08e307ab:/src/plugins/link_energy_wifi.cpp diff --git a/src/plugins/link_energy_wifi.cpp b/src/plugins/link_energy_wifi.cpp index 2a57a2b21f..481f1f2400 100644 --- a/src/plugins/link_energy_wifi.cpp +++ b/src/plugins/link_energy_wifi.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2022. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2017-2023. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -10,6 +10,7 @@ #include "src/kernel/activity/CommImpl.hpp" #include "src/kernel/resource/StandardLinkImpl.hpp" #include "src/kernel/resource/WifiLinkImpl.hpp" +#include "src/simgrid/module.hpp" #include #include @@ -22,8 +23,7 @@ SIMGRID_REGISTER_PLUGIN(link_energy_wifi, "Energy wifi test", &sg_wifi_energy_pl XBT_LOG_NEW_DEFAULT_SUBCATEGORY(link_energy_wifi, kernel, "Logging specific to the link energy wifi plugin"); -namespace simgrid { -namespace plugin { +namespace simgrid::plugin { class XBT_PRIVATE LinkEnergyWifi { // associative array keeping size of data already sent for a given flow (required for interleaved actions) @@ -105,10 +105,11 @@ void LinkEnergyWifi::update_destroy() dur_idle_ += duration; // add IDLE energy usage, as well as beacons consumption since previous update - eDyn_ += duration * control_duration_ * wifi_link->get_host_count() * pRx_; - eStat_ += (duration - (duration * control_duration_)) * pIdle_ * (wifi_link->get_host_count() + 1); + const auto host_count = static_cast(wifi_link->get_host_count()); + eDyn_ += duration * control_duration_ * host_count * pRx_; + eStat_ += (duration - (duration * control_duration_)) * pIdle_ * (host_count + 1); - XBT_DEBUG("finish eStat_ += %f * %f * (%d+1) | eStat = %f", duration, pIdle_, wifi_link->get_host_count(), eStat_); + XBT_DEBUG("finish eStat_ += %f * %f * (%f+1) | eStat = %f", duration, pIdle_, host_count, eStat_); } void LinkEnergyWifi::update() @@ -177,7 +178,8 @@ void LinkEnergyWifi::update() XBT_DEBUG("durUsage: %f", durUsage); // beacons cost - eDyn_ += duration * control_duration_ * wifi_link->get_host_count() * pRx_; + const auto host_count = static_cast(wifi_link->get_host_count()); + eDyn_ += duration * control_duration_ * host_count * pRx_; /** * Same principle as ns3: @@ -186,17 +188,17 @@ void LinkEnergyWifi::update() * P_{tot} = P_{dyn}+P_{stat} */ if (link_->get_usage() != 0.0) { - eDyn_ += /*duration * */ durUsage * ((wifi_link->get_host_count() * pRx_) + pTx_); - eStat_ += (duration - durUsage) * pIdle_ * (wifi_link->get_host_count() + 1); - XBT_DEBUG("eDyn += %f * ((%d * %f) + %f) | eDyn = %f (durusage =%f)", durUsage, wifi_link->get_host_count(), pRx_, - pTx_, eDyn_, durUsage); + eDyn_ += /*duration * */ durUsage * ((host_count * pRx_) + pTx_); + eStat_ += (duration - durUsage) * pIdle_ * (host_count + 1); + XBT_DEBUG("eDyn += %f * ((%f * %f) + %f) | eDyn = %f (durusage =%f)", durUsage, host_count, pRx_, pTx_, eDyn_, + durUsage); dur_TxRx_ += duration; } else { dur_idle_ += duration; - eStat_ += (duration - (duration * control_duration_)) * pIdle_ * (wifi_link->get_host_count() + 1); + eStat_ += (duration - (duration * control_duration_)) * pIdle_ * (host_count + 1); } - XBT_DEBUG("eStat_ += %f * %f * (%d+1) | eStat = %f", duration, pIdle_, wifi_link->get_host_count(), eStat_); + XBT_DEBUG("eStat_ += %f * %f * (%f+1) | eStat = %f", duration, pIdle_, host_count, eStat_); } void LinkEnergyWifi::init_watts_range_list() @@ -209,12 +211,11 @@ void LinkEnergyWifi::init_watts_range_list() Set to 0 if you do not want to compute beacons, otherwise to the duration of beacons transmissions per second */ - const char* beacons_factor = this->link_->get_property("control_duration"); - if(beacons_factor != nullptr) { + if (const char* beacons_factor = this->link_->get_property("control_duration")) { try { control_duration_ = std::stod(beacons_factor); } catch (const std::invalid_argument&) { - throw std::invalid_argument(std::string("Invalid beacons factor value for link ") + this->link_->get_cname()); + throw std::invalid_argument("Invalid beacons factor value for link " + this->link_->get_name()); } } @@ -237,22 +238,22 @@ void LinkEnergyWifi::init_watts_range_list() try { pSleep_ = std::stod(current_power_values.at(3)); } catch (const std::invalid_argument&) { - throw std::invalid_argument(std::string("Invalid idle power value for link ") + this->link_->get_cname()); + throw std::invalid_argument("Invalid idle power value for link " + this->link_->get_name()); } try { pRx_ = std::stod(current_power_values.at(2)); } catch (const std::invalid_argument&) { - throw std::invalid_argument(std::string("Invalid idle power value for link ") + this->link_->get_cname()); + throw std::invalid_argument("Invalid idle power value for link " + this->link_->get_name()); } try { pTx_ = std::stod(current_power_values.at(1)); } catch (const std::invalid_argument&) { - throw std::invalid_argument(std::string("Invalid idle power value for link ") + this->link_->get_cname()); + throw std::invalid_argument("Invalid idle power value for link " + this->link_->get_name()); } try { pIdle_ = std::stod(current_power_values.at(0)); } catch (const std::invalid_argument&) { - throw std::invalid_argument(std::string("Invalid busy power value for link ") + this->link_->get_cname()); + throw std::invalid_argument("Invalid busy power value for link " + this->link_->get_name()); } XBT_DEBUG("Values aa initialized with: pSleep=%f pIdle=%f pTx=%f pRx=%f", pSleep_, pIdle_, pTx_, pRx_); @@ -260,8 +261,7 @@ void LinkEnergyWifi::init_watts_range_list() } } -} // namespace plugin -} // namespace simgrid +} // namespace simgrid::plugin using simgrid::plugin::LinkEnergyWifi; /* **************************** events callback *************************** */