feat: add display UI with splash screen, dashboard, and RSSI sparkline
Implement full SSD1306 OLED display support: - Splash screen on boot (1.5s) with project name, version, board - Dashboard showing radio state, config, counters, RSSI/SNR - RSSI history sparkline (64-sample ring buffer, 2px-wide bars) - DisplayOn/DisplayOff host commands routed via dedicated channel - Pure render functions against generic DrawTarget (no hardware coupling) - Display on/off control bypasses radio task entirely Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
17624 files changed
+4564928
-38
No files matched your search
+47
@@ -0,0 +1,47 @@
|
||||
use super::DeviceSel;
|
||||
|
||||
/// Implement this trait on your custom variant or use provided impls
|
||||
pub trait Sx126xVariant {
|
||||
/// whether to use high or low power PA
|
||||
fn get_device_sel(&self) -> DeviceSel;
|
||||
|
||||
/// use dio2 as rf switch output
|
||||
fn use_dio2_as_rfswitch(&self) -> bool {
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
/// Sx1261 uses only LowPowerPA
|
||||
pub struct Sx1261;
|
||||
impl Sx126xVariant for Sx1261 {
|
||||
fn get_device_sel(&self) -> super::DeviceSel {
|
||||
super::DeviceSel::LowPowerPA
|
||||
}
|
||||
}
|
||||
|
||||
/// Sx1262 uses only HighPowerPA
|
||||
pub struct Sx1262;
|
||||
|
||||
impl Sx126xVariant for Sx1262 {
|
||||
fn get_device_sel(&self) -> super::DeviceSel {
|
||||
super::DeviceSel::HighPowerPA
|
||||
}
|
||||
}
|
||||
|
||||
/// Stm32wl variant.
|
||||
pub struct Stm32wl {
|
||||
/// select which output to use. (Switching is not supported)
|
||||
pub use_high_power_pa: bool,
|
||||
}
|
||||
impl Sx126xVariant for Stm32wl {
|
||||
fn get_device_sel(&self) -> super::DeviceSel {
|
||||
if self.use_high_power_pa {
|
||||
DeviceSel::HighPowerPA
|
||||
} else {
|
||||
DeviceSel::LowPowerPA
|
||||
}
|
||||
}
|
||||
fn use_dio2_as_rfswitch(&self) -> bool {
|
||||
false
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user