23
23
24
24
#ifdef BOARD_HAS_WIFI /* Only compile if the board has WiFi */
25
25
26
+ /* *****************************************************************************
27
+ CONSTANTS
28
+ ******************************************************************************/
29
+ #if defined(ARDUINO_ARCH_ESP8266)
30
+ static int const ESP_WIFI_CONNECTION_TIMEOUT = 3000 ;
31
+ #endif
32
+
26
33
/* *****************************************************************************
27
34
CTOR/DTOR
28
35
******************************************************************************/
@@ -54,10 +61,11 @@ unsigned long WiFiConnectionHandler::getTime()
54
61
55
62
NetworkConnectionState WiFiConnectionHandler::update_handleInit ()
56
63
{
57
- #if !defined(ARDUINO_ARCH_ESP8266) && !defined(ARDUINO_ARCH_ESP32)
58
64
#if !defined(__AVR__)
59
65
Debug.print (DBG_INFO, F (" WiFi.status(): %d" ), WiFi.status ());
60
66
#endif
67
+
68
+ #if !defined(ARDUINO_ARCH_ESP8266) && !defined(ARDUINO_ARCH_ESP32)
61
69
if (WiFi.status () == NETWORK_HARDWARE_ERROR)
62
70
{
63
71
#if !defined(__AVR__)
@@ -80,26 +88,26 @@ NetworkConnectionState WiFiConnectionHandler::update_handleInit()
80
88
delay (5000 );
81
89
}
82
90
#endif
83
-
84
91
#else
85
- Debug.print (DBG_INFO, F (" WiFi status ESP: %d" ), WiFi.status ());
86
- WiFi.disconnect ();
87
- delay (300 );
88
- WiFi.begin (_ssid, _pass);
89
- delay (1000 );
92
+ WiFi.mode (WIFI_STA);
90
93
#endif /* #if !defined(ARDUINO_ARCH_ESP8266) && !defined(ARDUINO_ARCH_ESP32) */
91
-
92
94
return NetworkConnectionState::CONNECTING;
93
95
}
94
96
95
97
NetworkConnectionState WiFiConnectionHandler::update_handleConnecting ()
96
98
{
97
- #if !defined(ARDUINO_ARCH_ESP8266) && !defined(ARDUINO_ARCH_ESP32)
98
99
if (WiFi.status () != WL_CONNECTED)
99
100
{
100
101
WiFi.begin (_ssid, _pass);
102
+ #if defined(ARDUINO_ARCH_ESP8266)
103
+ /* Wait connection otherwise board won't connect */
104
+ unsigned long start = millis ();
105
+ while ((WiFi.status () != WL_CONNECTED) && (millis () - start) < ESP_WIFI_CONNECTION_TIMEOUT) {
106
+ delay (100 );
107
+ }
108
+ #endif
109
+
101
110
}
102
- #endif /* #if !defined(ARDUINO_ARCH_ESP8266) && !defined(ARDUINO_ARCH_ESP32) */
103
111
104
112
if (WiFi.status () != NETWORK_CONNECTED)
105
113
{
0 commit comments