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
+52
@@ -0,0 +1,52 @@
|
||||
#![cfg(feature = "html")]
|
||||
|
||||
use pulldown_cmark::{Options, Parser};
|
||||
|
||||
mod suite;
|
||||
|
||||
#[inline(never)]
|
||||
pub fn test_markdown_html(
|
||||
input: &str,
|
||||
output: &str,
|
||||
smart_punct: bool,
|
||||
metadata_blocks: bool,
|
||||
old_footnotes: bool,
|
||||
) {
|
||||
let mut s = String::new();
|
||||
|
||||
let mut opts = Options::empty();
|
||||
opts.insert(Options::ENABLE_MATH);
|
||||
opts.insert(Options::ENABLE_TABLES);
|
||||
opts.insert(Options::ENABLE_STRIKETHROUGH);
|
||||
opts.insert(Options::ENABLE_TASKLISTS);
|
||||
opts.insert(Options::ENABLE_GFM);
|
||||
if old_footnotes {
|
||||
opts.insert(Options::ENABLE_OLD_FOOTNOTES);
|
||||
} else {
|
||||
opts.insert(Options::ENABLE_FOOTNOTES);
|
||||
}
|
||||
if metadata_blocks {
|
||||
opts.insert(Options::ENABLE_YAML_STYLE_METADATA_BLOCKS);
|
||||
opts.insert(Options::ENABLE_PLUSES_DELIMITED_METADATA_BLOCKS);
|
||||
}
|
||||
if smart_punct {
|
||||
opts.insert(Options::ENABLE_SMART_PUNCTUATION);
|
||||
}
|
||||
opts.insert(Options::ENABLE_HEADING_ATTRIBUTES);
|
||||
|
||||
let p = Parser::new_ext(input, opts);
|
||||
pulldown_cmark::html::push_html(&mut s, p);
|
||||
|
||||
// normalizing the HTML using html5ever may hide actual errors
|
||||
// assert_eq!(html_standardize(output), html_standardize(&s));
|
||||
assert_eq!(html_standardize(output), html_standardize(&s));
|
||||
}
|
||||
|
||||
fn html_standardize(s: &str) -> String {
|
||||
s.replace("<br>", "<br />")
|
||||
.replace("<br/>", "<br />")
|
||||
.replace("<hr>", "<hr />")
|
||||
.replace("<hr/>", "<hr />")
|
||||
// permit extra or missing line breaks only between tags
|
||||
.replace(">\n<", "><")
|
||||
}
|
||||
Reference in new issue
Block a user