From 6765b86f86bdb8d8b406ffeaa236c268acf3f2f6 Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Fri, 10 Jun 2022 02:33:45 +0000 Subject: [PATCH] Added cooldown threshold in separate variable. Fixed bug where state change might happen twice on one loop iteration. --- .../temp_fan_daemon_a06.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Code/devterm_fan_daemon_cpi_a06/temp_fan_daemon_a06.py b/Code/devterm_fan_daemon_cpi_a06/temp_fan_daemon_a06.py index 7267a6e..681eb91 100755 --- a/Code/devterm_fan_daemon_cpi_a06/temp_fan_daemon_a06.py +++ b/Code/devterm_fan_daemon_cpi_a06/temp_fan_daemon_a06.py @@ -10,7 +10,10 @@ cpus = [] mid_freq = 0 max_freq = 0 +#Start the fan above this temperature MAX_TEMP=60000 +#Cool additionally this far past MAX_TEMP before turning the fan off +TEMP_THRESH=2000 ONCE_TIME=30 lastTemp = 0 @@ -86,9 +89,11 @@ def set_performance(scale): def fan_loop(): global lastTemp + statechange = False while True: temps = glob.glob('/sys/class/thermal/thermal_zone[0-9]/') temps.sort() + statechange = False for var in temps: _f = os.path.join(var,"temp") #print( open(_f).read().strip("\n") ) @@ -98,13 +103,17 @@ def fan_loop(): if lastTemp <= MAX_TEMP: sys.stderr.write("Temp: " + str(_t) + " Fan on.\n") fan_on() + statechange = True else: #Don't turn it off right at the threshold - if int(_t) + 2000 < MAX_TEMP: - if lastTemp + 2000 >= MAX_TEMP: + if int(_t) + TEMP_THRESH < MAX_TEMP: + if lastTemp + TEMP_THRESH >= MAX_TEMP: sys.stderr.write("Temp: " + str(_t) + " Fan off.\n") fan_off() - lastTemp = int(_t) + statechange = True + lastTemp = int(_t) + if statechange: + break time.sleep(5) def main(argv):