Skip to content

Commit 3d65ae1

Browse files
committed
trainbrains debug option
1 parent 03bedfc commit 3d65ae1

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

IO_trainbrains.h

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
// TODO - use non-blocking I2C
3535
// TODO - support for all-channels sensor read via new command code
36-
// TODO - make dump optional (especially for sensors)
36+
3737

3838
enum TrackUnoccupancy
3939
{
@@ -45,23 +45,26 @@
4545
// generic class for self-identifying Trainbrains devices
4646
class Trainbrains : public IODevice {
4747
public:
48-
static void create(VPIN vpin, uint8_t nPins, I2CAddress i2cAddress) {
49-
if (checkNoOverlap(vpin, nPins, i2cAddress)) new Trainbrains(vpin, nPins, i2cAddress);
48+
static void create(VPIN vpin, uint8_t nPins, I2CAddress i2cAddress,bool debug=false) {
49+
if (checkNoOverlap(vpin, nPins, i2cAddress))
50+
new Trainbrains(vpin, nPins, i2cAddress,debug);
5051
}
5152

5253
private:
5354
static const byte DT_Unknown=0;
5455
static const byte DT_Signal=1;
5556
static const byte DT_Turnout=2;
5657
static const byte DT_Power=3;
57-
static const byte DT_Track=4;
58+
static const byte DT_Track=4;
59+
bool debugme;
5860
byte deviceType=0; // 0=none, 1=signal, 2=turnout, 3=power, 4=track
5961
uint8_t outputBuffer[10];
6062
uint8_t inputBuffer[10];
6163

6264
// Constructor
63-
Trainbrains(VPIN vpin, uint8_t nPins, I2CAddress i2cAddress)
65+
Trainbrains(VPIN vpin, uint8_t nPins, I2CAddress i2cAddress, bool debug)
6466
{
67+
debugme=debug;
6568
_firstVpin = vpin;
6669
_nPins = nPins;
6770
_I2CAddress=i2cAddress;
@@ -89,17 +92,19 @@ class Trainbrains : public IODevice {
8992
DIAG(F("Trainbrains I2C:%s Error:%S"), _I2CAddress.toString(), I2CManager.getErrorMessage(status));
9093
_deviceState = DEVSTATE_FAILED;
9194
}
92-
else _dumpBuffers();
95+
else {
96+
if (debugme) _dumpBuffers();
97+
}
9398
}
9499

95100
void _dumpBuffers() {
96-
StringFormatter::send(&USB_SERIAL,F("<* TB 0x%s\n out:"),_I2CAddress.toString());
101+
StringFormatter::send(&USB_SERIAL,F("<* TB %s\n out:"),_I2CAddress.toString());
97102
for (byte i=0;i<sizeof(outputBuffer);i++) {
98-
StringFormatter::send(&USB_SERIAL,F(" %2x"),outputBuffer[i]);
103+
StringFormatter::send(&USB_SERIAL,F(" %-2x"),outputBuffer[i]);
99104
}
100-
StringFormatter::send(&USB_SERIAL,F("\n in:"),_I2CAddress.toString());
105+
StringFormatter::send(&USB_SERIAL,F("\n in:"));
101106
for (byte i=0;i<sizeof(inputBuffer);i++) {
102-
StringFormatter::send(&USB_SERIAL,F(" %2x"),inputBuffer[i]);
107+
StringFormatter::send(&USB_SERIAL,F(" %-2x"),inputBuffer[i]);
103108
}
104109
StringFormatter::send(&USB_SERIAL,F("\n*>\n"));
105110
}
@@ -156,8 +161,8 @@ class Trainbrains : public IODevice {
156161
// class retained for backward compatibility. Builds the generic class.
157162
class Trainbrains02 {
158163
public:
159-
static void create(VPIN vpin, uint8_t nPins, I2CAddress i2cAddress) {
160-
Trainbrains::create(vpin, nPins, i2cAddress);
164+
static void create(VPIN vpin, uint8_t nPins, I2CAddress i2cAddress, bool debug=false) {
165+
Trainbrains::create(vpin, nPins, i2cAddress,debug);
161166
}
162167
};
163168

0 commit comments

Comments
 (0)