From 6d77dcddba5fc4e450f3963123daa11c88585943 Mon Sep 17 00:00:00 2001 From: Sven Sager Date: Thu, 22 May 2025 11:09:53 +0200 Subject: [PATCH] feat(io): Integrate com.revolutionpi.ios1 bus to daemon Signed-off-by: Sven Sager --- src/revpi_middleware/daemon.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/revpi_middleware/daemon.py b/src/revpi_middleware/daemon.py index 1ea8523..704103e 100644 --- a/src/revpi_middleware/daemon.py +++ b/src/revpi_middleware/daemon.py @@ -9,6 +9,7 @@ from time import perf_counter from . import proginit as pi from .dbus_middleware1.bus_provider import BusProvider +from .ios1.bus_provider_io import BusProviderIo log = getLogger(__name__) @@ -26,6 +27,7 @@ class MiddlewareDaemon: self._running = True self.bus_provider = None + self.io_bus_provider = None self._configure() log.debug("leave MiddlewareDaemon.__init__") @@ -39,11 +41,16 @@ class MiddlewareDaemon: def dbus_start(self): log.debug("enter MiddlewareDaemon.dbus_start") - if self.bus_provider and self.bus_provider.is_alive(): - return - self.bus_provider = BusProvider(use_system_bus=not pi.pargs.use_session_bus) - self.bus_provider.start() + dbus_middleware_running = self.bus_provider and self.bus_provider.is_alive() + if not dbus_middleware_running: + self.bus_provider = BusProvider(use_system_bus=not pi.pargs.use_session_bus) + self.bus_provider.start() + + dbus_io_middleware_running = self.io_bus_provider and self.io_bus_provider.is_alive() + if not dbus_io_middleware_running: + self.io_bus_provider = BusProviderIo(use_system_bus=not pi.pargs.use_session_bus) + self.io_bus_provider.start() log.debug("leave MiddlewareDaemon.dbus_start") @@ -56,6 +63,12 @@ class MiddlewareDaemon: if self.bus_provider.is_alive(): log.warning("dbus provider thread is still alive") + if self.io_bus_provider: + self.io_bus_provider.stop() + self.io_bus_provider.join(timeout=10.0) + if self.io_bus_provider.is_alive(): + log.warning("dbus io provider thread is still alive") + log.debug("leave MiddlewareDaemon.dbus_stop") def reload_config(self) -> None: