Create LanSettings.cpp
Add ESP32-Poe Lan Support
This commit is contained in:
parent
c97d16a287
commit
0a57dfae9a
104
src/LanSettings.cpp
Normal file
104
src/LanSettings.cpp
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
#include "LanSettings.h"
|
||||||
|
#include "Configuration.h"
|
||||||
|
#include "defaults.h"
|
||||||
|
#include <ETH.h>
|
||||||
|
#include <AsyncTCP.h>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
#define ETH_CLK_MODE ETH_CLOCK_GPIO17_OUT
|
||||||
|
#define ETH_PHY_POWER 12
|
||||||
|
|
||||||
|
LanSettingsClass Lan;
|
||||||
|
|
||||||
|
LanSettingsClass::LanSettingsClass() {
|
||||||
|
bEthConnected = false;
|
||||||
|
bFirstLoop = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LanSettingsClass::init() {
|
||||||
|
// todo: only set static IP when DHCP server is unreachable
|
||||||
|
local_ip = IPAddress (192, 168, 1, 17);
|
||||||
|
gateway = IPAddress (192, 168, 1, 1);
|
||||||
|
subnet = IPAddress (255, 255, 255, 0);
|
||||||
|
dns1 = IPAddress (192, 168, 1, 1);
|
||||||
|
dns2 = IPAddress (192, 168, 1, 1);
|
||||||
|
|
||||||
|
WiFi.onEvent(std::bind(&LanSettingsClass::WiFiEvent, this, std::placeholders::_1));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void LanSettingsClass::firstLoop() {
|
||||||
|
if(false == bFirstLoop) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// we have to do ETH.begin() in the "FirstLoop",
|
||||||
|
// because MqttSettingsClass::WiFiEvent callback has to register before.
|
||||||
|
// There is the MQTT "connection detection"
|
||||||
|
ETH.begin();
|
||||||
|
}
|
||||||
|
bFirstLoop = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LanSettingsClass::loop() {
|
||||||
|
firstLoop();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool LanSettingsClass::isConnected() {
|
||||||
|
return bEthConnected;
|
||||||
|
}
|
||||||
|
|
||||||
|
// look @ https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFi/examples/WiFiClientEvents/WiFiClientEvents.ino
|
||||||
|
void LanSettingsClass::WiFiEvent(WiFiEvent_t event) {
|
||||||
|
|
||||||
|
switch (event) {
|
||||||
|
|
||||||
|
case ARDUINO_EVENT_ETH_START: // 18
|
||||||
|
if(true == bDebugMode) {
|
||||||
|
Serial.println(F("ETH: Started"));
|
||||||
|
}
|
||||||
|
//set eth hostname here
|
||||||
|
ETH.setHostname("openDTU-eth");
|
||||||
|
// ETH.config(local_ip, gateway, subnet, dns1, dns2);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ARDUINO_EVENT_ETH_STOP: // 19
|
||||||
|
if(true == bDebugMode) {
|
||||||
|
Serial.println(F("ETH: Stopped"));
|
||||||
|
}
|
||||||
|
bEthConnected = false;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ARDUINO_EVENT_ETH_CONNECTED: // 20
|
||||||
|
if(true == bDebugMode) {
|
||||||
|
Serial.println(F("ETH: Connected"));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ARDUINO_EVENT_ETH_DISCONNECTED: // 21
|
||||||
|
if(true == bDebugMode) {
|
||||||
|
Serial.println(F("ETH: Disconnected"));
|
||||||
|
}
|
||||||
|
bEthConnected = false;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ARDUINO_EVENT_ETH_GOT_IP: // 22
|
||||||
|
if(true == bDebugMode) {
|
||||||
|
Serial.print(F("ETH: MAC: "));
|
||||||
|
Serial.print(ETH.macAddress());
|
||||||
|
Serial.print(F(", IPv4: "));
|
||||||
|
Serial.print(ETH.localIP());
|
||||||
|
if (ETH.fullDuplex()) {
|
||||||
|
Serial.print(F(", FULL_DUPLEX"));
|
||||||
|
}
|
||||||
|
Serial.print(F(", "));
|
||||||
|
Serial.print(ETH.linkSpeed());
|
||||||
|
Serial.println(F("Mbps"));
|
||||||
|
bEthConnected = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user