refactor: unify SimpleLed via embedded-hal, remove Option<L> from BoardParts

- Added embedded-hal 1.0 as direct dep (already transitive via embedded-hal-async)
- SimpleLed<P: OutputPin> now generic over any HAL — single definition in driver/
- Removed duplicate SimpleLed from board/esp32s3.rs and board/wio_tracker_l1.rs
- Changed BoardParts.led from Option<L> to L — boards with no LED use ()
- Display task calls led.set_rgb() unconditionally (no-op for () boards)
- RAK board: led: () instead of led: None
This commit is contained in:
swaits committed 2026-04-07 12:40:55 -06:00
1 parent f9117d71c8
commit 41b5775268
12 files changed
+50 -59

No files matched your search

+3
View File
@@ -1,2 +1,5 @@
#[cfg(feature = "wio_tracker_l1")]
pub mod sh1106;
#[cfg(any(feature = "heltec_v3", feature = "heltec_v3_uart", feature = "heltec_v4", feature = "wio_tracker_l1"))]
pub mod simple_led;
+20
View File
@@ -0,0 +1,20 @@
//! Simple single-color LED driver (GPIO on/off).
//!
//! Generic over any `OutputPin`. Any non-zero RGB value turns the LED on;
//! all zeros turns it off.
use embedded_hal::digital::OutputPin;
use crate::board::RgbLed;
pub struct SimpleLed<P>(pub P);
impl<P: OutputPin> RgbLed for SimpleLed<P> {
async fn set_rgb(&mut self, r: u8, g: u8, b: u8) {
if r > 0 || g > 0 || b > 0 {
let _ = self.0.set_high();
} else {
let _ = self.0.set_low();
}
}
}