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 e3fe7d3..0e96390 100644 --- a/src/revpi_middleware/dbus_middleware1/system_config/interface_config.py +++ b/src/revpi_middleware/dbus_middleware1/system_config/interface_config.py @@ -12,6 +12,7 @@ from .revpi_config import ( configure_dphys_swapfile, configure_external_antenna, configure_gui, + configure_wifi, simple_systemd, ) from ..dbus_helper import DbusInterface @@ -92,7 +93,7 @@ AVAILABLE_FEATURES = { ), "revpipyload": FeatureFunction(simple_systemd, ["revpipyload.service"]), "bluetooth": False, - "ieee80211": False, + "ieee80211": FeatureFunction(configure_wifi, []), "avahi": FeatureFunction(configure_avahi_daemon, []), "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 7cfe715..fdd25a3 100644 --- a/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py +++ b/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py @@ -314,6 +314,34 @@ def configure_gui(action: ConfigActions): raise ValueError(f"action {action} not supported") +def configure_wifi(action: ConfigActions): + revpi = RevPiConfig() + + if action is ConfigActions.ENABLE: + if revpi.rfkill_index is not None: + subprocess.call(["rfkill", "unblock", str(revpi.rfkill_index)]) + + elif action is ConfigActions.DISABLE: + if revpi.rfkill_index is not None: + subprocess.call(["rfkill", "block", str(revpi.rfkill_index)]) + + elif action is ConfigActions.AVAILABLE: + return revpi.with_wifi and revpi.rfkill_index is not None + + elif action is ConfigActions.STATUS: + if revpi.rfkill_index is None: + return False + + with open(f"/sys/class/rfkill/rfkill{revpi.rfkill_index}/soft", "r") as f: + buffer = f.read().strip() + return buffer == "0" + + else: + raise ValueError(f"action {action} not supported") + + return None + + def simple_systemd(action: ConfigActions, unit: str): bus = SystemBus() systemd_manager = bus.get(".systemd1")