fix frequently not working timeshift/record stop
[vuplus_dvbapp] / timer.py
index 0569635..aaae0b2 100644 (file)
--- a/timer.py
+++ b/timer.py
@@ -3,6 +3,8 @@ from time import strftime, time, localtime, mktime
 from enigma import eTimer
 import datetime
 
+import NavigationInstance
+
 class TimerEntry:
        StateWaiting  = 0
        StatePrepared = 1
@@ -21,7 +23,13 @@ class TimerEntry:
                self.backoff = 0
                
                self.disabled = False
-               
+
+       def resetState(self):
+               self.state = self.StateWaiting
+               self.cancelled = False
+               self.first_try_prepare = True
+               self.timeChanged()
+
        def resetRepeated(self):
                self.repeated = int(0)
 
@@ -58,7 +66,7 @@ class TimerEntry:
 
                        day = []
                        flags = self.repeated
-                       for x in range(0, 7):
+                       for x in (0, 1, 2, 3, 4, 5, 6):
                                if (flags & 1 == 1):
                                        day.append(0)
                                        print "Day: " + str(x)
@@ -169,6 +177,27 @@ class Timer:
                        insort(self.timer_list, entry)
                        if not noRecalc:
                                self.calcNextActivation()
+
+# small piece of example code to understand how to use record simulation
+#              if NavigationInstance.instance:
+#                      lst = [ ]
+#                      cnt = 0
+#                      for timer in self.timer_list:
+#                              print "timer", cnt
+#                              cnt += 1
+#                              if timer.state == 0: #waiting
+#                                      lst.append(NavigationInstance.instance.recordService(timer.service_ref))
+#                              else:
+#                                      print "STATE: ", timer.state
+#
+#                      for rec in lst:
+#                              if rec.start(True): #simulate
+#                                      print "FAILED!!!!!!!!!!!!"
+#                              else:
+#                                      print "OK!!!!!!!!!!!!!!"
+#                              NavigationInstance.instance.stopRecordService(rec)
+#              else:
+#                      print "no NAV"
        
        def setNextActivation(self, when):
                delay = int((when - time()) * 1000)
@@ -193,7 +222,7 @@ class Timer:
                min = int(time()) + self.MaxWaitTime
                
                # calculate next activation point
-               if len(self.timer_list):
+               if self.timer_list:
                        w = self.timer_list[0].getNextActivation()
                        if w < min:
                                min = w
@@ -217,7 +246,7 @@ class Timer:
        
        def doActivate(self, w):
                self.timer_list.remove(w)
-               
+
                # when activating a timer which has already passed,
                # simply abort the timer. don't run trough all the stages.
                if w.shouldSkip():
@@ -249,5 +278,5 @@ class Timer:
                t = int(time()) + 1
                
                # we keep on processing the first entry until it goes into the future.
-               while len(self.timer_list) and self.timer_list[0].getNextActivation() < t:
+               while self.timer_list and self.timer_list[0].getNextActivation() < t:
                        self.doActivate(self.timer_list[0])