aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Components/FanControl.py
diff options
context:
space:
mode:
authorthedoc <thedoc@atom.(none)>2009-12-07 22:38:20 +0100
committerthedoc <thedoc@atom.(none)>2009-12-07 22:38:20 +0100
commit67858ed10ece500b2cf68dafb39886a0b873ec4c (patch)
tree70ce402d1a310eaf5299aaba929c0c9ddde2d0f7 /lib/python/Components/FanControl.py
parent7950c2de2dbfd5bfee3650faaf45301187f7184a (diff)
downloadenigma2-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.py76
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