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

Bugfix: Do not turn on track with trackmode NONE

This commit is contained in:
Harald Barth 2023-11-22 10:53:34 +01:00
parent 4308739c2b
commit 03db06f2ee

View File

@ -511,12 +511,15 @@ void TrackManager::setTrackPower(TRACK_MODE trackmodeToMatch, POWERMODE powermod
void TrackManager::setTrackPower(POWERMODE powermode, byte t) { void TrackManager::setTrackPower(POWERMODE powermode, byte t) {
MotorDriver *driver=track[t]; MotorDriver *driver=track[t];
TRACK_MODE trackmode = driver->getMode(); TRACK_MODE trackmode = driver->getMode();
if (trackmode & TRACK_MODE_DC) { if (trackmode & TRACK_MODE_NONE) {
driver->setBrake(true); // Track is unused. Brake is good to have.
powermode = POWERMODE::OFF; // Track is unused. Force it to OFF
} else if (trackmode & TRACK_MODE_DC) { // includes inverted DC (called DCX)
if (powermode == POWERMODE::ON) { if (powermode == POWERMODE::ON) {
driver->setBrake(true); // DC starts with brake on driver->setBrake(true); // DC starts with brake on
applyDCSpeed(t); // speed match DCC throttles applyDCSpeed(t); // speed match DCC throttles
} }
} else { } else /* MAIN PROG EXT BOOST */ {
if (powermode == POWERMODE::ON) { if (powermode == POWERMODE::ON) {
// toggle brake before turning power on - resets overcurrent error // toggle brake before turning power on - resets overcurrent error
// on the Pololu board if brake is wired to ^D2. // on the Pololu board if brake is wired to ^D2.