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