1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2025-04-15 09:50:11 +02:00
This commit is contained in:
Reinder Feenstra 2025-03-29 01:08:14 +00:00 committed by GitHub
commit 1aeae3eaee
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 14 additions and 1 deletions

View File

@ -152,6 +152,14 @@ void CommandDistributor::broadcastSensor(int16_t id, bool on ) {
broadcastReply(COMMAND_TYPE, F("<%c %d>\n"), on?'Q':'q', id);
}
void CommandDistributor::broadcastAccessory(int16_t address, byte port, bool gate, bool on) {
broadcastReply(COMMAND_TYPE, F("<y a %d %d %c %c>\n"), address, port, gate?'1':'0', on?'1':'0');
}
void CommandDistributor::broadcastExtendedAccessory(int16_t address, int16_t value) {
broadcastReply(COMMAND_TYPE, F("<y A %d %d>\n"), address, value);
}
void CommandDistributor::broadcastTurnout(int16_t id, bool isClosed ) {
// For DCC++ classic compatibility, state reported to JMRI is 1 for thrown and 0 for closed;
// The string below contains serial and Withrottle protocols which should

View File

@ -49,6 +49,8 @@ public :
static void broadcastLoco(byte slot);
static void broadcastForgetLoco(int16_t loco);
static void broadcastSensor(int16_t id, bool value);
static void broadcastAccessory(int16_t address, byte port, bool gate, bool on);
static void broadcastExtendedAccessory(int16_t address, int16_t value);
static void broadcastTurnout(int16_t id, bool isClosed);
static void broadcastTurntable(int16_t id, uint8_t position, bool moving);
static void broadcastClockTime(int16_t time, int8_t rate);

View File

@ -307,10 +307,12 @@ void DCC::setAccessory(int address, byte port, bool gate, byte onoff /*= 2*/) {
#if defined(EXRAIL_ACTIVE)
RMFT2::activateEvent(address<<2|port,gate);
#endif
CommandDistributor::broadcastAccessory(address, port, gate, true);
}
if (onoff != 1) {
b[1] &= ~0x08; // set C to 0
DCCWaveform::mainTrack.schedulePacket(b, 2, 3); // Repeat off packet three times
CommandDistributor::broadcastAccessory(address, port, gate, false);
}
}
@ -362,6 +364,7 @@ whole range of the 11 bits sent to track.
| ((address & 0x03)<<1); // mask 2 bits, shift up 1
b[2]=value;
DCCWaveform::mainTrack.schedulePacket(b, sizeof(b), repeats);
CommandDistributor::broadcastExtendedAccessory(address, value);
return true;
}

View File

@ -92,7 +92,7 @@ Once a new OPCODE is decided upon, update this list.
W, Write CV
x,
X, Invalid command response
y,
y, Accessory/extended accessory broadcast
Y, Output broadcast
z, Direct output
Z, Output configuration/control