22#ifdef SUPPORT_ETHERNET
25class c_EthernetDriver;
31 c_EthernetDriver * pEthernetDriver =
nullptr;
34 virtual ~fsm_Eth_state() {}
36 virtual void Poll (
void) = 0;
37 virtual void Init (
void) = 0;
38 virtual void GetStateName (String& sName) = 0;
39 virtual void OnConnect (
void) = 0;
40 virtual void OnGotIp (
void) = 0;
41 virtual void OnDisconnect (
void) = 0;
42 void SetParent (c_EthernetDriver* parent) { pEthernetDriver = parent; }
51 virtual ~c_EthernetDriver ();
58 int ValidateConfig ();
59 IPAddress GetIpAddress ();
60 IPAddress GetIpSubNetMask ();
61 IPAddress GetIpGateway ();
62 String GetMacAddress ();
63 void GetHostname (String & Name);
64 void SetHostname (String & Name) {}
65 void GetStatus (JsonObject & jsonStatus);
66 void SetEthHostname ();
70 inline void SetFsmState (fsm_Eth_state * NewState) { pCurrentFsmState = NewState; }
71 void AnnounceState ();
72 FastTimer & GetFsmTimer () {
return FsmTimer; }
73 void NetworkStateChanged (
bool NetworkState);
76 inline uint32_t GetPowerPinActiveDelayMs () {
return powerPinActiveDelayMs; }
82 void onEventHandler (
const WiFiEvent_t event,
const WiFiEventInfo_t info);
85 uint32_t PollInterval = 1000;
86 bool HasBeenPreviouslyConfigured =
false;
88 IPAddress ip = INADDR_NONE;
89 IPAddress netmask = INADDR_NONE;
90 IPAddress gateway = INADDR_NONE;
91 IPAddress primaryDns = INADDR_NONE;
92 IPAddress secondaryDns = INADDR_NONE;
101 uint32_t powerPinActiveDelayMs = 1000;
104 friend class fsm_Eth_state_Boot;
105 friend class fsm_Eth_state_ConnectingToEth;
106 friend class fsm_Eth_state_WaitForIP;
107 friend class fsm_Eth_state_GotIp;
108 friend class fsm_Eth_state_DeviceInitFailed;
109 friend class fsm_Eth_state;
110 fsm_Eth_state * pCurrentFsmState =
nullptr;
122class fsm_Eth_state_Boot :
public fsm_Eth_state
125 fsm_Eth_state_Boot() {}
126 virtual ~fsm_Eth_state_Boot() {}
128 virtual void Poll (
void);
129 virtual void Init (
void);
130 virtual void GetStateName (String& sName) { sName = F (
"Boot"); }
131 virtual void OnConnect (
void) { }
132 virtual void OnGotIp (
void) { }
133 virtual void OnDisconnect (
void) { }
138class fsm_Eth_state_PoweringUp :
public fsm_Eth_state
141 fsm_Eth_state_PoweringUp() {}
142 virtual ~fsm_Eth_state_PoweringUp() {}
144 virtual void Poll (
void);
145 virtual void Init (
void);
146 virtual void GetStateName (String& sName) { sName = F (
"Powering Up"); }
147 virtual void OnConnect (
void) {}
148 virtual void OnGotIp (
void) {}
149 virtual void OnDisconnect (
void) {}
154class fsm_Eth_state_ConnectingToEth :
public fsm_Eth_state
157 fsm_Eth_state_ConnectingToEth() {}
158 virtual ~fsm_Eth_state_ConnectingToEth() {}
160 virtual void Poll(
void);
161 virtual void Init(
void);
162 virtual void GetStateName (String& sName) { sName = F (
"Connecting"); }
163 virtual void OnConnect (
void);
164 virtual void OnGotIp (
void);
165 virtual void OnDisconnect (
void) {}
170class fsm_Eth_state_WaitForIP :
public fsm_Eth_state
173 fsm_Eth_state_WaitForIP() {}
174 virtual ~fsm_Eth_state_WaitForIP() {}
176 virtual void Poll (
void) {}
177 virtual void Init (
void);
178 virtual void GetStateName (String& sName) { sName = F (
"Wait for IP Address"); }
179 virtual void OnConnect (
void) {}
180 virtual void OnGotIp (
void);
181 virtual void OnDisconnect (
void);
186class fsm_Eth_state_GotIp :
public fsm_Eth_state
189 fsm_Eth_state_GotIp() {}
190 virtual ~fsm_Eth_state_GotIp() {}
192 virtual void Poll (
void) {}
193 virtual void Init (
void);
194 virtual void GetStateName (String& sName) { sName = F (
"Got IP"); }
195 virtual void OnConnect (
void) {}
196 virtual void OnGotIp (
void) {}
197 virtual void OnDisconnect (
void);
202class fsm_Eth_state_DeviceInitFailed :
public fsm_Eth_state
205 fsm_Eth_state_DeviceInitFailed() {}
206 virtual ~fsm_Eth_state_DeviceInitFailed() {}
208 virtual void Poll (
void) {}
209 virtual void Init (
void);
210 virtual void GetStateName (String& sName) { sName = F (
"Device Init Failed"); }
211 virtual void OnConnect (
void) {}
212 virtual void OnGotIp (
void) {}
213 virtual void OnDisconnect (
void) {}
217extern c_EthernetDriver EthernetDriver;
const CN_PROGMEM char CN_EthDrv[]
Definition ConstNames.cpp:92
#define DEFAULT_ETH_POWER_PIN_ACTIVE
Definition GPIO_Defs_ESP32_Bong69.hpp:61
#define DEFAULT_ETH_POWER_PIN
Definition GPIO_Defs_ESP32_Bong69.hpp:59
#define DEFAULT_ETH_CLK_MODE
Definition GPIO_Defs_ESP32_Bong69.hpp:56
#define DEFAULT_ETH_ADDR
Definition GPIO_Defs_ESP32_Bong69.hpp:69
#define DEFAULT_ETH_TYPE
Definition GPIO_Defs_ESP32_Bong69.hpp:64
#define DEFAULT_ETH_MDC_PIN
Definition GPIO_Defs_ESP32_Bong69.hpp:76
#define DEFAULT_ETH_MDIO_PIN
Definition GPIO_Defs_ESP32_Bong69.hpp:77
Definition FastTimer.hpp:24
void GetDriverName(String &Name)
Definition main.cpp:115
void GetConfig(JsonObject &json)
Definition main.cpp:440
void SetConfig(const char *DataString)
Definition main.cpp:286