mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			Merge pull request #9639 from michalpasztamobica/esp8266_connect_timeout
ESP8266: connect() checks errors from ESP chippull/9660/head
						commit
						f2abdcbcc6
					
				| 
						 | 
					@ -52,7 +52,7 @@ using namespace utest::v1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
utest::v1::status_t test_setup(const size_t number_of_cases)
 | 
					utest::v1::status_t test_setup(const size_t number_of_cases)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    GREENTEA_SETUP(240, "default_auto");
 | 
					    GREENTEA_SETUP(360, "default_auto");
 | 
				
			||||||
    return verbose_test_setup_handler(number_of_cases);
 | 
					    return verbose_test_setup_handler(number_of_cases);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,6 +58,7 @@ ESP8266Interface::ESP8266Interface()
 | 
				
			||||||
      _if_blocking(true),
 | 
					      _if_blocking(true),
 | 
				
			||||||
      _if_connected(_cmutex),
 | 
					      _if_connected(_cmutex),
 | 
				
			||||||
      _initialized(false),
 | 
					      _initialized(false),
 | 
				
			||||||
 | 
					      _connect_retval(NSAPI_ERROR_OK),
 | 
				
			||||||
      _conn_stat(NSAPI_STATUS_DISCONNECTED),
 | 
					      _conn_stat(NSAPI_STATUS_DISCONNECTED),
 | 
				
			||||||
      _conn_stat_cb(NULL),
 | 
					      _conn_stat_cb(NULL),
 | 
				
			||||||
      _global_event_queue(NULL),
 | 
					      _global_event_queue(NULL),
 | 
				
			||||||
| 
						 | 
					@ -187,8 +188,12 @@ void ESP8266Interface::_connect_async()
 | 
				
			||||||
        _cmutex.unlock();
 | 
					        _cmutex.unlock();
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    _connect_retval = _esp.connect(ap_ssid, ap_pass);
 | 
				
			||||||
    if (_esp.connect(ap_ssid, ap_pass) != NSAPI_ERROR_OK) {
 | 
					    if (_connect_retval == NSAPI_ERROR_OK || _connect_retval == NSAPI_ERROR_AUTH_FAILURE
 | 
				
			||||||
 | 
					            || _connect_retval == NSAPI_ERROR_NO_SSID) {
 | 
				
			||||||
 | 
					        _connect_event_id = 0;
 | 
				
			||||||
 | 
					        _if_connected.notify_all();
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
        // Postpone to give other stuff time to run
 | 
					        // Postpone to give other stuff time to run
 | 
				
			||||||
        _connect_event_id = _global_event_queue->call_in(ESP8266_CONNECT_TIMEOUT, callback(this, &ESP8266Interface::_connect_async));
 | 
					        _connect_event_id = _global_event_queue->call_in(ESP8266_CONNECT_TIMEOUT, callback(this, &ESP8266Interface::_connect_async));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -196,9 +201,6 @@ void ESP8266Interface::_connect_async()
 | 
				
			||||||
            MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER, MBED_ERROR_CODE_ENOMEM), \
 | 
					            MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER, MBED_ERROR_CODE_ENOMEM), \
 | 
				
			||||||
                            "_connect_async(): unable to add event to queue");
 | 
					                            "_connect_async(): unable to add event to queue");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        _connect_event_id = 0;
 | 
					 | 
				
			||||||
        _if_connected.notify_all();
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    _cmutex.unlock();
 | 
					    _cmutex.unlock();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -235,6 +237,7 @@ int ESP8266Interface::connect()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    _cmutex.lock();
 | 
					    _cmutex.lock();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    _connect_retval = NSAPI_ERROR_NO_CONNECTION;
 | 
				
			||||||
    MBED_ASSERT(!_connect_event_id);
 | 
					    MBED_ASSERT(!_connect_event_id);
 | 
				
			||||||
    _connect_event_id = _global_event_queue->call(callback(this, &ESP8266Interface::_connect_async));
 | 
					    _connect_event_id = _global_event_queue->call(callback(this, &ESP8266Interface::_connect_async));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -243,13 +246,14 @@ int ESP8266Interface::connect()
 | 
				
			||||||
                        "connect(): unable to add event to queue");
 | 
					                        "connect(): unable to add event to queue");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while (_if_blocking && (_conn_status_to_error() != NSAPI_ERROR_IS_CONNECTED)) {
 | 
					    while (_if_blocking && (_conn_status_to_error() != NSAPI_ERROR_IS_CONNECTED)
 | 
				
			||||||
 | 
					            && (_connect_retval == NSAPI_ERROR_NO_CONNECTION)) {
 | 
				
			||||||
        _if_connected.wait();
 | 
					        _if_connected.wait();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    _cmutex.unlock();
 | 
					    _cmutex.unlock();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return NSAPI_ERROR_OK;
 | 
					    return _connect_retval;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int ESP8266Interface::set_credentials(const char *ssid, const char *pass, nsapi_security_t security)
 | 
					int ESP8266Interface::set_credentials(const char *ssid, const char *pass, nsapi_security_t security)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -368,6 +368,7 @@ private:
 | 
				
			||||||
    bool _get_firmware_ok();
 | 
					    bool _get_firmware_ok();
 | 
				
			||||||
    nsapi_error_t _init(void);
 | 
					    nsapi_error_t _init(void);
 | 
				
			||||||
    void _hw_reset();
 | 
					    void _hw_reset();
 | 
				
			||||||
 | 
					    nsapi_error_t _connect_retval;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //sigio
 | 
					    //sigio
 | 
				
			||||||
    struct {
 | 
					    struct {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue