WIP old-state: Server/TCP override и резервные копии Server.cpp0/Server0.h — снято с рабочей копии 10.09.2026 (правки с 01.2025)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AeA1K5dBUKrnoXVwyoVjzq
This commit is contained in:
2026-09-10 11:35:11 +03:00
parent 90916ab856
commit 5c0d9a83a1
6 changed files with 487 additions and 169 deletions

View File

@ -11,7 +11,8 @@ byte ip[] = {192, 168, 254, 254}; // IP-адрес сервер
uint8_t gateway[] = {192, 168, 0, 1}; // Шлюз
uint8_t subnet[] = {255, 255, 0, 0}; // Маска подсети
EthernetMaketServer server(SERVER_PORT); // Создаем сервер на указанном порту
// EthernetMaketServer server(SERVER_PORT); // Создаем сервер на указанном порту
W5500Server server(0, SERVER_PORT);
unsigned long previousMillis = 0; // Время последней отправки
const long interval = 1750; // Интервал отправки данных (1.75 секунды)
@ -28,6 +29,7 @@ void serverHandler(EthernetClient client)
Serial.print("sock: ");
Serial.println(client.getSocketNumber());
processReceivedData(buf, len);
// // Обработка каждого 4-байтового пакета
// for (int i = 0; i < len; i += 4)
@ -51,7 +53,6 @@ void serverHandler(EthernetClient client)
void setup()
{
Serial.begin(115200);
// Инициализация SPI и Ethernet
SPI.begin();
pinMode(W5500_CS_PIN, OUTPUT);
@ -59,13 +60,15 @@ void setup()
digitalWrite(W5500_CS_PIN, HIGH);
// Инициализация Ethernet
w5500.softReset();
Ethernet.setCsPin(W5500_CS_PIN); // Установка пина CS для W5500
Ethernet.init();
Ethernet.begin(mac, ip, subnet, gateway, gateway);
// Запуск сервера
server.begin();
server.setServerHandler(serverHandler);
server.enableCloseOnTimeout(false);
// server.setServerHandler(serverHandler);
Serial.print("Server is running at ");
Serial.println(Ethernet.localIP());
}
@ -75,6 +78,23 @@ void loop()
server.tick();
uint32_t currentMillis = millis();
if(Serial.available()){
uint8_t in = Serial.read();
switch (in)
{
case 's':
// server.printSocketsState();
printSocketsState();
break;
case 'b':
// server.begin(7);
break;
default:
break;
}
}
if (currentMillis - ttt > 75)
{
digitalToggle(PC13);
@ -123,3 +143,35 @@ volatile void sendResponse(EthernetClient &client, uint32_t packetCount)
}
Serial.println();
}
void printSocketsState(){
// if(s.length() > 0)
// Serial.println(s);
for (int i = 0; i < MAX_SOCK_NUM; i++) {
uint8_t s = w5500.readSnSR(i);
String state = "";
switch (s) {
case 0x00: state = "CLOSED"; break;
case 0x13: state = "INIT"; break;
case 0x14: state = "LISTEN"; break;
case 0x15: state = "SYNSENT"; break;
case 0x16: state = "SYNRECV"; break;
case 0x17: state = "ESTABLISHED"; break;
case 0x18: state = "FIN_WAIT"; break;
case 0x1A: state = "CLOSING"; break;
case 0x1B: state = "TIME_WAIT"; break;
case 0x1C: state = "CLOSE_WAIT"; break;
case 0x1D: state = "LAST_ACK"; break;
case 0x22: state = "UDP"; break;
case 0x32: state = "IPRAW"; break;
case 0x42: state = "MACRAW"; break;
case 0x5F: state = "PPPOE"; break;
default: state = "UNKNOWN"; break;
}
delay(1);
Serial.print("SOCK <- ");
Serial.print(i);
Serial.print(" State: ");
Serial.println(state);
}
}