Exemple #1
0
    def __init__(self,options):
        # command line arguments
        self.options = options
        # Logging
        logging.basicConfig(
            filename=self.options.logfile,
            level=getattr(logging,self.options.loglevel),
            format='%(asctime)-15s %(levelname)-6s %(message)s'            
            )
        logging.info(u"Started yavdr-frontend")
        # dbus SystemBus and SessionBus
        try:
            self.systembus = dbus.SystemBus()
            logging.info(u'Connected to SystemBus')
        except:
            logging.exception(u"could not connect to SystemBus")
            sys.exit(1)
        try:
            self.sessionbus = dbus.SessionBus()
            logging.info(u'Connected to SessionBus')
        except:
            logging.exception(u"could not connect to SessionBus")
            sys.exit(1)   
        
        self.hdf = HDF(options.hdf_file)
        self.running = self.wait_for_vdrstart() # wait for VDR upstart job status running
        
        try:# Add watchdog for vdr-upstart-job to detect stopping and restarts
            logging.debug(u'connecting to upstart')
            self.upstart_vdr = self.systembus.get_object("org.freedesktop.DBus","/com/ubuntu/Upstart/jobs/vdr")
            self.upstart_vdr.connect_to_signal("VDR", self.signal_handler, dbus_interface="com.ubuntu.Upstart0_6.Instance")
            self.systembus.add_signal_receiver(self.signal_handler, interface_keyword='dbus_interface', member_keyword='member', sender_keyword='sender', path_keyword='path'
)
            logging.debug(u'connected to upstart')
        except dbus.DBusException:
            logging.debug(u'ran into exception')
            logging.exception(traceback.print_exc())

        self.vdrCommands = vdrDBusCommands(self) # dbus2vdr fuctions
        self.dbusService = dbusService.dbusService(self)
        self.settings = Settings(self)
        self.graphtft = GraphTFT(self)
        self.wnckC = wnckController(self)
        self.dbusPIP = dbusService.dbusPIP(self)
        self.adeskbar = adeskbarDBus(self.systembus)
        self.powermanager = PowerManager(self.systembus)
        self.frontend = None
        self.lircConnection = lircConnection(self,self.vdrCommands) # connect to (event)lircd-Socket
        try:
            self.startup()
        except dbus.DBusException as error:
            logging.exception('dbus Error, could not init frontend')
            if "ServiceUnknown" in error.get_name():
                logging.error('dbus2vdr not rechable, assuming vdr crashed since entering main instance')
        except:
            logging.exception('something went wrong, could not init frontend')
Exemple #2
0
 def startup(self):
     
     self.vdrCommands = vdrDBusCommands(self) # dbus2vdr fuctions
     self.graphtft = GraphTFT(self)
     self.xbmc = XBMC(self)
     self.youtube = YouTube(self)
     logging.info('run startup()')
     if self.hdf.readKey('vdr.frontend') == 'softhddevice' and self.vdrCommands.vdrSetup.check_plugin('softhddevice'):
         self.settings.check_pulseaudio() # Wait until pulseaudio has loaded it's tcp module
         logging.info(u'Configured softhddevide as primary frontend')
         self.vdrCommands.vdrRemote.enable()
         self.frontend = self.vdrCommands.vdrSofthddevice
     elif self.hdf.readKey('vdr.frontend') == 'sxfe' and self.vdrCommands.vdrSetup.check_plugin('xineliboutput'):
         logging.info('using vdr-sxfe as primary frontend')
         self.frontend = vdrSXFE(self)
         self.vdrCommands.vdrRemote.enable()
     elif self.hdf.readKey('vdr.frontend') == 'xine' and self.vdrCommands.vdrSetup.check_plugin('xine'):
         logging.info('using xine as primary frontend')
         self.frontend = vdrXINE(self)
         self.vdrCommands.vdrRemote.enable()
     elif self.hdf.readKey('vdr.frontend') == 'xbmc':
         self.frontend = self.xbmc
         self.settings.vdr_remote = False # Make shure VDR doesn't listen to remote
         self.vdrCommands.vdrRemote.disable()
     try:
         if self.frontend:
             if self.settings.manualstart and not self.settings.acpi_wakeup:
                 logging.debug('self.frontend exists')
                 self.dbusService.atta()
             else:
                 self.graphtft.graphtft_switch()
                 subprocess.call(["/usr/bin/feh","--bg-fill",self.hdf.readKey('logo_detached')], env=settings.env)
                 if settings.manualstart == False:
                     self.settings.timer = gobject.timeout_add(300000, self.dbusService.send_shutdown)
                 elif self.settings.acpi_wakeup:
                     if self.vdrCommands.vdrSetup.get('MinUserInactivity')[0] != 0:
                         interval, default, answer = setup.vdrsetupget("MinEventTimeout")
                         interval_ms = interval  * 60000 # * 60s * 1000ms
                         settings.timer = gobject.timeout_add(interval_ms, self.dbusService.setUserInactive)
                 
         else:
             logging.debug('self.frontend is None')
         return False
     except:
         logging.exception('no frontend initialized')
         return True