net: refactor to simplify lifetimes/generics.

This commit is contained in:
Dario Nieuwenhuis
2024-09-11 22:06:26 +02:00
parent 7648d42b7f
commit be0d9775e3
43 changed files with 500 additions and 604 deletions

View File

@@ -6,7 +6,7 @@ teleprobe_meta::timeout!(120);
use defmt::{info, unwrap};
use embassy_executor::Spawner;
use embassy_net::{Stack, StackResources};
use embassy_net::StackResources;
use embassy_net_enc28j60::Enc28j60;
use embassy_nrf::gpio::{Level, Output, OutputDrive};
use embassy_nrf::rng::Rng;
@@ -25,8 +25,8 @@ bind_interrupts!(struct Irqs {
type MyDriver = Enc28j60<ExclusiveDevice<Spim<'static, peripherals::SPI3>, Output<'static>, Delay>, Output<'static>>;
#[embassy_executor::task]
async fn net_task(stack: &'static Stack<MyDriver>) -> ! {
stack.run().await
async fn net_task(mut runner: embassy_net::Runner<'static, MyDriver>) -> ! {
runner.run().await
}
#[embassy_executor::main]
@@ -65,11 +65,10 @@ async fn main(spawner: Spawner) {
let seed = u64::from_le_bytes(seed);
// Init network stack
static STACK: StaticCell<Stack<MyDriver>> = StaticCell::new();
static RESOURCES: StaticCell<StackResources<2>> = StaticCell::new();
let stack = &*STACK.init(Stack::new(device, config, RESOURCES.init(StackResources::new()), seed));
let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
unwrap!(spawner.spawn(net_task(stack)));
unwrap!(spawner.spawn(net_task(runner)));
perf_client::run(
stack,

View File

@@ -6,7 +6,7 @@ teleprobe_meta::timeout!(120);
use defmt::{info, unwrap};
use embassy_executor::Spawner;
use embassy_net::{Config, Stack, StackResources};
use embassy_net::{Config, StackResources};
use embassy_nrf::gpio::{Input, Level, Output, OutputDrive, Pull};
use embassy_nrf::rng::Rng;
use embassy_nrf::spim::{self, Spim};
@@ -40,8 +40,8 @@ async fn wifi_task(
type MyDriver = hosted::NetDriver<'static>;
#[embassy_executor::task]
async fn net_task(stack: &'static Stack<MyDriver>) -> ! {
stack.run().await
async fn net_task(mut runner: embassy_net::Runner<'static, MyDriver>) -> ! {
runner.run().await
}
#[embassy_executor::main]
@@ -86,16 +86,15 @@ async fn main(spawner: Spawner) {
let seed = u64::from_le_bytes(seed);
// Init network stack
static STACK: StaticCell<Stack<MyDriver>> = StaticCell::new();
static RESOURCES: StaticCell<StackResources<2>> = StaticCell::new();
let stack = &*STACK.init(Stack::new(
let (stack, runner) = embassy_net::new(
device,
Config::dhcpv4(Default::default()),
RESOURCES.init(StackResources::new()),
seed,
));
);
unwrap!(spawner.spawn(net_task(stack)));
unwrap!(spawner.spawn(net_task(runner)));
perf_client::run(
stack,