diff --git a/embassy/demos/picow/src/main.rs b/embassy/demos/picow/src/main.rs index b99d07704a8b23994aa350eba27fef504558ec75..1aa7b23e92b4fe1a8a082fb76451874da80064c4 100644 --- a/embassy/demos/picow/src/main.rs +++ b/embassy/demos/picow/src/main.rs @@ -148,14 +148,12 @@ impl DemoShell { Ok(()) } - async fn serial<C>(&self, mut stdio: C) -> Result<()> - where C: asynch::Read+asynch::Write+Clone+Io<Error=sunset::Error> { + async fn serial<R, W>(&self, mut sr: R, mut sw: W) -> Result<()> + where R: asynch::Read+Io<Error=sunset::Error>, + W: asynch::Write+Io<Error=sunset::Error> { info!("serial top"); - - let mut s2 = stdio.clone(); - info!("take await"); let (mut rx, mut tx) = self.ctx.usb_pipe.take().await; info!("take done"); @@ -173,7 +171,7 @@ impl DemoShell { } btrans.push(*c).unwrap(); } - s2.write_all(&btrans).await?; + sw.write_all(&btrans).await?; } #[allow(unreachable_code)] Ok::<(), sunset::Error>(()) @@ -181,7 +179,7 @@ impl DemoShell { let w = async { let mut b = [0u8; 64]; loop { - let n = stdio.read(&mut b).await?; + let n = sr.read(&mut b).await?; if n == 0 { return Err(sunset::Error::ChannelEOF); } @@ -232,7 +230,7 @@ impl Shell for DemoShell { let stdio = serv.stdio(chan_handle).await?; if *self.username.lock().await == "serial" { - self.serial(stdio).await + self.serial(stdio.clone(), stdio).await } else { self.menu(stdio).await }