summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cargo/config.toml2
-rw-r--r--Cargo.lock255
-rw-r--r--Cargo.toml42
-rw-r--r--src/main.rs38
4 files changed, 299 insertions, 38 deletions
diff --git a/.cargo/config.toml b/.cargo/config.toml
index 637097c..04a9b67 100644
--- a/.cargo/config.toml
+++ b/.cargo/config.toml
@@ -15,4 +15,4 @@ rustflags = [
target = "riscv32imac-unknown-none-elf"
[unstable]
-build-std = ["core"]
+build-std = ["core", "alloc"]
diff --git a/Cargo.lock b/Cargo.lock
index 39e8ad4..27d8c7a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3,12 +3,30 @@
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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -25,7 +43,7 @@ checksum = "f48d6ace212fdf1b45fd6b566bb40808415344642b76c3224c07c8df9da81e97"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.117",
]
[[package]]
@@ -53,6 +71,12 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -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]]
@@ -198,6 +222,12 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -322,7 +352,7 @@ dependencies = [
"darling 0.21.3",
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.117",
]
[[package]]
@@ -332,6 +362,22 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -442,7 +488,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.117",
"termcolor",
]
@@ -465,6 +511,21 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -478,6 +539,44 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -500,6 +599,26 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -515,6 +634,15 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -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,10 +895,22 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -787,12 +929,6 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -808,6 +944,17 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -853,6 +1000,27 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -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]]
@@ -960,6 +1128,19 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -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]]
@@ -1149,6 +1354,12 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1233,5 +1444,5 @@ checksum = "96fb42cd29c42f8744c74276e9f5bee7b06685bbe5b88df891516d72cb320450"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.117",
]
diff --git a/Cargo.toml b/Cargo.toml
index 60e9b52..427a1f6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -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]
diff --git a/src/main.rs b/src/main.rs
index 960438f..de13de8 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -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