diff options
| author | thedoc <thedoc@atom.(none)> | 2009-12-07 22:38:20 +0100 |
|---|---|---|
| committer | thedoc <thedoc@atom.(none)> | 2009-12-07 22:38:20 +0100 |
| commit | 67858ed10ece500b2cf68dafb39886a0b873ec4c (patch) | |
| tree | 70ce402d1a310eaf5299aaba929c0c9ddde2d0f7 /lib/python/Components/FanControl.py | |
| parent | 7950c2de2dbfd5bfee3650faaf45301187f7184a (diff) | |
| download | enigma2-67858ed10ece500b2cf68dafb39886a0b873ec4c.tar.gz enigma2-67858ed10ece500b2cf68dafb39886a0b873ec4c.zip | |
first working version of TempFanControl plugin with Sensors and FanControl component
Diffstat (limited to 'lib/python/Components/FanControl.py')
| -rw-r--r-- | lib/python/Components/FanControl.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/lib/python/Components/FanControl.py b/lib/python/Components/FanControl.py new file mode 100644 index 00000000..d7986c25 --- /dev/null +++ b/lib/python/Components/FanControl.py @@ -0,0 +1,76 @@ +import os + +from Components.config import config, ConfigSubList, ConfigSubsection, ConfigSlider +from Tools.BoundFunction import boundFunction + +class FanControl: + # ATM there's only support for one fan + def __init__(self): + if os.path.exists("/proc/stb/fp/fan_vlt") or os.path.exists("/proc/stb/fp/fan_pwm") or os.path.exists("/proc/stb/fp/fan_speed"): + self.fancount = 1 + else: + self.fancount = 0 + self.createConfig() + + def createConfig(self): + def setVlt(fancontrol, fanid, configElement): + fancontrol.setVoltage(fanid, configElement.value) + def setPWM(fancontrol, fanid, configElement): + fancontrol.setPWM(fanid, configElement.value) + + config.fans = ConfigSubList() + for fanid in range(self.getFanCount()): + default_vlt = self.getVoltage(fanid) + default_pwm = self.getPWM(fanid) + fan = ConfigSubsection() + fan.vlt = ConfigSlider(default = default_vlt, increment = 10, limits = (0, 255)) + fan.pwm = ConfigSlider(default = default_vlt, increment = 10, limits = (0, 255)) + fan.vlt.addNotifier(boundFunction(setVlt, self, fanid)) + fan.pwm.addNotifier(boundFunction(setPWM, self, fanid)) + config.fans.append(fan) + + def getConfig(self, fanid): + return config.fans[fanid] + + def getFanCount(self): + return self.fancount + + def hasRPMSensor(self, fanid): + return os.path.exists("/proc/stb/fp/fan_speed") + + def hasFanControl(self, fanid): + return os.path.exists("/proc/stb/fp/fan_vlt") or os.path.exists("/proc/stb/fp/fan_pwm") + + def getFanSpeed(self, fanid): + f = open("/proc/stb/fp/fan_speed", "r") + value = int(f.readline().strip()[:-4]) + f.close() + return value + + def getVoltage(self, fanid): + f = open("/proc/stb/fp/fan_vlt", "r") + value = int(f.readline().strip(), 16) + f.close() + return value + + def setVoltage(self, fanid, value): + if value > 255: + return + f = open("/proc/stb/fp/fan_vlt", "w") + f.write("%x" % value) + f.close() + + def getPWM(self, fanid): + f = open("/proc/stb/fp/fan_pwm", "r") + value = int(f.readline().strip(), 16) + f.close() + return value + + def setPWM(self, fanid, value): + if value > 255: + return + f = open("/proc/stb/fp/fan_pwm", "w") + f.write("%x" % value) + f.close() + +fancontrol = FanControl()
\ No newline at end of file |
