Add autoconnect support for hidden WiFi networks (#31789)

* add autoconnect to WifiManager::connect

* set wifi/hidden to true

* typo

* add condition to only set connection[wireless][hidden] to true when connecting to a hidden network

* default false value for is_hidden
pull/31819/head
Mauricio Alvarez Leon 1 year ago committed by GitHub
parent d651bc802b
commit 1b6178a77d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 10
      selfdrive/ui/qt/network/networking.cc
  2. 3
      selfdrive/ui/qt/network/wifi_manager.cc
  3. 2
      selfdrive/ui/qt/network/wifi_manager.h

@ -82,11 +82,11 @@ void Networking::connectToNetwork(const Network n) {
if (wifi->isKnownConnection(n.ssid)) {
wifi->activateWifiConnection(n.ssid);
} else if (n.security_type == SecurityType::OPEN) {
wifi->connect(n);
wifi->connect(n, false);
} else if (n.security_type == SecurityType::WPA) {
QString pass = InputDialog::getText(tr("Enter password"), this, tr("for \"%1\"").arg(QString::fromUtf8(n.ssid)), true, 8);
if (!pass.isEmpty()) {
wifi->connect(n, pass);
wifi->connect(n, false, pass);
}
}
}
@ -96,7 +96,7 @@ void Networking::wrongPassword(const QString &ssid) {
const Network &n = wifi->seenNetworks.value(ssid);
QString pass = InputDialog::getText(tr("Wrong password"), this, tr("for \"%1\"").arg(QString::fromUtf8(n.ssid)), true, 8);
if (!pass.isEmpty()) {
wifi->connect(n, pass);
wifi->connect(n, false, pass);
}
}
}
@ -192,9 +192,9 @@ AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWid
hidden_network.ssid = ssid.toUtf8();
if (!pass.isEmpty()) {
hidden_network.security_type = SecurityType::WPA;
wifi->connect(hidden_network, pass);
wifi->connect(hidden_network, true, pass);
} else {
wifi->connect(hidden_network);
wifi->connect(hidden_network, true);
}
emit requestWifiScreen();
}

@ -166,7 +166,7 @@ SecurityType WifiManager::getSecurityType(const QVariantMap &properties) {
}
}
void WifiManager::connect(const Network &n, const QString &password, const QString &username) {
void WifiManager::connect(const Network &n, const bool is_hidden, const QString &password, const QString &username) {
setCurrentConnecting(n.ssid);
forgetConnection(n.ssid); // Clear all connections that may already exist to the network we are connecting
Connection connection;
@ -176,6 +176,7 @@ void WifiManager::connect(const Network &n, const QString &password, const QStri
connection["connection"]["autoconnect-retries"] = 0;
connection["802-11-wireless"]["ssid"] = n.ssid;
connection["802-11-wireless"]["hidden"] = is_hidden;
connection["802-11-wireless"]["mode"] = "infrastructure";
if (n.security_type == SecurityType::WPA) {

@ -52,7 +52,7 @@ public:
std::optional<QDBusPendingCall> activateWifiConnection(const QString &ssid);
NetworkType currentNetworkType();
void updateGsmSettings(bool roaming, QString apn, bool metered);
void connect(const Network &ssid, const QString &password = {}, const QString &username = {});
void connect(const Network &ssid, const bool is_hidden = false, const QString &password = {}, const QString &username = {});
// Tethering functions
void setTetheringEnabled(bool enabled);

Loading…
Cancel
Save