summaryrefslogtreecommitdiffstats
path: root/control/templates/fan_zone_defs.mako.cpp
diff options
context:
space:
mode:
authorMatthew Barth <msbarth@us.ibm.com>2019-02-14 14:24:46 -0600
committerMatthew Barth <msbarth@us.ibm.com>2019-02-14 14:44:17 -0600
commit7883f58ab2edf8d9f8882463a68f50bef6f49013 (patch)
treea1422e76d2e30785b187ebb3bf5d9d4764a98ca4 /control/templates/fan_zone_defs.mako.cpp
parent1b3e960219c8d7d4add71c862cd8756104615251 (diff)
downloadphosphor-fan-presence-7883f58ab2edf8d9f8882463a68f50bef6f49013.tar.gz
phosphor-fan-presence-7883f58ab2edf8d9f8882463a68f50bef6f49013.zip
Parse and generate zone interfaces
Interfaces can optionally be defined on each zone to include setting properties under those interfaces when fan control initializes the zone. Setting the property values here allows them to be initialized to a default value or set of values. Change-Id: I75d51a05caa9e5662a0608d285fd388acc8593e2 Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
Diffstat (limited to 'control/templates/fan_zone_defs.mako.cpp')
-rw-r--r--control/templates/fan_zone_defs.mako.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/control/templates/fan_zone_defs.mako.cpp b/control/templates/fan_zone_defs.mako.cpp
index a73449f..cb46986 100644
--- a/control/templates/fan_zone_defs.mako.cpp
+++ b/control/templates/fan_zone_defs.mako.cpp
@@ -45,6 +45,38 @@ const std::vector<ZoneGroup> Manager::_zoneLayouts
${zone['default_floor']},
${zone['increase_delay']},
${zone['decrease_interval']},
+ std::vector<ZoneHandler>{
+ %if ('ifaces' in zone) and \
+ (zone['ifaces'] is not None):
+ %for i in zone['ifaces']:
+ %if ('props' in i) and \
+ (i['props'] is not None):
+ %for p in i['props']:
+ ZoneHandler{
+ make_zoneHandler(handler::setZoneProperty(
+ &Zone::${p['name']},
+ static_cast<${p['type']}>(
+ %if "vector" in p['type'] or "map" in p['type']:
+ ${p['type']}{
+ %endif
+ %for i, v in enumerate(p['values']):
+ %if (i+1) != len(p['values']):
+ ${v},
+ %else:
+ ${v}
+ %endif
+ %endfor
+ %if "vector" in p['type'] or "map" in p['type']:
+ }
+ %endif
+ )
+ ))
+ },
+ %endfor
+ %endif
+ %endfor
+ %endif
+ },
std::vector<FanDefinition>{
%for fan in zone['fans']:
FanDefinition{
OpenPOWER on IntegriCloud