1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2024-11-23 08:06:13 +01:00

Prioritise arriving commands over responses

Sems to provide a more reliable system
This commit is contained in:
Asbelos 2020-08-23 19:56:47 +01:00
parent db31a2b355
commit b225ffb9f3

View File

@ -103,6 +103,8 @@ bool WifiInterface::setup2(const __FlashStringHelper* SSid, const __FlashStringH
StringFormatter::send(wifiStream, F("AT+CIPSERVER=1,%d\r\n"), port); // turn on server on port
if (!checkForOK(10000, OK_SEARCH, true)) return false;
StringFormatter::send(wifiStream, F("ATE0\r\n")); // turn off the echo server on port
return true;
}
@ -242,14 +244,20 @@ void WifiInterface::loop() {
break;
}
if (ch == 'K') { // assume its in SEND OK
DIAG(F("\n Wifi AT+CIPCLOSE=%d\r\n"), connectionId);
StringFormatter::send(wifiStream, F("AT+CIPCLOSE=%d\r\n"), connectionId);
loopstate = 0; // wait for +IPD
}
break;
case 12: // Waiting for OK after send busy
if (ch == '+') { // Uh-oh IPD problem
DIAG(F("\n\n Wifi ASYNC CLASH - LOST REPLY\n"));
connectionId = 0;
loopstate = 1;
}
if (ch == 'K') { // assume its in SEND OK
DIAG(F("\n\n WIFI BUSY RETRYING SEND \n"));
DIAG(F("\n\n Wifi BUSY RETRYING.. AT+CIPSEND=%d,%d\r\n"), connectionId, streamer.available() - 1);
StringFormatter::send(wifiStream, F("AT+CIPSEND=%d,%d\r\n"), connectionId, streamer.available() - 1);
loopTimeoutStart = millis();
loopstate = 10; // non-blocking loop waits for > before sending
@ -286,7 +294,10 @@ void WifiInterface::loop() {
if (streamer.available() == 0) {
// No reply
if (closeAfter) StringFormatter::send(wifiStream, F("AT+CIPCLOSE=%d\r\n"), connectionId);
if (closeAfter) {
DIAG(F("AT+CIPCLOSE=%d\r\n"), connectionId);
StringFormatter::send(wifiStream, F("AT+CIPCLOSE=%d\r\n"), connectionId);
}
loopstate = 0; // go back to waiting for +IPD
return;
}