don't try to use adapter when not available

pull/21432/head
ShaneSmiskol 4 years ago
parent 170c353822
commit 3887fc87eb
  1. 18
      selfdrive/ui/qt/offroad/wifiManager.cc
  2. 3
      selfdrive/ui/qt/offroad/wifiManager.h

@ -266,7 +266,7 @@ void WifiManager::deactivateConnection(const QString &ssid) {
nm.setTimeout(dbus_timeout);
QDBusObjectPath pth = get_response<QDBusObjectPath>(nm.call("Get", connection_iface, "SpecificObject"));
if (pth.path() != "" && pth.path() != "/") {
if (validPath(pth.path())) {
QString Ssid = get_property(pth.path(), "Ssid");
if (Ssid == ssid) {
QDBusInterface nm2(nm_service, nm_path, nm_iface, bus);
@ -314,6 +314,10 @@ bool WifiManager::isWirelessAdapter(const QDBusObjectPath &path) {
return deviceType == device_type_wifi;
}
bool WifiManager::validPath(const QString &path) {
return !path.isEmpty() && path != "/";
}
void WifiManager::requestScan() {
QDBusInterface nm(nm_service, adapter, wireless_device_iface, bus);
nm.setTimeout(dbus_timeout);
@ -395,7 +399,7 @@ void WifiManager::propertyChange(const QString &interface, const QVariantMap &pr
}
void WifiManager::deviceAdded(const QDBusObjectPath &path) {
if (isWirelessAdapter(path) && (adapter.isEmpty() || adapter == "/")) {
if (isWirelessAdapter(path) && !validPath(adapter)) {
adapter = path.path();
setup();
}
@ -412,7 +416,7 @@ void WifiManager::newConnection(const QDBusObjectPath &path) {
void WifiManager::disconnect() {
QString active_ap = get_active_ap();
if (active_ap != "" && active_ap != "/") {
if (validPath(active_ap)) {
deactivateConnection(get_property(active_ap, "Ssid"));
}
}
@ -500,9 +504,11 @@ void WifiManager::disableTethering() {
}
bool WifiManager::tetheringEnabled() {
QString active_ap = get_active_ap();
if (active_ap != "" && active_ap != "/") {
return get_property(active_ap, "Ssid") == tethering_ssid;
if (validPath(adapter)) {
QString active_ap = get_active_ap();
if (validPath(active_ap)) {
return get_property(active_ap, "Ssid") == tethering_ssid;
}
}
return false;
}

@ -33,7 +33,7 @@ public:
void requestScan();
QVector<Network> seen_networks;
QMap<QDBusObjectPath, QString> knownConnections;
QString ipv4_address;
QString ipv4_address = "";
void refreshNetworks();
void forgetConnection(const QString &ssid);
@ -64,6 +64,7 @@ private:
QString getAdapter();
bool isWirelessAdapter(const QDBusObjectPath &path);
bool validPath(const QString &path);
QString get_ipv4_address();
QList<Network> get_networks();
void connect(const QByteArray &ssid, const QString &username, const QString &password, SecurityType security_type);

Loading…
Cancel
Save