Beispiel #1
0
    def run(self):
        try:
            self.sleeptimer.resetsleep()
            lcd.init()
            self.framebuffer = graphics.Surface(lcd.LCD_WIDTH, lcd.LCD_HEIGHT)
            lcd.set_backlight_enabled(True)

            self.broker.register_service(services.clock.ClockService)
            self.broker.register_service(services.weather.WeatherService)
            self.broker.register_service(services.podcast.PodcastService)
            self.broker.register_service(services.audio.AudioService)
            self.broker.register_service(
                services.public_transport.PublicTransportService)

            for p, args in self.panel_defs:
                self.addpanel(p, args)
            self.activate_panel(0)

            self.broker.start_bound_services()

            while True:
                services.deliver_pending_notifications()
                self.sleeptimer.update_sleep()
                self.trigger_key_events()
                self.active_panel.update()
                if self.activate_panel:
                    if self.active_panel.paint_if_needed(self.active_panel_fb):
                        # logging.debug('Updating LCD (active_panel)')
                        lcd.update(self.active_panel_fb)
                time.sleep(1.0 / UPDATE_RATE)
        finally:
            self.broker.stop_running()
Beispiel #2
0
    def run(self):
        try:
            self.sleeptimer.resetsleep()
            lcd.init()
            self.framebuffer = graphics.Surface(lcd.LCD_WIDTH, lcd.LCD_HEIGHT)
            lcd.set_backlight_enabled(True)

            self.broker.register_service(services.clock.ClockService)
            self.broker.register_service(services.weather.WeatherService)
            self.broker.register_service(services.podcast.PodcastService)
            self.broker.register_service(services.audio.AudioService)
            self.broker.register_service(services.public_transport.PublicTransportService)

            for p, args in self.panel_defs:
                self.addpanel(p, args)
            self.activate_panel(0)

            self.broker.start_bound_services()

            while True:
                services.deliver_pending_notifications()
                self.sleeptimer.update_sleep()
                self.trigger_key_events()
                self.active_panel.update()
                if self.activate_panel:
                    if self.active_panel.paint_if_needed(self.active_panel_fb):
                        # logging.debug('Updating LCD (active_panel)')
                        lcd.update(self.active_panel_fb)
                time.sleep(1.0 / UPDATE_RATE)
        finally:
            self.broker.stop_running()
Beispiel #3
0
 def activate_panel(self, panel_idx):
     logging.debug('Activated panel %s',
                   self.active_panel.__class__.__name__)
     self.panel_idx = panel_idx % len(self.panels)
     if self.active_panel:
         self.active_panel.deactivate()
     self.active_panel = self.panels[self.panel_idx]
     self.active_panel.activate()
     self.active_panel_fb = self.backing_stores[self.active_panel]
     if not self.needs_repaint:
         # logging.debug('Updating LCD -- no repaint needed (active_panel)')
         lcd.update(self.active_panel_fb)
     else:
         self.active_panel.paint(self.active_panel_fb)
         lcd.update(self.active_panel_fb)
Beispiel #4
0
 def activate_panel(self, panel_idx):
     logging.debug('Activated panel %s',
                   self.active_panel.__class__.__name__)
     self.panel_idx = panel_idx % len(self.panels)
     if self.active_panel:
         self.active_panel.deactivate()
     self.active_panel = self.panels[self.panel_idx]
     self.active_panel.activate()
     self.active_panel_fb = self.backing_stores[self.active_panel]
     if not self.needs_repaint:
         # logging.debug('Updating LCD -- no repaint needed (active_panel)')
         lcd.update(self.active_panel_fb)
     else:
         self.active_panel.paint(self.active_panel_fb)
         lcd.update(self.active_panel_fb)
Beispiel #5
0
 def lcd_update(self):
     # logging.debug('Updating LCD (framebuffer)')
     lcd.update(self.framebuffer)
Beispiel #6
0
 def lcd_update(self):
     # logging.debug('Updating LCD (framebuffer)')
     lcd.update(self.framebuffer)