patch by Moritz Venn: allow plugins to provide a Wakeup-Time
authorFelix Domke <tmbinc@elitedvb.net>
Wed, 2 Jan 2008 17:22:25 +0000 (17:22 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Wed, 2 Jan 2008 17:22:25 +0000 (17:22 +0000)
lib/python/Components/PluginComponent.py
lib/python/Plugins/Plugin.py
mytest.py

index 590f428..818ea58 100644 (file)
@@ -116,4 +116,12 @@ class PluginComponent:
        def resetWarnings(self):
                self.warnings = [ ]
 
+       def getNextWakeupTime(self):
+               wakeup = -1
+               for p in self.pluginList:
+                       current = p.getWakeupTime()
+                       if current > -1 and wakeup < current:
+                               wakeup = current
+               return int(wakeup)
+
 plugins = PluginComponent()
index f6f9b48..583c9ad 100644 (file)
@@ -45,7 +45,7 @@ class PluginDescriptor:
        # or return a function which is called with session and the interface name for extended setup of this interface
        WHERE_NETWORKSETUP = 10
        
-       def __init__(self, name = "Plugin", where = [ ], description = "", icon = None, fnc = None):
+       def __init__(self, name = "Plugin", where = [ ], description = "", icon = None, fnc = None, wakeupfnc = None):
                self.name = name
                if type(where) is list:
                        self.where = where
@@ -59,6 +59,8 @@ class PluginDescriptor:
                else:
                        self.icon = icon
 
+               self.wakeupfnc = wakeupfnc
+
                self.__call__ = fnc
 
        def updateIcon(self, path):
@@ -67,5 +69,8 @@ class PluginDescriptor:
                else:
                        self.icon = None
 
+       def getWakeupTime(self):
+               return self.wakeupfnc and self.wakeupfnc() or -1
+
        def __eq__(self, other):
                return self.__call__ == other.__call__
index 99aecb1..3bdbcf2 100644 (file)
--- a/mytest.py
+++ b/mytest.py
@@ -528,17 +528,18 @@ def runScreenTest():
 
        from time import time
        from Tools.DreamboxHardware import setFPWakeuptime
-       #get next record timer start time
-       nextRecordingTime = session.nav.RecordTimer.getNextRecordingTime()
-       #get next zap timer start time
-       nextZapTime = session.nav.RecordTimer.getNextZapTime()
        #get currentTime
        nowTime = time()
-       if nextZapTime != -1 and nextRecordingTime != -1:
-               startTime = nextZapTime < nextRecordingTime and nextZapTime or nextRecordingTime
-       else:
-               startTime = nextZapTime != -1 and nextZapTime or nextRecordingTime
-       if startTime != -1:
+       wakeupList = [
+               x for x in
+                               [session.nav.RecordTimer.getNextRecordingTime(),
+                               session.nav.RecordTimer.getNextZapTime(),
+                               plugins.getNextWakeupTime()]
+               if x != -1
+       ]
+       wakeupList.sort()
+       if len(wakeupList):
+               startTime = wakeupList.pop(0)
                if (startTime - nowTime < 330): # no time to switch box back on
                        setFPWakeuptime(nowTime + 30) # so switch back on in 30 seconds
                else: