implement single item resend

This commit is contained in:
2022-03-15 22:39:13 +01:00
parent 97aa264b54
commit 6d8baa50eb
8 changed files with 37 additions and 24 deletions

View File

@ -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;
}