From 3915522bdef711312bd77131946486bb4a757e53 Mon Sep 17 00:00:00 2001 From: Thomas Farstrike Date: Fri, 19 Dec 2025 16:00:53 +0100 Subject: [PATCH] WifiService: also auto connect to hidden networks --- .../lib/mpos/net/wifi_service.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/internal_filesystem/lib/mpos/net/wifi_service.py b/internal_filesystem/lib/mpos/net/wifi_service.py index c1c3e775..e3f43184 100644 --- a/internal_filesystem/lib/mpos/net/wifi_service.py +++ b/internal_filesystem/lib/mpos/net/wifi_service.py @@ -50,6 +50,7 @@ class WifiService: """ Scan for available networks and connect to the first saved network found. Networks are tried in order of signal strength (strongest first). + Hidden networks are also tried even if they don't appear in the scan. Args: network_module: Network module for dependency injection (testing) @@ -64,9 +65,13 @@ class WifiService: # RSSI is at index 3, higher values (less negative) = stronger signal networks = sorted(networks, key=lambda n: n[3], reverse=True) + # Track which SSIDs we've tried (to avoid retrying hidden networks) + tried_ssids = set() + for n in networks: ssid = n[0].decode() rssi = n[3] + tried_ssids.add(ssid) print(f"WifiService: Found network '{ssid}' (RSSI: {rssi} dBm)") if ssid in WifiService.access_points: @@ -81,6 +86,18 @@ class WifiService: else: print(f"WifiService: Skipping '{ssid}' (not configured)") + # Try hidden networks that weren't in the scan results + for ssid, config in WifiService.access_points.items(): + if config.get("hidden") and ssid not in tried_ssids: + password = config.get("password") + print(f"WifiService: Attempting hidden network '{ssid}'") + + if WifiService.attempt_connecting(ssid, password, network_module=network_module): + print(f"WifiService: Connected to hidden network '{ssid}'") + return True + else: + print(f"WifiService: Failed to connect to hidden network '{ssid}'") + print("WifiService: No saved networks found or connected") return False