Added state switch with button press

This commit is contained in:
2026-07-29 17:19:50 +01:00
parent d55c69ab36
commit d6bcbfafe8

13
main.py
View File

@@ -1,14 +1,16 @@
from functools import partial
from queue import Empty, Queue from queue import Empty, Queue
from time import sleep from time import sleep
from typing import Literal from typing import Literal
import pyudev import pyudev
from gpiozero import LED from gpiozero import LED, Button
from threading import Thread, Event from threading import Thread, Event
from dataclasses import dataclass from dataclasses import dataclass
red = LED(17) red = LED(17)
yellow = LED(27) yellow = LED(27)
blue = LED(22) blue = LED(22)
button = Button(23, pull_up=True, bounce_time=0.05)
@dataclass @dataclass
@@ -21,6 +23,10 @@ class DiskEvent:
DiskState = Literal["disconnected", "pairing", "connecting", "connected"] DiskState = Literal["disconnected", "pairing", "connecting", "connected"]
def onButtonPressed(diskState: DiskState) -> None:
diskState = "pairing"
def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None: def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None:
context = pyudev.Context() context = pyudev.Context()
@@ -83,14 +89,13 @@ def ledWorker(stopEvent: Event, diskState: DiskState) -> None:
stopEvent.wait(0.25) stopEvent.wait(0.25)
yellow.off()
def main() -> None: def main() -> None:
try: try:
stopEvent = Event() stopEvent = Event()
diskEventQueue: Queue[DiskEvent] = Queue() diskEventQueue: Queue[DiskEvent] = Queue()
diskState: DiskState = "pairing" diskState: DiskState = "disconnected"
button.when_activated = partial(onButtonPressed, diskState)
diskPollThread = Thread( diskPollThread = Thread(
target=diskPollWorker, target=diskPollWorker,