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; } }