diff options
author | Matthew Barth <msbarth@us.ibm.com> | 2017-05-19 14:37:30 -0500 |
---|---|---|
committer | Matthew Barth <msbarth@us.ibm.com> | 2017-05-31 12:46:08 -0500 |
commit | 14184131ba863121ac0cda5d8cacfd9a18643fae (patch) | |
tree | fd794ace7ef5bbce89afbc774d14b9981579e264 /control | |
parent | 9c72667e8f6f75ffd1fd29de817fa8fdcbd1b45d (diff) | |
download | phosphor-fan-presence-14184131ba863121ac0cda5d8cacfd9a18643fae.tar.gz phosphor-fan-presence-14184131ba863121ac0cda5d8cacfd9a18643fae.zip |
Only setup set speed events when not init mode
Change-Id: Ia6987295a3eb4e23b9d6ae13a383e440386572de
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
Diffstat (limited to 'control')
-rw-r--r-- | control/main.cpp | 8 | ||||
-rw-r--r-- | control/manager.cpp | 2 | ||||
-rw-r--r-- | control/manager.hpp | 11 | ||||
-rw-r--r-- | control/zone.cpp | 39 | ||||
-rw-r--r-- | control/zone.hpp | 15 |
5 files changed, 42 insertions, 33 deletions
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<zoneNumPos>(z), - std::make_unique<Zone>(_bus, z)); + std::make_unique<Zone>(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<fullSpeedPos>(def)), @@ -36,23 +37,29 @@ Zone::Zone(sdbusplus::bus::bus& bus, _fans.emplace_back(std::make_unique<Fan>(bus, def)); } - // Setup signal trigger for set speed events - for (auto& event : std::get<setSpeedEventsPos>(def)) + // Do not enable set speed events when in init mode + if (mode != Mode::init) { - for (auto& prop : std::get<propChangeListPos>(event)) + // Setup signal trigger for set speed events + for (auto& event : std::get<setSpeedEventsPos>(def)) { - _signalEvents.emplace_back( - std::make_unique<SignalEvent>(this, - EventData - { - std::get<groupPos>(event), - std::get<handlerObjPos>(prop), - std::get<actionPos>(event) - })); - _matches.emplace_back(bus, - std::get<signaturePos>(prop).c_str(), - signalHandler, - _signalEvents.back().get()); + for (auto& prop : std::get<propChangeListPos>(event)) + { + _signalEvents.emplace_back( + std::make_unique<SignalEvent>( + this, + EventData + { + std::get<groupPos>(event), + std::get<handlerObjPos>(prop), + std::get<actionPos>(event) + })); + _matches.emplace_back( + bus, + std::get<signaturePos>(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 @@ -13,6 +13,17 @@ 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); /** |