mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-21 10:26:06 +03:00
Add support for hidden AP's
This commit is contained in:
parent
85ba53a249
commit
0d94b5f560
@ -7,6 +7,7 @@
|
|||||||
- Registering multiple networks (at least 1)
|
- Registering multiple networks (at least 1)
|
||||||
- Connect to WiFi with strongest signal (RSSI)
|
- Connect to WiFi with strongest signal (RSSI)
|
||||||
- Fall back to connect to next WiFi when a connection failed or lost
|
- Fall back to connect to next WiFi when a connection failed or lost
|
||||||
|
- Fall back to connect to hidden SSID's which are not reported by WiFi scan
|
||||||
|
|
||||||
To enable debugging output, select in the Arduino iDE:
|
To enable debugging output, select in the Arduino iDE:
|
||||||
- Tools | Debug Port: Serial
|
- Tools | Debug Port: Serial
|
||||||
|
@ -323,12 +323,18 @@ wl_status_t ESP8266WiFiMulti::connectWiFiMulti(uint32_t connectTimeoutMs)
|
|||||||
}
|
}
|
||||||
DEBUG_WIFI_MULTI("\n");
|
DEBUG_WIFI_MULTI("\n");
|
||||||
|
|
||||||
|
// Create indices for AP connection failures
|
||||||
|
uint8_t connectSkipIndex[_APlist.size()];
|
||||||
|
memset(connectSkipIndex, 0, sizeof(connectSkipIndex));
|
||||||
|
|
||||||
// Connect to known WiFi AP's sorted by RSSI
|
// Connect to known WiFi AP's sorted by RSSI
|
||||||
for (int8_t i = 0; i < numNetworks; i++) {
|
for (int8_t i = 0; i < numNetworks; i++) {
|
||||||
// Get network information
|
// Get network information
|
||||||
WiFi.getNetworkInfo(known[i], ssid, encType, rssi, bssid, channel, hidden);
|
WiFi.getNetworkInfo(known[i], ssid, encType, rssi, bssid, channel, hidden);
|
||||||
|
|
||||||
for (auto entry : _APlist) {
|
for (uint8_t j = 0; j < _APlist.size(); j++) {
|
||||||
|
auto &entry = _APlist[j];
|
||||||
|
|
||||||
// Check SSID
|
// Check SSID
|
||||||
if (ssid == entry.ssid) {
|
if (ssid == entry.ssid) {
|
||||||
DEBUG_WIFI_MULTI("[WIFIM] Connecting %s\n", ssid);
|
DEBUG_WIFI_MULTI("[WIFIM] Connecting %s\n", ssid);
|
||||||
@ -340,13 +346,33 @@ wl_status_t ESP8266WiFiMulti::connectWiFiMulti(uint32_t connectTimeoutMs)
|
|||||||
if (waitWiFiConnect(connectTimeoutMs) == WL_CONNECTED) {
|
if (waitWiFiConnect(connectTimeoutMs) == WL_CONNECTED) {
|
||||||
return WL_CONNECTED;
|
return WL_CONNECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Failed to connect, skip for hidden SSID connects
|
||||||
|
connectSkipIndex[j] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try to connect to hidden AP's which are not reported by WiFi scan
|
||||||
|
for (uint8_t i = 0; i < _APlist.size(); i++) {
|
||||||
|
auto &entry = _APlist[i];
|
||||||
|
|
||||||
|
if (!connectSkipIndex[i]) {
|
||||||
|
DEBUG_WIFI_MULTI("[WIFIM] Try hidden connect %s\n", entry.ssid);
|
||||||
|
|
||||||
|
// Connect to WiFi
|
||||||
|
WiFi.begin(entry.ssid, entry.passphrase);
|
||||||
|
|
||||||
|
// Wait for status change
|
||||||
|
if (waitWiFiConnect(connectTimeoutMs) == WL_CONNECTED) {
|
||||||
|
return WL_CONNECTED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUG_WIFI_MULTI("[WIFIM] Could not connect\n", ssid);
|
DEBUG_WIFI_MULTI("[WIFIM] Could not connect\n", ssid);
|
||||||
|
|
||||||
// Coult not connect to any WiFi network
|
// Could not connect to any WiFi network
|
||||||
return WL_CONNECT_FAILED;
|
return WL_CONNECT_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user