Closed
Description
Preparation (MCVE)
Let's trivially port the libraries\ESP8266WiFi\examples\WiFiScan\WiFiScan.ino
to the Arduino CoopTask library, like so:
/*
This sketch demonstrates how to scan WiFi networks.
The API is almost the same as with the WiFi Shield library,
the most obvious difference being the different file you need to include:
*/
#include <ESP8266WiFi.h>
#include <CoopTask.h>
void loop1() {
String ssid;
int32_t rssi;
uint8_t encryptionType;
uint8_t* bssid;
int32_t channel;
bool hidden;
int scanResult;
for (;;) {
Serial.println(F("Starting WiFi scan..."));
scanResult = WiFi.scanNetworks(/*async=*/false, /*hidden=*/true);
if (scanResult == 0) {
Serial.println(F("No networks found"));
}
else if (scanResult > 0) {
Serial.printf(PSTR("%d networks found:\n"), scanResult);
// Print unsorted scan results
for (int8_t i = 0; i < scanResult; i++) {
WiFi.getNetworkInfo(i, ssid, encryptionType, rssi, bssid, channel, hidden);
Serial.printf(PSTR(" %02d: [CH %02d] [%02X:%02X:%02X:%02X:%02X:%02X] %ddBm %c %c %s\n"),
i,
channel,
bssid[0], bssid[1], bssid[2],
bssid[3], bssid[4], bssid[5],
rssi,
(encryptionType == ENC_TYPE_NONE) ? ' ' : '*',
hidden ? 'H' : 'V',
ssid.c_str());
yield();
}
}
else {
Serial.printf(PSTR("WiFi scan error %d"), scanResult);
}
// Wait a bit before scanning again
delay(5000);
}
}
BasicCoopTask<CoopTaskStackAllocatorAsMember<1600>> task1("l1", loop1);
void setup() {
Serial.begin(115200);
Serial.println(F("\nESP8266 WiFi scan example"));
// Set WiFi to station mode
WiFi.mode(WIFI_STA);
// Disconnect from an AP if it was previously connected
WiFi.disconnect();
delay(100);
task1.scheduleTask();
}
void loop() {
runCoopTasks();
}
Without additional tasks, this looks a bit lost, but the utility is obvious if you consider that one can add additional tasks, and as long as they don't need to guard shared resources, it's basically copy&paste from example code and there you go, without stackless coroutines, async programming or anything advanced. [full disclosure: I am the author/maintainer of CoopTask]
Issue
In master, no networks are found:
Starting WiFi scan...
No networks found
Starting WiFi scan...
No networks found
Starting WiFi scan...
No networks found
Resolution
The PR #6782 fixes this.
Metadata
Metadata
Assignees
Labels
No labels