diff --git a/DCCEXParser.cpp b/DCCEXParser.cpp
index 0a78676..753f69b 100644
--- a/DCCEXParser.cpp
+++ b/DCCEXParser.cpp
@@ -445,7 +445,7 @@ void DCCEXParser::parse(Print *stream, byte *com, bool blocking)
case 's': //
StringFormatter::send(stream, F("
"), DCCWaveform::mainTrack.getPowerMode() == POWERMODE::ON);
StringFormatter::send(stream, F(""), F(VERSION), F(ARDUINO_TYPE), DCC::getMotorShieldName(), F(GITHUB_SHA));
- parseT(stream, 0, p); //send all Turnout states
+ Turnout::printAll(stream); //send all Turnout states
Output::printAll(stream); //send all Output states
Sensor::printAll(stream); //send all Sensor states
// TODO Send stats of speed reminders table
@@ -529,7 +529,7 @@ bool DCCEXParser::parseZ(Print *stream, int params, int p[])
StringFormatter::send(stream, F(""));
return true;
- case 0: //
+ case 0: // list Output definitions
{
bool gotone = false;
for (Output *tt = Output::firstOutput; tt != NULL; tt = tt->nextOutput)
@@ -591,13 +591,14 @@ bool DCCEXParser::parseT(Print *stream, int params, int p[])
{
switch (params)
{
- case 0: // list all turnout states
+ case 0: // list turnout definitions
{
bool gotOne = false;
for (Turnout *tt = Turnout::firstTurnout; tt != NULL; tt = tt->nextTurnout)
{
gotOne = true;
- StringFormatter::send(stream, F(""), tt->data.id, (tt->data.tStatus & STATUS_ACTIVE)!=0);
+ StringFormatter::send(stream, F(""), tt->data.id, tt->data.address,
+ tt->data.subAddress, (tt->data.tStatus & STATUS_ACTIVE)!=0);
}
return gotOne; // will if none found
}
@@ -646,7 +647,7 @@ bool DCCEXParser::parseS(Print *stream, int params, int p[])
StringFormatter::send(stream, F(""));
return true;
- case 0: // list sensor states
+ case 0: // list sensor definitions
if (Sensor::firstSensor == NULL)
return false;
for (Sensor *tt = Sensor::firstSensor; tt != NULL; tt = tt->nextSensor)
diff --git a/Turnouts.cpp b/Turnouts.cpp
index 45b3c1b..03093a1 100644
--- a/Turnouts.cpp
+++ b/Turnouts.cpp
@@ -21,10 +21,17 @@
#include "Turnouts.h"
#include "EEStore.h"
#include "PWMServoDriver.h"
+#include "StringFormatter.h"
#ifdef EESTOREDEBUG
#include "DIAG.h"
#endif
+// print all turnout states to stream
+void Turnout::printAll(Print *stream){
+ for (Turnout *tt = Turnout::firstTurnout; tt != NULL; tt = tt->nextTurnout)
+ StringFormatter::send(stream, F(""), tt->data.id, (tt->data.tStatus & STATUS_ACTIVE)!=0);
+} // Turnout::printAll
+
bool Turnout::activate(int n,bool state){
#ifdef EESTOREDEBUG
DIAG(F("\nTurnout::activate(%d,%d)\n"),n,state);
diff --git a/Turnouts.h b/Turnouts.h
index 2aff97d..186149b 100644
--- a/Turnouts.h
+++ b/Turnouts.h
@@ -49,6 +49,7 @@ class Turnout {
static Turnout *create(int id , byte pin , int activeAngle, int inactiveAngle);
static Turnout *create(int id);
void activate(bool state);
+ static void printAll(Print *);
#ifdef EESTOREDEBUG
void print(Turnout *tt);
#endif