esp8266/modnetwork: Fix wlan.scan() method so it returns all networks.
According to the Arduino ESP8266 implementation the first argument to the wifi scan callback is actually a bss_info pointer. This patch fixes the iteration over this data so the first 2 entries are no longer skipped. Fixes issue #2372.
This commit is contained in:
parent
4a9542c0c0
commit
b4be5a8f34
@ -130,17 +130,16 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(esp_status_obj, esp_status);
|
|||||||
|
|
||||||
STATIC mp_obj_t *esp_scan_list = NULL;
|
STATIC mp_obj_t *esp_scan_list = NULL;
|
||||||
|
|
||||||
STATIC void esp_scan_cb(scaninfo *si, STATUS status) {
|
STATIC void esp_scan_cb(void *result, STATUS status) {
|
||||||
if (esp_scan_list == NULL) {
|
if (esp_scan_list == NULL) {
|
||||||
// called unexpectedly
|
// called unexpectedly
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (si->pbss && status == 0) {
|
if (result && status == 0) {
|
||||||
// we need to catch any memory errors
|
// we need to catch any memory errors
|
||||||
nlr_buf_t nlr;
|
nlr_buf_t nlr;
|
||||||
if (nlr_push(&nlr) == 0) {
|
if (nlr_push(&nlr) == 0) {
|
||||||
struct bss_info *bs;
|
for (struct bss_info *bs = result; bs; bs = STAILQ_NEXT(bs, next)) {
|
||||||
STAILQ_FOREACH(bs, si->pbss, next) {
|
|
||||||
mp_obj_tuple_t *t = mp_obj_new_tuple(6, NULL);
|
mp_obj_tuple_t *t = mp_obj_new_tuple(6, NULL);
|
||||||
#if 1
|
#if 1
|
||||||
// struct bss_info::ssid_len is not documented in SDK API Guide,
|
// struct bss_info::ssid_len is not documented in SDK API Guide,
|
||||||
|
Loading…
Reference in New Issue
Block a user