diff --git a/selfdrive/ui/qt/offroad/wifiManager.cc b/selfdrive/ui/qt/offroad/wifiManager.cc index 971fda4cd3..c7af2f57f6 100644 --- a/selfdrive/ui/qt/offroad/wifiManager.cc +++ b/selfdrive/ui/qt/offroad/wifiManager.cc @@ -68,6 +68,8 @@ void WifiManager::setup() { device_props.setTimeout(DBUS_TIMEOUT); QDBusMessage response = device_props.call("Get", NM_DBUS_INTERFACE_DEVICE, "State"); raw_adapter_state = get_response(response); + + initConnections(); requestScan(); } @@ -342,12 +344,10 @@ void WifiManager::stateChange(unsigned int new_state, unsigned int previous_stat // https://developer.gnome.org/NetworkManager/stable/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html void WifiManager::propertyChange(const QString &interface, const QVariantMap &props, const QStringList &invalidated_props) { if (interface == NM_DBUS_INTERFACE_DEVICE_WIRELESS && props.contains("LastScan")) { - if (knownConnections.isEmpty()) { - knownConnections = listConnections(); - } - if (this->isVisible()) { + if (this->isVisible() || firstScan) { refreshNetworks(); emit refreshSignal(); + firstScan = false; } } } @@ -391,16 +391,14 @@ QString WifiManager::getConnectionSsid(const QDBusObjectPath &path) { return result.value().value("802-11-wireless").value("ssid").toString(); } -QMap WifiManager::listConnections() { - QMap connections; +void WifiManager::initConnections() { QDBusInterface nm(NM_DBUS_SERVICE, NM_DBUS_PATH_SETTINGS, NM_DBUS_INTERFACE_SETTINGS, bus); nm.setTimeout(DBUS_TIMEOUT); const QDBusReply> response = nm.call("ListConnections"); for (const QDBusObjectPath &path : response.value()) { - connections[path] = getConnectionSsid(path); + knownConnections[path] = getConnectionSsid(path); } - return connections; } void WifiManager::activateWifiConnection(const QString &ssid) { diff --git a/selfdrive/ui/qt/offroad/wifiManager.h b/selfdrive/ui/qt/offroad/wifiManager.h index 0fd659c868..23224b3db4 100644 --- a/selfdrive/ui/qt/offroad/wifiManager.h +++ b/selfdrive/ui/qt/offroad/wifiManager.h @@ -64,6 +64,7 @@ private: QString tethering_ssid; QString tetheringPassword = "swagswagcommma"; + bool firstScan = true; QString getAdapter(); bool isWirelessAdapter(const QDBusObjectPath &path); QString get_ipv4_address(); @@ -77,7 +78,7 @@ private: unsigned int get_ap_strength(const QString &network_path); SecurityType getSecurityType(const QString &path); QDBusObjectPath getConnectionPath(const QString &ssid); - QMap listConnections(); + void initConnections(); QString getConnectionSsid(const QDBusObjectPath &path); void setup();