This commit is contained in:
DashyFox 2024-12-11 14:42:13 +03:00
parent a4d01ea360
commit 231b43d8bd

View File

@ -108,27 +108,29 @@ void EthernetMaketClient::close(){
}
void EthernetMaketClient::tick_(){
// todo Переделать на нативные статусы. Избавиться от костылей
if(_sock != MAX_SOCK_NUM && connectStatus!=CONNECT_CONNECTED && connectStatus!=CONNECT_STOP_WAITING&&connectStatus!=CONNECT_CONNECTING){
Serial.print("tick_() sock = "); Serial.print(_sock);
uint8_t s = w5500.readSnSR(_sock);
String state = "";
switch (s) {
case 0x00: state = "CLOSED"; connectStatus = CONNECT_STOP_WAITING; 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"; connectStatus = CONNECT_CONNECTED; break;
case 0x18: state = "FIN_WAIT"; break;
case 0x1A: state = "CLOSING"; break;
case 0x1B: state = "TIME_WAIT"; break;
case 0x1C: state = "CLOSE_WAIT"; connectStatus = CONNECT_STOP_START; 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;
//! костыли ^~^
case SnSR::CLOSED : state = "CLOSED"; connectStatus = CONNECT_STOP_WAITING; break;
case SnSR::INIT : state = "INIT"; break;
case SnSR::LISTEN : state = "LISTEN"; break;
case SnSR::SYNSENT : state = "SYNSENT"; break;
case SnSR::SYNRECV : state = "SYNRECV"; break;
case SnSR::ESTABLISHED : state = "ESTABLISHED"; connectStatus = CONNECT_CONNECTED; break;
case SnSR::FIN_WAIT : state = "FIN_WAIT"; /* goto STOP_START_LABEL; */ break;
case SnSR::CLOSING : state = "CLOSING"; break;
case SnSR::TIME_WAIT : state = "TIME_WAIT"; break;
case SnSR::CLOSE_WAIT : state = "CLOSE_WAIT"; connectStatus = CONNECT_STOP_START; break;
case SnSR::LAST_ACK : state = "LAST_ACK"; break;
case SnSR::UDP : state = "UDP"; break;
case SnSR::IPRAW : state = "IPRAW"; break;
case SnSR::MACRAW : state = "MACRAW"; break;
case SnSR::PPPOE : state = "PPPOE"; break;
default : state = "UNKNOWN"; break;
}
String connectStatusStr = "";
@ -165,21 +167,21 @@ void EthernetMaketClient::tick_(){
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;
case SnSR::CLOSED : state = "CLOSED"; break;
case SnSR::INIT : state = "INIT"; break;
case SnSR::LISTEN : state = "LISTEN"; break;
case SnSR::SYNSENT : state = "SYNSENT"; break;
case SnSR::SYNRECV : state = "SYNRECV"; break;
case SnSR::ESTABLISHED : state = "ESTABLISHED"; break;
case SnSR::FIN_WAIT : state = "FIN_WAIT"; break;
case SnSR::CLOSING : state = "CLOSING"; break;
case SnSR::TIME_WAIT : state = "TIME_WAIT"; break;
case SnSR::CLOSE_WAIT : state = "CLOSE_WAIT"; break;
case SnSR::LAST_ACK : state = "LAST_ACK"; break;
case SnSR::UDP : state = "UDP"; break;
case SnSR::IPRAW : state = "IPRAW"; break;
case SnSR::MACRAW : state = "MACRAW"; break;
case SnSR::PPPOE : state = "PPPOE"; break;
default: state = "UNKNOWN"; break;
}
@ -238,10 +240,11 @@ void EthernetMaketClient::tick_(){
break;
case CONNECT_STOP_START:
disconnect();
STOP_START_LABEL:
Serial.println("CONNECT_STOP_START");
dstIP = IPAddress(0,0,0,0);
dstPort = 0;
disconnect();
stopStartTime = millis();
connectStatus = CONNECT_STOP_WAITING;
Serial.println("CONNECT_STOP_WAITING");
@ -264,6 +267,8 @@ void EthernetMaketClient::tick_(){
Serial.println("CONNECT_IDLE\n\n");
goto SWITCHLOOP;
}
// //! Костыль, блокирует на время ожидания стопа подобно while(millis() - stopStartTime < stopTimeout)
goto SWITCHLOOP;
break;
case CONNECT_IDLE: