From 3f42df9b2f00b963f112a36040f66feca41f70a0 Mon Sep 17 00:00:00 2001 From: Alejandro Sklar Date: Mon, 2 Sep 2019 23:45:42 -0400 Subject: [PATCH] - fixed scan (timeouts and response parsing) --- ESP32/ESP32.cpp | 29 +++++++++++++++-------------- ESP32/ESP32.h | 7 ++++--- mbed_lib.json | 16 ++++++++++++---- 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/ESP32/ESP32.cpp b/ESP32/ESP32.cpp index 9e3691d..ed8eb2e 100644 --- a/ESP32/ESP32.cpp +++ b/ESP32/ESP32.cpp @@ -187,6 +187,7 @@ void ESP32::_startup_common() } _serial.set_baud(MBED_CONF_ESP32_WIFI_BAUDRATE); + setTimeout(10000); if (_p_wifi_io0 != NULL) { _p_wifi_io0->write(1); } @@ -196,10 +197,10 @@ void ESP32::_startup_common() _p_wifi_en->write(1); _parser.recv("ready"); } else { - setTimeout(100); _parser.recv("ready"); } - + setTimeout(); + reset(); _init_end_common = true; @@ -375,9 +376,8 @@ bool ESP32::reset(void) if (_parser.send("AT+RST") && _parser.recv("OK")) { _serial.set_baud(ESP32_DEFAULT_BAUD_RATE); -#if MBED_CONF_ESP32_WIFI_SERIAL_FC _serial.set_flow_control(SerialBase::Disabled); -#endif + setTimeout(10000); _parser.recv("ready"); _clear_socket_packets(ESP32_ALL_SOCKET_IDS); @@ -403,6 +403,7 @@ bool ESP32::reset(void) } #endif } + setTimeout(); _parser.send("ATE0"); _parser.recv("OK"); @@ -676,10 +677,12 @@ int ESP32::scan(WiFiAccessPoint *res, unsigned limit) if (_init_end_wifi) { _smutex.lock(); setTimeout(5000); - if (!_parser.send("AT+CWLAP")) { + _parser.send("AT+CWLAP"); + + /*if (!_parser.send("AT+CWLAP")) { _smutex.unlock(); return NSAPI_ERROR_DEVICE_ERROR; - } + }*/ while (recv_ap(&ap)) { if (cnt < limit) { @@ -688,11 +691,11 @@ int ESP32::scan(WiFiAccessPoint *res, unsigned limit) cnt++; if ((limit != 0) && (cnt >= limit)) { - setTimeout(10); + setTimeout(); _parser.recv("OK"); break; } - setTimeout(500); + setTimeout(1000); } setTimeout(); @@ -980,7 +983,7 @@ bool ESP32::recv_ap(nsapi_wifi_ap_t *ap) const char keyword_1[6] = "\nOK\r\n"; int idx_0 = 0; int idx_1 = 0; - + while (true) { c = _parser.getc(); if (c < 0) { @@ -1002,12 +1005,10 @@ bool ESP32::recv_ap(nsapi_wifi_ap_t *ap) if (idx_0 >= (int)(sizeof(keyword_0) - 1)) { int sec; uint8_t work_buf[6+1]; /* It needs 1 byte extra. */ - int8_t work_rssi[2]; /* It needs 1 byte extra. */ - ret = _parser.recv("(%d,\"%32[^\"]\",%hhd,\"%hhx:%hhx:%hhx:%hhx:%hhx:%hhx\",%hhu)", &sec, ap->ssid, - &work_rssi[0], &work_buf[0], &work_buf[1], &work_buf[2], &work_buf[3], &work_buf[4], - &work_buf[5], &ap->channel); - ap->rssi = work_rssi[0]; + ret = _parser.recv("(%d,\"%32[^\"]\",%hhd,\"%hhx:%hhx:%hhx:%hhx:%hhx:%hhx\",%hhu)", &sec, ap->ssid, &ap->rssi, + &work_buf[0], &work_buf[1], &work_buf[2], &work_buf[3], &work_buf[4], &work_buf[5],&ap->channel); + memcpy(ap->bssid, work_buf, 6); ap->security = sec < 5 ? (nsapi_security_t)sec : NSAPI_SECURITY_UNKNOWN; break; diff --git a/ESP32/ESP32.h b/ESP32/ESP32.h index d3ffb57..f2176f1 100644 --- a/ESP32/ESP32.h +++ b/ESP32/ESP32.h @@ -275,6 +275,7 @@ class ESP32 PinName _cts; int _flow_control; uint32_t last_timeout_ms; + bool _debug; std::vector _accept_id; uint32_t _id_bits; @@ -353,11 +354,11 @@ class ESP32 typedef struct { uint16_t adv_int_min; /**< minimum value of advertising interval; range: 0x0020 ~ 0x4000 */ uint16_t adv_int_max; /**< maximum value of advertising interval; range: 0x0020 ~ 0x4000 */ - uint8_t adv_type; /**< 0:ADV_TYPE_IND, 2:ADV_TYPE_SCAN_IND, 3:ADV_TYPE_NONCONN_IND */ - uint8_t own_addr_type; /**< own BLE address type; 0:BLE_ADDR_TYPE_PUBLIC, 1:BLE_ADDR_TYPE_RANDOM */ + uint8_t adv_type; /**< 0ソスFADV_TYPE_IND, 2ソスFADV_TYPE_SCAN_IND, 3ソスFADV_TYPE_NONCONN_IND */ + uint8_t own_addr_type; /**< own BLE address type; 0ソスFBLE_ADDR_TYPE_PUBLIC, 1ソスFBLE_ADDR_TYPE_RANDOM */ uint8_t channel_map; /**< channel of advertising; ADV_CHNL_~ */ uint8_t adv_filter_policy; /**< filter policy of advertising; ADV_FILTER_ALLOW_SCAN_~ */ - uint8_t peer_addr_type; /**< remote BLE address type; 0:PUBLIC, 1:RANDOM */ + uint8_t peer_addr_type; /**< remote BLE address type; 0ソスFPUBLIC, 1ソスFRANDOM */ uint8_t peer_addr[6]; /**< remote BLE address */ } advertising_param_t; diff --git a/mbed_lib.json b/mbed_lib.json index dba3209..da2a6df 100644 --- a/mbed_lib.json +++ b/mbed_lib.json @@ -1,6 +1,14 @@ { "name": "esp32", "config": { + "wifi-ssid": { + "help": "WiFi SSID", + "value": "\"Fios-VSFJ2\"" + }, + "wifi-password": { + "help": "WiFi Password", + "value": "\"claw9377tag688any\"" + }, "wifi-en": { "help": "Enable pin", "value": "NC" @@ -19,7 +27,7 @@ }, "wifi-debug": { "help": "Enable debugging", - "value": false + "value": true }, "wifi-rts": { "help": "Serial RTS pin", @@ -35,7 +43,7 @@ }, "wifi-serial-fc": { "help": "Serial Flow Control", - "value": false + "value": true }, "provide-default": { "help": "Provide default WifiInterface. [true/false]", @@ -49,8 +57,8 @@ "esp32.wifi-tx": "D8", "esp32.wifi-rx": "D2", "esp32.wifi-debug": true, - "esp32.wifi-rts": "NC", - "esp32.wifi-cts": "NC" + "esp32.wifi-rts": "PA_12", + "esp32.wifi-cts": "PA_11" }, "GR_LYCHEE": { "esp32.wifi-en" : "P5_3",