add status reporting line on every change of train and turnout state
This commit is contained in:
54
main.cpp
54
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)
|
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)
|
||||||
|
Reference in New Issue
Block a user