wifi init

This commit is contained in:
andromeda
2026-04-06 20:03:39 +02:00
parent ab2ae6d0e8
commit ae793c14be
4 changed files with 299 additions and 38 deletions

View File

@@ -15,4 +15,4 @@ rustflags = [
target = "riscv32imac-unknown-none-elf"
[unstable]
build-std = ["core"]
build-std = ["core", "alloc"]

255
Cargo.lock generated
View File

@@ -2,12 +2,30 @@
# It is not intended for manual editing.
version = 4
[[package]]
name = "allocator-api2"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c583acf993cf4245c4acb0a2cc2ab1f9cc097de73411bb6d3647ff6af2b1013d"
[[package]]
name = "anyhow"
version = "1.0.102"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
[[package]]
name = "autocfg"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]]
name = "base64"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
[[package]]
name = "bitfield"
version = "0.19.4"
@@ -25,7 +43,7 @@ checksum = "f48d6ace212fdf1b45fd6b566bb40808415344642b76c3224c07c8df9da81e97"
dependencies = [
"proc-macro2",
"quote",
"syn",
"syn 2.0.117",
]
[[package]]
@@ -52,6 +70,12 @@ version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]]
name = "const-default"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b396d1f76d455557e1218ec8066ae14bba60b4b36ecd55577ba979f5db7ecaa"
[[package]]
name = "critical-section"
version = "1.2.0"
@@ -98,7 +122,7 @@ dependencies = [
"ident_case",
"proc-macro2",
"quote",
"syn",
"syn 2.0.117",
]
[[package]]
@@ -111,7 +135,7 @@ dependencies = [
"proc-macro2",
"quote",
"strsim",
"syn",
"syn 2.0.117",
]
[[package]]
@@ -122,7 +146,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
dependencies = [
"darling_core 0.21.3",
"quote",
"syn",
"syn 2.0.117",
]
[[package]]
@@ -133,7 +157,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d"
dependencies = [
"darling_core 0.23.0",
"quote",
"syn",
"syn 2.0.117",
]
[[package]]
@@ -144,7 +168,7 @@ checksum = "780eb241654bf097afb00fc5f054a09b687dad862e485fdcf8399bb056565370"
dependencies = [
"proc-macro2",
"quote",
"syn",
"syn 2.0.117",
]
[[package]]
@@ -197,6 +221,12 @@ dependencies = [
"num-traits",
]
[[package]]
name = "embassy-net-driver"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "524eb3c489760508f71360112bca70f6e53173e6fe48fc5f0efd0f5ab217751d"
[[package]]
name = "embassy-sync"
version = "0.6.2"
@@ -322,7 +352,7 @@ dependencies = [
"darling 0.21.3",
"proc-macro2",
"quote",
"syn",
"syn 2.0.117",
]
[[package]]
@@ -331,6 +361,22 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "esp-alloc"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "641e43d6a60244429117ef2fa7a47182120c7561336ea01f6fb08d634f46bae1"
dependencies = [
"allocator-api2",
"cfg-if",
"document-features",
"enumset",
"esp-config",
"esp-sync",
"linked_list_allocator",
"rlsf",
]
[[package]]
name = "esp-backtrace"
version = "0.18.1"
@@ -442,7 +488,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
"syn",
"syn 2.0.117",
"termcolor",
]
@@ -464,6 +510,21 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a93e39c8ad8d390d248dc7b9f4b59a873f313bf535218b8e2351356972399e3"
[[package]]
name = "esp-phy"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6b1facf348e1e251517278fc0f5dc134e95e518251f5796cfbb532ca226a29bf"
dependencies = [
"cfg-if",
"document-features",
"esp-config",
"esp-hal",
"esp-metadata-generated",
"esp-sync",
"esp-wifi-sys",
]
[[package]]
name = "esp-println"
version = "0.16.1"
@@ -477,6 +538,44 @@ dependencies = [
"portable-atomic",
]
[[package]]
name = "esp-radio"
version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "684c4de2f8907b73c9b891fbda65286a86d34fced4b856f36a7896c211f2f265"
dependencies = [
"allocator-api2",
"cfg-if",
"document-features",
"embassy-net-driver",
"embedded-io 0.6.1",
"embedded-io 0.7.1",
"embedded-io-async 0.6.1",
"embedded-io-async 0.7.0",
"enumset",
"esp-alloc",
"esp-config",
"esp-hal",
"esp-hal-procmacros",
"esp-metadata-generated",
"esp-phy",
"esp-radio-rtos-driver",
"esp-sync",
"esp-wifi-sys",
"heapless 0.9.2",
"instability",
"num-derive",
"num-traits",
"portable-atomic",
"portable_atomic_enum",
]
[[package]]
name = "esp-radio-rtos-driver"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "543bc31d1851afd062357e7810c1a9633f282fd3993583499a841ab497cbca6c"
[[package]]
name = "esp-riscv-rt"
version = "0.13.0"
@@ -499,6 +598,26 @@ dependencies = [
"esp-metadata-generated",
]
[[package]]
name = "esp-rtos"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "162ec711c8d06e79c67b75d01595539e86b0aac209643af98ca87a12250428b3"
dependencies = [
"allocator-api2",
"cfg-if",
"document-features",
"embassy-sync 0.7.2",
"esp-alloc",
"esp-config",
"esp-hal",
"esp-hal-procmacros",
"esp-metadata-generated",
"esp-radio-rtos-driver",
"esp-sync",
"portable-atomic",
]
[[package]]
name = "esp-sync"
version = "0.1.1"
@@ -514,6 +633,15 @@ dependencies = [
"xtensa-lx",
]
[[package]]
name = "esp-wifi-sys"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89b6544f6f0cb86169d1f93ba2101a8d50358a040c5043676ed86b793e09b12c"
dependencies = [
"anyhow",
]
[[package]]
name = "esp32"
version = "0.39.0"
@@ -559,13 +687,15 @@ name = "esp32c6-play"
version = "0.1.0"
dependencies = [
"critical-section",
"esp-alloc",
"esp-backtrace",
"esp-bootloader-esp-idf",
"esp-hal",
"esp-hal-smartled",
"esp-println",
"esp-radio",
"esp-rtos",
"log",
"micromath",
"smart-leds",
]
@@ -735,7 +865,7 @@ dependencies = [
"indoc",
"proc-macro2",
"quote",
"syn",
"syn 2.0.117",
]
[[package]]
@@ -765,9 +895,21 @@ checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4"
dependencies = [
"proc-macro2",
"quote",
"syn",
"syn 2.0.117",
]
[[package]]
name = "libc"
version = "0.2.184"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af"
[[package]]
name = "linked_list_allocator"
version = "0.10.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9afa463f5405ee81cdb9cc2baf37e08ec7e4c8209442b5d72c04cfb2cd6e6286"
[[package]]
name = "litrs"
version = "1.0.0"
@@ -786,12 +928,6 @@ version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
[[package]]
name = "micromath"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3c8dda44ff03a2f238717214da50f65d5a53b45cd213a7370424ffdb6fae815"
[[package]]
name = "nb"
version = "0.1.3"
@@ -807,6 +943,17 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d"
[[package]]
name = "num-derive"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.117",
]
[[package]]
name = "num-traits"
version = "0.2.19"
@@ -852,6 +999,27 @@ dependencies = [
"portable-atomic",
]
[[package]]
name = "portable_atomic_enum"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30d48f60c43e0120bb2bb48589a16d4bed2f4b911be41e299f2d0fc0e0e20885"
dependencies = [
"portable-atomic",
"portable_atomic_enum_macros",
]
[[package]]
name = "portable_atomic_enum_macros"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a33fa6ec7f2047f572d49317cca19c87195de99c6e5b6ee492da701cfe02b053"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.117",
]
[[package]]
name = "proc-macro-crate"
version = "3.5.0"
@@ -921,7 +1089,7 @@ checksum = "7d323d13972c1b104aa036bc692cd08b822c8bbf23d79a27c526095856499799"
dependencies = [
"proc-macro2",
"quote",
"syn",
"syn 2.0.117",
]
[[package]]
@@ -950,7 +1118,7 @@ checksum = "def519ddeeb5e43c2b4fc3952c27b3a86782fc05192f322b2309125cd85b1fc3"
dependencies = [
"proc-macro2",
"quote",
"syn",
"syn 2.0.117",
]
[[package]]
@@ -959,6 +1127,19 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1376b15f3ff160e9b1e8ea564ce427f2f6fcf77528cc0a8bf405cb476f9cea7"
[[package]]
name = "rlsf"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1646a59a9734b8b7a0ac51689388a60fe1625d4b956348e9de07591a1478457a"
dependencies = [
"cfg-if",
"const-default",
"libc",
"rustversion",
"svgbobdoc",
]
[[package]]
name = "rustversion"
version = "1.0.22"
@@ -998,7 +1179,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [
"proc-macro2",
"quote",
"syn",
"syn 2.0.117",
]
[[package]]
@@ -1077,7 +1258,31 @@ dependencies = [
"heck",
"proc-macro2",
"quote",
"syn",
"syn 2.0.117",
]
[[package]]
name = "svgbobdoc"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2c04b93fc15d79b39c63218f15e3fdffaa4c227830686e3b7c5f41244eb3e50"
dependencies = [
"base64",
"proc-macro2",
"quote",
"syn 1.0.109",
"unicode-width",
]
[[package]]
name = "syn"
version = "1.0.109"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
@@ -1148,6 +1353,12 @@ version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
[[package]]
name = "unicode-width"
version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
[[package]]
name = "unsafe-libyaml"
version = "0.2.11"
@@ -1233,5 +1444,5 @@ checksum = "96fb42cd29c42f8744c74276e9f5bee7b06685bbe5b88df891516d72cb320450"
dependencies = [
"proc-macro2",
"quote",
"syn",
"syn 2.0.117",
]

