implement single item resend
This commit is contained in:
29
main.cpp
29
main.cpp
@ -252,7 +252,7 @@ void serialDispatch(Serial* serial)
|
||||
{
|
||||
token = strtok(NULL, " ");
|
||||
if(token != NULL)
|
||||
ret = nfcBoard.dispatch(token, serial);
|
||||
ret = nfcBoard.dispatch(token);
|
||||
}
|
||||
else if(strncmp(token, "erase", 4) == 0)
|
||||
{
|
||||
@ -349,23 +349,32 @@ int main()
|
||||
Serial* serial = Serial::getInstance();
|
||||
|
||||
serial->write_p(PSTR("TrainController v0.5 starting\n"));
|
||||
|
||||
uint8_t repeatCount = 0;
|
||||
|
||||
while(true)
|
||||
{
|
||||
if(resendEvent && (trains.count() || turnouts.count() || signals.count()))
|
||||
{
|
||||
timer0InterruptEnable(false);
|
||||
if(itemToResend < trains.count())
|
||||
trains[itemToResend].sendData();
|
||||
trains[itemToResend].sendData(true);
|
||||
else if(itemToResend < trains.count() + turnouts.count())
|
||||
turnouts[itemToResend-trains.count()].sendData();
|
||||
turnouts[itemToResend-trains.count()].sendData(true);
|
||||
else if(itemToResend < trains.count() + turnouts.count()+signals.count())
|
||||
signals[itemToResend-trains.count()-turnouts.count()].sendData();
|
||||
itemToResend++;
|
||||
if(trains.count()+turnouts.count()+signals.count() <= itemToResend)
|
||||
itemToResend = 0;
|
||||
signals[itemToResend-trains.count()-turnouts.count()].sendData(true);
|
||||
resendEvent = false;
|
||||
timer0InterruptEnable(true);
|
||||
if(repeatCount == 0)
|
||||
{
|
||||
TCNT0 = 190;
|
||||
repeatCount = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
itemToResend++;
|
||||
if(trains.count()+turnouts.count()+signals.count() <= itemToResend)
|
||||
itemToResend = 0;
|
||||
repeatCount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(autoff)
|
||||
@ -380,7 +389,9 @@ int main()
|
||||
Train::setOutput(Train::OFF);
|
||||
}
|
||||
}
|
||||
|
||||
serialDispatch(serial);
|
||||
nfcBoard.poll(serial);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user