FIFO protection (#1285)
commit4eeb321af4db3c4628a21e7b768b9743cf01774f
authorPaul Kendall <pkendall64@gmail.com>
Thu, 20 Jan 2022 01:43:46 +0000 (20 14:43 +1300)
committerGitHub <noreply@github.com>
Thu, 20 Jan 2022 01:43:46 +0000 (20 11:43 +1000)
tree611f8cf1a6c1528524e0bd3df54b34b2df79f518
parent98b5c421decb08c54aeaa8b6572aaea4ba02699b
FIFO protection (#1285)

* Adds protection around pushing packets to FIFO

This ensures that there is enough room for the entire packet in the FIFO otherwise it just drops the packet.
Previously it would flush the FIFO on whichever push caused the overflow and the FIFO would have partial packets.

* Add protection around pushing to the UART fifo

Set the max number of bytes that we can push in one iteration to the minimum of period bytes or Serial.availableForWrite

* Rework ensure method

- old ensure is called available
- new ensure pops "packets" from the head until available is true

* Change length params to unsigned

Can't push or pop a -ve number of elements ;-)

* And fixed the calls to FIFO to avoid the casts
src/include/native.h
src/lib/CRSF/CRSF.cpp
src/lib/CRSF/CRSF.h
src/lib/FIFO/FIFO.cpp
src/lib/FIFO/FIFO.h
src/test/fifo_native/test_fifo.cpp