X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/d4ac90a0740a22c86e8f18a49a594e9a8f3746df..92362f1b73f1e61ad0cb1c581b318b360e0bb6fe:/Navigation.py?ds=sidebyside diff --git a/Navigation.py b/Navigation.py index ece89227..f46b92d4 100644 --- a/Navigation.py +++ b/Navigation.py @@ -1,14 +1,14 @@ -from enigma import eServiceCenter, eServiceReference, pNavigation, getBestPlayableServiceReference +from enigma import eServiceCenter, eServiceReference, pNavigation, getBestPlayableServiceReference, iPlayableService from Components.ParentalControl import parentalControl from Tools.BoundFunction import boundFunction +from Tools.DreamboxHardware import setFPWakeuptime, getFPWakeuptime, getFPWasTimerWakeup, clearFPWasTimerWakeup +from time import time import RecordTimer import SleepTimer - +import Screens.Standby import NavigationInstance import ServiceReference -from time import time - # TODO: remove pNavgation, eNavigation and rewrite this stuff in python. class Navigation: def __init__(self): @@ -28,14 +28,28 @@ class Navigation: self.record_event = [ ] self.currentlyPlayingServiceReference = None self.currentlyPlayingService = None - self.state = 0 self.RecordTimer = RecordTimer.RecordTimer() + if getFPWasTimerWakeup(): + clearFPWasTimerWakeup() + if getFPWasTimerWakeup(): # sanity check to detect if the FP driver is working correct! + print "buggy fp driver detected!!! please update drivers.... ignore timer wakeup!" + setFPWakeuptime(0) + elif len(self.getRecordings()) or abs(self.RecordTimer.getNextRecordingTime() - time()) <= 360: + setFPWakeuptime(0x89ABCDEF) + if getFPWakeuptime() != 0x89ABCDEF: # sanity check to detect if the FP Atmel Firmware is working correct! + print "buggy atmel firmware detected!! atmel update needed... ignore fp timer wakeup!" + setFPWakeuptime(0) + elif not Screens.Standby.inTryQuitMainloop: # not a shutdown messagebox is open + RecordTimer.RecordTimerEntry.TryQuitMainloop(0) # start shutdown handling + setFPWakeuptime(1) self.SleepTimer = SleepTimer.SleepTimer() def dispatchEvent(self, i): - self.state = i != 1 for x in self.event: x(i) + if i == iPlayableService.evEnd: + self.currentlyPlayingServiceReference = None + self.currentlyPlayingService = None def dispatchRecordEvent(self, rec_service, event): # print "record_event", rec_service, event @@ -44,24 +58,25 @@ class Navigation: def playService(self, ref, checkParentalControl = True): oldref = self.currentlyPlayingServiceReference + if ref and oldref and ref == oldref: + print "ignore request to play already running service" + return 0 print "playing", ref and ref.toString() - self.currentlyPlayingServiceReference = None - self.currentlyPlayingService = None if ref is None: self.stopService() return 0 - if not checkParentalControl or parentalControl.isServicePlayable(ref.toCompareString(), boundFunction(self.playService, checkParentalControl = False)): + if not checkParentalControl or parentalControl.isServicePlayable(ref, boundFunction(self.playService, checkParentalControl = False)): if ref.flags & eServiceReference.isGroup: if not oldref: oldref = eServiceReference() playref = getBestPlayableServiceReference(ref, oldref) - if not playref or (checkParentalControl and not parentalControl.isServicePlayable(playref.toCompareString(), boundFunction(self.playService, checkParentalControl = False))): + if not playref or (checkParentalControl and not parentalControl.isServicePlayable(playref, boundFunction(self.playService, checkParentalControl = False))): self.stopService() return 0 else: playref = ref if self.pnav and not self.pnav.playService(playref): - self.currentlyPlayingServiceReference = ref + self.currentlyPlayingServiceReference = playref return 0 else: self.stopService() @@ -91,29 +106,18 @@ class Navigation: return self.pnav and self.pnav.getRecordings() def getCurrentService(self): - if self.state: - if not self.currentlyPlayingService: - self.currentlyPlayingService = self.pnav and self.pnav.getCurrentService() - return self.currentlyPlayingService - return None + if not self.currentlyPlayingService: + self.currentlyPlayingService = self.pnav and self.pnav.getCurrentService() + return self.currentlyPlayingService def stopService(self): print "stopService" if self.pnav: self.pnav.stopService() - self.currentlyPlayingService = None - self.currentlyPlayingServiceReference = None def pause(self, p): return self.pnav and self.pnav.pause(p) - def recordWithTimer(self, ref, begin, end, name, description, eit): - if isinstance(ref, eServiceReference): - ref = ServiceReference.ServiceReference(ref) - entry = RecordTimer.RecordTimerEntry(ref, begin, end, name, description, eit) - self.RecordTimer.record(entry) - return entry - def shutdown(self): self.RecordTimer.shutdown() self.ServiceHandler = None