from pwm import PWM
import os,time,sys


temp_path="/sys/class/thermal/thermal_zone0/temp"
def CPUtemp():
        """CPU Temp """
        with open(temp_path, 'r') as f:
            value = f.readline().strip()
#            f.close()
        return int(value)
    
def valmap(value, istart, istop, ostart, ostop):
    if value < istart :
        ret = int(ostart)
    else :
        ret = int(ostart + (ostop - ostart) * ((value - istart) / (istop - istart)))
    
    return ret


pwm0 = PWM(0)
pwm0.export()
pwm0.period = 1000000
pwm0.duty_cycle = 250000
pwm0.enable = True

debug=False

minTemp=48000
maxTemp=85000

try:
    while (1):

        T=CPUtemp()
        PDC=valmap(T,minTemp,maxTemp,1,800000)
        Dt=valmap(T,minTemp,maxTemp,-5,4)
        if (debug) : print (T,PDC,5-Dt)
        pwm0.duty_cycle=PDC
        time.sleep(5-Dt)
        
except(KeyboardInterrupt):
    print("Fan ctrl interrupted by keyboard")
    pwm0.duty_cycle = 250000
#    pwm0.enable = False
    sys.exit()

