From fe614d026ac90ac9a148daa5c0caef1af62ef02f Mon Sep 17 00:00:00 2001 From: Sven Sager Date: Sun, 20 Apr 2025 19:19:13 +0200 Subject: [PATCH] feat(dbus): Add support for configuring 'revpi-con-can' feature Introduce the `configure_con_can` function to manage enabling, disabling, status checking, and availability of the 'revpi-con-can' feature. Update the `AVAILABLE_FEATURES` dictionary to integrate 'revpi-con-can' as a configurable feature. --- .../system_config/interface_config.py | 3 +- .../system_config/revpi_config.py | 28 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/revpi_middleware/dbus_middleware1/system_config/interface_config.py b/src/revpi_middleware/dbus_middleware1/system_config/interface_config.py index f16a754..e3fe7d3 100644 --- a/src/revpi_middleware/dbus_middleware1/system_config/interface_config.py +++ b/src/revpi_middleware/dbus_middleware1/system_config/interface_config.py @@ -8,6 +8,7 @@ from logging import getLogger from .revpi_config import ( ConfigActions, configure_avahi_daemon, + configure_con_can, configure_dphys_swapfile, configure_external_antenna, configure_gui, @@ -79,7 +80,7 @@ def get_feature(feature: str) -> FeatureFunction: AVAILABLE_FEATURES = { "gui": FeatureFunction(configure_gui, []), - "revpi-con-can": False, + "revpi-con-can": FeatureFunction(configure_con_can, []), "dphys-swapfile": FeatureFunction(configure_dphys_swapfile, []), "pimodbus-master": FeatureFunction(simple_systemd, ["pimodbus-master.service"]), "pimodbus-slave": FeatureFunction(simple_systemd, ["pimodbus-slave.service"]), diff --git a/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py b/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py index 33bb0b9..bb8a702 100644 --- a/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py +++ b/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py @@ -198,6 +198,34 @@ def configure_avahi_daemon(action: ConfigActions): return return_value +def configure_con_can(action: ConfigActions): + revpi = RevPiConfig() + if action is ConfigActions.AVAILABLE: + return revpi.with_con_bridge + + dt_overlay = "revpi-con-can" + config_txt = ConfigTxt() + + if action is ConfigActions.ENABLE and revpi.with_con_bridge: + config_txt.clear_dtoverlays([dt_overlay]) + config_txt.add_name_value("dtoverlay", dt_overlay) + config_txt.save_config() + subprocess.call(["/usr/bin/dtoverlay", dt_overlay]) + + elif action is ConfigActions.DISABLE and revpi.with_con_bridge: + config_txt.clear_dtoverlays([dt_overlay]) + config_txt.save_config() + subprocess.call(["/usr/bin/dtoverlay", "-r", dt_overlay]) + + elif action is ConfigActions.STATUS: + return revpi.with_con_bridge and dt_overlay in config_txt.get_values("dtparam") + + else: + raise ValueError(f"action {action} not supported") + + return None + + def configure_dphys_swapfile(action: ConfigActions): return_value = simple_systemd(action, "dphys-swapfile.service")