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)) { if (wifi->isKnownConnection(n.ssid)) {
wifi->activateWifiConnection(n.ssid); wifi->activateWifiConnection(n.ssid);
} else if (n.security_type == SecurityType::OPEN) { } else if (n.security_type == SecurityType::OPEN) {
wifi->connect(n); wifi->connect(n, false);
} else if (n.security_type == SecurityType::WPA) { } 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); QString pass = InputDialog::getText(tr("Enter password"), this, tr("for \"%1\"").arg(QString::fromUtf8(n.ssid)), true, 8);
if (!pass.isEmpty()) { 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); 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); QString pass = InputDialog::getText(tr("Wrong password"), this, tr("for \"%1\"").arg(QString::fromUtf8(n.ssid)), true, 8);
if (!pass.isEmpty()) { 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(); hidden_network.ssid = ssid.toUtf8();
if (!pass.isEmpty()) { if (!pass.isEmpty()) {
hidden_network.security_type = SecurityType::WPA; hidden_network.security_type = SecurityType::WPA;
wifi->connect(hidden_network, pass); wifi->connect(hidden_network, true, pass);
} else { } else {
wifi->connect(hidden_network); wifi->connect(hidden_network, true);
} }
emit requestWifiScreen(); 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); setCurrentConnecting(n.ssid);
forgetConnection(n.ssid); // Clear all connections that may already exist to the network we are connecting forgetConnection(n.ssid); // Clear all connections that may already exist to the network we are connecting
Connection connection; Connection connection;
@ -176,6 +176,7 @@ void WifiManager::connect(const Network &n, const QString &password, const QStri
connection["connection"]["autoconnect-retries"] = 0; connection["connection"]["autoconnect-retries"] = 0;
connection["802-11-wireless"]["ssid"] = n.ssid; connection["802-11-wireless"]["ssid"] = n.ssid;
connection["802-11-wireless"]["hidden"] = is_hidden;
connection["802-11-wireless"]["mode"] = "infrastructure"; connection["802-11-wireless"]["mode"] = "infrastructure";
if (n.security_type == SecurityType::WPA) { if (n.security_type == SecurityType::WPA) {

@ -52,7 +52,7 @@ public:
std::optional<QDBusPendingCall> activateWifiConnection(const QString &ssid); std::optional<QDBusPendingCall> activateWifiConnection(const QString &ssid);
NetworkType currentNetworkType(); NetworkType currentNetworkType();
void updateGsmSettings(bool roaming, QString apn, bool metered); 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 // Tethering functions
void setTetheringEnabled(bool enabled); void setTetheringEnabled(bool enabled);

Loading…
Cancel
Save