summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2016-03-04 23:43:42 +0100
committerDaniel Friesel <derf@finalrewind.org>2016-03-04 23:43:42 +0100
commit0afdcbff09f182dc589b161df6ced71dad8e3f97 (patch)
treeda1d3cd38131cec7862cedd72bb87ffee637278c
parent42a4668c8076947d327da5b46a6f8d409a6ce2f9 (diff)
Modem: Reset hamming state when (re)enabling the modem
-rw-r--r--src/fecmodem.cc6
-rw-r--r--src/fecmodem.h4
2 files changed, 9 insertions, 1 deletions
diff --git a/src/fecmodem.cc b/src/fecmodem.cc
index 85221dc..a75c27b 100644
--- a/src/fecmodem.cc
+++ b/src/fecmodem.cc
@@ -58,6 +58,12 @@ uint8_t FECModem::hamming2416(uint8_t *byte1, uint8_t *byte2, uint8_t parity)
return 0;
}
+void FECModem::enable()
+{
+ this->Modem::enable();
+ hammingState = FIRST_BYTE;
+}
+
uint8_t FECModem::buffer_available()
{
// XXX this reset implementation is _completely_ broken
diff --git a/src/fecmodem.h b/src/fecmodem.h
index 087aae4..1d8931b 100644
--- a/src/fecmodem.h
+++ b/src/fecmodem.h
@@ -37,7 +37,9 @@ class FECModem : public Modem {
uint8_t correct128(uint8_t *byte, uint8_t parity);
uint8_t hamming2416(uint8_t *byte1, uint8_t *byte2, uint8_t parity);
public:
- FECModem() : Modem() { hammingState = FIRST_BYTE; };
+ FECModem() : Modem() {};
+
+ void enable(void);
/**
* Checks if there are unprocessed bytes in the receive buffer.