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
Vendored
+36
@@ -0,0 +1,36 @@
|
||||
#![cfg_attr(docsrs, doc(cfg(feature = "sval")))]
|
||||
|
||||
use crate::{IndexMap, IndexSet};
|
||||
use sval::{Stream, Value};
|
||||
|
||||
impl<K: Value, V: Value, S> Value for IndexMap<K, V, S> {
|
||||
fn stream<'sval, ST: Stream<'sval> + ?Sized>(&'sval self, stream: &mut ST) -> sval::Result {
|
||||
stream.map_begin(Some(self.len()))?;
|
||||
|
||||
for (k, v) in self {
|
||||
stream.map_key_begin()?;
|
||||
stream.value(k)?;
|
||||
stream.map_key_end()?;
|
||||
|
||||
stream.map_value_begin()?;
|
||||
stream.value(v)?;
|
||||
stream.map_value_end()?;
|
||||
}
|
||||
|
||||
stream.map_end()
|
||||
}
|
||||
}
|
||||
|
||||
impl<K: Value, S> Value for IndexSet<K, S> {
|
||||
fn stream<'sval, ST: Stream<'sval> + ?Sized>(&'sval self, stream: &mut ST) -> sval::Result {
|
||||
stream.seq_begin(Some(self.len()))?;
|
||||
|
||||
for value in self {
|
||||
stream.seq_value_begin()?;
|
||||
stream.value(value)?;
|
||||
stream.seq_value_end()?;
|
||||
}
|
||||
|
||||
stream.seq_end()
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user