From ed917dc06de4b594e53275aae29e5cb68ebc0439 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 22 Aug 2025 14:43:57 -0700 Subject: [PATCH] jeepney is actually pretty good, it's 2x faster to get wifi device (0.005s to 0.002s) --- system/ui/lib/wifi_manager_v2.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/system/ui/lib/wifi_manager_v2.py b/system/ui/lib/wifi_manager_v2.py index a3ff8e9315..ab36244545 100644 --- a/system/ui/lib/wifi_manager_v2.py +++ b/system/ui/lib/wifi_manager_v2.py @@ -158,6 +158,36 @@ class WifiManager: # print(f"Got wifi device in {time.monotonic() - t}s: {wifi_device}") return wifi_device + def _get_wifi_device2(self) -> str: + # jeepney version + t = time.monotonic() + msg = new_method_call(self._nm2, "GetDevices") + device_paths = self._bus2.send_and_get_reply(msg).body[0] + # print(f'DEVICE PATHS: {device_paths}') + + wifi_device = None + for device_path in device_paths: + # Create a DBusAddress for the device + dev_addr = DBusAddress(device_path, bus_name=NM, interface=NM_PROPERTIES_IFACE) + print('dev_addr', dev_addr) + + # Build the Get(DeviceType) call + msg = new_method_call(dev_addr, "Get", signature="ss", body=(NM_DEVICE_IFACE, "DeviceType")) + + # Send the message and get the reply + reply = self._bus2.send_and_get_reply(msg) + + # The property value is wrapped in a variant, so extract it + dev_type = reply.body[0][1] + print(f'Device {device_path} type: {dev_type}') + # print(f'Device {device_path} type: {dev_type} is wifi? {dev_type == NM_DEVICE_TYPE_WIFI}') + + if dev_type == NM_DEVICE_TYPE_WIFI: + wifi_device = device_path + break + print(f"Got wifi device2 in {time.monotonic() - t}s: {wifi_device}") + return wifi_device + def connect_to_network(self, ssid: str, password: str | None): t = time.monotonic()