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

Trackmanager consolidate getModeName

This commit is contained in:
Harald Barth 2023-11-21 15:37:08 +01:00
parent 29ea746062
commit 4e1fad4832
5 changed files with 42 additions and 45 deletions

View File

@ -275,8 +275,8 @@ void CommandDistributor::broadcastRaw(clientType type, char * msg) {
broadcastReply(type, F("%s"),msg); broadcastReply(type, F("%s"),msg);
} }
void CommandDistributor::broadcastTrackState(const FSH* format,byte trackLetter, int16_t dcAddr) { void CommandDistributor::broadcastTrackState(const FSH* format, byte trackLetter, const FSH *modename, int16_t dcAddr) {
broadcastReply(COMMAND_TYPE, format, trackLetter, dcAddr); broadcastReply(COMMAND_TYPE, format, trackLetter, modename, dcAddr);
} }
void CommandDistributor::broadcastRouteState(uint16_t routeId, byte state ) { void CommandDistributor::broadcastRouteState(uint16_t routeId, byte state ) {

View File

@ -55,7 +55,7 @@ public :
static int16_t retClockTime(); static int16_t retClockTime();
static void broadcastPower(); static void broadcastPower();
static void broadcastRaw(clientType type,char * msg); static void broadcastRaw(clientType type,char * msg);
static void broadcastTrackState(const FSH* format,byte trackLetter, int16_t dcAddr); static void broadcastTrackState(const FSH* format,byte trackLetter, const FSH* modename, int16_t dcAddr);
template<typename... Targs> static void broadcastReply(clientType type, Targs... msg); template<typename... Targs> static void broadcastReply(clientType type, Targs... msg);
static void forget(byte clientId); static void forget(byte clientId);
static void broadcastRouteState(uint16_t routeId,byte state); static void broadcastRouteState(uint16_t routeId,byte state);

View File

@ -121,14 +121,14 @@ const byte RMFT2::compileFeatures = 0
#include "EXRAIL2MacroReset.h" #include "EXRAIL2MacroReset.h"
#undef ROUTE #undef ROUTE
#define ROUTE(id, description) id, #define ROUTE(id, description) id,
const int16_t HIGHFLASH RMFT2::routeIdList[]= { const int16_t HIGHFLASH const RMFT2::routeIdList[]= {
#include "myAutomation.h" #include "myAutomation.h"
INT16_MAX}; INT16_MAX};
// Pass 2a create throttle automation list // Pass 2a create throttle automation list
#include "EXRAIL2MacroReset.h" #include "EXRAIL2MacroReset.h"
#undef AUTOMATION #undef AUTOMATION
#define AUTOMATION(id, description) id, #define AUTOMATION(id, description) id,
const int16_t HIGHFLASH RMFT2::automationIdList[]= { const int16_t HIGHFLASH const RMFT2::automationIdList[]= {
#include "myAutomation.h" #include "myAutomation.h"
INT16_MAX}; INT16_MAX};
@ -150,7 +150,7 @@ const FSH * RMFT2::getRouteDescription(int16_t id) {
const int StringMacroTracker1=__COUNTER__; const int StringMacroTracker1=__COUNTER__;
#define THRUNGE(msg,mode) \ #define THRUNGE(msg,mode) \
case (__COUNTER__ - StringMacroTracker1) : {\ case (__COUNTER__ - StringMacroTracker1) : {\
static const char HIGHFLASH thrunge[]=msg;\ static const char HIGHFLASH const thrunge[]=msg;\
strfar=(uint32_t)GETFARPTR(thrunge);\ strfar=(uint32_t)GETFARPTR(thrunge);\
tmode=mode;\ tmode=mode;\
break;\ break;\
@ -186,7 +186,7 @@ case (__COUNTER__ - StringMacroTracker1) : {\
#undef LCD #undef LCD
#define LCD(id,msg) \ #define LCD(id,msg) \
case (__COUNTER__ - StringMacroTracker1) : {\ case (__COUNTER__ - StringMacroTracker1) : {\
static const char HIGHFLASH thrunge[]=msg;\ static const char HIGHFLASH const thrunge[]=msg;\
strfar=(uint32_t)GETFARPTR(thrunge);\ strfar=(uint32_t)GETFARPTR(thrunge);\
tmode=thrunge_lcd; \ tmode=thrunge_lcd; \
lcdid=id;\ lcdid=id;\
@ -195,7 +195,7 @@ case (__COUNTER__ - StringMacroTracker1) : {\
#undef SCREEN #undef SCREEN
#define SCREEN(display,id,msg) \ #define SCREEN(display,id,msg) \
case (__COUNTER__ - StringMacroTracker1) : {\ case (__COUNTER__ - StringMacroTracker1) : {\
static const char HIGHFLASH thrunge[]=msg;\ static const char HIGHFLASH const thrunge[]=msg;\
strfar=(uint32_t)GETFARPTR(thrunge);\ strfar=(uint32_t)GETFARPTR(thrunge);\
tmode=(thrunger)(thrunge_lcd+display); \ tmode=(thrunger)(thrunge_lcd+display); \
lcdid=id;\ lcdid=id;\
@ -274,7 +274,7 @@ const byte RMFT2::rosterNameCount=0
#include "EXRAIL2MacroReset.h" #include "EXRAIL2MacroReset.h"
#undef ROSTER #undef ROSTER
#define ROSTER(cabid,name,funcmap...) cabid, #define ROSTER(cabid,name,funcmap...) cabid,
const int16_t HIGHFLASH RMFT2::rosterIdList[]={ const int16_t HIGHFLASH const RMFT2::rosterIdList[]={
#include "myAutomation.h" #include "myAutomation.h"
INT16_MAX}; INT16_MAX};
@ -314,7 +314,7 @@ const FSH * RMFT2::getRosterFunctions(int16_t id) {
#undef VIRTUAL_SIGNAL #undef VIRTUAL_SIGNAL
#define VIRTUAL_SIGNAL(id) id,0,0,0, #define VIRTUAL_SIGNAL(id) id,0,0,0,
const HIGHFLASH int16_t RMFT2::SignalDefinitions[] = { const HIGHFLASH int16_t const RMFT2::SignalDefinitions[] = {
#include "myAutomation.h" #include "myAutomation.h"
0,0,0,0 }; 0,0,0,0 };
@ -503,7 +503,7 @@ int RMFT2::onLCCLookup[RMFT2::countLCCLookup];
// Build RouteCode // Build RouteCode
const int StringMacroTracker2=__COUNTER__; const int StringMacroTracker2=__COUNTER__;
const HIGHFLASH byte RMFT2::RouteCode[] = { const HIGHFLASH byte const RMFT2::RouteCode[] = {
#include "myAutomation.h" #include "myAutomation.h"
OPCODE_ENDTASK,0,0,OPCODE_ENDEXRAIL,0,0 }; OPCODE_ENDTASK,0,0,OPCODE_ENDEXRAIL,0,0 };

View File

@ -397,46 +397,58 @@ bool TrackManager::parseEqualSign(Print *stream, int16_t params, int16_t p[])
return false; return false;
} }
// null stream means send to commandDistributor for broadcast const FSH* TrackManager::getModeName(TRACK_MODE tm) {
void TrackManager::streamTrackState(Print* stream, byte t) { const FSH *modename=F("---");
if (track[t]==NULL) return;
auto format=F("<= %d XXX>\n");
TRACK_MODE tm = track[t]->getMode();
if (tm & TRACK_MODE_MAIN) { if (tm & TRACK_MODE_MAIN) {
if(tm & TRACK_MODE_AUTOINV) if(tm & TRACK_MODE_AUTOINV)
format=F("<= %c MAIN A>\n"); modename=F("MAIN A");
else if (tm & TRACK_MODE_INV) else if (tm & TRACK_MODE_INV)
format=F("<= %c MAIN I>\n"); modename=F("MAIN I>\n");
else else
format=F("<= %c MAIN>\n"); modename=F("MAIN");
} }
#ifndef DISABLE_PROG #ifndef DISABLE_PROG
else if (tm & TRACK_MODE_PROG) else if (tm & TRACK_MODE_PROG)
format=F("<= %c PROG>\n"); modename=F("PROG");
#endif #endif
else if (tm & TRACK_MODE_NONE) else if (tm & TRACK_MODE_NONE)
format=F("<= %c NONE>\n"); modename=F("NONE");
else if(tm & TRACK_MODE_EXT) else if(tm & TRACK_MODE_EXT)
format=F("<= %c EXT>\n"); modename=F("EXT");
else if(tm & TRACK_MODE_BOOST) { else if(tm & TRACK_MODE_BOOST) {
if(tm & TRACK_MODE_AUTOINV) if(tm & TRACK_MODE_AUTOINV)
format=F("<= %c B A>\n"); modename=F("B A");
else if (tm & TRACK_MODE_INV) else if (tm & TRACK_MODE_INV)
format=F("<= %c B I>\n"); modename=F("B I");
else else
format=F("<= %c B>\n"); modename=F("B");
} }
else if (tm & TRACK_MODE_DC) { else if (tm & TRACK_MODE_DC) {
if (tm & TRACK_MODE_INV) if (tm & TRACK_MODE_INV)
format=F("<= %c DCX %d>\n"); modename=F("DCX");
else else
format=F("<= %c DC %d>\n"); modename=F("DC");
}
return modename;
} }
// null stream means send to commandDistributor for broadcast
void TrackManager::streamTrackState(Print* stream, byte t) {
const FSH *format;
if (track[t]==NULL) return;
TRACK_MODE tm = track[t]->getMode();
if (tm & TRACK_MODE_DC)
format=F("<= %c %S %d>\n");
else
format=F("<= %c %S>\n");
const FSH *modename=getModeName(tm);
if (stream) { // null stream means send to commandDistributor for broadcast if (stream) { // null stream means send to commandDistributor for broadcast
StringFormatter::send(stream,format,'A'+t, trackDCAddr[t]); StringFormatter::send(stream,format,'A'+t, modename, trackDCAddr[t]);
} else { } else {
CommandDistributor::broadcastTrackState(format,'A'+t, trackDCAddr[t]); CommandDistributor::broadcastTrackState(format,'A'+t, modename, trackDCAddr[t]);
CommandDistributor::broadcastPower(); CommandDistributor::broadcastPower();
} }
@ -641,18 +653,3 @@ int16_t TrackManager::returnDCAddr(byte t) {
return (trackDCAddr[t]); return (trackDCAddr[t]);
} }
const char* TrackManager::getModeName(byte Mode) {
//DIAG(F("PowerMode %d"), Mode);
switch (Mode)
{
case 1: return "NONE";
case 2: return "MAIN";
case 4: return "PROG";
case 8: return "DC";
case 16: return "DCX";
case 32: return "EXT";
default: return "----";
}
}

View File

@ -91,7 +91,7 @@ class TrackManager {
static bool isProg(byte t); static bool isProg(byte t);
static byte returnMode(byte t); static byte returnMode(byte t);
static int16_t returnDCAddr(byte t); static int16_t returnDCAddr(byte t);
static const char* getModeName(byte Mode); static const FSH* getModeName(TRACK_MODE Mode);
static int16_t joinRelay; static int16_t joinRelay;
static bool progTrackSyncMain; // true when prog track is a siding switched to main static bool progTrackSyncMain; // true when prog track is a siding switched to main