diff options
author | Raptor Engineering Development Team <support@raptorengineering.com> | 2018-01-23 21:21:42 -0600 |
---|---|---|
committer | Raptor Engineering Development Team <support@raptorengineering.com> | 2018-05-04 00:52:54 -0500 |
commit | 4f2f08d447147fdfe88366c4c9a7cf013e12c5e2 (patch) | |
tree | 0374983c155a63b10f374eedc0df0c0a37557102 | |
parent | 1f31c03d0a05dc18467f995e7220232a4a51e938 (diff) | |
download | phosphor-fan-presence-4f2f08d447147fdfe88366c4c9a7cf013e12c5e2.tar.gz phosphor-fan-presence-4f2f08d447147fdfe88366c4c9a7cf013e12c5e2.zip |
Allow per-zone preconditions
This lays the groundwork for CPU population-dependent fan control
-rwxr-xr-x | control/gen-fan-zone-defs.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py index 43d98bc..2f227b9 100755 --- a/control/gen-fan-zone-defs.py +++ b/control/gen-fan-zone-defs.py @@ -659,10 +659,29 @@ def getEventsInZone(zone_num, zone_conditions, events_data): # Add precondition if given if ('precondition' in e) and \ (e['precondition'] is not None): - event['pc'] = addPrecondition(zone_num, + precondition_applies_to_zone = True + if 'events' in e['precondition']: + for p in e['precondition']['events']: + # Verify precondition applies to current zone + if 'groups' in p: + for g in p['groups']: + if 'zone_conditions' in g: + zone_allowed = False + for zc in g['zone_conditions']: + if 'zones' in zc: + for z in zc['zones']: + if z == zone_num: + zone_allowed = True + if zone_allowed == False: + precondition_applies_to_zone = False + + if precondition_applies_to_zone == True: + event['pc'] = addPrecondition(zone_num, zone_conditions, e, events_data) + else: + continue else: event = getEvent(zone_num, zone_conditions, e, events_data) if not event: |