esp-embassy-wifihelper

Crates.ioesp-embassy-wifihelper
lib.rsesp-embassy-wifihelper
version0.2.3
created_at2025-02-08 21:14:11.991659+00
updated_at2025-04-25 17:43:16.42808+00
descriptionSimple helper library to make it easier to connect to wifi with esp-embassy
homepagehttps://github.com/oyvindnetland/esp-embassy-wifihelper
repositoryhttps://github.com/oyvindnetland/esp-embassy-wifihelper
max_upload_size
id1548411
size58,763
Øyvind Myrstad Netland (oyvindnetland)

documentation

README

esp-embassy-wifi

Simple helper library to make it easier to connect to wifi with esp-embassy.

How to use

The wifi_example.rs in examples folder show a minimal esp32c3 example code. The part that use this library is this:

let wifi = WifiStack::new(
    spawner,
    peripherals.WIFI,
    peripherals.TIMG0,
    peripherals.RNG,
    peripherals.RADIO_CLK,
    SSID.try_into().unwrap(),
    PASSWORD.try_into().unwrap(),
);

How to set up and start delayed through a channel

For cases where wifi is not supposed to connect at startup, or the ssid/password is unknown at startup, a variant for connecting is used. The correct hardware resources are set up and the tasks are spawned, but it waits for a message on a channel with the ssid/password information.

static CHANNEL: Channel<CriticalSectionRawMutex, ClientConfiguration, 1> = Channel::new();

let wifi = WifiStack::new_connect_later(
    spawner,
    peripherals.WIFI,
    peripherals.TIMG0,
    peripherals.RNG,
    peripherals.RADIO_CLK,
    CHANNEL.receiver(),
);

The wifi will then try to connect with:

let client_config = ClientConfiguration {
    ssid: SSID.try_into().unwrap(),
    password: PASSWORD.try_into().unwrap(),
    ..Default::default()
};
let _ = CHANNEL.send(client_config).await;

Supported devices

This has been tested on esp32, esp32c3, esp32s3 and esp32c6, and is assumed to work on the remaining esp32 devices as well.

Commit count: 20

cargo fmt