From 712950db5e0c08d7b31a5074765d507f73da423c Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Fri, 12 Feb 2016 20:46:34 +0100 Subject: quick&dirty hamming buffer implementation. --- src/fecmodem.cc | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/fecmodem.cc') diff --git a/src/fecmodem.cc b/src/fecmodem.cc index bd0d58c..52271fd 100644 --- a/src/fecmodem.cc +++ b/src/fecmodem.cc @@ -48,4 +48,32 @@ uint8_t FECModem::hamming2416(uint8_t *byte1, uint8_t *byte2, uint8_t parity) return 0; } +uint8_t FECModem::buffer_available() +{ + if (rxWasReset()) + hammingState = FIRST_BYTE; + if (this->Modem::buffer_available() >= 3) + return 2; + if (hammingState == SECOND_BYTE) + return 1; + return 0; +} + +uint8_t FECModem::buffer_get() +{ + uint8_t byte1, parity; + if (hammingState == SECOND_BYTE) { + hammingState = FIRST_BYTE; + return buf_byte; + } + hammingState = SECOND_BYTE; + byte1 = this->Modem::buffer_get(); + buf_byte = this->Modem::buffer_get(); + parity = this->Modem::buffer_get(); + + hamming2416(&byte1, &buf_byte, parity); + + return byte1; +} + FECModem modem; -- cgit v1.2.3