Add modes to phosphor-fan-control
phosphor-fan-control can behave differently based
on its command line arguments
--init: Set fans to full speed, delay for a
configurable amount of time to allow fans to ramp up,
start the fan control ready target, and then exit.
--control: Start the control algorithm. Never exits.
Will be started as part of the fan control ready target.
Change-Id: I453daf8cc05a5c85a19c098e1cca64cac2ad9520
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py
index 3457d41..04f206f 100755
--- a/control/gen-fan-zone-defs.py
+++ b/control/gen-fan-zone-defs.py
@@ -11,12 +11,14 @@
from argparse import ArgumentParser
from mako.template import Template
-#Note: Condition is a TODO
+#Note: Condition is a TODO (openbmc/openbmc#1500)
tmpl = '''/* This is a generated file. */
#include "manager.hpp"
using namespace phosphor::fan::control;
+const unsigned int Manager::_powerOnDelay{${mgr_data['power_on_delay']}};
+
const std::vector<ZoneGroup> Manager::_zoneLayouts
{
%for zone_group in zones:
@@ -151,8 +153,15 @@
with open(args.fan_yaml, 'r') as fan_input:
fan_data = yaml.safe_load(fan_input) or {}
- zone_data = buildZoneData(zone_data, fan_data)
+ zone_config = buildZoneData(zone_data.get('zone_configuration', {}),
+ fan_data)
+
+ manager_config = zone_data.get('manager_configuration', {})
+
+ if manager_config.get('power_on_delay') is None:
+ manager_config['power_on_delay'] = 0
output_file = os.path.join(args.output_dir, "fan_zone_defs.cpp")
with open(output_file, 'w') as output:
- output.write(Template(tmpl).render(zones=zone_data))
+ output.write(Template(tmpl).render(zones=zone_config,
+ mgr_data=manager_config))