696c08f11dd4dd44b7552900f7e8e164931d8ebd
[vuplus_dvbapp] / lib / python / Plugins / SystemPlugins / ManualFancontrol / InstandbyOn.py
1 from Components.config import config, ConfigSubList, ConfigSubsection
2 import NavigationInstance
3 from enigma import iRecordableService
4 from Components.ConfigList import ConfigListScreen
5 from Components.config import config, ConfigSubsection, ConfigSelection, ConfigSlider
6 from enigma import eTimer
7
8 config.plugins.simplefancontrols = ConfigSubsection()
9 config.plugins.simplefancontrols.standbymode = ConfigSelection(default = "yes", choices = [
10         ("no", _("no")), ("yes", _("yes"))])
11 config.plugins.simplefancontrols.pwmvalue = ConfigSlider(default = 100, increment = 5, limits = (0, 255))
12
13 class instandbyOn:
14         def __init__(self):
15                 self.fanoffmode = 'OFF'
16                 self.default_pwm_value_onRecordings = 5
17                 config.misc.standbyCounter.addNotifier(self.standbyBegin, initial_call = False)
18                 if config.plugins.simplefancontrols.pwmvalue.value == 0:
19                         self.fanoffmode = 'ON'
20                 self.InitTimer = eTimer()
21                 if self.initConfig not in self.InitTimer.callback:
22                         self.InitTimer.callback.append(self.initConfig)
23                 print "<SimpleFancontrol> init : Timer loop start!!"
24                 self.InitTimer.startLongTimer(3)
25                 print "<SimpleFancontrol> init :  self.fanoffmode : ", self.fanoffmode
26                 print "<SimpleFancontrol> init :  config.plugins.simplefancontrols.pwmvalue.value : ", config.plugins.simplefancontrols.pwmvalue.value
27
28         def initConfig(self):
29                 print "<SimpleFancontrol>Try initConfig..."
30                 if NavigationInstance.instance is None:
31                         self.InitTimer.startLongTimer(1)
32                 else:
33                         if config.plugins.simplefancontrols.pwmvalue.value == 0:
34                                 currentPWM = self.getPWM()
35                                 NavigationInstance.instance.record_event.append(self.getRecordEvent_onFanOFF)
36                                 recordings = NavigationInstance.instance.getRecordings()
37                                 print "<SimpleFancontrol> initConfig :  recordings : ", recordings
38                                 if recordings and currentPWM != self.default_pwm_value_onRecordings:
39                                         self.setPWM(self.default_pwm_value_onRecordings)
40                                 elif not recordings and currentPWM > 0:
41                                         self.setPWM(0)
42                                 else:
43                                         print "<SimpleFancontrol> initConfig : setPWM pass"
44                         elif self.getPWM() != config.plugins.simplefancontrols.pwmvalue.value:
45                                 self.setPWM(config.plugins.simplefancontrols.pwmvalue.value)
46
47         def standbyBegin(self, configElement):
48                         print "<SimpleFancontrol> standbyBegin : config.plugins.fancontrols.standbymode.value : ", config.plugins.simplefancontrols.standbymode.value
49                         print "<SimpleFancontrol> standbyBegin : self.fanoffmode : ", self.fanoffmode
50                         if config.plugins.simplefancontrols.standbymode.value == "yes" and config.plugins.simplefancontrols.pwmvalue > 0:
51                                 from Screens.Standby import inStandby
52                                 inStandby.onClose.append(self.StandbyEnd)
53                                 NavigationInstance.instance.record_event.append(self.getRecordEvent)
54                                 recordings = NavigationInstance.instance.getRecordings()
55                                 if not recordings:
56                                         self.setPWM(0)
57
58         def StandbyEnd(self):
59                         print "<SimpleFancontrol> Standby End"
60                         NavigationInstance.instance.record_event.remove(self.getRecordEvent)
61                         if self.getPWM() == 0:
62                                 self.setPWM(config.plugins.simplefancontrols.pwmvalue.value)
63
64         def getRecordEvent(self, recservice, event):
65                         recordings = len(NavigationInstance.instance.getRecordings())
66                         print "<SimpleFancontrol> recordings : %d , event : %d" % (recordings,event)
67                         if event == iRecordableService.evEnd:
68                                 print "<SimpleFancontrol> getRecordEvent : evEnd"
69                                 if recordings == 0:
70                                         self.setPWM(0)
71                         elif event == iRecordableService.evStart:
72                                 print "<SimpleFancontrol> getRecordEvent : evStart"
73                                 if self.getPWM() == 0:
74                                         self.setPWM(config.plugins.simplefancontrols.pwmvalue.value)
75
76         def getPWM(self):
77                 f = open("/proc/stb/fp/fan_pwm", "r")
78                 value = int(f.readline().strip(), 16)
79                 f.close()
80                 print "<SimpleFancontrol> getPWM : %d "%value
81                 return value
82
83         def setPWM(self, value):
84                 print "<SimpleFancontrol> setPWM to : %d"%value
85                 f = open("/proc/stb/fp/fan_pwm", "w")
86                 f.write("%x" % value)
87                 f.close()
88
89         def appendRecordEventCallback(self):
90                 print "<SimpleFancontrol> appendRecordEventCallback "
91                 NavigationInstance.instance.record_event.append(self.getRecordEvent_onFanOFF)
92                 recordings = NavigationInstance.instance.getRecordings()
93                 if recordings:
94                         instandbyon.setPWM(self.default_pwm_value_onRecordings)
95
96         def removeRecordEventCallback(self):
97                 print "<SimpleFancontrol> removeRecordEventCallback "
98                 NavigationInstance.instance.record_event.remove(self.getRecordEvent_onFanOFF)
99
100         def getRecordEvent_onFanOFF(self, recservice, event):
101                 recordings = len(NavigationInstance.instance.getRecordings())
102                 print "<SimpleFancontrol_> recordings : %d , event : %d" % (recordings,event)
103                 if event == iRecordableService.evEnd:
104                         print "<SimpleFancontrol_> getRecordEvent : evEnd"
105                         if recordings == 0:
106                                 self.setPWM(0)
107                 elif event == iRecordableService.evStart:
108                         print "<SimpleFancontrol_> getRecordEvent : evStart"
109                         if self.getPWM() == 0:
110                                 self.setPWM(self.default_pwm_value_onRecordings)
111
112 instandbyon = instandbyOn()
113