diff --git a/EXRAIL2.cpp b/EXRAIL2.cpp index 7e92edf..3007440 100644 --- a/EXRAIL2.cpp +++ b/EXRAIL2.cpp @@ -931,8 +931,9 @@ void RMFT2::loop2() { #ifndef DISABLE_PROG case OPCODE_JOIN: - TrackManager::setPower(POWERMODE::ON); TrackManager::setJoin(true); + TrackManager::setMainPower(POWERMODE::ON); + TrackManager::setProgPower(POWERMODE::ON); break; case OPCODE_UNJOIN: diff --git a/TrackManager.cpp b/TrackManager.cpp index 72e8fad..b5357c5 100644 --- a/TrackManager.cpp +++ b/TrackManager.cpp @@ -668,7 +668,8 @@ void TrackManager::setJoin(bool joined) { if (track[t]->getMode() & TRACK_MODE_PROG) { // find PROG track tempProgTrack = t; // remember PROG track setTrackMode(t, TRACK_MODE_MAIN); - track[t]->setPower(POWERMODE::ON); // if joined, always on + // setPower() of the track called after + // seperately after setJoin() instead break; // there is only one prog track, done } } diff --git a/WiThrottle.cpp b/WiThrottle.cpp index 11050b9..aaa60de 100644 --- a/WiThrottle.cpp +++ b/WiThrottle.cpp @@ -500,9 +500,9 @@ void WiThrottle::getLocoCallback(int16_t locoid) { char addcmd[20]={'M',stashThrottleChar,'+', addrchar}; itoa(locoid,addcmd+4,10); stashInstance->multithrottle(stashStream, (byte *)addcmd); + TrackManager::setJoin(true); // <1 JOIN> so we can drive loco away TrackManager::setMainPower(POWERMODE::ON); TrackManager::setProgPower(POWERMODE::ON); - TrackManager::setJoin(true); // <1 JOIN> so we can drive loco away DIAG(F("LocoCallback commit success")); stashStream->commit(); }