From 9d50046d54cd2c1ff340ef33d259522d2ca8a0b8 Mon Sep 17 00:00:00 2001 From: Raptor Engineering Development Team Date: Tue, 23 Jan 2018 21:21:42 -0600 Subject: Allow per-zone preconditions This lays the groundwork for CPU population-dependent fan control --- control/gen-fan-zone-defs.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py index 43d98bc..f39a414 100755 --- a/control/gen-fan-zone-defs.py +++ b/control/gen-fan-zone-defs.py @@ -659,10 +659,27 @@ 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 'zone_conditions' in p: + for zc in p['zone_conditions']: + if 'zones' in zc: + zone_allowed = False + 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: -- cgit v1.2.1