1 <%include file="defs.mako"/>\ 2 <%namespace file="defs.mako" import="*"/>\ 3 <%! 4 def indent(str, depth): 5 return ''.join(4*' '*depth+line for line in str.splitlines(True)) 6 %>\ 7 /* This is a generated file. */ 8 #include "manager.hpp" 9 #include "functor.hpp" 10 #include "actions.hpp" 11 #include "handlers.hpp" 12 #include "preconditions.hpp" 13 #include "matches.hpp" 14 15 using namespace phosphor::fan::control; 16 17 const unsigned int Manager::_powerOnDelay{${mgr_data['power_on_delay']}}; 18 19 const std::vector<ZoneGroup> Manager::_zoneLayouts 20 { 21 %for zone_group in zones: 22 ZoneGroup{ 23 std::vector<Condition>{ 24 %for condition in zone_group['conditions']: 25 Condition{ 26 "${condition['type']}", 27 std::vector<ConditionProperty>{ 28 %for property in condition['properties']: 29 ConditionProperty{ 30 "${property['property']}", 31 "${property['interface']}", 32 "${property['path']}", 33 static_cast<${property['type']}>(${property['value']}), 34 }, 35 %endfor 36 }, 37 }, 38 %endfor 39 }, 40 std::vector<ZoneDefinition>{ 41 %for zone in zone_group['zones']: 42 ZoneDefinition{ 43 ${zone['num']}, 44 ${zone['full_speed']}, 45 ${zone['default_floor']}, 46 ${zone['increase_delay']}, 47 ${zone['decrease_interval']}, 48 std::vector<FanDefinition>{ 49 %for fan in zone['fans']: 50 FanDefinition{ 51 "${fan['name']}", 52 std::vector<std::string>{ 53 %for sensor in fan['sensors']: 54 "${sensor}", 55 %endfor 56 }, 57 "${fan['target_interface']}" 58 }, 59 %endfor 60 }, 61 std::vector<SetSpeedEvent>{ 62 %for event in zone['events']: 63 %if ('pc' in event) and \ 64 (event['pc'] is not None): 65 SetSpeedEvent{ 66 Group{ 67 %for group in event['pc']['pcgrps']: 68 %for member in group['members']: 69 { 70 "${member['object']}", 71 {"${member['interface']}", 72 "${member['property']}"} 73 }, 74 %endfor 75 %endfor 76 }, 77 std::vector<Action>{ 78 %for i, a in enumerate(event['pc']['pcact']): 79 %if len(a['params']) != 0: 80 make_action( 81 precondition::${a['name']}( 82 %else: 83 make_action( 84 precondition::${a['name']} 85 %endif 86 %for p in a['params']: 87 ${p['type']}${p['open']} 88 %for j, v in enumerate(p['values']): 89 %if (j+1) != len(p['values']): 90 ${v['value']}, 91 %else: 92 ${v['value']} 93 %endif 94 %endfor 95 ${p['close']}, 96 %endfor 97 %if (i+1) != len(event['pc']['pcact']): 98 %if len(a['params']) != 0: 99 )), 100 %else: 101 ), 102 %endif 103 %endif 104 %endfor 105 std::vector<SetSpeedEvent>{ 106 %for pcevt in event['pc']['pcevts']: 107 SetSpeedEvent{\ 108 ${indent(genSSE(event=pcevt), 6)}\ 109 }, 110 %endfor 111 %else: 112 SetSpeedEvent{\ 113 ${indent(genSSE(event=event), 6)} 114 %endif 115 %if ('pc' in event) and (event['pc'] is not None): 116 } 117 %if len(event['pc']['pcact'][-1]['params']) != 0: 118 )), 119 %else: 120 ), 121 %endif 122 }, 123 TimerConf{ 124 ${event['pc']['pctime']['interval']}, 125 ${event['pc']['pctime']['type']} 126 }, 127 std::vector<Signal>{ 128 %for s in event['pc']['pcsigs']: 129 Signal{ 130 match::${s['match']}( 131 %for i, mp in enumerate(s['mparams']): 132 %if (i+1) != len(s['mparams']): 133 "${mp}", 134 %else: 135 "${mp}" 136 %endif 137 %endfor 138 ), 139 make_handler(\ 140 ${indent(genHandler(sig=s), 9)}\ 141 ) 142 }, 143 %endfor 144 } 145 %endif 146 }, 147 %endfor 148 } 149 }, 150 %endfor 151 } 152 }, 153 %endfor 154 }; 155