From eb37e409ee085b8489c656e350b47f5b5930aa0a Mon Sep 17 00:00:00 2001 From: sshane Date: Sat, 10 Jul 2021 22:28:24 -0700 Subject: [PATCH] networking: clean up refreshing (#21537) --- selfdrive/ui/qt/offroad/wifiManager.cc | 65 +++++++++----------------- selfdrive/ui/qt/offroad/wifiManager.h | 1 - 2 files changed, 23 insertions(+), 43 deletions(-) diff --git a/selfdrive/ui/qt/offroad/wifiManager.cc b/selfdrive/ui/qt/offroad/wifiManager.cc index 4341c2babf..78c974a9e3 100644 --- a/selfdrive/ui/qt/offroad/wifiManager.cc +++ b/selfdrive/ui/qt/offroad/wifiManager.cc @@ -77,13 +77,33 @@ void WifiManager::refreshNetworks() { seen_networks.clear(); seen_ssids.clear(); ipv4_address = get_ipv4_address(); - for (Network &network : get_networks()) { - if (seen_ssids.count(network.ssid)) { + + QDBusInterface nm(NM_DBUS_SERVICE, adapter, NM_DBUS_INTERFACE_DEVICE_WIRELESS, bus); + nm.setTimeout(DBUS_TIMEOUT); + + const QDBusReply> &response = nm.call("GetAllAccessPoints"); + for (const QDBusObjectPath &path : response.value()) { + QByteArray ssid = get_property(path.path(), "Ssid"); + if (ssid.isEmpty() || seen_ssids.contains(ssid)) { continue; } - seen_ssids.push_back(network.ssid); + unsigned int strength = get_ap_strength(path.path()); + SecurityType security = getSecurityType(path.path()); + ConnectedType ctype; + if (path.path() != activeAp) { + ctype = ConnectedType::DISCONNECTED; + } else { + if (ssid == connecting_to_network) { + ctype = ConnectedType::CONNECTING; + } else { + ctype = ConnectedType::CONNECTED; + } + } + Network network = {path.path(), ssid, strength, ctype, security}; + seen_ssids.push_back(ssid); seen_networks.push_back(network); } + std::sort(seen_networks.begin(), seen_networks.end(), compare_by_strength); } QString WifiManager::get_ipv4_address() { @@ -120,45 +140,6 @@ QString WifiManager::get_ipv4_address() { return ""; } -QList WifiManager::get_networks() { - QList r; - QDBusInterface nm(NM_DBUS_SERVICE, adapter, NM_DBUS_INTERFACE_DEVICE_WIRELESS, bus); - nm.setTimeout(DBUS_TIMEOUT); - - QDBusMessage response = nm.call("GetAllAccessPoints"); - QVariant first = response.arguments().at(0); - - const QDBusArgument &args = first.value(); - args.beginArray(); - while (!args.atEnd()) { - QDBusObjectPath path; - args >> path; - - QByteArray ssid = get_property(path.path(), "Ssid"); - if (ssid.isEmpty()) { - continue; - } - unsigned int strength = get_ap_strength(path.path()); - SecurityType security = getSecurityType(path.path()); - ConnectedType ctype; - if (path.path() != activeAp) { - ctype = ConnectedType::DISCONNECTED; - } else { - if (ssid == connecting_to_network) { - ctype = ConnectedType::CONNECTING; - } else { - ctype = ConnectedType::CONNECTED; - } - } - Network network = {path.path(), ssid, strength, ctype, security}; - r.push_back(network); - } - args.endArray(); - - std::sort(r.begin(), r.end(), compare_by_strength); - return r; -} - SecurityType WifiManager::getSecurityType(const QString &path) { int sflag = get_property(path, "Flags").toInt(); int wpaflag = get_property(path, "WpaFlags").toInt(); diff --git a/selfdrive/ui/qt/offroad/wifiManager.h b/selfdrive/ui/qt/offroad/wifiManager.h index d598406df2..4e8a3fd592 100644 --- a/selfdrive/ui/qt/offroad/wifiManager.h +++ b/selfdrive/ui/qt/offroad/wifiManager.h @@ -67,7 +67,6 @@ private: QString getAdapter(); bool isWirelessAdapter(const QDBusObjectPath &path); QString get_ipv4_address(); - QList get_networks(); void connect(const QByteArray &ssid, const QString &username, const QString &password, SecurityType security_type); QString activeAp; QString getActiveAp();