summaryrefslogtreecommitdiffstats
path: root/control/gen-fan-zone-defs.py
diff options
context:
space:
mode:
authorMatthew Barth <msbarth@us.ibm.com>2017-08-15 10:51:37 -0500
committerMatthew Barth <msbarth@us.ibm.com>2017-08-16 09:47:08 -0500
commit9014980aa76692cd7f08b5e69565133122c758cd (patch)
tree92caf9df963449625d513e8c1cc5c704681eb7f9 /control/gen-fan-zone-defs.py
parent172f393696b967f23e1d166fc7eb952a11994c5d (diff)
downloadphosphor-fan-presence-9014980aa76692cd7f08b5e69565133122c758cd.tar.gz
phosphor-fan-presence-9014980aa76692cd7f08b5e69565133122c758cd.zip
Add timer option to run set speed event actions
For groups within set speed events where the property values of the group may not signal its action to occur, an optional timer may be added to the event. This timer is configured as a repeating timer on the interval provided where upon timer expiration, the event's action is run. Change-Id: I4cbe8a0ab1b734bfc7828706a6515af7f6d78b52 Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
Diffstat (limited to 'control/gen-fan-zone-defs.py')
-rwxr-xr-xcontrol/gen-fan-zone-defs.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py
index 45ca774..a2a49a8 100755
--- a/control/gen-fan-zone-defs.py
+++ b/control/gen-fan-zone-defs.py
@@ -112,6 +112,9 @@ const std::vector<ZoneGroup> Manager::_zoneLayouts
%endif
%endfor
)),
+ Timer{
+ ${event['timer']['interval']}
+ },
std::vector<PropertyChange>{
%for s in event['signal']:
PropertyChange{
@@ -146,6 +149,9 @@ const std::vector<ZoneGroup> Manager::_zoneLayouts
%if ('pc' in event) and (event['pc'] is not None):
}
)),
+ Timer{
+ ${event['pc']['pctime']['interval']}
+ },
std::vector<PropertyChange>{
%for s in event['pc']['pcsig']:
PropertyChange{
@@ -264,6 +270,20 @@ def addPrecondition(event, events_data):
signal.append(signals)
precond['pcsig'] = signal
+ # Add optional action call timer
+ timer = {}
+ interval = "static_cast<std::chrono::seconds>"
+ if ('timer' in event['precondition']) and \
+ (event['precondition']['timer'] is not None):
+ timer['interval'] = (interval +
+ "(" +
+ str(event['precondition']['timer']['interval']) +
+ ")")
+ else:
+ timer['interval'] = (interval +
+ "(" + str(0) + ")")
+ precond['pctime'] = timer
+
return precond
@@ -350,6 +370,18 @@ def getEventsInZone(zone_num, zone_conditions, events_data):
signal.append(signals)
event['signal'] = signal
+ # Add optional action call timer
+ timer = {}
+ interval = "static_cast<std::chrono::seconds>"
+ if ('timer' in e) and \
+ (e['timer'] is not None):
+ timer['interval'] = (interval +
+ "(" + str(e['timer']['interval']) + ")")
+ else:
+ timer['interval'] = (interval +
+ "(" + str(0) + ")")
+ event['timer'] = timer
+
events.append(event)
return events
OpenPOWER on IntegriCloud