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

+2 -16
View File
@@ -21,21 +21,7 @@ pub type RadioDriver = Sx126x<RadioSpiDevice, Iv, Sx1262>;
pub type UsbDriver = mcu::UsbNrfDriver;
pub type DisplayI2c = mcu::I2cBus;
// ── LED driver (green LED on P1.01) ─────────────────────────────────
pub struct SimpleLed(pub Output<'static>);
impl super::traits::RgbLed for SimpleLed {
async fn set_rgb(&mut self, r: u8, g: u8, b: u8) {
if r > 0 || g > 0 || b > 0 {
self.0.set_high();
} else {
self.0.set_low();
}
}
}
pub type LedDriver = SimpleLed;
pub type LedDriver = crate::driver::simple_led::SimpleLed<Output<'static>>;
pub type DisplayDriver = crate::driver::sh1106::Sh1106<DisplayI2c>;
@@ -148,7 +134,7 @@ impl LoRaBoard for Board {
// Green LED on P1.01
let led_pin = Output::new(p.P1_01, Level::Low, OutputDrive::Standard);
let led = Some(SimpleLed(led_pin));
let led = crate::driver::simple_led::SimpleLed(led_pin);
BoardParts {
radio,