From 7052b78ccedf771a5772d1b424f7df2f0ad1931f Mon Sep 17 00:00:00 2001 From: Hector van der Aa Date: Wed, 29 Jul 2026 16:10:33 +0100 Subject: [PATCH] Added queue put and get with print --- main.py | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/main.py b/main.py index 7a51db9..3aa7123 100644 --- a/main.py +++ b/main.py @@ -1,17 +1,22 @@ -from queue import Queue +from queue import Empty, Queue from time import sleep -from typing import final import pyudev -from gpiozero import Device -from gpiozero.pins.mock import MockFactory from gpiozero import LED from threading import Thread, Event +from dataclasses import dataclass red = LED(17) yellow = LED(27) blue = LED(22) +@dataclass +class DiskEvent: + event: str + node: str + serial: str + + def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None: context = pyudev.Context() @@ -22,16 +27,22 @@ def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None: for device in iter(monitor.poll, None): if device.action == "add" and device.device_type == "disk": - print("\nDisk connected") - print(f"Device: {device.device_node}") - print(f"Name: {device.sys_name}") - print(f"Model: {device.get('ID_MODEL', 'Unknown')}") - print(f"Serial: {device.get('ID_SERIAL_SHORT', 'Unknown')}") - print(f"Bus: {device.get('ID_BUS', 'Unknown')}") + eventQueue.put( + DiskEvent( + event="connected", + node=f"{device.device_node}", + serial=f"{device.get('ID_SERIAL_SHORT', 'Unknown')}", + ) + ) elif device.action == "remove" and device.device_type == "disk": - print("\nDisk disconnected") - print(f"Name: {device.sys_name}") + eventQueue.put( + DiskEvent( + event="disconnected", + node=f"{device.device_node}", + serial=f"{device.get('ID_SERIAL_SHORT', 'Unknown')}", + ) + ) if stopEvent.is_set(): return @@ -40,7 +51,7 @@ def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None: def main() -> None: try: stopEvent = Event() - diskEventQueue = Queue() + diskEventQueue: Queue[DiskEvent] = Queue() diskPollThread = Thread( target=diskPollWorker, @@ -51,7 +62,10 @@ def main() -> None: diskPollThread.start() - while True: + try: + event = diskEventQueue.get_nowait() + print(event) + except Empty: sleep(1) finally: