summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcontrol/gen-fan-zone-defs.py38
-rw-r--r--control/templates/defs.mako5
-rw-r--r--control/templates/fan_zone_defs.mako.cpp5
3 files changed, 34 insertions, 14 deletions
diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py
index e83512a..fdbdab8 100755
--- a/control/gen-fan-zone-defs.py
+++ b/control/gen-fan-zone-defs.py
@@ -130,6 +130,10 @@ def getGroups(zNum, zCond, edata, events):
member['interface'] = eGroups['interface']
member['property'] = eGroups['property']['name']
member['type'] = eGroups['property']['type']
+ # Use defined service to note member on zone object
+ if ('service' in eGroup) and \
+ (eGroup['service'] is not None):
+ member['service'] = eGroup['service']
# Add expected group member's property value if given
if ('value' in eGroups['property']) and \
(eGroups['property']['value'] is not None):
@@ -266,13 +270,16 @@ def getEvent(zone_num, zone_conditions, e, events_data):
signal = {}
eMatch = next(m for m in events_data['matches']
if m['name'] == eMatches['name'])
- signal['match'] = eMatch['name']
- params = []
- if ('parameters' in eMatch) and \
- (eMatch['parameters'] is not None):
- for p in eMatch['parameters']:
- params.append(member[str(p)])
- signal['mparams'] = params
+ # If service not given, subscribe to signal match
+ if ('service' not in member):
+ signal['match'] = eMatch['name']
+ params = []
+ if ('parameters' in eMatch) and \
+ (eMatch['parameters'] is not None):
+ for p in eMatch['parameters']:
+ params.append(member[str(p)])
+ signal['mparams'] = params
+
if ('parameters' in eMatch['signal']) and \
(eMatch['signal']['parameters'] is not None):
eSignal = eMatch['signal']
@@ -418,13 +425,16 @@ def addPrecondition(zNum, zCond, event, events_data):
signal = {}
eMatch = next(m for m in events_data['matches']
if m['name'] == eMatches['name'])
- signal['match'] = eMatch['name']
- params = []
- if ('parameters' in eMatch) and \
- (eMatch['parameters'] is not None):
- for p in eMatch['parameters']:
- params.append(member[str(p)])
- signal['mparams'] = params
+ # If service not given, subscribe to signal match
+ if ('service' not in member):
+ signal['match'] = eMatch['name']
+ params = []
+ if ('parameters' in eMatch) and \
+ (eMatch['parameters'] is not None):
+ for p in eMatch['parameters']:
+ params.append(member[str(p)])
+ signal['mparams'] = params
+
if ('parameters' in eMatch['signal']) and \
(eMatch['signal']['parameters'] is not None):
eSignal = eMatch['signal']
diff --git a/control/templates/defs.mako b/control/templates/defs.mako
index 2fd3856..bcc0c5b 100644
--- a/control/templates/defs.mako
+++ b/control/templates/defs.mako
@@ -65,6 +65,8 @@ TimerConf{
std::vector<Signal>{
%for s in event['signals']:
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']):
@@ -74,6 +76,9 @@ std::vector<Signal>{
%endif
%endfor
),
+ %else:
+ "",
+ %endif
make_handler(\
${indent(genHandler(sig=s), 3)}\
)
diff --git a/control/templates/fan_zone_defs.mako.cpp b/control/templates/fan_zone_defs.mako.cpp
index fdf5bb2..a73449f 100644
--- a/control/templates/fan_zone_defs.mako.cpp
+++ b/control/templates/fan_zone_defs.mako.cpp
@@ -127,6 +127,8 @@ const std::vector<ZoneGroup> Manager::_zoneLayouts
std::vector<Signal>{
%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']):
@@ -136,6 +138,9 @@ const std::vector<ZoneGroup> Manager::_zoneLayouts
%endif
%endfor
),
+ %else:
+ "",
+ %endif
make_handler(\
${indent(genHandler(sig=s), 9)}\
)
OpenPOWER on IntegriCloud