Skip to main content

wifiauto2/
wifiauto2.rs

1#![allow(missing_docs)]
2//! Minimal WiFiAuto example with a no-op event handler.
3
4#![cfg(feature = "wifi")]
5#![no_std]
6#![no_main]
7#![allow(clippy::future_not_send, reason = "single-threaded")]
8
9extern crate defmt_rtt as _;
10extern crate panic_probe as _;
11
12use core::convert::Infallible;
13use core::future;
14use device_envoy::{
15    Result,
16    button::PressedTo,
17    flash_array::FlashArray,
18    wifi_auto::WifiAuto,
19};
20
21#[embassy_executor::main]
22async fn main(spawner: embassy_executor::Spawner) -> ! {
23    let err = inner_main(spawner).await.unwrap_err();
24    core::panic!("{err}");
25}
26
27async fn inner_main(spawner: embassy_executor::Spawner) -> Result<Infallible> {
28    let p = embassy_rp::init(Default::default());
29
30    let [wifi_flash] = FlashArray::<1>::new(p.FLASH)?;
31
32    let wifi_auto = WifiAuto::new(
33        p.PIN_23,  // CYW43 power
34        p.PIN_24,  // CYW43 clock
35        p.PIN_25,  // CYW43 chip select
36        p.PIN_29,  // CYW43 data
37        p.PIO0,    // WiFi PIO
38        p.DMA_CH0, // WiFi DMA
39        wifi_flash,
40        p.PIN_13, // Button for reconfiguration
41        PressedTo::Ground,
42        "PicoAccess", // Captive-portal SSID
43        [],           // Any extra fields
44        spawner,
45    )?;
46
47    let (_stack, _button) = wifi_auto.connect(|_event| async move { Ok(()) }).await?;
48
49    future::pending().await // run forever
50}