def __init__(self,alarmThread,shutdownCallback,weatherFetcher): threading.Thread.__init__(self) self.alarmThread = alarmThread self.stopping=False self.message="" self.settings = Settings.Settings() self.weather = weatherFetcher self.menu = MenuControl.MenuControl(alarmThread,shutdownCallback) self.menu.setDaemon(True) self.lcd = LCDControl() self.lcd.white() self.setMessage("Booting up...") self.rotor = InputWorker(self) self.rotor.start()
def __init__(self, alarmThread, settings, weather, media, shutdownCallback): threading.Thread.__init__(self) self.alarmThread = alarmThread self.stopping = False self.message = "" self.settings = settings self.weather = weather self.menu = MenuControl.MenuControl(alarmThread, settings, media, shutdownCallback) self.menu.setDaemon(True) self.lcd = LCDControl() self.lcd.white() self.setMessage("Booting up...") if self.settings.getInt('use_rotor') == 1: self.rotor = InputWorker(self) self.rotor.start()
def __init__(self, alarmThread, shutdownCallback, weatherFetcher): threading.Thread.__init__(self) self.alarmThread = alarmThread self.stopping = False self.message = "" self.settings = Settings.Settings() self.weather = weatherFetcher self.menu = MenuControl.MenuControl(alarmThread, shutdownCallback) self.menu.setDaemon(True) self.lcd = LCDControl() self.lcd.white() self.setMessage("Booting up...") self.rotor = InputWorker(self) self.rotor.start()
class LcdThread(threading.Thread): def __init__(self, alarmThread, shutdownCallback, weatherFetcher): threading.Thread.__init__(self) self.alarmThread = alarmThread self.stopping = False self.message = "" self.settings = Settings.Settings() self.weather = weatherFetcher self.menu = MenuControl.MenuControl(alarmThread, shutdownCallback) self.menu.setDaemon(True) self.lcd = LCDControl() self.lcd.white() self.setMessage("Booting up...") self.rotor = InputWorker(self) self.rotor.start() def setBrightness(self, brightness): # We get passes a value from 0 - 15, which we need to scale to 0-255 before passing to LCDControl colVal = int(255 * (float(brightness) / 15)) self.lcd.setColour(colVal, colVal, colVal) def setMessage(self, newMessage, center=False): if newMessage != self.message: self.message = newMessage self.lcd.setMessage(self.message, center) def scroll(self, direction): self.menu.scroll(direction) # Called by InputWorker on press of the select button def select(self): if self.alarmThread.isAlarmSounding(): # Lets snooze for a while self.alarmThread.snooze() return self.menu.select() # Called by InputWorker on press of the cancel button def cancel(self): if self.alarmThread.isAlarmSounding() or self.alarmThread.isSnoozing(): # Stop the alarm! self.alarmThread.stopAlarm() return if self.alarmThread.alarmInSeconds() < self.settings.getInt("preempt_cancel") and not self.menu.isActive(): # We're in the allowable window for pre-empting a cancel alarm, and we're not in the menu log.info("Pre-empt cancel triggered") self.alarmThread.stopAlarm() return self.menu.cancel() def stop(self): self.stopping = True def run(self): self.menu.start() self.lcd.setMessage("Boot finished") while not self.stopping: time.sleep(0.1) try: if self.alarmThread.isAlarmSounding(): self.setMessage("Wakey wakey!", True) continue if self.menu.isActive(): message = self.menu.getMessage() elif self.menu.backgroundRadioActive(): message = "Radio player on" else: now = datetime.datetime.now(pytz.timezone("Europe/London")) message = formatDate(now) message += "\n" message += self.weather.getWeather().display() message += "\n" message += self.alarmThread.getMenuLine() self.setMessage(message, True) except: log.exception("Error in LcdThread loop") # end while not stopping self.setMessage("Shutting down") self.lcd.shutdown() self.menu.stop()
class LcdThread(threading.Thread): def __init__(self, alarmThread, settings, weather, media, shutdownCallback): threading.Thread.__init__(self) self.alarmThread = alarmThread self.stopping = False self.message = "" self.settings = settings self.weather = weather self.menu = MenuControl.MenuControl(alarmThread, settings, media, shutdownCallback) self.menu.setDaemon(True) self.lcd = LCDControl() self.lcd.white() self.setMessage("Booting up...") if self.settings.getInt('use_rotor') == 1: self.rotor = InputWorker(self) self.rotor.start() def setBrightness(self, brightness): # We get passes a value from 0 - 15, which we need to scale to 0-255 before passing to LCDControl colVal = int(255 * (float(brightness) / 15)) self.lcd.setColour(colVal, colVal, colVal) def setMessage(self, newMessage, center=False): if newMessage != self.message: self.message = newMessage self.lcd.setMessage(self.message, center) def scroll(self, direction): self.menu.scroll(direction) # Called by InputWorker on press of the select button def select(self): if self.alarmThread.isAlarmSounding(): # Lets snooze for a while self.alarmThread.snooze() return self.menu.select() # Called by InputWorker on press of the cancel button def cancel(self): if self.alarmThread.isAlarmSounding() or self.alarmThread.isSnoozing(): # Stop the alarm! self.alarmThread.stopAlarm() return if self.alarmThread.alarmInSeconds() < self.settings.getInt( 'preempt_cancel') and not self.menu.isActive(): # We're in the allowable window for pre-empting a cancel alarm, and we're not in the menu log.info("Pre-empt cancel triggered") self.alarmThread.stopAlarm() return self.menu.cancel() def stop(self): self.stopping = True def run(self): self.menu.start() self.lcd.setMessage("Boot finished") while (not self.stopping): time.sleep(0.1) try: if self.alarmThread.isAlarmSounding(): self.setMessage("Wakey wakey!", True) continue if self.menu.isActive(): message = self.menu.getMessage() elif self.menu.backgroundRadioActive(): message = "Radio player on" else: now = datetime.datetime.now( pytz.timezone(self.settings.get('timezone'))) message = formatDate(now) message += "\n" message += self.weather.getWeather().display() message += "\n" message += self.alarmThread.getMenuLine() self.setMessage(message, True) except: log.exception("Error in LcdThread loop") # end while not stopping self.setMessage("Shutting down") self.lcd.shutdown() self.menu.stop()