simplify onDisconnected()
This commit is contained in:
@@ -105,8 +105,8 @@ void WifiDevice::openAP()
|
|||||||
bool WifiDevice::connect()
|
bool WifiDevice::connect()
|
||||||
{
|
{
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
String ssid = _preferences->getString(preference_wifi_ssid, "");
|
ssid = _preferences->getString(preference_wifi_ssid, "");
|
||||||
String pass = _preferences->getString(preference_wifi_pass, "");
|
pass = _preferences->getString(preference_wifi_pass, "");
|
||||||
WiFi.mode(WIFI_STA);
|
WiFi.mode(WIFI_STA);
|
||||||
WiFi.setHostname(_hostname.c_str());
|
WiFi.setHostname(_hostname.c_str());
|
||||||
delay(500);
|
delay(500);
|
||||||
@@ -166,24 +166,24 @@ bool WifiDevice::connect()
|
|||||||
|
|
||||||
switch (status)
|
switch (status)
|
||||||
{
|
{
|
||||||
case WL_CONNECTED:
|
case WL_CONNECTED:
|
||||||
Log->println("WiFi connected");
|
Log->println("WiFi connected");
|
||||||
break;
|
break;
|
||||||
case WL_NO_SSID_AVAIL:
|
case WL_NO_SSID_AVAIL:
|
||||||
Log->println("WiFi SSID not available");
|
Log->println("WiFi SSID not available");
|
||||||
break;
|
break;
|
||||||
case WL_CONNECT_FAILED:
|
case WL_CONNECT_FAILED:
|
||||||
Log->println("WiFi connection failed");
|
Log->println("WiFi connection failed");
|
||||||
break;
|
break;
|
||||||
case WL_IDLE_STATUS:
|
case WL_IDLE_STATUS:
|
||||||
Log->println("WiFi changing status");
|
Log->println("WiFi changing status");
|
||||||
break;
|
break;
|
||||||
case WL_DISCONNECTED:
|
case WL_DISCONNECTED:
|
||||||
Log->println("WiFi disconnected");
|
Log->println("WiFi disconnected");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Log->println("WiFi timeout");
|
Log->println("WiFi timeout");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (status != WL_CONNECTED)
|
if (status != WL_CONNECTED)
|
||||||
@@ -250,62 +250,61 @@ void WifiDevice::onConnected()
|
|||||||
|
|
||||||
void WifiDevice::onDisconnected()
|
void WifiDevice::onDisconnected()
|
||||||
{
|
{
|
||||||
if(_connected)
|
if (!_connected) return;
|
||||||
|
_connected = false;
|
||||||
|
|
||||||
|
Log->println("Wi-Fi disconnected");
|
||||||
|
|
||||||
|
//QUICK RECONNECT
|
||||||
|
_connecting = true;
|
||||||
|
ssid = _preferences->getString(preference_wifi_ssid, "");
|
||||||
|
pass = _preferences->getString(preference_wifi_pass, "");
|
||||||
|
|
||||||
|
if(!_ipConfiguration->dhcpEnabled())
|
||||||
{
|
{
|
||||||
_connected = false;
|
WiFi.config(_ipConfiguration->ipAddress(), _ipConfiguration->dnsServer(), _ipConfiguration->defaultGateway(), _ipConfiguration->subnet());
|
||||||
Log->println("Wi-Fi disconnected");
|
}
|
||||||
|
|
||||||
//QUICK RECONNECT
|
WiFi.begin(ssid, pass);
|
||||||
_connecting = true;
|
|
||||||
String ssid = _preferences->getString(preference_wifi_ssid, "");
|
|
||||||
String pass = _preferences->getString(preference_wifi_pass, "");
|
|
||||||
|
|
||||||
if(!_ipConfiguration->dhcpEnabled())
|
int loop = 0;
|
||||||
|
|
||||||
|
while(!isConnected() && loop < 200)
|
||||||
|
{
|
||||||
|
loop++;
|
||||||
|
delay(100);
|
||||||
|
}
|
||||||
|
|
||||||
|
_connecting = false;
|
||||||
|
//END QUICK RECONNECT
|
||||||
|
|
||||||
|
if(!isConnected())
|
||||||
|
{
|
||||||
|
if(_preferences->getBool(preference_restart_on_disconnect, false) && (espMillis() > 60000))
|
||||||
{
|
{
|
||||||
WiFi.config(_ipConfiguration->ipAddress(), _ipConfiguration->dnsServer(), _ipConfiguration->defaultGateway(), _ipConfiguration->subnet());
|
Log->println("Restart on disconnect watchdog triggered, rebooting");
|
||||||
}
|
|
||||||
|
|
||||||
WiFi.begin(ssid, pass);
|
|
||||||
|
|
||||||
int loop = 0;
|
|
||||||
|
|
||||||
while(!isConnected() && loop < 200)
|
|
||||||
{
|
|
||||||
loop++;
|
|
||||||
delay(100);
|
delay(100);
|
||||||
|
restartEsp(RestartReason::RestartOnDisconnectWatchdog);
|
||||||
}
|
}
|
||||||
|
|
||||||
_connecting = false;
|
WiFi.disconnect(true);
|
||||||
//END QUICK RECONNECT
|
WiFi.mode(WIFI_STA);
|
||||||
|
WiFi.disconnect();
|
||||||
|
delay(500);
|
||||||
|
|
||||||
if(!isConnected())
|
wifi_mode_t wifiMode;
|
||||||
|
esp_wifi_get_mode(&wifiMode);
|
||||||
|
|
||||||
|
while (wifiMode != WIFI_MODE_STA || WiFi.status() == WL_CONNECTED)
|
||||||
{
|
{
|
||||||
if(_preferences->getBool(preference_restart_on_disconnect, false) && (espMillis() > 60000))
|
|
||||||
{
|
|
||||||
Log->println("Restart on disconnect watchdog triggered, rebooting");
|
|
||||||
delay(100);
|
|
||||||
restartEsp(RestartReason::RestartOnDisconnectWatchdog);
|
|
||||||
}
|
|
||||||
|
|
||||||
WiFi.disconnect(true);
|
|
||||||
WiFi.mode(WIFI_STA);
|
|
||||||
WiFi.disconnect();
|
|
||||||
delay(500);
|
delay(500);
|
||||||
|
Log->println("Waiting for WiFi mode change or disconnection.");
|
||||||
wifi_mode_t wifiMode;
|
|
||||||
esp_wifi_get_mode(&wifiMode);
|
esp_wifi_get_mode(&wifiMode);
|
||||||
|
|
||||||
while (wifiMode != WIFI_MODE_STA || WiFi.status() == WL_CONNECTED)
|
|
||||||
{
|
|
||||||
delay(500);
|
|
||||||
Log->println("Waiting for WiFi mode change or disconnection.");
|
|
||||||
esp_wifi_get_mode(&wifiMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
_connectOnScanDone = true;
|
|
||||||
_openAP = false;
|
|
||||||
scan(false, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_connectOnScanDone = true;
|
||||||
|
_openAP = false;
|
||||||
|
scan(false, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user