ESP8266: retry reset attempt once in failure

pull/9473/head
Veijo Pesonen 2019-02-06 15:46:42 +02:00
parent 2d6b63d5a2
commit cbbe2ff55e
1 changed files with 16 additions and 12 deletions

View File

@ -256,9 +256,10 @@ bool ESP8266::reset(void)
unsigned long int start_time = rtos::Kernel::get_ms_count(); unsigned long int start_time = rtos::Kernel::get_ms_count();
_reset_done = false; _reset_done = false;
set_timeout(ESP8266_RECV_TIMEOUT); set_timeout(ESP8266_RECV_TIMEOUT);
for (int i = 0; i < 2; i++) {
if (!_parser.send("AT+RST") || !_parser.recv("OK\n")) { if (!_parser.send("AT+RST") || !_parser.recv("OK\n")) {
tr_debug("reset(): AT+RST failed or no response"); tr_debug("reset(): AT+RST failed or no response");
goto EXIT; continue;
} }
_rmutex.lock(); _rmutex.lock();
@ -269,10 +270,13 @@ bool ESP8266::reset(void)
done = _reset_done; done = _reset_done;
_rmutex.unlock(); _rmutex.unlock();
if (done) {
break;
}
}
tr_debug("reset(): done: %s", done ? "OK" : "FAIL"); tr_debug("reset(): done: %s", done ? "OK" : "FAIL");
EXIT:
_clear_socket_packets(ESP8266_ALL_SOCKET_IDS); _clear_socket_packets(ESP8266_ALL_SOCKET_IDS);
set_timeout(); set_timeout();
_smutex.unlock(); _smutex.unlock();