diff --git a/main.py b/main.py index 5e4851f..0b161e2 100644 --- a/main.py +++ b/main.py @@ -18,7 +18,7 @@ class DiskEvent: serial: str -DiskState = Literal["disconnected", "pairing", "connected"] +DiskState = Literal["disconnected", "pairing", "connecting", "connected"] def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None: @@ -52,21 +52,40 @@ def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None: return -def ledWorker(stopEvent: Event, diskState: DiskState) -> None: - yellowCtr: int = 0 +def ledWorker(stopEvent: Event, state) -> None: + yellowCtr = 0 + previousState: DiskState | None = None + while not stopEvent.is_set(): + diskState: DiskState = state.diskState + + if diskState != previousState: + yellowCtr = 0 + previousState = diskState + if diskState == "disconnected": yellow.off() + elif diskState == "connected": yellow.on() + elif diskState == "pairing": if yellowCtr % 2 == 0: yellow.on() else: yellow.off() - yellowCtr += 1 - yellowCtr %= 2 - sleep(1) + + elif diskState == "connecting": + if yellowCtr % 4 < 2: + yellow.on() + else: + yellow.off() + + yellowCtr += 1 + + stopEvent.wait(0.25) + + yellow.off() def main() -> None: