diff --git a/selfdrive/thermald.py b/selfdrive/thermald.py index aa4c47a6ee..3e6f61d6fe 100755 --- a/selfdrive/thermald.py +++ b/selfdrive/thermald.py @@ -107,7 +107,7 @@ _FAN_SPEEDS = [0, 16384, 32768, 65535] _BAT_TEMP_THERSHOLD = 45. -def handle_fan_eon(max_cpu_temp, bat_temp, fan_speed): +def handle_fan_eon(max_cpu_temp, bat_temp, fan_speed, ignition): new_speed_h = next(speed for speed, temp_h in zip(_FAN_SPEEDS, _TEMP_THRS_H) if temp_h > max_cpu_temp) new_speed_l = next(speed for speed, temp_l in zip(_FAN_SPEEDS, _TEMP_THRS_L) if temp_l > max_cpu_temp) @@ -126,9 +126,15 @@ def handle_fan_eon(max_cpu_temp, bat_temp, fan_speed): return fan_speed -def handle_fan_uno(max_cpu_temp, bat_temp, fan_speed): - # TODO: implement better fan control - return int(interp(max_cpu_temp, [40.0, 80.0], [0, 100])) + +def handle_fan_uno(max_cpu_temp, bat_temp, fan_speed, ignition): + new_speed = int(interp(max_cpu_temp, [40.0, 80.0], [0, 100])) + + if not ignition: + new_speed = min(30, new_speed) + + return new_speed + def thermald_thread(): # prevent LEECO from undervoltage @@ -141,6 +147,7 @@ def thermald_thread(): health_sock = messaging.sub_sock('health', timeout=health_timeout) location_sock = messaging.sub_sock('gpsLocation') + ignition = False fan_speed = 0 count = 0 @@ -213,7 +220,7 @@ def thermald_thread(): max_comp_temp = max(max_cpu_temp, msg.thermal.mem / 10., msg.thermal.gpu / 10.) bat_temp = msg.thermal.bat/1000. - fan_speed = handle_fan(max_cpu_temp, bat_temp, fan_speed) + fan_speed = handle_fan(max_cpu_temp, bat_temp, fan_speed, ignition) msg.thermal.fanSpeed = fan_speed # thermal logic with hysterisis