diff options
Diffstat (limited to 'examples/std/src/bin/net.rs')
| -rw-r--r-- | examples/std/src/bin/net.rs | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/examples/std/src/bin/net.rs b/examples/std/src/bin/net.rs index 59813d8cb..fd7b6c930 100644 --- a/examples/std/src/bin/net.rs +++ b/examples/std/src/bin/net.rs | |||
| @@ -1,13 +1,15 @@ | |||
| 1 | use core::fmt::Write as _; | ||
| 2 | |||
| 1 | use clap::Parser; | 3 | use clap::Parser; |
| 2 | use embassy_executor::{Executor, Spawner}; | 4 | use embassy_executor::{Executor, Spawner}; |
| 3 | use embassy_net::tcp::TcpSocket; | 5 | use embassy_net::tcp::TcpSocket; |
| 4 | use embassy_net::{Config, Ipv4Address, Ipv4Cidr, Stack, StackResources}; | 6 | use embassy_net::{Config, Ipv4Address, Ipv4Cidr, StackResources}; |
| 5 | use embassy_net_tuntap::TunTapDevice; | 7 | use embassy_net_tuntap::TunTapDevice; |
| 6 | use embassy_time::Duration; | 8 | use embassy_time::Duration; |
| 7 | use embedded_io_async::Write; | 9 | use embedded_io_async::Write; |
| 8 | use heapless::Vec; | 10 | use heapless::Vec; |
| 9 | use log::*; | 11 | use log::*; |
| 10 | use rand_core::{OsRng, RngCore}; | 12 | use rand_core::{OsRng, TryRngCore}; |
| 11 | use static_cell::StaticCell; | 13 | use static_cell::StaticCell; |
| 12 | 14 | ||
| 13 | #[derive(Parser)] | 15 | #[derive(Parser)] |
| @@ -22,8 +24,8 @@ struct Opts { | |||
| 22 | } | 24 | } |
| 23 | 25 | ||
| 24 | #[embassy_executor::task] | 26 | #[embassy_executor::task] |
| 25 | async fn net_task(stack: &'static Stack<TunTapDevice>) -> ! { | 27 | async fn net_task(mut runner: embassy_net::Runner<'static, TunTapDevice>) -> ! { |
| 26 | stack.run().await | 28 | runner.run().await |
| 27 | } | 29 | } |
| 28 | 30 | ||
| 29 | #[embassy_executor::task] | 31 | #[embassy_executor::task] |
| @@ -46,21 +48,15 @@ async fn main_task(spawner: Spawner) { | |||
| 46 | 48 | ||
| 47 | // Generate random seed | 49 | // Generate random seed |
| 48 | let mut seed = [0; 8]; | 50 | let mut seed = [0; 8]; |
| 49 | OsRng.fill_bytes(&mut seed); | 51 | OsRng.try_fill_bytes(&mut seed).unwrap(); |
| 50 | let seed = u64::from_le_bytes(seed); | 52 | let seed = u64::from_le_bytes(seed); |
| 51 | 53 | ||
| 52 | // Init network stack | 54 | // Init network stack |
| 53 | static STACK: StaticCell<Stack<TunTapDevice>> = StaticCell::new(); | ||
| 54 | static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new(); | 55 | static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new(); |
| 55 | let stack = &*STACK.init(Stack::new( | 56 | let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); |
| 56 | device, | ||
| 57 | config, | ||
| 58 | RESOURCES.init(StackResources::<3>::new()), | ||
| 59 | seed, | ||
| 60 | )); | ||
| 61 | 57 | ||
| 62 | // Launch network task | 58 | // Launch network task |
| 63 | spawner.spawn(net_task(stack)).unwrap(); | 59 | spawner.spawn(net_task(runner).unwrap()); |
| 64 | 60 | ||
| 65 | // Then we can use it! | 61 | // Then we can use it! |
| 66 | let mut rx_buffer = [0; 4096]; | 62 | let mut rx_buffer = [0; 4096]; |
| @@ -77,8 +73,10 @@ async fn main_task(spawner: Spawner) { | |||
| 77 | return; | 73 | return; |
| 78 | } | 74 | } |
| 79 | info!("connected!"); | 75 | info!("connected!"); |
| 80 | loop { | 76 | for i in 0.. { |
| 81 | let r = socket.write_all(b"Hello!\n").await; | 77 | let mut buf = heapless::String::<100>::new(); |
| 78 | write!(buf, "Hello! ({})\r\n", i).unwrap(); | ||
| 79 | let r = socket.write_all(buf.as_bytes()).await; | ||
| 82 | if let Err(e) = r { | 80 | if let Err(e) = r { |
| 83 | warn!("write error: {:?}", e); | 81 | warn!("write error: {:?}", e); |
| 84 | return; | 82 | return; |
| @@ -97,6 +95,6 @@ fn main() { | |||
| 97 | 95 | ||
| 98 | let executor = EXECUTOR.init(Executor::new()); | 96 | let executor = EXECUTOR.init(Executor::new()); |
| 99 | executor.run(|spawner| { | 97 | executor.run(|spawner| { |
| 100 | spawner.spawn(main_task(spawner)).unwrap(); | 98 | spawner.spawn(main_task(spawner).unwrap()); |
| 101 | }); | 99 | }); |
| 102 | } | 100 | } |
