<%include file="defs.mako"/>\ <%namespace file="defs.mako" import="*"/>\ <%! def indent(str, depth): return ''.join(4*' '*depth+line for line in str.splitlines(True)) %>\ /* This is a generated file. */ #include "manager.hpp" #include "functor.hpp" #include "actions.hpp" #include "handlers.hpp" #include "preconditions.hpp" #include "matches.hpp" using namespace phosphor::fan::control; const unsigned int Manager::_powerOnDelay{${mgr_data['power_on_delay']}}; const std::vector Manager::_zoneLayouts { %for zone_group in zones: ZoneGroup{ std::vector{ %for condition in zone_group['conditions']: Condition{ "${condition['type']}", std::vector{ %for property in condition['properties']: ConditionProperty{ "${property['property']}", "${property['interface']}", "${property['path']}", static_cast<${property['type']}>(${property['value']}), }, %endfor }, }, %endfor }, std::vector{ %for zone in zone_group['zones']: ZoneDefinition{ ${zone['num']}, ${zone['full_speed']}, ${zone['default_floor']}, ${zone['increase_delay']}, ${zone['decrease_interval']}, std::vector{ %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{ %for fan in zone['fans']: FanDefinition{ "${fan['name']}", std::vector{ %for sensor in fan['sensors']: "${sensor}", %endfor }, "${fan['target_interface']}" }, %endfor }, std::vector{ %for event in zone['events']: %if ('pc' in event) and \ (event['pc'] is not None): SetSpeedEvent{ Group{ %for group in event['pc']['pcgrps']: %for member in group['members']: { "${member['object']}", {"${member['interface']}", "${member['property']}"} }, %endfor %endfor }, std::vector{ %for i, a in enumerate(event['pc']['pcact']): %if len(a['params']) != 0: make_action( precondition::${a['name']}( %else: make_action( precondition::${a['name']} %endif %for p in a['params']: ${p['type']}${p['open']} %for j, v in enumerate(p['values']): %if (j+1) != len(p['values']): ${v['value']}, %else: ${v['value']} %endif %endfor ${p['close']}, %endfor %if (i+1) != len(event['pc']['pcact']): %if len(a['params']) != 0: )), %else: ), %endif %endif %endfor std::vector{ %for pcevt in event['pc']['pcevts']: SetSpeedEvent{\ ${indent(genSSE(event=pcevt), 6)}\ }, %endfor %else: SetSpeedEvent{\ ${indent(genSSE(event=event), 6)} %endif %if ('pc' in event) and (event['pc'] is not None): } %if len(event['pc']['pcact'][-1]['params']) != 0: )), %else: ), %endif }, TimerConf{ ${event['pc']['pctime']['interval']}, ${event['pc']['pctime']['type']} }, std::vector{ %for s in event['pc']['pcsigs']: Signal{ %if ('match' in s) and \ (s['match'] is not None): match::${s['match']}( %for i, mp in enumerate(s['mparams']): %if (i+1) != len(s['mparams']): "${mp}", %else: "${mp}" %endif %endfor ), %else: "", %endif make_handler(\ ${indent(genHandler(sig=s), 9)}\ ) }, %endfor } %endif }, %endfor } }, %endfor } }, %endfor };