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

Fixing broadcast

This commit is contained in:
Asbelos 2021-12-07 00:24:48 +00:00
parent b8293d07f2
commit 18695888dd
4 changed files with 9 additions and 11 deletions

View File

@ -69,12 +69,7 @@ void CommandDistributor::broadcast() {
for (byte clientId=0; clientId<sizeof(clients); clientId++) { for (byte clientId=0; clientId<sizeof(clients); clientId++) {
if (clients[clientId]==NONE_TYPE) continue; if (clients[clientId]==NONE_TYPE) continue;
ring->mark(clientId); ring->mark(clientId);
broadcastBufferWriter->printBuffer(ring);
if (clients[clientId]==COMMAND_TYPE) broadcastBufferWriter->printBuffer(ring);
else if (clients[clientId]==WITHROTTLE_TYPE) {
// TODO... withrottle broadcasts?
}
ring->commit(); ring->commit();
} }
if (ringClient!=NO_CLIENT) ring->mark(ringClient); if (ringClient!=NO_CLIENT) ring->mark(ringClient);
@ -90,7 +85,10 @@ void CommandDistributor::broadcastSensor(int16_t id, bool on ) {
void CommandDistributor::broadcastTurnout(int16_t id, bool isClosed ) { void CommandDistributor::broadcastTurnout(int16_t id, bool isClosed ) {
// For DCC++ classic compatibility, state reported to JMRI is 1 for thrown and 0 for closed; // For DCC++ classic compatibility, state reported to JMRI is 1 for thrown and 0 for closed;
StringFormatter::send(broadcastBufferWriter,F("<H %d %d>\n"),id, !isClosed); // The string below contains serial and Withrottle protocols which should
// be safe for both types.
StringFormatter::send(broadcastBufferWriter,
F("<H %d %d>\nPTA%c%d\n"),id, !isClosed, isClosed?'2':'4', id);
broadcast(); broadcast();
} }

View File

@ -229,6 +229,7 @@ void DCCEXParser::setAtCommandCallback(AT_COMMAND_CALLBACK callback)
// Parse an F() string // Parse an F() string
void DCCEXParser::parse(const FSH * cmd) { void DCCEXParser::parse(const FSH * cmd) {
DIAG(F("SETUP(\"%S\")"),cmd);
int size=strlen_P((char *)cmd)+1; int size=strlen_P((char *)cmd)+1;
char buffer[size]; char buffer[size];
strcpy_P(buffer,(char *)cmd); strcpy_P(buffer,(char *)cmd);

View File

@ -44,14 +44,14 @@ void SerialManager::init() {
} }
void SerialManager::broadcast(RingStream * ring) { void SerialManager::broadcast(RingStream * ring) {
for (SerialManager * s;s;s=s->next) s->broadcast2(ring); for (SerialManager * s=first;s;s=s->next) s->broadcast2(ring);
} }
void SerialManager::broadcast2(RingStream * ring) { void SerialManager::broadcast2(RingStream * ring) {
ring->printBuffer(serial); ring->printBuffer(serial);
} }
void SerialManager::loop() { void SerialManager::loop() {
for (SerialManager * s;s;s=s->next) s->loop2(); for (SerialManager * s=first;s;s=s->next) s->loop2();
} }
void SerialManager::loop2() { void SerialManager::loop2() {

View File

@ -136,7 +136,6 @@
bool ok = tt->setClosedInternal(closeFlag); bool ok = tt->setClosedInternal(closeFlag);
if (ok) { if (ok) {
turnoutlistHash++; // let withrottle know something changed
#ifndef DISABLE_EEPROM #ifndef DISABLE_EEPROM
// Write byte containing new closed/thrown state to EEPROM if required. Note that eepromAddress // Write byte containing new closed/thrown state to EEPROM if required. Note that eepromAddress