summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorandromeda <andromeda@lenovo>2026-04-06 21:51:13 +0200
committerandromeda <andromeda@lenovo>2026-04-06 21:51:13 +0200
commitc085c1ab360750b5522d1fa8fde0e0ed5c5aeb53 (patch)
treed14aa619c581c359e151cd4eefd0a3660a58aab7 /src/main.rs
parentae793c14be863a8e50df08068fb0be9b014217d3 (diff)
initialize wifi two-way
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs48
1 files changed, 23 insertions, 25 deletions
diff --git a/src/main.rs b/src/main.rs
index de13de8..dd764c8 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,8 +1,7 @@
#![no_std]
#![no_main]
-extern crate alloc;
-use alloc::string::String;
+use core::env;
use esp_backtrace as _; // panic_handler
use esp_hal::{
interrupt::software::SoftwareInterruptControl, rmt::Rmt, time::Rate, timer::timg::TimerGroup,
@@ -11,7 +10,7 @@ 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};
+use esp32c6_play::{connect_wifi, init, mk_wifi_config, sin, wait_ms, write_rgb};
// This creates a default app-descriptor required by the esp-idf bootloader.
// For more information see: <https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/app_image_format.html#application-description>
@@ -25,40 +24,39 @@ fn main() -> ! {
// initialize heap
esp_alloc::heap_allocator!(size: 64 * 1024);
- // initialize wifi
+ // initialize esp-rtos as scheduler for esp-radio
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");
+ // initialize wifi
+ let radio_controller = esp_radio::init().expect("failed to init radio controller");
+ let (mut wifi_controller, _) =
+ wifi::new(&radio_controller, peripherals.WIFI, wifi::Config::default())
+ .expect("failed to init wifi controller");
- wifi_controller
- .start()
- .expect("failed to start wifi controller");
+ let wifi_config = mk_wifi_config();
+ connect_wifi(&mut wifi_controller, &wifi_config);
- // set up rgb led
+ // initialize 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
- let rmt = Rmt::new(peripherals.RMT, frequency).expect("failed to initialize RMT0");
+ let rmt = Rmt::new(peripherals.RMT, frequency).expect("failed to initialize rmt");
SmartLedsAdapter::new(rmt.channel0, peripherals.GPIO8, &mut led_buffer)
};
+ // red led and waiting message
+ write_rgb(&mut rgb_led, RGB::new(255, 20, 20));
+ log::info!("connecting...");
+ while !wifi_controller
+ .is_connected()
+ .expect("failed to check connection status")
+ {
+ wait_ms(100);
+ }
+ log::info!("connected to the access point");
+
loop {
for i in 0..255 {
let r: u8 = i;