From 14184131ba863121ac0cda5d8cacfd9a18643fae Mon Sep 17 00:00:00 2001 From: Matthew Barth Date: Fri, 19 May 2017 14:37:30 -0500 Subject: Only setup set speed events when not init mode Change-Id: Ia6987295a3eb4e23b9d6ae13a383e440386572de Signed-off-by: Matthew Barth --- control/main.cpp | 8 ++++---- control/manager.cpp | 2 +- control/manager.hpp | 11 ----------- control/zone.cpp | 39 +++++++++++++++++++++++---------------- control/zone.hpp | 15 ++++++++++++++- 5 files changed, 42 insertions(+), 33 deletions(-) (limited to 'control') diff --git a/control/main.cpp b/control/main.cpp index be5b59e..413a419 100644 --- a/control/main.cpp +++ b/control/main.cpp @@ -30,15 +30,15 @@ int main(int argc, char* argv[]) exit(-1); } - Manager::Mode mode; + Mode mode; if (args["init"] == "true") { - mode = Manager::Mode::init; + mode = Mode::init; } else if (args["control"] == "true") { - mode = Manager::Mode::control; + mode = Mode::control; } else { @@ -49,7 +49,7 @@ int main(int argc, char* argv[]) Manager manager(bus, mode); //Init mode will just set fans to max and delay - if (mode == Manager::Mode::init) + if (mode == Mode::init) { manager.doInit(); return 0; diff --git a/control/manager.cpp b/control/manager.cpp index 6c773a7..de9074c 100644 --- a/control/manager.cpp +++ b/control/manager.cpp @@ -59,7 +59,7 @@ Manager::Manager(sdbusplus::bus::bus& bus, for (auto& z : zones) { _zones.emplace(std::get(z), - std::make_unique(_bus, z)); + std::make_unique(mode, _bus, z)); } break; diff --git a/control/manager.hpp b/control/manager.hpp index 675dfb8..521b4cd 100644 --- a/control/manager.hpp +++ b/control/manager.hpp @@ -23,17 +23,6 @@ class Manager { public: - /** - * The mode the manager will run in: - * - init - only do the initialization steps - * - control - run normal control algorithms - */ - enum class Mode - { - init, - control - }; - Manager() = delete; Manager(const Manager&) = delete; Manager(Manager&&) = default; diff --git a/control/zone.cpp b/control/zone.cpp index 3a35b24..18fd627 100644 --- a/control/zone.cpp +++ b/control/zone.cpp @@ -23,7 +23,8 @@ namespace control { -Zone::Zone(sdbusplus::bus::bus& bus, +Zone::Zone(Mode mode, + sdbusplus::bus::bus& bus, const ZoneDefinition& def) : _bus(bus), _fullSpeed(std::get(def)), @@ -36,23 +37,29 @@ Zone::Zone(sdbusplus::bus::bus& bus, _fans.emplace_back(std::make_unique(bus, def)); } - // Setup signal trigger for set speed events - for (auto& event : std::get(def)) + // Do not enable set speed events when in init mode + if (mode != Mode::init) { - for (auto& prop : std::get(event)) + // Setup signal trigger for set speed events + for (auto& event : std::get(def)) { - _signalEvents.emplace_back( - std::make_unique(this, - EventData - { - std::get(event), - std::get(prop), - std::get(event) - })); - _matches.emplace_back(bus, - std::get(prop).c_str(), - signalHandler, - _signalEvents.back().get()); + for (auto& prop : std::get(event)) + { + _signalEvents.emplace_back( + std::make_unique( + this, + EventData + { + std::get(event), + std::get(prop), + std::get(event) + })); + _matches.emplace_back( + bus, + std::get(prop).c_str(), + signalHandler, + _signalEvents.back().get()); + } } } } diff --git a/control/zone.hpp b/control/zone.hpp index d8f3fe4..1a4e173 100644 --- a/control/zone.hpp +++ b/control/zone.hpp @@ -12,6 +12,17 @@ namespace fan namespace control { +/** + * The mode fan control will run in: + * - init - only do the initialization steps + * - control - run normal control algorithms + */ +enum class Mode +{ + init, + control +}; + /** * @class Represents a fan control zone, which is a group of fans * that behave the same. @@ -32,10 +43,12 @@ class Zone * Creates the appropriate fan objects based on * the zone definition data passed in. * + * @param[in] mode - mode of fan control * @param[in] bus - the dbus object * @param[in] def - the fan zone definition data */ - Zone(sdbusplus::bus::bus& bus, + Zone(Mode mode, + sdbusplus::bus::bus& bus, const ZoneDefinition& def); /** -- cgit v1.2.1