Added state switch with button press
This commit is contained in:
13
main.py
13
main.py
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user