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
+36
@@ -0,0 +1,36 @@
|
||||
use embedded_graphics::{
|
||||
image::ImageRaw,
|
||||
mock_display::MockDisplay,
|
||||
mono_font::{mapping::StrGlyphMapping, DecorationDimensions, MonoFont, MonoTextStyle},
|
||||
pixelcolor::BinaryColor,
|
||||
prelude::*,
|
||||
text::{Baseline, Text},
|
||||
};
|
||||
|
||||
const DATA: &[u8] = &[0xAA, 0x55];
|
||||
|
||||
#[test]
|
||||
fn custom_font() {
|
||||
let mapping = StrGlyphMapping::new("01", 0);
|
||||
|
||||
let font = MonoFont {
|
||||
image: ImageRaw::new(DATA, 8),
|
||||
character_size: Size::new(2, 2),
|
||||
character_spacing: 0,
|
||||
baseline: 0,
|
||||
strikethrough: DecorationDimensions::default_strikethrough(2),
|
||||
underline: DecorationDimensions::default_underline(2),
|
||||
glyph_mapping: &mapping,
|
||||
};
|
||||
|
||||
let character_style = MonoTextStyle::new(&font, BinaryColor::On);
|
||||
|
||||
let mut display = MockDisplay::new();
|
||||
Text::with_baseline("01", Point::zero(), character_style, Baseline::Top)
|
||||
.draw(&mut display)
|
||||
.unwrap();
|
||||
display.assert_pattern(&[
|
||||
"# # ", //
|
||||
" # #", //
|
||||
]);
|
||||
}
|
||||
Reference in new issue
Block a user