View File

@@ -9,21 +9,35 @@ name = "esp32c6-play"
path = "./src/main.rs"
[dependencies]
esp-hal = { version = "~1.0", features = ["esp32c6", "log-04", "unstable"] }
esp-bootloader-esp-idf = { version = "0.4.0", features = ["esp32c6", "log-04"] }
log = "0.4.27"
log = "0.4.27"
critical-section = "1.2.0"
esp-backtrace = { version = "0.18.1", features = [
"esp32c6",
"panic-handler",
"println",
] }
esp-println = { version = "0.16.1", features = ["esp32c6", "log-04"] }
esp-hal-smartled = { version = "0.17.0", features = ["esp32c6"] }
smart-leds = { version = "0.4.0", default-features = false }
micromath = { version = "2.1.0", default-features = false }
[dependencies.esp-hal]
version = "~1.0"
features = ["esp32c6", "unstable", "log-04"]
[dependencies.esp-bootloader-esp-idf]
version = "0.4.0"
features = ["esp32c6", "log-04"]
[dependencies.esp-backtrace]
version = "0.18.1"
features = ["esp32c6", "panic-handler", "println"]
[dependencies.esp-println]
version = "0.16.1"
features = ["esp32c6", "log-04"]
[dependencies.esp-hal-smartled]
version = "0.17.0"
features = ["esp32c6"]
[dependencies.smart-leds]
version = "0.4.0"
default-features = false
[dependencies.esp-radio]
version = "0.17.0"
features = ["esp32c6", "esp-alloc", "wifi", "esp-now", "unstable"]
[dependencies.esp-rtos]
version = "0.2.0"
features = ["esp32c6", "esp-alloc", "esp-radio"]
[dependencies.esp-alloc]
version = "0.9.0"
features = ["esp32c6"]
[profile.dev]

