From 44498001da9e982b7098fa286f7be0c39df3171d Mon Sep 17 00:00:00 2001 From: "Dirk O. Kaar" Date: Sun, 23 May 2021 14:03:09 +0200 Subject: [PATCH] Fixes #8053 --- libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp | 20 ++++++++++++++----- libraries/ESP8266WiFi/src/ESP8266WiFiScan.h | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp index 5331c7bac8..6fee56aa9a 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp @@ -60,13 +60,15 @@ std::function ESP8266WiFiScanClass::_onComplete; /** * Start scan WiFi networks available - * @param async run in async mode - * @param show_hidden show hidden networks - * @param channel scan only this channel (0 for all channels) - * @param ssid* scan for only this ssid (NULL for all ssid's) + * @param async run in async mode + * @param show_hidden show hidden networks + * @param passive scan type passive or active + * @param max_ms_per_chan scan time per channel + * @param channel scan only this channel (0 for all channels) + * @param ssid* scan for only this ssid (NULL for all ssid's) * @return Number of discovered networks */ -int8_t ESP8266WiFiScanClass::scanNetworks(bool async, bool show_hidden, uint8 channel, uint8* ssid) { +int8_t ESP8266WiFiScanClass::scanNetworks(bool async, bool show_hidden, bool passive, uint32_t max_ms_per_chan, uint8_t channel, uint8* ssid) { if(ESP8266WiFiScanClass::_scanStarted) { return WIFI_SCAN_RUNNING; } @@ -87,6 +89,14 @@ int8_t ESP8266WiFiScanClass::scanNetworks(bool async, bool show_hidden, uint8 ch config.ssid = ssid; config.channel = channel; config.show_hidden = show_hidden; + if(passive){ + config.scan_type = WIFI_SCAN_TYPE_PASSIVE; + config.scan_time.passive = max_ms_per_chan; + } else { + config.scan_type = WIFI_SCAN_TYPE_ACTIVE; + config.scan_time.active.min = 100; + config.scan_time.active.max = max_ms_per_chan; + } if(wifi_station_scan(&config, reinterpret_cast(&ESP8266WiFiScanClass::_scanDone))) { ESP8266WiFiScanClass::_scanComplete = false; ESP8266WiFiScanClass::_scanStarted = true; diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h index 36d159aca0..72c536855c 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h @@ -34,7 +34,7 @@ class ESP8266WiFiScanClass { public: - int8_t scanNetworks(bool async = false, bool show_hidden = false, uint8 channel = 0, uint8* ssid = NULL); + int8_t scanNetworks(bool async = false, bool show_hidden = false, bool passive = false, uint32_t max_ms_per_chan = 300, uint8_t channel = 0, uint8* ssid = NULL); void scanNetworksAsync(std::function onComplete, bool show_hidden = false); int8_t scanComplete();