@@ -58,6 +58,8 @@ bool ESP8266WiFiScanClass::_scanComplete = false;
58
58
size_t ESP8266WiFiScanClass::_scanCount = 0 ;
59
59
void * ESP8266WiFiScanClass::_scanResult = 0 ;
60
60
61
+ std::function<void (int )> ESP8266WiFiScanClass::_onComplete;
62
+
61
63
/* *
62
64
* Start scan WiFi networks available
63
65
* @param async run in async mode
@@ -102,6 +104,15 @@ int8_t ESP8266WiFiScanClass::scanNetworks(bool async, bool show_hidden) {
102
104
103
105
}
104
106
107
+ /* *
108
+ * Starts scanning WiFi networks available in async mode
109
+ * @param onComplete the event handler executed when the scan is done
110
+ * @param show_hidden show hidden networks
111
+ */
112
+ void ESP8266WiFiScanClass::scanNetworksAsync (std::function<void (int )> onComplete, bool show_hidden) {
113
+ _onComplete = onComplete;
114
+ scanNetworks (true , show_hidden);
115
+ }
105
116
106
117
/* *
107
118
* called to get the scan state in Async mode
@@ -305,6 +316,9 @@ void ESP8266WiFiScanClass::_scanDone(void* result, int status) {
305
316
306
317
if (!ESP8266WiFiScanClass::_scanAsync) {
307
318
esp_schedule ();
319
+ } else if (ESP8266WiFiScanClass::_onComplete) {
320
+ ESP8266WiFiScanClass::_onComplete (ESP8266WiFiScanClass::_scanCount);
321
+ ESP8266WiFiScanClass::_onComplete = nullptr ;
308
322
}
309
323
}
310
324
@@ -319,4 +333,3 @@ void * ESP8266WiFiScanClass::_getScanInfoByIndex(int i) {
319
333
}
320
334
return reinterpret_cast <bss_info*>(ESP8266WiFiScanClass::_scanResult) + i;
321
335
}
322
-
0 commit comments