View File

@@ -1,9 +1,14 @@
#![no_std]
#![no_main]
extern crate alloc;
use alloc::string::String;
use esp_backtrace as _; // panic_handler
use esp_hal::{rmt::Rmt, time::Rate};
use esp_hal::{
interrupt::software::SoftwareInterruptControl, rmt::Rmt, time::Rate, timer::timg::TimerGroup,
};
use esp_hal_smartled::{SmartLedsAdapter, smart_led_buffer};
use esp_radio::wifi;
use smart_leds::RGB;
use esp32c6_play::{init, sin, wait_ms, write_rgb};
@@ -14,8 +19,39 @@ esp_bootloader_esp_idf::esp_app_desc!();
#[esp_hal::main]
fn main() -> ! {
// initialize peripherals and logging
let peripherals = init();
// initialize heap
esp_alloc::heap_allocator!(size: 64 * 1024);
// initialize wifi
let timg0 = TimerGroup::new(peripherals.TIMG0);
let software_interrupt = SoftwareInterruptControl::new(peripherals.SW_INTERRUPT);
esp_rtos::start(timg0.timer0, software_interrupt.software_interrupt0);
let esp_radio_controller = esp_radio::init().expect("failed to init radio controller");
let (mut wifi_controller, _) = wifi::new(
&esp_radio_controller,
peripherals.WIFI,
wifi::Config::default(),
)
.expect("failed to create wifi controller");
let wifi_config = wifi::ModeConfig::AccessPoint(
wifi::AccessPointConfig::default()
.with_auth_method(wifi::AuthMethod::WpaWpa2Personal)
.with_ssid(String::from("ssid-test"))
.with_password(String::from("password")),
);
wifi_controller
.set_config(&wifi_config)
.expect("failed to set wifi config");
wifi_controller
.start()
.expect("failed to start wifi controller");
// set up rgb led
let mut led_buffer = smart_led_buffer!(1 /* # of leds */);
let mut rgb_led = {
let frequency = Rate::from_mhz(80); // max frequency of RMT