From 2d0f75151696c263715fe0e7d78bcba9e13948d9 Mon Sep 17 00:00:00 2001 From: Rahix <rahix@rahix.de> Date: Wed, 16 Aug 2023 23:58:39 +0200 Subject: [PATCH] st3m: wifi: Make camp wifi setting functional Add a wifi module which manages the interface setup when camp wifi is enabled. --- python_payload/mypystubs/network.pyi | 13 ++++++++++++ python_payload/st3m/run.py | 5 ++++- python_payload/st3m/wifi.py | 30 ++++++++++++++++++++++++++++ sim/fakes/network.py | 15 ++++++++++++++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 python_payload/mypystubs/network.pyi create mode 100644 python_payload/st3m/wifi.py create mode 100644 sim/fakes/network.py diff --git a/python_payload/mypystubs/network.pyi b/python_payload/mypystubs/network.pyi new file mode 100644 index 0000000000..13d68ef5c7 --- /dev/null +++ b/python_payload/mypystubs/network.pyi @@ -0,0 +1,13 @@ +from st3m.goose import Optional + +STA_IF: int + +class WLAN: + def __init__(self, mode: int) -> None: + pass + def active(self, active: bool) -> bool: + return False + def connect(self, ssid: bytes, key: Optional[bytes] = None) -> None: + pass + def isconnected(self) -> bool: + return False diff --git a/python_payload/st3m/run.py b/python_payload/st3m/run.py index 8f7dfec2d7..48708f4a77 100644 --- a/python_payload/st3m/run.py +++ b/python_payload/st3m/run.py @@ -13,7 +13,7 @@ from st3m.ui.view import View, ViewManager, ViewTransitionBlend from st3m.ui.elements.menus import SimpleMenu, SunMenu from st3m.application import discover_bundles, BundleMetadata from st3m.about import About -from st3m import settings, logging, processors +from st3m import settings, logging, processors, wifi import captouch, audio, leds, gc import os @@ -35,6 +35,9 @@ def _make_reactor() -> Reactor: settings.onoff_button_swap.subscribe(_onoff_button_swap_update) _onoff_button_swap_update() + + settings.onoff_camp_wifi.subscribe(wifi._onoff_camp_wifi_update) + wifi._onoff_camp_wifi_update() return reactor diff --git a/python_payload/st3m/wifi.py b/python_payload/st3m/wifi.py new file mode 100644 index 0000000000..b30efcaa22 --- /dev/null +++ b/python_payload/st3m/wifi.py @@ -0,0 +1,30 @@ +import network +from st3m import settings + +iface = None + + +def setup_camp_wifi() -> None: + global iface + iface = network.WLAN(network.STA_IF) + iface.active(True) + iface.connect(b"Camp2023-open") + + +def disable() -> None: + if iface is not None: + iface.active(False) + + +def is_connected() -> bool: + if iface is not None: + return iface.isconnected() + else: + return False + + +def _onoff_camp_wifi_update() -> None: + if settings.onoff_camp_wifi.value: + setup_camp_wifi() + else: + disable() diff --git a/sim/fakes/network.py b/sim/fakes/network.py new file mode 100644 index 0000000000..1ff7b268e4 --- /dev/null +++ b/sim/fakes/network.py @@ -0,0 +1,15 @@ +STA_IF = 1 + + +class WLAN: + def __init__(self, mode): + pass + + def active(self, active): + return False + + def connect(self, ssid, key=None): + pass + + def isconnected(self): + return False -- GitLab