diff --git a/DCC.cpp b/DCC.cpp index 36d91fb..a8bc953 100644 --- a/DCC.cpp +++ b/DCC.cpp @@ -219,8 +219,9 @@ bool DCC::setFn( int cab, int16_t functionNumber, bool on) { } else { speedTable[reg].functions &= ~funcmask; } - if (speedTable[reg].functions != previous && functionNumber <= 28) { - updateGroupflags(speedTable[reg].groupFlags, functionNumber); + if (speedTable[reg].functions != previous) { + if (functionNumber <= 28) + updateGroupflags(speedTable[reg].groupFlags, functionNumber); CommandDistributor::broadcastLoco(reg); } return true; @@ -235,8 +236,8 @@ void DCC::changeFn( int cab, int16_t functionNumber) { speedTable[reg].functions ^= funcmask; if (functionNumber <= 28) { updateGroupflags(speedTable[reg].groupFlags, functionNumber); - CommandDistributor::broadcastLoco(reg); } + CommandDistributor::broadcastLoco(reg); } // Report function state (used from withrottle protocol) diff --git a/WiThrottle.cpp b/WiThrottle.cpp index 3e712b3..f3d9253 100644 --- a/WiThrottle.cpp +++ b/WiThrottle.cpp @@ -571,7 +571,7 @@ void WiThrottle::sendRoutes(Print* stream) { void WiThrottle::sendFunctions(Print* stream, byte loco) { int16_t locoid=myLocos[loco].cab; - int fkeys=29; + int fkeys=32; // upper limit (send functions 0 to 31) myLocos[loco].functionToggles=1<<2; // F2 (HORN) is a non-toggle #ifdef EXRAIL_ACTIVE