From cf0ec112c87f25e546295a4eb07f218ff912d0a8 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Fri, 19 Feb 2016 17:58:09 +0100 Subject: system: reset state machine on error --- src/system.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src') diff --git a/src/system.cc b/src/system.cc index d2231b4..a12dd71 100644 --- a/src/system.cc +++ b/src/system.cc @@ -58,11 +58,15 @@ void System::receive(void) case START1: if (rx_byte == 0x99) rxExpect = START2; + else + rxExpect = START_OR_PATTERN; break; case START2: if (rx_byte == 0x99) { rxExpect = PATTERN1; storage.reset(); + } else { + rxExpect = START_OR_PATTERN; } break; case START_OR_PATTERN: @@ -70,14 +74,20 @@ void System::receive(void) rxExpect = START2; else if (rx_byte == 0xa9) rxExpect = PATTERN2; + else + rxExpect = START_OR_PATTERN; break; case PATTERN1: if (rx_byte == 0xa9) rxExpect = PATTERN2; + else + rxExpect = START_OR_PATTERN; break; case PATTERN2: if (rx_byte == 0xa9) rxExpect = HEADER1; + else + rxExpect = START_OR_PATTERN; break; case HEADER1: rxExpect = HEADER2; -- cgit v1.2.3