From ea94072e42982fdbf7a41fda7a2718eb20e08588 Mon Sep 17 00:00:00 2001 From: David Lenfesty Date: Fri, 16 Jun 2023 16:29:52 -0600 Subject: [PATCH] fw: reset packet parser after full packet received --- firmware/src/command_interface.rs | 2 ++ firmware/src/main.rs | 5 +++-- firmware/src/proto.rs | 6 ++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/firmware/src/command_interface.rs b/firmware/src/command_interface.rs index 3fa1b67..0947ae2 100644 --- a/firmware/src/command_interface.rs +++ b/firmware/src/command_interface.rs @@ -42,6 +42,8 @@ impl CommandInterface { (processed_bytes, res.ok()) }); + defmt::debug!("Received data"); + // Check for socket errors let packet = match res { // We got a packet! unwrap it diff --git a/firmware/src/main.rs b/firmware/src/main.rs index d080e25..fe34436 100644 --- a/firmware/src/main.rs +++ b/firmware/src/main.rs @@ -89,8 +89,9 @@ fn main() -> ! { // Set a keepalive on the socket to handle unexpected client disconnects { let mut sock = socket_set.get_mut::(command_socket); - sock.set_keep_alive(Some(Duration::from_secs(5))); - sock.set_timeout(Some(Duration::from_secs(5))) + // TODO these values are obscene, should fix the underlying bug + sock.set_keep_alive(Some(Duration::from_secs(2))); + sock.set_timeout(Some(Duration::from_secs(10))) } diff --git a/firmware/src/proto.rs b/firmware/src/proto.rs index b8d40bd..76d9f3f 100644 --- a/firmware/src/proto.rs +++ b/firmware/src/proto.rs @@ -194,11 +194,13 @@ impl PacketParser { // Check CRC 7 => { if self.crc.get_crc() == byte { - return Ok(CommandPacket { + let out = CommandPacket { is_write: self.is_write, setting: self.setting, value: self.value, - }); + }; + self.reset(); + return Ok(out); } else { self.reset(); return Err(Error::BadCrc);