def main(name): global socket_map, gps_lock, font, spinning, caution_written socket_map = generate_map(name) gps_lock = Lock() font = ImageFont.truetype(getenv('PENGUPILOT_PATH') + '/display/service/verdana.ttf', 11) t = Thread(target = spinning_reader) t.daemon = True t.start() t1 = Thread(target = cpuavg) t1.daemon = True t1.start() t2 = Thread(target = pmreader) t2.daemon = True t2.start() t3 = Thread(target = gps) t3.daemon = True t3.start() screens = [(draw_health, 10), (draw_gps, 10), (draw_gps2, 10)] screen = 0 oled.init('/dev/i2c-3', W, H) sleep(5) try: while True: try: if not spinning: caution_written = False oled.invert(False) t = time() while time() < t + screens[screen][1]: image = Image.new("1", (W, H), BLACK) draw = ImageDraw.Draw(image) screens[screen][0](draw) show_image(image) sleep(1) if critical: alert = Alert(1.0, 0.1, 1, batt_low, True) alert.start() alert.join() else: caution() sleep(0.2) except Exception, e: print e screen = (screen + 1) % len(screens) except: oled.invert(False) oled.clear() oled.update()
def main(name): global socket_map, gps_lock, font, spinning, caution_written socket_map = generate_map(name) gps_lock = Lock() font = ImageFont.truetype( getenv('PENGUPILOT_PATH') + '/display/service/verdana.ttf', 11) t = Thread(target=spinning_reader) t.daemon = True t.start() t1 = Thread(target=cpuavg) t1.daemon = True t1.start() t2 = Thread(target=pmreader) t2.daemon = True t2.start() t3 = Thread(target=gps) t3.daemon = True t3.start() screens = [(draw_health, 10), (draw_gps, 10), (draw_gps2, 10)] screen = 0 oled.init('/dev/i2c-3', W, H) sleep(5) try: while True: try: if not spinning: caution_written = False oled.invert(False) t = time() while time() < t + screens[screen][1]: image = Image.new("1", (W, H), BLACK) draw = ImageDraw.Draw(image) screens[screen][0](draw) show_image(image) sleep(1) if critical: alert = Alert(1.0, 0.1, 1, batt_low, True) alert.start() alert.join() else: caution() sleep(0.2) except Exception, e: print e screen = (screen + 1) % len(screens) except: oled.invert(False) oled.clear() oled.update()
def run(self): self._init_draw() while self.running: if self.contin_draw: self._init_draw() sleep(self.pre) for _ in range(self.cnt): oled.invert(True) sleep(self.inner) oled.invert(False) sleep(self.inner)
def caution(): global caution_written, blink_state if not caution_written: caution_written = True image = Image.new("1", (W, H), BLACK) txt = "CAUTION" font = fit_text_width(txt, 1.0) draw = ImageDraw.Draw(image) dim = font.getsize(txt) draw.text(((W - dim[0]) / 2, (H - dim[1]) / 2), txt, WHITE, font=font) decorations(draw) show_image(image) else: oled.invert(blink_state) if blink_state: blink_state = False else: blink_state = True
def caution(): global caution_written, blink_state if not caution_written: caution_written = True image = Image.new("1", (W, H), BLACK) txt = "CAUTION" font = fit_text_width(txt, 1.0) draw = ImageDraw.Draw(image) dim = font.getsize(txt) draw.text(((W - dim[0]) / 2, (H - dim[1]) / 2), txt, WHITE, font = font) decorations(draw) show_image(image) else: oled.invert(blink_state) if blink_state: blink_state = False else: blink_state = True