Check TX buffer space before calling serialWrite

- Check TX buffer space before calling serialWrite (which
unconditionally manipulates buffer management variables).
- Added available TX buffer space as one of debug variables.
- Use blackboxWrite() instead of serialWrite in blackboxWriteString().
This commit is contained in:
jflyper 2019-10-23 09:16:42 +09:00
parent ca9005de66
commit a183213ca3
1 changed files with 16 additions and 8 deletions

View File

@ -127,15 +127,23 @@ void blackboxWrite(uint8_t value)
#endif
case BLACKBOX_DEVICE_SERIAL:
default:
{
int txBytesFree = serialTxBytesFree(blackboxPort);
#ifdef DEBUG_BB_OUTPUT
bbBits += 2;
if (serialTxBytesFree(blackboxPort) == 0) {
++bbDrops;
DEBUG_SET(DEBUG_BLACKBOX_OUTPUT, 2, bbDrops);
return;
}
bbBits += 2;
DEBUG_SET(DEBUG_BLACKBOX_OUTPUT, 3, txBytesFree);
#endif
serialWrite(blackboxPort, value);
if (txBytesFree == 0) {
#ifdef DEBUG_BB_OUTPUT
++bbDrops;
DEBUG_SET(DEBUG_BLACKBOX_OUTPUT, 2, bbDrops);
#endif
return;
}
serialWrite(blackboxPort, value);
}
break;
}
@ -181,7 +189,7 @@ int blackboxWriteString(const char *s)
default:
pos = (uint8_t*) s;
while (*pos) {
serialWrite(blackboxPort, *pos);
blackboxWrite(*pos);
pos++;
}