From 72cffd586a7d2cd20bd8256a920b2caac8c7db85 Mon Sep 17 00:00:00 2001
From: jaseg <git@jaseg.de>
Date: Mon, 2 Oct 2023 01:42:34 +0200
Subject: Fix the nasty 8b/10b bug

---
 center_fw/src/main.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

(limited to 'center_fw/src')

diff --git a/center_fw/src/main.c b/center_fw/src/main.c
index 59bd7a1..a4f7d9e 100644
--- a/center_fw/src/main.c
+++ b/center_fw/src/main.c
@@ -195,7 +195,9 @@ size_t adc_dump_pos = 0;
 uint8_t bit_dump[4096];
 size_t bit_dump_pos = 0;
 
+bool armed = false;
 void gdb_dump(void) {
+    armed = false;
 }
 
 void ADC1_IRQHandler(void) {
@@ -237,10 +239,15 @@ void ADC1_IRQHandler(void) {
         bit_dump_pos++;
         if (bit_dump_pos == COUNT_OF(bit_dump)) {
             bit_dump_pos = 0;
-            gdb_dump();
+            armed = true;
         }
 
         int rc = xfr_8b10b_feed_bit((struct state_8b10b_dec *)&st_8b10b_dec, bit);
+        if (rc == 0xfb) {
+            if (armed)
+                gdb_dump();
+        }
+
         if (rc > -K_CODES_LAST) {
             sym_dump[sym_dump_pos++] = rc;
             if (sym_dump_pos == COUNT_OF(sym_dump)) {
@@ -279,7 +286,7 @@ void ADC1_IRQHandler(void) {
                     }
                 }
             }
-        } else {
+        } else if (rc == -DECODING_ERROR) {
             errors.decoding_errors++;
         }
     }
-- 
cgit