Skip to content

Commit 98fe561

Browse files
anisimovsergeyigrr
authored andcommitted
Adding onComplete event handler support for the asynchronous network scanning. (esp8266#2287)
1 parent f0e2c9f commit 98fe561

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ bool ESP8266WiFiScanClass::_scanComplete = false;
5858
size_t ESP8266WiFiScanClass::_scanCount = 0;
5959
void* ESP8266WiFiScanClass::_scanResult = 0;
6060

61+
std::function<void(int)> ESP8266WiFiScanClass::_onComplete;
62+
6163
/**
6264
* Start scan WiFi networks available
6365
* @param async run in async mode
@@ -102,6 +104,15 @@ int8_t ESP8266WiFiScanClass::scanNetworks(bool async, bool show_hidden) {
102104

103105
}
104106

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+
}
105116

106117
/**
107118
* called to get the scan state in Async mode
@@ -305,6 +316,9 @@ void ESP8266WiFiScanClass::_scanDone(void* result, int status) {
305316

306317
if(!ESP8266WiFiScanClass::_scanAsync) {
307318
esp_schedule();
319+
} else if (ESP8266WiFiScanClass::_onComplete) {
320+
ESP8266WiFiScanClass::_onComplete(ESP8266WiFiScanClass::_scanCount);
321+
ESP8266WiFiScanClass::_onComplete = nullptr;
308322
}
309323
}
310324

@@ -319,4 +333,3 @@ void * ESP8266WiFiScanClass::_getScanInfoByIndex(int i) {
319333
}
320334
return reinterpret_cast<bss_info*>(ESP8266WiFiScanClass::_scanResult) + i;
321335
}
322-

libraries/ESP8266WiFi/src/ESP8266WiFiScan.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class ESP8266WiFiScanClass {
3535
public:
3636

3737
int8_t scanNetworks(bool async = false, bool show_hidden = false);
38+
void scanNetworksAsync(std::function<void(int)> onComplete, bool show_hidden = false);
3839

3940
int8_t scanComplete();
4041
void scanDelete();
@@ -59,6 +60,8 @@ class ESP8266WiFiScanClass {
5960
static size_t _scanCount;
6061
static void* _scanResult;
6162

63+
static std::function<void(int)> _onComplete;
64+
6265
static void _scanDone(void* result, int status);
6366
static void * _getScanInfoByIndex(int i);
6467

0 commit comments

Comments
 (0)