From 78a43fd82f30989705c714741a5f78e88c892366 Mon Sep 17 00:00:00 2001 From: Andy Killorin <37423245+Speedy6451@users.noreply.github.com> Date: Wed, 13 Nov 2024 11:42:06 -0500 Subject: [PATCH] timeout between packets --- inside/src/main.rs | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/inside/src/main.rs b/inside/src/main.rs index 0f1902d..f14be92 100644 --- a/inside/src/main.rs +++ b/inside/src/main.rs @@ -1,7 +1,7 @@ #![no_std] #![no_main] -use embedded_io::{Read, Write}; +use embedded_io::{Read, ReadReady, Write}; use esp_backtrace as _; use esp_hal::{delay::Delay, prelude::*, rng::Rng, time::{self, Duration}}; use esp_println::{print, println}; @@ -108,20 +108,31 @@ fn main() -> ! { let mut buffer = [0u8; 1024]; let mut pos = 0; log::info!("connected"); - while let Ok(len) = socket.read(&mut buffer[pos..]) { - let to_print = unsafe { core::str::from_utf8_unchecked(&buffer[..(pos + len)]) }; - - if to_print.contains("\r\n") { - print!("{}", to_print); - println!(); - break; + 'read: loop { + while !socket.read_ready().unwrap_or(true) { + if time::now() > deadline { + println!("Timeout"); + time_out = true; + break 'read; + } } + if let Ok(len) = socket.read(&mut buffer[pos..]) { + let to_print = unsafe { core::str::from_utf8_unchecked(&buffer[..(pos + len)]) }; - pos += len; + if to_print.contains("\r\n") { + print!("{}", to_print); + println!(); + break; + } - if time::now() > deadline { - println!("Timeout"); - time_out = true; + pos += len; + + if time::now() > deadline { + println!("Timeout"); + time_out = true; + break; + } + } else { break; } }