diff options
author | Matthew Barth <msbarth@us.ibm.com> | 2017-08-11 13:16:28 -0500 |
---|---|---|
committer | Matthew Barth <msbarth@us.ibm.com> | 2017-08-14 11:23:45 -0500 |
commit | be25083d3d74310ecd1024a3e7986341f4d3c549 (patch) | |
tree | 1a52749c6b59672870b1b63eff6ca79e6086af11 /control/gen-fan-zone-defs.py | |
parent | bc65160987751be9cc0070284395ec1d752de0f1 (diff) | |
download | phosphor-fan-presence-be25083d3d74310ecd1024a3e7986341f4d3c549.tar.gz phosphor-fan-presence-be25083d3d74310ecd1024a3e7986341f4d3c549.zip |
Add interfacesAdded subscriptions to groups
For each group in an event, subscribe to the interfacesAdded signals in
the case where the member(s) of a group may or may not exist when
initialized.
Additionally, updated to use the propertiesChanged function to remove
repetitive property change subscription lines generated.
Change-Id: I52b0cd839383ebb90e93a81b5bac02ee7c4f44b2
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
Diffstat (limited to 'control/gen-fan-zone-defs.py')
-rwxr-xr-x | control/gen-fan-zone-defs.py | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py index ea05a0f..45ca774 100755 --- a/control/gen-fan-zone-defs.py +++ b/control/gen-fan-zone-defs.py @@ -115,16 +115,27 @@ const std::vector<ZoneGroup> Manager::_zoneLayouts std::vector<PropertyChange>{ %for s in event['signal']: PropertyChange{ - interface("org.freedesktop.DBus.Properties") + - member("PropertiesChanged") + - type::signal() + - path("${s['path']}") + - arg0namespace("${s['interface']}"), + interfacesAdded("${s['obj_path']}"), + make_handler(objectSignal<${s['type']}>( + "${s['path']}", + "${s['interface']}", + "${s['property']}", + handler::setProperty<${s['type']}>( + "${s['path']}", + "${s['interface']}", + "${s['property']}" + ) + )) + }, + PropertyChange{ + propertiesChanged( + "${s['path']}", + "${s['interface']}"), make_handler(propertySignal<${s['type']}>( "${s['interface']}", "${s['property']}", handler::setProperty<${s['type']}>( - "${s['member']}", + "${s['path']}", "${s['interface']}", "${s['property']}" ) @@ -151,11 +162,9 @@ const std::vector<ZoneGroup> Manager::_zoneLayouts )) }, PropertyChange{ - interface("org.freedesktop.DBus.Properties") + - member("PropertiesChanged") + - type::signal() + - path("${s['path']}") + - arg0namespace("${s['interface']}"), + propertiesChanged( + "${s['path']}", + "${s['interface']}"), make_handler(propertySignal<${s['type']}>( "${s['interface']}", "${s['property']}", @@ -293,7 +302,7 @@ def getEventsInZone(zone_num, zone_conditions, events_data): if g['name'] == e['group']) for member in groups['members']: members = {} - members['type'] = groups['type'] + members['obj_path'] = groups['type'] members['name'] = (groups['type'] + member) members['interface'] = e['interface'] @@ -333,11 +342,11 @@ def getEventsInZone(zone_num, zone_conditions, events_data): signal = [] for path in group: signals = {} + signals['obj_path'] = path['obj_path'] signals['path'] = path['name'] signals['interface'] = e['interface'] signals['property'] = e['property']['name'] signals['type'] = e['property']['type'] - signals['member'] = path['name'] signal.append(signals) event['signal'] = signal |