implement fallback to wifi if W5500 hardware not present
This commit is contained in:
@@ -2,6 +2,13 @@
|
||||
|
||||
#include "PubSubClient.h"
|
||||
|
||||
enum class ReconnectStatus
|
||||
{
|
||||
Failure = 0,
|
||||
Success = 1,
|
||||
CriticalFailure = 2
|
||||
};
|
||||
|
||||
class NetworkDevice
|
||||
{
|
||||
public:
|
||||
@@ -12,7 +19,7 @@ public:
|
||||
virtual PubSubClient* mqttClient() = 0;
|
||||
|
||||
virtual void initialize() = 0;
|
||||
virtual bool reconnect() = 0;
|
||||
virtual ReconnectStatus reconnect() = 0;
|
||||
virtual void reconfigure() = 0;
|
||||
virtual void printError() = 0;
|
||||
|
||||
|
||||
@@ -57,8 +57,7 @@ void W5500Device::initialize()
|
||||
reconnect();
|
||||
}
|
||||
|
||||
|
||||
bool W5500Device::reconnect()
|
||||
ReconnectStatus W5500Device::reconnect()
|
||||
{
|
||||
_hasDHCPAddress = false;
|
||||
|
||||
@@ -66,6 +65,7 @@ bool W5500Device::reconnect()
|
||||
Log->println(F("Initialize Ethernet with DHCP:"));
|
||||
|
||||
int dhcpRetryCnt = 0;
|
||||
bool hardwareFound = false;
|
||||
|
||||
while(dhcpRetryCnt < 3)
|
||||
{
|
||||
@@ -81,12 +81,15 @@ bool W5500Device::reconnect()
|
||||
if (Ethernet.hardwareStatus() == EthernetNoHardware)
|
||||
{
|
||||
Log->println(F("Ethernet module not found"));
|
||||
continue;
|
||||
}
|
||||
if (Ethernet.linkStatus() == LinkOFF)
|
||||
{
|
||||
Log->println(F("Ethernet cable is not connected."));
|
||||
}
|
||||
|
||||
hardwareFound = true;
|
||||
|
||||
IPAddress ip;
|
||||
ip.fromString("192.168.4.1");
|
||||
|
||||
@@ -108,7 +111,12 @@ bool W5500Device::reconnect()
|
||||
}
|
||||
}
|
||||
|
||||
return _hasDHCPAddress;
|
||||
if(!hardwareFound)
|
||||
{
|
||||
return ReconnectStatus::CriticalFailure;
|
||||
}
|
||||
|
||||
return _hasDHCPAddress ? ReconnectStatus::Success : ReconnectStatus::Failure;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ public:
|
||||
~W5500Device();
|
||||
|
||||
virtual void initialize();
|
||||
virtual bool reconnect();
|
||||
virtual ReconnectStatus reconnect();
|
||||
virtual void reconfigure();
|
||||
virtual void printError();
|
||||
|
||||
|
||||
@@ -126,10 +126,10 @@ bool WifiDevice::isConnected()
|
||||
return WiFi.isConnected();
|
||||
}
|
||||
|
||||
bool WifiDevice::reconnect()
|
||||
ReconnectStatus WifiDevice::reconnect()
|
||||
{
|
||||
delay(3000);
|
||||
return isConnected();
|
||||
return isConnected() ? ReconnectStatus::Success : ReconnectStatus::Failure;
|
||||
}
|
||||
|
||||
void WifiDevice::update()
|
||||
|
||||
@@ -13,7 +13,7 @@ public:
|
||||
|
||||
virtual void initialize();
|
||||
virtual void reconfigure();
|
||||
virtual bool reconnect();
|
||||
virtual ReconnectStatus reconnect();
|
||||
virtual void printError();
|
||||
|
||||
virtual void update();
|
||||
|
||||
Reference in New Issue
Block a user