1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2024-11-27 01:56:14 +01:00

Fix Ethernet cable disconnect message

This commit is contained in:
pmantoine 2024-02-01 19:15:08 +09:00
parent ad09360a54
commit d1f558d64f
2 changed files with 24 additions and 13 deletions

View File

@ -1,4 +1,6 @@
/*
* © 2024 Morten "Doc" Nielsen
* © 2023-2024 Paul M. Antoine
* © 2022 Bruno Sanches
* © 2021 Fred Decker
* © 2020-2022 Harald Barth
@ -174,9 +176,15 @@ bool EthernetInterface::checkLink() {
Ethernet.setLocalIP(myIP); // for static IP, set it again
#endif
#endif
IPAddress ip = Ethernet.localIP(); // look what IP was obtained (dynamic or static)
server = new EthernetServer(IP_PORT); // Ethernet Server listening on default port IP_PORT
server->begin();
IPAddress ip = Ethernet.localIP(); // look what IP was obtained (dynamic or static)
if (ip[0] == 0)
LCD(4,F("Awaiting DHCP..."));
while (ip[0] == 0) { // wait until we are given an IP address from the DHCP server
// LCD(4,F("."));
ip = Ethernet.localIP(); // look what IP was obtained (dynamic or static)
}
LCD(4,F("IP: %d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]);
LCD(5,F("Port:%d"), IP_PORT);
mdns.begin(Ethernet.localIP(), "dccex"); // hostname
@ -184,21 +192,23 @@ bool EthernetInterface::checkLink() {
// only create a outboundRing it none exists, this may happen if the cable
// gets disconnected and connected again
if(!outboundRing)
outboundRing=new RingStream(OUTBOUND_RING_SIZE);
outboundRing=new RingStream(OUTBOUND_RING_SIZE);
}
return true;
} else { // connected
DIAG(F("Ethernet cable disconnected"));
connected=false;
//clean up any client
for (byte socket = 0; socket < MAX_SOCK_NUM; socket++) {
if(clients[socket].connected())
clients[socket].stop();
} else { // LinkOFF
if (connected) {
DIAG(F("Ethernet cable disconnected"));
connected=false;
//clean up any client
for (byte socket = 0; socket < MAX_SOCK_NUM; socket++) {
if(clients[socket].connected())
clients[socket].stop();
}
// tear down server
delete server;
server = nullptr;
LCD(4,F("IP: None"));
}
// tear down server
delete server;
server = nullptr;
LCD(4,F("IP: None"));
}
return false;
}

View File

@ -4,6 +4,7 @@
#include "StringFormatter.h"
#define VERSION "5.2.27stm32ECvfmdns"
// 5.2.XX - Fix Ethernet cable disconnected message, wait for DHCP
// 5.2.XX - MDNS Generic library integration for Ethernet
// 5.2.XX - Variable frequency for DC mode
// 5.2.27 - Bugfix: IOExpander memory allocation