Added queue put and get with print
This commit is contained in:
42
main.py
42
main.py
@@ -1,17 +1,22 @@
|
|||||||
from queue import Queue
|
from queue import Empty, Queue
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from typing import final
|
|
||||||
import pyudev
|
import pyudev
|
||||||
from gpiozero import Device
|
|
||||||
from gpiozero.pins.mock import MockFactory
|
|
||||||
from gpiozero import LED
|
from gpiozero import LED
|
||||||
from threading import Thread, Event
|
from threading import Thread, Event
|
||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
red = LED(17)
|
red = LED(17)
|
||||||
yellow = LED(27)
|
yellow = LED(27)
|
||||||
blue = LED(22)
|
blue = LED(22)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class DiskEvent:
|
||||||
|
event: str
|
||||||
|
node: str
|
||||||
|
serial: str
|
||||||
|
|
||||||
|
|
||||||
def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None:
|
def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None:
|
||||||
context = pyudev.Context()
|
context = pyudev.Context()
|
||||||
|
|
||||||
@@ -22,16 +27,22 @@ def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None:
|
|||||||
|
|
||||||
for device in iter(monitor.poll, None):
|
for device in iter(monitor.poll, None):
|
||||||
if device.action == "add" and device.device_type == "disk":
|
if device.action == "add" and device.device_type == "disk":
|
||||||
print("\nDisk connected")
|
eventQueue.put(
|
||||||
print(f"Device: {device.device_node}")
|
DiskEvent(
|
||||||
print(f"Name: {device.sys_name}")
|
event="connected",
|
||||||
print(f"Model: {device.get('ID_MODEL', 'Unknown')}")
|
node=f"{device.device_node}",
|
||||||
print(f"Serial: {device.get('ID_SERIAL_SHORT', 'Unknown')}")
|
serial=f"{device.get('ID_SERIAL_SHORT', 'Unknown')}",
|
||||||
print(f"Bus: {device.get('ID_BUS', 'Unknown')}")
|
)
|
||||||
|
)
|
||||||
|
|
||||||
elif device.action == "remove" and device.device_type == "disk":
|
elif device.action == "remove" and device.device_type == "disk":
|
||||||
print("\nDisk disconnected")
|
eventQueue.put(
|
||||||
print(f"Name: {device.sys_name}")
|
DiskEvent(
|
||||||
|
event="disconnected",
|
||||||
|
node=f"{device.device_node}",
|
||||||
|
serial=f"{device.get('ID_SERIAL_SHORT', 'Unknown')}",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
if stopEvent.is_set():
|
if stopEvent.is_set():
|
||||||
return
|
return
|
||||||
@@ -40,7 +51,7 @@ def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None:
|
|||||||
def main() -> None:
|
def main() -> None:
|
||||||
try:
|
try:
|
||||||
stopEvent = Event()
|
stopEvent = Event()
|
||||||
diskEventQueue = Queue()
|
diskEventQueue: Queue[DiskEvent] = Queue()
|
||||||
|
|
||||||
diskPollThread = Thread(
|
diskPollThread = Thread(
|
||||||
target=diskPollWorker,
|
target=diskPollWorker,
|
||||||
@@ -51,7 +62,10 @@ def main() -> None:
|
|||||||
|
|
||||||
diskPollThread.start()
|
diskPollThread.start()
|
||||||
|
|
||||||
while True:
|
try:
|
||||||
|
event = diskEventQueue.get_nowait()
|
||||||
|
print(event)
|
||||||
|
except Empty:
|
||||||
sleep(1)
|
sleep(1)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
|||||||
Reference in New Issue
Block a user