moved LED and feedback to new lib

This commit is contained in:
2025-10-27 14:25:26 +01:00
parent 009f6cbb2e
commit a0ed04a560
3 changed files with 120 additions and 120 deletions

View File

@@ -6,6 +6,7 @@ use smart_leds::SmartLedsWriteAsync;
use smart_leds::colors::{BLACK, GREEN, RED, YELLOW};
use smart_leds::{brightness, colors::BLUE};
use crate::init::hardware;
use crate::{FEEDBACK_STATE, init};
#[derive(Copy, Clone, Debug)]
@@ -24,107 +25,104 @@ const LED_LEVEL: u8 = 255;
#[embassy_executor::task]
pub async fn feedback_task(
// mut led: SmartLedsAdapterAsync<
// ConstChannelAccess<esp_hal::rmt::Tx, 0>,
// { init::hardware::LED_BUFFER_SIZE },
// >,
mut led: SmartLedsAdapterAsync<'static, { hardware::LED_BUFFER_SIZE }>,
buzzer: peripherals::GPIO21<'static>,
) {
debug!("Starting feedback task");
let mut buzzer = init::hardware::setup_buzzer(buzzer);
loop {
let feedback_state = FEEDBACK_STATE.wait().await;
// match feedback_state {
// FeedbackState::Ack => {
// led.write(brightness(
// [GREEN; init::hardware::NUM_LEDS].into_iter(),
// LED_LEVEL,
// ))
// .await
// .unwrap();
// buzzer.set_high();
// Timer::after(Duration::from_millis(100)).await;
// buzzer.set_low();
// Timer::after(Duration::from_millis(50)).await;
// }
// FeedbackState::Nack => {
// led.write(brightness(
// [YELLOW; init::hardware::NUM_LEDS].into_iter(),
// LED_LEVEL,
// ))
// .await
// .unwrap();
// buzzer.set_high();
// Timer::after(Duration::from_millis(100)).await;
// buzzer.set_low();
// Timer::after(Duration::from_millis(100)).await;
// buzzer.set_high();
// Timer::after(Duration::from_millis(100)).await;
// buzzer.set_low();
// led.write(brightness(
// [BLACK; init::hardware::NUM_LEDS].into_iter(),
// LED_LEVEL,
// ))
// .await
// .unwrap();
// }
// FeedbackState::Error => {
// led.write(brightness(
// [RED; init::hardware::NUM_LEDS].into_iter(),
// LED_LEVEL,
// ))
// .await
// .unwrap();
// buzzer.set_high();
// Timer::after(Duration::from_millis(500)).await;
// buzzer.set_low();
// Timer::after(Duration::from_millis(500)).await;
// buzzer.set_high();
// Timer::after(Duration::from_millis(500)).await;
// buzzer.set_low();
// }
// FeedbackState::Startup => {
// led.write(brightness(
// [GREEN; init::hardware::NUM_LEDS].into_iter(),
// LED_LEVEL,
// ))
// .await
// .unwrap();
// buzzer.set_high();
// Timer::after(Duration::from_millis(10)).await;
// buzzer.set_low();
// Timer::after(Duration::from_millis(10)).await;
// buzzer.set_high();
// Timer::after(Duration::from_millis(10)).await;
// buzzer.set_low();
// Timer::after(Duration::from_millis(50)).await;
// buzzer.set_high();
// Timer::after(Duration::from_millis(100)).await;
// buzzer.set_low();
// led.write(brightness(
// [BLACK; init::hardware::NUM_LEDS].into_iter(),
// LED_LEVEL,
// ))
// .await
// .unwrap();
// }
// FeedbackState::WIFI => {
// led.write(brightness(
// [BLUE; init::hardware::NUM_LEDS].into_iter(),
// LED_LEVEL,
// ))
// .await
// .unwrap();
// }
// FeedbackState::Idle => {
// led.write(brightness(
// [GREEN; init::hardware::NUM_LEDS].into_iter(),
// LED_LEVEL,
// ))
// .await
// .unwrap();
// }
// };
match feedback_state {
FeedbackState::Ack => {
led.write(brightness(
[GREEN; init::hardware::NUM_LEDS].into_iter(),
LED_LEVEL,
))
.await
.unwrap();
buzzer.set_high();
Timer::after(Duration::from_millis(100)).await;
buzzer.set_low();
Timer::after(Duration::from_millis(50)).await;
}
FeedbackState::Nack => {
led.write(brightness(
[YELLOW; init::hardware::NUM_LEDS].into_iter(),
LED_LEVEL,
))
.await
.unwrap();
buzzer.set_high();
Timer::after(Duration::from_millis(100)).await;
buzzer.set_low();
Timer::after(Duration::from_millis(100)).await;
buzzer.set_high();
Timer::after(Duration::from_millis(100)).await;
buzzer.set_low();
led.write(brightness(
[BLACK; init::hardware::NUM_LEDS].into_iter(),
LED_LEVEL,
))
.await
.unwrap();
}
FeedbackState::Error => {
led.write(brightness(
[RED; init::hardware::NUM_LEDS].into_iter(),
LED_LEVEL,
))
.await
.unwrap();
buzzer.set_high();
Timer::after(Duration::from_millis(500)).await;
buzzer.set_low();
Timer::after(Duration::from_millis(500)).await;
buzzer.set_high();
Timer::after(Duration::from_millis(500)).await;
buzzer.set_low();
}
FeedbackState::Startup => {
led.write(brightness(
[GREEN; init::hardware::NUM_LEDS].into_iter(),
LED_LEVEL,
))
.await
.unwrap();
buzzer.set_high();
Timer::after(Duration::from_millis(10)).await;
buzzer.set_low();
Timer::after(Duration::from_millis(10)).await;
buzzer.set_high();
Timer::after(Duration::from_millis(10)).await;
buzzer.set_low();
Timer::after(Duration::from_millis(50)).await;
buzzer.set_high();
Timer::after(Duration::from_millis(100)).await;
buzzer.set_low();
led.write(brightness(
[BLACK; init::hardware::NUM_LEDS].into_iter(),
LED_LEVEL,
))
.await
.unwrap();
}
FeedbackState::WIFI => {
led.write(brightness(
[BLUE; init::hardware::NUM_LEDS].into_iter(),
LED_LEVEL,
))
.await
.unwrap();
}
FeedbackState::Idle => {
led.write(brightness(
[GREEN; init::hardware::NUM_LEDS].into_iter(),
LED_LEVEL,
))
.await
.unwrap();
}
};
debug!("Feedback state: {:?}", feedback_state);
}
}