#![no_std]
#![no_main]
use core::convert::Infallible;
use embassy_executor::Spawner;
use esp_backtrace as _;
use device_envoy_core::led::Led as _;
use device_envoy_esp::{
init_and_start,
led::{LedLevel, OnLevel},
};
device_envoy_esp::led! {
LedOne {
pin: GPIO0
}
}
device_envoy_esp::led! {
LedTwo {
pin: GPIO1,
max_steps: 40
}
}
device_envoy_esp::led! {
LedThree {
pin: GPIO2
}
}
device_envoy_esp::led! {
LedFour {
pin: GPIO3
}
}
device_envoy_esp::led! {
LedFive {
pin: GPIO4
}
}
esp_bootloader_esp_idf::esp_app_desc!();
#[esp_rtos::main]
async fn main(spawner: Spawner) -> ! {
let err = inner_main(spawner).await.unwrap_err();
panic!("{err:?}");
}
async fn inner_main(spawner: Spawner) -> device_envoy_esp::Result<Infallible> {
init_and_start!(p);
let led_one = LedOne::new(p.GPIO0, OnLevel::High, spawner)?;
let led_two = LedTwo::new(p.GPIO1, OnLevel::High, spawner)?;
let led_three = LedThree::new(p.GPIO2, OnLevel::High, spawner)?;
let led_four = LedFour::new(p.GPIO3, OnLevel::High, spawner)?;
let led_five = LedFive::new(p.GPIO4, OnLevel::High, spawner)?;
led_one.set_level(LedLevel::On);
led_two.set_level(LedLevel::Off);
led_three.set_level(LedLevel::On);
led_four.set_level(LedLevel::Off);
led_five.set_level(LedLevel::On);
core::future::pending().await
}