From b4be5a8f3499ca19bdc9ac3ef94625529141b0ff Mon Sep 17 00:00:00 2001 From: Damien George Date: Tue, 6 Sep 2016 15:30:39 +1000 Subject: [PATCH] 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. --- esp8266/modnetwork.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/esp8266/modnetwork.c b/esp8266/modnetwork.c index 7cfa3ff77a..7031197fa5 100644 --- a/esp8266/modnetwork.c +++ b/esp8266/modnetwork.c @@ -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 void esp_scan_cb(scaninfo *si, STATUS status) { +STATIC void esp_scan_cb(void *result, STATUS status) { if (esp_scan_list == NULL) { // called unexpectedly return; } - if (si->pbss && status == 0) { + if (result && status == 0) { // we need to catch any memory errors nlr_buf_t nlr; if (nlr_push(&nlr) == 0) { - struct bss_info *bs; - STAILQ_FOREACH(bs, si->pbss, next) { + for (struct bss_info *bs = result; bs; bs = STAILQ_NEXT(bs, next)) { mp_obj_tuple_t *t = mp_obj_new_tuple(6, NULL); #if 1 // struct bss_info::ssid_len is not documented in SDK API Guide,