From f22fbdf81428627576a0258d92770ea00f5480a1 Mon Sep 17 00:00:00 2001 From: Sven Sager Date: Sun, 20 Apr 2025 19:18:41 +0200 Subject: [PATCH] feat(dbus): Add support for configuring the external antenna Introduce the `configure_external_antenna` function to manage external antenna settings, including enable, disable, and status checks. Update the feature configuration in `interface_config` to include this functionality. This enhances WiFi-related configuration options. --- .../system_config/interface_config.py | 3 ++- .../system_config/revpi_config.py | 25 +++++++++++++++++++ 2 files changed, 27 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 a4dee25..f16a754 100644 --- a/src/revpi_middleware/dbus_middleware1/system_config/interface_config.py +++ b/src/revpi_middleware/dbus_middleware1/system_config/interface_config.py @@ -9,6 +9,7 @@ from .revpi_config import ( ConfigActions, configure_avahi_daemon, configure_dphys_swapfile, + configure_external_antenna, configure_gui, simple_systemd, ) @@ -92,5 +93,5 @@ AVAILABLE_FEATURES = { "bluetooth": False, "ieee80211": False, "avahi": FeatureFunction(configure_avahi_daemon, []), - "external-antenna": False, + "external-antenna": FeatureFunction(configure_external_antenna, []), } 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 3c6397c..b27e835 100644 --- a/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py +++ b/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py @@ -211,6 +211,31 @@ def configure_dphys_swapfile(action: ConfigActions): return return_value +def configure_external_antenna(action: ConfigActions): + revpi = RevPiConfig() + if action is ConfigActions.AVAILABLE: + return revpi.with_wifi + + config_txt = ConfigTxt() + + if action is ConfigActions.ENABLE and revpi.with_wifi: + config_txt.clear_dtparams(["ant1", "ant2"]) + config_txt.add_name_value("dtparam", "ant2") + config_txt.save_config() + + elif action is ConfigActions.DISABLE and revpi.with_wifi: + config_txt.clear_dtparams(["ant1", "ant2"]) + config_txt.save_config() + + elif action is ConfigActions.STATUS: + return revpi.with_wifi and "ant2" in config_txt.get_values("dtparam") + + else: + raise ValueError(f"action {action} not supported") + + return None + + def configure_gui(action: ConfigActions): gui_available = access("/usr/bin/startx", X_OK)