add status reporting line on every change of train and turnout state
This commit is contained in:
56
main.cpp
56
main.cpp
@ -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)
|
||||
{
|
||||
if( strcmp(inBuffer, "add") == 0 )
|
||||
@ -154,12 +163,8 @@ int turnoutDispatch(char* inBuffer, Serial* serial)
|
||||
subaddress = strtol(token, nullptr, 10);
|
||||
|
||||
turnouts.push_back(Turnout(address, subaddress));
|
||||
|
||||
uint8_t size = snprintf(buffer, SNPRINTF_BUFFER_SIZE, "TUNROUT saved! NUMBER: %u ADDRESS: %u SUBADDRESS: %u\n",
|
||||
turnouts.count()-1,
|
||||
address,
|
||||
turnouts.back().getSubaddress());
|
||||
serial->write(buffer, size);
|
||||
serial->write_p(PSTR("TUNROUT saved! "));
|
||||
printTurnoutState(turnouts.count()-1, serial);
|
||||
|
||||
save_state();
|
||||
return 0;
|
||||
@ -170,12 +175,7 @@ int turnoutDispatch(char* inBuffer, Serial* serial)
|
||||
{
|
||||
serial->write_p(PSTR("Turnouts:\n"));
|
||||
for(uint8_t i = 0; i < turnouts.count(); i++)
|
||||
{
|
||||
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);
|
||||
}
|
||||
printTurnoutState(i, serial);
|
||||
serial->putChar('\n');
|
||||
return 0;
|
||||
}
|
||||
@ -195,6 +195,7 @@ int turnoutDispatch(char* inBuffer, Serial* serial)
|
||||
turnouts[id].setDirection(direction);
|
||||
serial->write_p(PSTR("Set turnout direction "));
|
||||
serial->write(direction ? "right\n" : "left\n");
|
||||
printTurnoutState(id, serial);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -245,6 +246,16 @@ int turnoutDispatch(char* inBuffer, Serial* serial)
|
||||
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)
|
||||
{
|
||||
if( strcmp(inBuffer, "add") == 0 )
|
||||
@ -262,13 +273,9 @@ int trainDispatch(char* inBuffer, Serial* serial)
|
||||
functionMask = strtol(token, nullptr, 2);
|
||||
|
||||
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",
|
||||
trains.count(),
|
||||
address,
|
||||
bit_rep[trains.back().getFunctions() & 0x0F],
|
||||
bit_rep[trains.back().getFunctionMask() & 0x0F]);
|
||||
serial->write(buffer, size);
|
||||
|
||||
serial->write_p(PSTR("TRAIN saved! "));
|
||||
printTrainState(trains.count()-1, serial);
|
||||
|
||||
save_state();
|
||||
return 0;
|
||||
@ -279,13 +286,7 @@ int trainDispatch(char* inBuffer, Serial* serial)
|
||||
{
|
||||
serial->write_p(PSTR("Trains:\n"));
|
||||
for(uint8_t i = 0; i < trains.count(); i++)
|
||||
{
|
||||
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);
|
||||
}
|
||||
printTrainState(i, serial);
|
||||
serial->putChar('\n');
|
||||
return 0;
|
||||
}
|
||||
@ -322,6 +323,7 @@ int trainDispatch(char* inBuffer, Serial* serial)
|
||||
token = strtok(NULL, " ");
|
||||
trains[id].setSpeed(atoi(token));
|
||||
serial->write_p(PSTR("Set Train speed\n"));
|
||||
printTrainState(id, serial);
|
||||
return 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(functionId);
|
||||
serial->write(on ? " on\n" : " off\n");
|
||||
printTrainState(id, serial);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -383,6 +386,7 @@ int trainDispatch(char* inBuffer, Serial* serial)
|
||||
else if( token != NULL && (strcmp(token, "stop") == 0 || strcmp(token, "p") == 0))
|
||||
{
|
||||
trains[id].stop();
|
||||
printTrainState(id, serial);
|
||||
return 0;
|
||||
}
|
||||
else if( token != NULL && strcmp(token, "delete") == 0)
|
||||
|
Reference in New Issue
Block a user