1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2025-02-17 06:29:15 +01:00

ESP32: Turn always on the JOINed PROG track when it acts as MAIN

This commit is contained in:
Harald Barth 2024-08-06 07:30:01 +02:00
parent 9c263062e4
commit c5c5609fc6

View File

@ -641,23 +641,25 @@ void TrackManager::setJoinRelayPin(byte joinRelayPin) {
void TrackManager::setJoin(bool joined) { void TrackManager::setJoin(bool joined) {
#ifdef ARDUINO_ARCH_ESP32 #ifdef ARDUINO_ARCH_ESP32
if (joined) { if (joined) { // if we go into joined mode (PROG acts as MAIN)
FOR_EACH_TRACK(t) { FOR_EACH_TRACK(t) {
if (track[t]->getMode() & TRACK_MODE_PROG) { if (track[t]->getMode() & TRACK_MODE_PROG) { // find PROG track
tempProgTrack = t; tempProgTrack = t; // remember PROG track
setTrackMode(t, TRACK_MODE_MAIN); setTrackMode(t, TRACK_MODE_MAIN);
break; track[t]->setPower(POWERMODE::ON); // if joined, always on
break; // there is only one prog track, done
} }
} }
} else { } else {
if (tempProgTrack != MAX_TRACKS+1) { if (tempProgTrack != MAX_TRACKS+1) {
// as setTrackMode with TRACK_MODE_PROG defaults to // setTrackMode defaults to power off, so we
// power off, we will take the current power state // need to preserve that state.
// of our track and then preserve that state. POWERMODE tPTmode = track[tempProgTrack]->getPower(); // get current power status of this track
POWERMODE tPTmode = track[tempProgTrack]->getPower(); //get current power status of this track setTrackMode(tempProgTrack, TRACK_MODE_PROG); // set track mode back to prog
setTrackMode(tempProgTrack, TRACK_MODE_PROG); track[tempProgTrack]->setPower(tPTmode); // set power status as it was before
track[tempProgTrack]->setPower(tPTmode); //set track status as it was before
tempProgTrack = MAX_TRACKS+1; tempProgTrack = MAX_TRACKS+1;
} else {
DIAG(F("Unjoin but no remembered prog track"));
} }
} }
#endif #endif