add status reporting line on every change of train and turnout state

This commit is contained in:
2022-01-31 21:29:39 +01:00
parent 074c832b3a
commit 720a073ef0

View File

@ -137,6 +137,15 @@ void setPower(bool on)
} }
} }
void printTurnoutState(uint8_t id, Serial* serial)
{
snprintf(buffer, SNPRINTF_BUFFER_SIZE,
"NUMBER: %u ADDRESS: %u SUBADDRESS: %u CURRENT PACKET: %x DIRECTION: %u\n",
id, turnouts[id].getAddress(), turnouts[id].getSubaddress(),
turnouts[id].getPacket(), turnouts[id].getDirection());
serial->write(buffer, SNPRINTF_BUFFER_SIZE);
}
int turnoutDispatch(char* inBuffer, Serial* serial) int turnoutDispatch(char* inBuffer, Serial* serial)
{ {
if( strcmp(inBuffer, "add") == 0 ) if( strcmp(inBuffer, "add") == 0 )
@ -154,12 +163,8 @@ int turnoutDispatch(char* inBuffer, Serial* serial)
subaddress = strtol(token, nullptr, 10); subaddress = strtol(token, nullptr, 10);
turnouts.push_back(Turnout(address, subaddress)); turnouts.push_back(Turnout(address, subaddress));
serial->write_p(PSTR("TUNROUT saved! "));
uint8_t size = snprintf(buffer, SNPRINTF_BUFFER_SIZE, "TUNROUT saved! NUMBER: %u ADDRESS: %u SUBADDRESS: %u\n", printTurnoutState(turnouts.count()-1, serial);
turnouts.count()-1,
address,
turnouts.back().getSubaddress());
serial->write(buffer, size);
save_state(); save_state();
return 0; return 0;
@ -170,12 +175,7 @@ int turnoutDispatch(char* inBuffer, Serial* serial)
{ {
serial->write_p(PSTR("Turnouts:\n")); serial->write_p(PSTR("Turnouts:\n"));
for(uint8_t i = 0; i < turnouts.count(); i++) for(uint8_t i = 0; i < turnouts.count(); i++)
{ printTurnoutState(i, serial);
snprintf(buffer, SNPRINTF_BUFFER_SIZE, "NUMBER: %u ADDRESS: %u SUBADDRESS: %u CURRENT PACKET: %x DIRECTION: %u\n",
i, turnouts[i].getAddress(), turnouts[i].getSubaddress(),
turnouts[i].getPacket(), turnouts[i].getDirection());
serial->write(buffer, SNPRINTF_BUFFER_SIZE);
}
serial->putChar('\n'); serial->putChar('\n');
return 0; return 0;
} }
@ -195,6 +195,7 @@ int turnoutDispatch(char* inBuffer, Serial* serial)
turnouts[id].setDirection(direction); turnouts[id].setDirection(direction);
serial->write_p(PSTR("Set turnout direction ")); serial->write_p(PSTR("Set turnout direction "));
serial->write(direction ? "right\n" : "left\n"); serial->write(direction ? "right\n" : "left\n");
printTurnoutState(id, serial);
return 0; return 0;
} }
} }
@ -245,6 +246,16 @@ int turnoutDispatch(char* inBuffer, Serial* serial)
return -3; return -3;
} }
void printTrainState(int id, Serial* serial)
{
snprintf(buffer, SNPRINTF_BUFFER_SIZE,
"NUMBER: %u ADDRESS: %u CURRENT PACKET: %x SPEED: %i FUNCTIONS: %s FUNCTIONMASK: %s\n",
id, trains[id].getAddress(),
trains[id].getLastPacket(), trains[id].getSpeed(),
bit_rep[trains[id].getFunctions() & 0x0F], bit_rep[trains[id].getFunctionMask() & 0x0F]);
serial->write(buffer, SNPRINTF_BUFFER_SIZE);
}
int trainDispatch(char* inBuffer, Serial* serial) int trainDispatch(char* inBuffer, Serial* serial)
{ {
if( strcmp(inBuffer, "add") == 0 ) if( strcmp(inBuffer, "add") == 0 )
@ -263,12 +274,8 @@ int trainDispatch(char* inBuffer, Serial* serial)
trains.push_back(Train(address, functionMask)); trains.push_back(Train(address, functionMask));
uint8_t size = snprintf(buffer, SNPRINTF_BUFFER_SIZE, "TRAIN saved! NUMBER: %u ADDRESS: %u FUNCTIONS: %s FUNCTIONMASK: %s\n", serial->write_p(PSTR("TRAIN saved! "));
trains.count(), printTrainState(trains.count()-1, serial);
address,
bit_rep[trains.back().getFunctions() & 0x0F],
bit_rep[trains.back().getFunctionMask() & 0x0F]);
serial->write(buffer, size);
save_state(); save_state();
return 0; return 0;
@ -279,13 +286,7 @@ int trainDispatch(char* inBuffer, Serial* serial)
{ {
serial->write_p(PSTR("Trains:\n")); serial->write_p(PSTR("Trains:\n"));
for(uint8_t i = 0; i < trains.count(); i++) for(uint8_t i = 0; i < trains.count(); i++)
{ printTrainState(i, serial);
snprintf(buffer, SNPRINTF_BUFFER_SIZE, "NUMBER: %u ADDRESS: %u CURRENT PACKET: %x SPEED: %i FUNCTIONS: %s FUNCTIONMASK: %s\n",
i, trains[i].getAddress(),
trains[i].getLastPacket(), trains[i].getSpeed(),
bit_rep[trains[i].getFunctions() & 0x0F], bit_rep[trains[i].getFunctionMask() & 0x0F]);
serial->write(buffer, SNPRINTF_BUFFER_SIZE);
}
serial->putChar('\n'); serial->putChar('\n');
return 0; return 0;
} }
@ -322,6 +323,7 @@ int trainDispatch(char* inBuffer, Serial* serial)
token = strtok(NULL, " "); token = strtok(NULL, " ");
trains[id].setSpeed(atoi(token)); trains[id].setSpeed(atoi(token));
serial->write_p(PSTR("Set Train speed\n")); serial->write_p(PSTR("Set Train speed\n"));
printTrainState(id, serial);
return 0; return 0;
} }
else if(token != NULL && strcmp(token, "function") == 0 ) else if(token != NULL && strcmp(token, "function") == 0 )
@ -336,6 +338,7 @@ int trainDispatch(char* inBuffer, Serial* serial)
serial->write_p(PSTR("Set Train function ")); serial->write_p(PSTR("Set Train function "));
serial->write(functionId); serial->write(functionId);
serial->write(on ? " on\n" : " off\n"); serial->write(on ? " on\n" : " off\n");
printTrainState(id, serial);
return 0; return 0;
} }
} }
@ -383,6 +386,7 @@ int trainDispatch(char* inBuffer, Serial* serial)
else if( token != NULL && (strcmp(token, "stop") == 0 || strcmp(token, "p") == 0)) else if( token != NULL && (strcmp(token, "stop") == 0 || strcmp(token, "p") == 0))
{ {
trains[id].stop(); trains[id].stop();
printTrainState(id, serial);
return 0; return 0;
} }
else if( token != NULL && strcmp(token, "delete") == 0) else if( token != NULL && strcmp(token, "delete") == 0)