1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2025-05-18 00:04:56 +02:00

Join/power order change from master

This commit is contained in:
Asbelos 2025-04-23 08:49:58 +01:00
parent 83a5c52a0d
commit 3d272a8b1e
5 changed files with 11 additions and 10 deletions

View File

@ -312,6 +312,9 @@ void CommandDistributor::broadcastPower() {
state = '1'; state = '1';
} }
if (state != '2')
broadcastReply(COMMAND_TYPE, F("<p%c>\n"),state);
// additional info about MAIN, PROG and JOIN // additional info about MAIN, PROG and JOIN
bool main=TrackManager::getMainPower()==POWERMODE::ON; bool main=TrackManager::getMainPower()==POWERMODE::ON;
bool prog=TrackManager::getProgPower()==POWERMODE::ON; bool prog=TrackManager::getProgPower()==POWERMODE::ON;
@ -320,7 +323,7 @@ void CommandDistributor::broadcastPower() {
const FSH * reason=F(""); const FSH * reason=F("");
if (join) { if (join) {
reason = F(" JOIN"); // with space at start so we can append without space reason = F(" JOIN"); // with space at start so we can append without space
broadcastReply(COMMAND_TYPE, F("<p1 %S>\n"),reason); broadcastReply(COMMAND_TYPE, F("<p1%S>\n"),reason);
} else { } else {
if (main) { if (main) {
//reason = F("MAIN"); //reason = F("MAIN");
@ -331,9 +334,6 @@ void CommandDistributor::broadcastPower() {
broadcastReply(COMMAND_TYPE, F("<p1 PROG>\n")); broadcastReply(COMMAND_TYPE, F("<p1 PROG>\n"));
} }
} }
if (state != '2')
broadcastReply(COMMAND_TYPE, F("<p%c>\n"),state);
#ifdef CD_HANDLE_RING #ifdef CD_HANDLE_RING
// send '1' if all main are on, otherwise global state (which in that case is '0' or '2') // send '1' if all main are on, otherwise global state (which in that case is '0' or '2')
broadcastReply(WITHROTTLE_TYPE, F("PPA%c\n"), main?'1': state); broadcastReply(WITHROTTLE_TYPE, F("PPA%c\n"), main?'1': state);

View File

@ -934,8 +934,9 @@ void RMFT2::loop2() {
#ifndef DISABLE_PROG #ifndef DISABLE_PROG
case OPCODE_JOIN: case OPCODE_JOIN:
TrackManager::setPower(POWERMODE::ON);
TrackManager::setJoin(true); TrackManager::setJoin(true);
TrackManager::setMainPower(POWERMODE::ON);
TrackManager::setProgPower(POWERMODE::ON);
break; break;
case OPCODE_UNJOIN: case OPCODE_UNJOIN:

View File

@ -670,7 +670,8 @@ void TrackManager::setJoin(bool joined) {
if (track[t]->getMode() & TRACK_MODE_PROG) { // find PROG track if (track[t]->getMode() & TRACK_MODE_PROG) { // find PROG track
tempProgTrack = t; // remember PROG track tempProgTrack = t; // remember PROG track
setTrackMode(t, TRACK_MODE_MAIN); 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 break; // there is only one prog track, done
} }
} }
@ -682,8 +683,6 @@ void TrackManager::setJoin(bool joined) {
setTrackMode(tempProgTrack, TRACK_MODE_PROG); // set track mode back to prog setTrackMode(tempProgTrack, TRACK_MODE_PROG); // set track mode back to prog
track[tempProgTrack]->setPower(tPTmode); // set power status as it was before track[tempProgTrack]->setPower(tPTmode); // set power status as it was before
tempProgTrack = MAX_TRACKS+1; tempProgTrack = MAX_TRACKS+1;
} else {
DIAG(F("Unjoin but no remembered prog track"));
} }
} }
#endif #endif

View File

@ -500,9 +500,9 @@ void WiThrottle::getLocoCallback(int16_t locoid) {
char addcmd[20]={'M',stashThrottleChar,'+', addrchar}; char addcmd[20]={'M',stashThrottleChar,'+', addrchar};
itoa(locoid,addcmd+4,10); itoa(locoid,addcmd+4,10);
stashInstance->multithrottle(stashStream, (byte *)addcmd); stashInstance->multithrottle(stashStream, (byte *)addcmd);
TrackManager::setJoin(true); // <1 JOIN> so we can drive loco away
TrackManager::setMainPower(POWERMODE::ON); TrackManager::setMainPower(POWERMODE::ON);
TrackManager::setProgPower(POWERMODE::ON); TrackManager::setProgPower(POWERMODE::ON);
TrackManager::setJoin(true); // <1 JOIN> so we can drive loco away
DIAG(F("LocoCallback commit success")); DIAG(F("LocoCallback commit success"));
stashStream->commit(); stashStream->commit();
} }

View File

@ -3,7 +3,8 @@
#include "StringFormatter.h" #include "StringFormatter.h"
#define VERSION "5.5.21" #define VERSION "5.5.22"
// 5.5.22 - (5.4.9) Handle non-compliant decoders returning 255 for cv 20 and confusing <R> with bad consist addresses.
// 5.5.21 - Backed out the broken merge with frequency change and // 5.5.21 - Backed out the broken merge with frequency change and
// 5.5.20 - EXRAIL SET/RESET assert fix // 5.5.20 - EXRAIL SET/RESET assert fix
// 5.5.19 - Railcom change to use RailcomCollector device // 5.5.19 - Railcom change to use RailcomCollector device