From 2fca3242009b8c9e64c27a498769241efc962973 Mon Sep 17 00:00:00 2001 From: Hector van der Aa Date: Wed, 29 Jul 2026 16:23:06 +0100 Subject: [PATCH] Added led worker thread and disk state --- main.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/main.py b/main.py index 2112d79..b831b8d 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,6 @@ from queue import Empty, Queue from time import sleep +from typing import Literal import pyudev from gpiozero import LED from threading import Thread, Event @@ -17,6 +18,9 @@ class DiskEvent: serial: str +DiskState = Literal["disconnected", "pairing", "connected"] + + def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None: context = pyudev.Context() @@ -48,10 +52,26 @@ def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None: return +def ledWorker(stopEvent: Event, diskState: DiskState) -> None: + yellowCtr: int = 0 + while not stopEvent.is_set(): + if diskState == "disconnected": + yellow.off() + elif diskState == "connected": + yellow.on() + elif diskState == "pairing": + if yellowCtr % 2 == 0: + yellow.on() + else: + yellow.off() + sleep(1) + + def main() -> None: try: stopEvent = Event() diskEventQueue: Queue[DiskEvent] = Queue() + diskState: DiskState = "pairing" diskPollThread = Thread( target=diskPollWorker, @@ -62,6 +82,15 @@ def main() -> None: diskPollThread.start() + ledThread = Thread( + target=ledWorker, + name="led_thread", + args=(stopEvent, diskState), + daemon=True, + ) + + ledThread.start() + while True: try: event = diskEventQueue.get_nowait()