diff options
author | Matthew Barth <msbarth@us.ibm.com> | 2017-10-04 12:59:50 -0500 |
---|---|---|
committer | Matthew Barth <msbarth@us.ibm.com> | 2017-11-17 13:14:11 -0600 |
commit | 7b7ceb8deb48d6d5833b02bc33987fca2e647a68 (patch) | |
tree | 3334d51f13d34172db031d011d217b700eb50f2b | |
parent | 5a302576091fb182b57aab482a4731655295046f (diff) | |
download | phosphor-fan-presence-7b7ceb8deb48d6d5833b02bc33987fca2e647a68.tar.gz phosphor-fan-presence-7b7ceb8deb48d6d5833b02bc33987fca2e647a68.zip |
Add timer type for set speed event timers
This is the first step towards allowing timer driven and/or wrapped
actions where the timer interval and type will be defined by the user.
Change-Id: If008fda5a2b73117e869f93223e0bfe61290f858
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
-rwxr-xr-x | control/gen-fan-zone-defs.py | 8 | ||||
-rw-r--r-- | control/types.hpp | 4 | ||||
-rw-r--r-- | control/zone.cpp | 2 |
3 files changed, 10 insertions, 4 deletions
diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py index 96fb2fd..fcd3f02 100755 --- a/control/gen-fan-zone-defs.py +++ b/control/gen-fan-zone-defs.py @@ -69,7 +69,8 @@ make_action(action::${a['name']} %endfor }, Timer{ - ${event['timer']['interval']} + ${event['timer']['interval']}, + ${event['timer']['type']} }, std::vector<Signal>{ %for s in event['signals']: @@ -204,7 +205,8 @@ const std::vector<ZoneGroup> Manager::_zoneLayouts %endif }, Timer{ - ${event['pc']['pctime']['interval']} + ${event['pc']['pctime']['interval']}, + ${event['pc']['pctime']['type']} }, std::vector<Signal>{ %for s in event['pc']['pcsigs']: @@ -401,6 +403,7 @@ def getEvent(zone_num, zone_conditions, e, events_data): else: timer['interval'] = (interval + "(" + str(0) + ")") + timer['type'] = "util::Timer::TimerType::repeating" event['timer'] = timer return event @@ -551,6 +554,7 @@ def addPrecondition(zNum, zCond, event, events_data): else: timer['interval'] = (interval + "(" + str(0) + ")") + timer['type'] = "util::Timer::TimerType::repeating" precond['pctime'] = timer return precond diff --git a/control/types.hpp b/control/types.hpp index 915b8b4..0d7610c 100644 --- a/control/types.hpp +++ b/control/types.hpp @@ -58,7 +58,9 @@ constexpr auto hasOwnerPos = 1; using Service = std::tuple<std::string, bool>; constexpr auto intervalPos = 0; -using Timer = std::tuple<std::chrono::seconds>; +constexpr auto typePos = 1; +using Timer = std::tuple<std::chrono::seconds, + util::Timer::TimerType>; constexpr auto sigMatchPos = 0; constexpr auto sigHandlerPos = 1; diff --git a/control/zone.cpp b/control/zone.cpp index b9a7583..b698c12 100644 --- a/control/zone.cpp +++ b/control/zone.cpp @@ -271,7 +271,7 @@ void Zone::initEvent(const SetSpeedEvent& event) if (!timer->running()) { timer->start(std::get<intervalPos>(eventTimer), - util::Timer::TimerType::repeating); + std::get<typePos>(eventTimer)); } _timerEvents.emplace_back(std::move(timer)); } |