diff options
Diffstat (limited to 'control/gen-fan-zone-defs.py')
-rwxr-xr-x | control/gen-fan-zone-defs.py | 126 |
1 files changed, 65 insertions, 61 deletions
diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py index a779f34..f537716 100755 --- a/control/gen-fan-zone-defs.py +++ b/control/gen-fan-zone-defs.py @@ -25,66 +25,70 @@ const unsigned int Manager::_powerOnDelay{${mgr_data['power_on_delay']}}; const std::vector<ZoneGroup> Manager::_zoneLayouts { %for zone_group in zones: - ZoneGroup{std::vector<Condition>{}, - std::vector<ZoneDefinition>{ - %for zone in zone_group['zones']: - ZoneDefinition{${zone['num']}, - ${zone['full_speed']}, - std::vector<FanDefinition>{ - %for fan in zone['fans']: - FanDefinition{"${fan['name']}", - std::vector<std::string>{ - %for sensor in fan['sensors']: - "${sensor}", - %endfor - } - }, - %endfor - }, - std::vector<SetSpeedEvent>{ - %for event in zone['events']: - SetSpeedEvent{ - Group{ - %for member in event['group']: - { - "${member['name']}", - {"${member['interface']}", - "${member['property']}"} - }, - %endfor - }, - make_action(action::${event['action']['name']}( - %for index, param in enumerate(event['action']['parameters']): - %if (index+1) != len(event['action']['parameters']): - static_cast<${param['type']}>(${param['value']}), - %else: - static_cast<${param['type']}>(${param['value']}) - %endif - %endfor - )), - std::vector<PropertyChange>{ - %for signal in event['signal']: - PropertyChange{ - "interface='org.freedesktop.DBus.Properties'," - "member='PropertiesChanged'," - "type='signal'," - "path='${signal['path']}'", - make_handler(propertySignal<${signal['type']}>( - "${signal['interface']}", - "${signal['property']}", - handler::setProperty<${signal['type']}>( - "${signal['member']}", - "${signal['property']}" - ) - ))}, - %endfor - } - }, - %endfor - } - }, - %endfor - } + ZoneGroup{ + std::vector<Condition>{}, + std::vector<ZoneDefinition>{ + %for zone in zone_group['zones']: + ZoneDefinition{ + ${zone['num']}, + ${zone['full_speed']}, + std::vector<FanDefinition>{ + %for fan in zone['fans']: + FanDefinition{ + "${fan['name']}", + std::vector<std::string>{ + %for sensor in fan['sensors']: + "${sensor}", + %endfor + } + }, + %endfor + }, + std::vector<SetSpeedEvent>{ + %for event in zone['events']: + SetSpeedEvent{ + Group{ + %for member in event['group']: + { + "${member['name']}", + {"${member['interface']}", + "${member['property']}"} + }, + %endfor + }, + make_action(action::${event['action']['name']}( + %for i, p in enumerate(event['action']['parameters']): + %if (i+1) != len(event['action']['parameters']): + static_cast<${p['type']}>(${p['value']}), + %else: + static_cast<${p['type']}>(${p['value']}) + %endif + %endfor + )), + std::vector<PropertyChange>{ + %for s in event['signal']: + PropertyChange{ + "interface='org.freedesktop.DBus.Properties'," + "member='PropertiesChanged'," + "type='signal'," + "path='${s['path']}'", + make_handler(propertySignal<${s['type']}>( + "${s['interface']}", + "${s['property']}", + handler::setProperty<${s['type']}>( + "${s['member']}", + "${s['property']}" + ) + )) + }, + %endfor + } + }, + %endfor + } + }, + %endfor + } }, %endfor }; @@ -123,7 +127,7 @@ def getEventsInZone(zone_num, events_data): # Add set speed action and function parameters action = {} actions = next(a for a in events_data['actions'] - if a['name'] == e['action']['name']) + if a['name'] == e['action']['name']) action['name'] = actions['name'] params = [] for p in actions['parameters']: |