diff options
| -rw-r--r-- | examples/std/src/bin/net_ppp.rs | 52 | ||||
| -rw-r--r-- | examples/std/src/bin/tcp_accept.rs | 17 |
2 files changed, 3 insertions, 66 deletions
diff --git a/examples/std/src/bin/net_ppp.rs b/examples/std/src/bin/net_ppp.rs index ea3fbebef..f667e8d4c 100644 --- a/examples/std/src/bin/net_ppp.rs +++ b/examples/std/src/bin/net_ppp.rs | |||
| @@ -45,7 +45,7 @@ async fn net_task(mut runner: embassy_net::Runner<'static, embassy_net_ppp::Devi | |||
| 45 | async fn ppp_task(stack: Stack<'static>, mut runner: Runner<'static>, port: SerialPort) -> ! { | 45 | async fn ppp_task(stack: Stack<'static>, mut runner: Runner<'static>, port: SerialPort) -> ! { |
| 46 | let port = Async::new(port).unwrap(); | 46 | let port = Async::new(port).unwrap(); |
| 47 | let port = BufReader::new(port); | 47 | let port = BufReader::new(port); |
| 48 | let port = adapter::FromFutures::new(port); | 48 | let port = embedded_io_adapters::futures_03::FromFutures::new(port); |
| 49 | 49 | ||
| 50 | let config = embassy_net_ppp::Config { | 50 | let config = embassy_net_ppp::Config { |
| 51 | username: b"myuser", | 51 | username: b"myuser", |
| @@ -163,53 +163,3 @@ fn main() { | |||
| 163 | spawner.spawn(main_task(spawner)).unwrap(); | 163 | spawner.spawn(main_task(spawner)).unwrap(); |
| 164 | }); | 164 | }); |
| 165 | } | 165 | } |
| 166 | |||
| 167 | mod adapter { | ||
| 168 | use core::future::poll_fn; | ||
| 169 | use core::pin::Pin; | ||
| 170 | |||
| 171 | use futures::AsyncBufReadExt; | ||
| 172 | |||
| 173 | /// Adapter from `futures::io` traits. | ||
| 174 | #[derive(Clone)] | ||
| 175 | pub struct FromFutures<T: ?Sized> { | ||
| 176 | inner: T, | ||
| 177 | } | ||
| 178 | |||
| 179 | impl<T> FromFutures<T> { | ||
| 180 | /// Create a new adapter. | ||
| 181 | pub fn new(inner: T) -> Self { | ||
| 182 | Self { inner } | ||
| 183 | } | ||
| 184 | } | ||
| 185 | |||
| 186 | impl<T: ?Sized> embedded_io_async::ErrorType for FromFutures<T> { | ||
| 187 | type Error = std::io::Error; | ||
| 188 | } | ||
| 189 | |||
| 190 | impl<T: futures::io::AsyncRead + Unpin + ?Sized> embedded_io_async::Read for FromFutures<T> { | ||
| 191 | async fn read(&mut self, buf: &mut [u8]) -> Result<usize, Self::Error> { | ||
| 192 | poll_fn(|cx| Pin::new(&mut self.inner).poll_read(cx, buf)).await | ||
| 193 | } | ||
| 194 | } | ||
| 195 | |||
| 196 | impl<T: futures::io::AsyncBufRead + Unpin + ?Sized> embedded_io_async::BufRead for FromFutures<T> { | ||
| 197 | async fn fill_buf(&mut self) -> Result<&[u8], Self::Error> { | ||
| 198 | self.inner.fill_buf().await | ||
| 199 | } | ||
| 200 | |||
| 201 | fn consume(&mut self, amt: usize) { | ||
| 202 | Pin::new(&mut self.inner).consume(amt) | ||
| 203 | } | ||
| 204 | } | ||
| 205 | |||
| 206 | impl<T: futures::io::AsyncWrite + Unpin + ?Sized> embedded_io_async::Write for FromFutures<T> { | ||
| 207 | async fn write(&mut self, buf: &[u8]) -> Result<usize, Self::Error> { | ||
| 208 | poll_fn(|cx| Pin::new(&mut self.inner).poll_write(cx, buf)).await | ||
| 209 | } | ||
| 210 | |||
| 211 | async fn flush(&mut self) -> Result<(), Self::Error> { | ||
| 212 | poll_fn(|cx| Pin::new(&mut self.inner).poll_flush(cx)).await | ||
| 213 | } | ||
| 214 | } | ||
| 215 | } | ||
diff --git a/examples/std/src/bin/tcp_accept.rs b/examples/std/src/bin/tcp_accept.rs index 5d36b739d..18646a083 100644 --- a/examples/std/src/bin/tcp_accept.rs +++ b/examples/std/src/bin/tcp_accept.rs | |||
| @@ -1,5 +1,3 @@ | |||
| 1 | use core::fmt::Write as _; | ||
| 2 | |||
| 3 | use clap::Parser; | 1 | use clap::Parser; |
| 4 | use embassy_executor::{Executor, Spawner}; | 2 | use embassy_executor::{Executor, Spawner}; |
| 5 | use embassy_net::tcp::TcpSocket; | 3 | use embassy_net::tcp::TcpSocket; |
| @@ -28,16 +26,6 @@ async fn net_task(mut runner: embassy_net::Runner<'static, TunTapDevice>) -> ! { | |||
| 28 | runner.run().await | 26 | runner.run().await |
| 29 | } | 27 | } |
| 30 | 28 | ||
| 31 | #[derive(Default)] | ||
| 32 | struct StrWrite(pub heapless::Vec<u8, 30>); | ||
| 33 | |||
| 34 | impl core::fmt::Write for StrWrite { | ||
| 35 | fn write_str(&mut self, s: &str) -> Result<(), core::fmt::Error> { | ||
| 36 | self.0.extend_from_slice(s.as_bytes()).unwrap(); | ||
| 37 | Ok(()) | ||
| 38 | } | ||
| 39 | } | ||
| 40 | |||
| 41 | #[embassy_executor::task] | 29 | #[embassy_executor::task] |
| 42 | async fn main_task(spawner: Spawner) { | 30 | async fn main_task(spawner: Spawner) { |
| 43 | let opts: Opts = Opts::parse(); | 31 | let opts: Opts = Opts::parse(); |
| @@ -85,9 +73,8 @@ async fn main_task(spawner: Spawner) { | |||
| 85 | 73 | ||
| 86 | // Write some quick output | 74 | // Write some quick output |
| 87 | for i in 1..=5 { | 75 | for i in 1..=5 { |
| 88 | let mut w = StrWrite::default(); | 76 | let s = format!("{}! ", i); |
| 89 | write!(w, "{}! ", i).unwrap(); | 77 | let r = socket.write_all(s.as_bytes()).await; |
| 90 | let r = socket.write_all(&w.0).await; | ||
| 91 | if let Err(e) = r { | 78 | if let Err(e) = r { |
| 92 | warn!("write error: {:?}", e); | 79 | warn!("write error: {:?}", e); |
| 93 | return; | 80 | return; |
