From 5256c1d021e252de81b5a35aac50cba9a2433dd8 Mon Sep 17 00:00:00 2001 From: SteveT Date: Wed, 12 Aug 2020 21:39:57 -0400 Subject: [PATCH] return new speed and dir to client, add timestamp to DIAG --- WiThrottle.cpp | 12 +++++++----- WiThrottle.h | 2 +- WifiInterface.cpp | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/WiThrottle.cpp b/WiThrottle.cpp index 48a95fa..6d26809 100644 --- a/WiThrottle.cpp +++ b/WiThrottle.cpp @@ -144,12 +144,12 @@ void WiThrottle::parse(Print & stream, byte * cmdx) { case 'C': newstate=false; break; case '2': newstate=!Turnout::isActive(id); } - Turnout::activate(id,newstate); + Turnout::activate(id,newstate); StringFormatter::send(stream, F("PTA%c%d\n"),newstate?'4':'2',id ); } break; case 'N': // Heartbeat (2) - StringFormatter::send(stream, F("*%d\n"),HEARTBEAT_TIMEOUT); // return timeout value + StringFormatter::send(stream, F("*%d\n"),HEARTBEAT_TIMEOUT); // return timeout value break; case 'M': // multithrottle multithrottle(stream, cmd); @@ -251,6 +251,7 @@ void WiThrottle::locoAction(Print & stream, byte* aval, char throttleChar, int c byte locospeed=getInt(aval+1); LOOPLOCOS(throttleChar, cab) { DCC::setThrottle(myLocos[loco].cab,locospeed, DCC::getThrottleDirection(myLocos[loco].cab)); + StringFormatter::send(stream,F("M%cA%c%d<;>V%d\n"), throttleChar, LorS(myLocos[loco].cab), myLocos[loco].cab, DCC::getThrottleSpeed(myLocos[loco].cab)); } } break; @@ -282,9 +283,10 @@ void WiThrottle::locoAction(Print & stream, byte* aval, char throttleChar, int c case 'R': { bool forward=aval[1]!='0'; - LOOPLOCOS(throttleChar, cab) { - DCC::setThrottle(myLocos[loco].cab, DCC::getThrottleSpeed(myLocos[loco].cab), forward); - } + LOOPLOCOS(throttleChar, cab) { + DCC::setThrottle(myLocos[loco].cab, DCC::getThrottleSpeed(myLocos[loco].cab), forward); + StringFormatter::send(stream,F("M%cA%c%d<;>R%d\n"), throttleChar, LorS(myLocos[loco].cab), myLocos[loco].cab, DCC::getThrottleDirection(myLocos[loco].cab)); + } } break; case 'X': diff --git a/WiThrottle.h b/WiThrottle.h index 5351c14..612e95a 100644 --- a/WiThrottle.h +++ b/WiThrottle.h @@ -36,7 +36,7 @@ class WiThrottle { ~WiThrottle(); static const int MAX_MY_LOCO=10; //maximum number of locos assigned to a single client - static const int HEARTBEAT_TIMEOUT=4;// heartbeat at 4secs to provide messaging transport + static const int HEARTBEAT_TIMEOUT=3;// heartbeat at 3secs to provide messaging transport static WiThrottle* firstThrottle; static int getInt(byte * cmd); static int getLocoId(byte * cmd); diff --git a/WifiInterface.cpp b/WifiInterface.cpp index b34a02c..da471c7 100644 --- a/WifiInterface.cpp +++ b/WifiInterface.cpp @@ -232,7 +232,7 @@ void WifiInterface::loop() { // AT this point we have read an incoming message into the buffer streamer.print('\0'); // null the end of the buffer so we can treat it as a string - DIAG(F("\nWifi(%d)<-[%e]\n"),connectionId,buffer); + DIAG(F("\n%d Wifi(%d)<-[%e]\n"),millis(),connectionId,buffer); streamer.setBufferContentPosition(0,0); // reset write position to start of buffer // SIDE EFFECT WARNING::: // We know that parser will read the entire buffer before starting to write to it. @@ -256,7 +256,7 @@ void WifiInterface::loop() { } // prepare to send reply streamer.print('\0'); // null the end of the buffer so we can treat it as a string - DIAG(F("WiFi(%d)->[%e] l(%d)\n"),connectionId,buffer,streamer.available()-1); + DIAG(F("%d WiFi(%d)->[%e] l(%d)\n"),millis(),connectionId,buffer,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