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()
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()
def center_pressed(self): if self.state == 'SET_TIME': self.state = 'COUNTDOWN' self.alarmtime = (time.time() + self.countdown if not self.alarmtime else None) elif self.state == 'ALARM': lcd.set_backlight_enabled(True) self.state = 'SET_TIME' self.set_needs_repaint()
def update(self): if self.state == 'COUNTDOWN': if self.alarmtime and time.time() >= self.alarmtime: self.fire_alarm() elif self.state == 'ALARM': lcd.set_backlight_enabled(bool(int(time.time()) % 2 == 0)) if self.countdown_str != self.countdownstring(): self.countdown_str = self.countdownstring() self.set_needs_repaint()
def wakeup(self): logging.info('Waking up') lcd.set_backlight_enabled(True) self.sleeping = False global UPDATE_RATE UPDATE_RATE = float(CONFIG['update_rate_hz'])
def sleep(self): logging.info('Going to sleep') lcd.set_backlight_enabled(False) self.sleeping = True global UPDATE_RATE UPDATE_RATE = float(CONFIG['update_rate_sleep_hz'])