mirror of https://github.com/ARMmbed/mbed-os.git
ESP8266: fixes network status refresh procedure
parent
876a397101
commit
71e5321f0f
|
|
@ -74,7 +74,7 @@ ESP8266::ESP8266(PinName tx, PinName rx, bool debug, PinName rts, PinName cts)
|
||||||
_parser.oob("UNLINK", callback(this, &ESP8266::_oob_socket_close_err));
|
_parser.oob("UNLINK", callback(this, &ESP8266::_oob_socket_close_err));
|
||||||
_parser.oob("ALREADY CONNECTED", callback(this, &ESP8266::_oob_conn_already));
|
_parser.oob("ALREADY CONNECTED", callback(this, &ESP8266::_oob_conn_already));
|
||||||
_parser.oob("ERROR", callback(this, &ESP8266::_oob_err));
|
_parser.oob("ERROR", callback(this, &ESP8266::_oob_err));
|
||||||
_parser.oob("ready", callback(this, &ESP8266::_oob_reset));
|
_parser.oob("ready", callback(this, &ESP8266::_oob_ready));
|
||||||
// Don't expect to find anything about the watchdog reset in official documentation
|
// Don't expect to find anything about the watchdog reset in official documentation
|
||||||
//https://techtutorialsx.com/2017/01/21/esp8266-watchdog-functions/
|
//https://techtutorialsx.com/2017/01/21/esp8266-watchdog-functions/
|
||||||
_parser.oob("wdt reset", callback(this, &ESP8266::_oob_watchdog_reset));
|
_parser.oob("wdt reset", callback(this, &ESP8266::_oob_watchdog_reset));
|
||||||
|
|
@ -978,7 +978,7 @@ void ESP8266::_oob_watchdog_reset()
|
||||||
"_oob_watchdog_reset() modem watchdog reset triggered\n");
|
"_oob_watchdog_reset() modem watchdog reset triggered\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ESP8266::_oob_reset()
|
void ESP8266::_oob_ready()
|
||||||
{
|
{
|
||||||
|
|
||||||
_rmutex.lock();
|
_rmutex.lock();
|
||||||
|
|
|
||||||
|
|
@ -437,7 +437,7 @@ private:
|
||||||
void _oob_watchdog_reset();
|
void _oob_watchdog_reset();
|
||||||
void _oob_busy();
|
void _oob_busy();
|
||||||
void _oob_tcp_data_hdlr();
|
void _oob_tcp_data_hdlr();
|
||||||
void _oob_reset();
|
void _oob_ready();
|
||||||
|
|
||||||
// OOB state variables
|
// OOB state variables
|
||||||
int _connect_error;
|
int _connect_error;
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ ESP8266Interface::ESP8266Interface()
|
||||||
|
|
||||||
_esp.sigio(this, &ESP8266Interface::event);
|
_esp.sigio(this, &ESP8266Interface::event);
|
||||||
_esp.set_timeout();
|
_esp.set_timeout();
|
||||||
_esp.attach(this, &ESP8266Interface::update_conn_state_cb);
|
_esp.attach(this, &ESP8266Interface::refresh_conn_state_cb);
|
||||||
|
|
||||||
for (int i = 0; i < ESP8266_SOCKET_COUNT; i++) {
|
for (int i = 0; i < ESP8266_SOCKET_COUNT; i++) {
|
||||||
_sock_i[i].open = false;
|
_sock_i[i].open = false;
|
||||||
|
|
@ -102,7 +102,7 @@ ESP8266Interface::ESP8266Interface(PinName tx, PinName rx, bool debug, PinName r
|
||||||
|
|
||||||
_esp.sigio(this, &ESP8266Interface::event);
|
_esp.sigio(this, &ESP8266Interface::event);
|
||||||
_esp.set_timeout();
|
_esp.set_timeout();
|
||||||
_esp.attach(this, &ESP8266Interface::update_conn_state_cb);
|
_esp.attach(this, &ESP8266Interface::refresh_conn_state_cb);
|
||||||
|
|
||||||
for (int i = 0; i < ESP8266_SOCKET_COUNT; i++) {
|
for (int i = 0; i < ESP8266_SOCKET_COUNT; i++) {
|
||||||
_sock_i[i].open = false;
|
_sock_i[i].open = false;
|
||||||
|
|
@ -776,15 +776,11 @@ WiFiInterface *WiFiInterface::get_default_instance()
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void ESP8266Interface::update_conn_state_cb()
|
void ESP8266Interface::refresh_conn_state_cb()
|
||||||
{
|
{
|
||||||
nsapi_connection_status_t prev_stat = _conn_stat;
|
nsapi_connection_status_t prev_stat = _conn_stat;
|
||||||
_conn_stat = _esp.connection_status();
|
_conn_stat = _esp.connection_status();
|
||||||
|
|
||||||
if (prev_stat == _conn_stat) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (_conn_stat) {
|
switch (_conn_stat) {
|
||||||
// Doesn't require changes
|
// Doesn't require changes
|
||||||
case NSAPI_STATUS_CONNECTING:
|
case NSAPI_STATUS_CONNECTING:
|
||||||
|
|
@ -805,6 +801,12 @@ void ESP8266Interface::update_conn_state_cb()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (prev_stat == _conn_stat) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr_debug("refresh_conn_state_cb(): changed to %d", _conn_stat);
|
||||||
|
|
||||||
// Inform upper layers
|
// Inform upper layers
|
||||||
if (_conn_stat_cb) {
|
if (_conn_stat_cb) {
|
||||||
_conn_stat_cb(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, _conn_stat);
|
_conn_stat_cb(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, _conn_stat);
|
||||||
|
|
|
||||||
|
|
@ -328,7 +328,7 @@ protected:
|
||||||
private:
|
private:
|
||||||
// AT layer
|
// AT layer
|
||||||
ESP8266 _esp;
|
ESP8266 _esp;
|
||||||
void update_conn_state_cb();
|
void refresh_conn_state_cb();
|
||||||
|
|
||||||
// HW reset pin
|
// HW reset pin
|
||||||
class ResetPin {
|
class ResetPin {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue