Networking: use active AP signal (#21461)

* use active ap signal

* working
old-commit-hash: d2d1aaad08
commatwo_master
sshane 4 years ago committed by GitHub
parent 9754cf991f
commit 8256cd7564
  1. 29
      selfdrive/ui/qt/offroad/wifiManager.cc
  2. 2
      selfdrive/ui/qt/offroad/wifiManager.h

@ -128,7 +128,6 @@ QList<Network> WifiManager::get_networks() {
QDBusMessage response = nm.call("GetAllAccessPoints"); QDBusMessage response = nm.call("GetAllAccessPoints");
QVariant first = response.arguments().at(0); QVariant first = response.arguments().at(0);
QString active_ap = get_active_ap();
const QDBusArgument &args = first.value<QDBusArgument>(); const QDBusArgument &args = first.value<QDBusArgument>();
args.beginArray(); args.beginArray();
while (!args.atEnd()) { while (!args.atEnd()) {
@ -142,7 +141,7 @@ QList<Network> WifiManager::get_networks() {
unsigned int strength = get_ap_strength(path.path()); unsigned int strength = get_ap_strength(path.path());
SecurityType security = getSecurityType(path.path()); SecurityType security = getSecurityType(path.path());
ConnectedType ctype; ConnectedType ctype;
if (path.path() != active_ap) { if (path.path() != activeAp) {
ctype = ConnectedType::DISCONNECTED; ctype = ConnectedType::DISCONNECTED;
} else { } else {
if (ssid == connecting_to_network) { if (ssid == connecting_to_network) {
@ -289,15 +288,6 @@ uint WifiManager::get_wifi_device_state() {
return resp; return resp;
} }
QString WifiManager::get_active_ap() {
QDBusInterface device_props(NM_DBUS_SERVICE, adapter, NM_DBUS_INTERFACE_PROPERTIES, bus);
device_props.setTimeout(DBUS_TIMEOUT);
QDBusMessage response = device_props.call("Get", NM_DBUS_INTERFACE_DEVICE_WIRELESS, "ActiveAccessPoint");
QDBusObjectPath r = get_response<QDBusObjectPath>(response);
return r.path();
}
QByteArray WifiManager::get_property(const QString &network_path , const QString &property) { QByteArray WifiManager::get_property(const QString &network_path , const QString &property) {
QDBusInterface device_props(NM_DBUS_SERVICE, network_path, NM_DBUS_INTERFACE_PROPERTIES, bus); QDBusInterface device_props(NM_DBUS_SERVICE, network_path, NM_DBUS_INTERFACE_PROPERTIES, bus);
device_props.setTimeout(DBUS_TIMEOUT); device_props.setTimeout(DBUS_TIMEOUT);
@ -349,6 +339,9 @@ void WifiManager::propertyChange(const QString &interface, const QVariantMap &pr
emit refreshSignal(); emit refreshSignal();
firstScan = false; firstScan = false;
} }
} else if (interface == NM_DBUS_INTERFACE_DEVICE_WIRELESS && props.contains("ActiveAccessPoint")) {
const QDBusObjectPath &path = props.value("ActiveAccessPoint").value<QDBusObjectPath>();
activeAp = path.path();
} }
} }
@ -371,9 +364,8 @@ void WifiManager::newConnection(const QDBusObjectPath &path) {
} }
void WifiManager::disconnect() { void WifiManager::disconnect() {
QString active_ap = get_active_ap(); if (activeAp != "" && activeAp != "/") {
if (active_ap != "" && active_ap != "/") { deactivateConnection(get_property(activeAp, "Ssid"));
deactivateConnection(get_property(active_ap, "Ssid"));
} }
} }
@ -383,7 +375,7 @@ QDBusObjectPath WifiManager::getConnectionPath(const QString &ssid) {
return knownConnections.key(conn_ssid); return knownConnections.key(conn_ssid);
} }
} }
return QDBusObjectPath(); // unknown ssid, return uninitialized path return QDBusObjectPath();
} }
QString WifiManager::getConnectionSsid(const QDBusObjectPath &path) { QString WifiManager::getConnectionSsid(const QDBusObjectPath &path) {
@ -458,11 +450,8 @@ void WifiManager::disableTethering() {
} }
bool WifiManager::tetheringEnabled() { bool WifiManager::tetheringEnabled() {
if (adapter != "" && adapter != "/") { if (activeAp != "" && activeAp != "/") {
QString active_ap = get_active_ap(); return get_property(activeAp, "Ssid") == tethering_ssid;
if (active_ap != "" && active_ap != "/") {
return get_property(active_ap, "Ssid") == tethering_ssid;
}
} }
return false; return false;
} }

@ -71,7 +71,7 @@ private:
QString get_ipv4_address(); QString get_ipv4_address();
QList<Network> get_networks(); QList<Network> get_networks();
void connect(const QByteArray &ssid, const QString &username, const QString &password, SecurityType security_type); void connect(const QByteArray &ssid, const QString &username, const QString &password, SecurityType security_type);
QString get_active_ap(); QString activeAp;
void deactivateConnection(const QString &ssid); void deactivateConnection(const QString &ssid);
QVector<QDBusObjectPath> get_active_connections(); QVector<QDBusObjectPath> get_active_connections();
uint get_wifi_device_state(); uint get_wifi_device_state();

Loading…
Cancel
Save