From d254418e3a7d2b114a370e7f09dbc42a9277859f Mon Sep 17 00:00:00 2001
From: jonathan <jonathantbrouwer@gmail.com>
Date: Fri, 10 Mar 2023 22:34:18 +0100
Subject: [PATCH] Reset fifo when len is very large

---
 src/mpu.rs | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/mpu.rs b/src/mpu.rs
index 39d6c5e..6a87697 100644
--- a/src/mpu.rs
+++ b/src/mpu.rs
@@ -6,6 +6,7 @@ use crate::once_cell::OnceCell;
 use crate::twi::{TwiWrapper, TWI};
 use nb::Error::WouldBlock;
 use structs::{Accel, Gyro, Quaternion};
+use crate::uart::send_bytes;
 
 #[allow(unused)]
 mod config;
@@ -113,6 +114,10 @@ pub fn read_dmp_bytes() -> nb::Result<Quaternion, Error<TwiWrapper>> {
     if len < 28 {
         return Err(WouldBlock);
     }
+    if len > 28 * 5 {
+        mpu.mpu.reset_fifo(twi)?;
+        return Err(WouldBlock);
+    }
 
     // If we got mis-aligned, we skip a packet
     if len % 28 != 0 {
-- 
GitLab