aboutsummaryrefslogtreecommitdiff
path: root/examples/std/src/bin/net.rs
diff options
context:
space:
mode:
authorjrmoulton <[email protected]>2025-06-10 15:47:54 -0600
committerjrmoulton <[email protected]>2025-06-10 15:48:36 -0600
commitcfad9798ff99d4de0571a512d156b5fe1ef1d427 (patch)
treefc3bf670f82d139de19466cddad1e909db7f3d2e /examples/std/src/bin/net.rs
parentfc342915e6155dec7bafa3e135da7f37a9a07f5c (diff)
parent6186d111a5c150946ee5b7e9e68d987a38c1a463 (diff)
merge new embassy changes
Diffstat (limited to 'examples/std/src/bin/net.rs')
-rw-r--r--examples/std/src/bin/net.rs23
1 files changed, 13 insertions, 10 deletions
diff --git a/examples/std/src/bin/net.rs b/examples/std/src/bin/net.rs
index 310e7264d..232cf494b 100644
--- a/examples/std/src/bin/net.rs
+++ b/examples/std/src/bin/net.rs
@@ -1,13 +1,15 @@
1use core::fmt::Write as _;
2
1use clap::Parser; 3use clap::Parser;
2use embassy_executor::{Executor, Spawner}; 4use embassy_executor::{Executor, Spawner};
3use embassy_net::tcp::TcpSocket; 5use embassy_net::tcp::TcpSocket;
4use embassy_net::{Config, Ipv4Address, Ipv4Cidr, Stack, StackResources}; 6use embassy_net::{Config, Ipv4Address, Ipv4Cidr, StackResources};
5use embassy_net_tuntap::TunTapDevice; 7use embassy_net_tuntap::TunTapDevice;
6use embassy_time::Duration; 8use embassy_time::Duration;
7use embedded_io_async::Write; 9use embedded_io_async::Write;
8use heapless::Vec; 10use heapless::Vec;
9use log::*; 11use log::*;
10use rand_core::{OsRng, RngCore}; 12use rand_core::{OsRng, TryRngCore};
11use static_cell::StaticCell; 13use 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]
25async fn net_task(stack: &'static Stack<TunTapDevice>) -> ! { 27async 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,16 +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(device, config, RESOURCES.init(StackResources::new()), seed)); 56 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
56 57
57 // Launch network task 58 // Launch network task
58 spawner.spawn(net_task(stack)).unwrap(); 59 spawner.spawn(net_task(runner)).unwrap();
59 60
60 // Then we can use it! 61 // Then we can use it!
61 let mut rx_buffer = [0; 4096]; 62 let mut rx_buffer = [0; 4096];
@@ -72,8 +73,10 @@ async fn main_task(spawner: Spawner) {
72 return; 73 return;
73 } 74 }
74 info!("connected!"); 75 info!("connected!");
75 loop { 76 for i in 0.. {
76 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;
77 if let Err(e) = r { 80 if let Err(e) = r {
78 warn!("write error: {:?}", e); 81 warn!("write error: {:?}", e);
79 return; 82 return;