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

Fixup EXRAIL Read Loco issues

This commit is contained in:
Asbelos 2021-10-21 22:44:25 +01:00
parent 4f16a4ca06
commit 151f7d7f86

View File

@ -44,6 +44,7 @@ const int16_t HASH_KEYWORD_ROUTES=-3702;
// The thrrads exist in a ring, each time through loop() the next thread in the ring is serviced. // The thrrads exist in a ring, each time through loop() the next thread in the ring is serviced.
// Statics // Statics
const int16_t LOCO_ID_WAITING=-99; // waiting for loco id from prog track
int16_t RMFT2::progtrackLocoId; // used for callback when detecting a loco on prograck int16_t RMFT2::progtrackLocoId; // used for callback when detecting a loco on prograck
bool RMFT2::diag=false; // <D EXRAIL ON> bool RMFT2::diag=false; // <D EXRAIL ON>
RMFT2 * RMFT2::loopTask=NULL; // loopTask contains the address of ONE of the tasks in a ring. RMFT2 * RMFT2::loopTask=NULL; // loopTask contains the address of ONE of the tasks in a ring.
@ -595,14 +596,20 @@ void RMFT2::loop2() {
break; break;
case OPCODE_READ_LOCO1: // READ_LOCO is implemented as 2 separate opcodes case OPCODE_READ_LOCO1: // READ_LOCO is implemented as 2 separate opcodes
progtrackLocoId=LOCO_ID_WAITING; // Nothing found yet
DCC::getLocoId(readLocoCallback); DCC::getLocoId(readLocoCallback);
break; break;
case OPCODE_READ_LOCO2: case OPCODE_READ_LOCO2:
if (progtrackLocoId<0) { if (progtrackLocoId==LOCO_ID_WAITING) {
delayMe(100); delayMe(100);
return; // still waiting for callback return; // still waiting for callback
} }
if (progtrackLocoId<0) {
kill(F("No Loco Found"),progtrackLocoId);
return; // still waiting for callback
}
loco=progtrackLocoId; loco=progtrackLocoId;
speedo=0; speedo=0;
forward=true; forward=true;