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
+61
@@ -0,0 +1,61 @@
|
||||
// The use of fields in debug print commands does not count as "used",
|
||||
// which causes the fields to trigger an unwanted dead code warning.
|
||||
#![allow(dead_code)]
|
||||
|
||||
use darling::{ast, util, FromDeriveInput, FromField};
|
||||
use syn::{Ident, Type};
|
||||
|
||||
#[derive(Debug, FromField)]
|
||||
#[darling(attributes(lorem))]
|
||||
pub struct LoremField {
|
||||
ident: Option<Ident>,
|
||||
ty: Type,
|
||||
#[darling(default)]
|
||||
skip: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, FromDeriveInput)]
|
||||
#[darling(attributes(lorem), supports(struct_named))]
|
||||
pub struct Lorem {
|
||||
ident: Ident,
|
||||
data: ast::Data<util::Ignored, LoremField>,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let good_input = r#"#[derive(Lorem)]
|
||||
pub struct Foo {
|
||||
#[lorem(skip)]
|
||||
bar: bool,
|
||||
|
||||
baz: i64,
|
||||
}"#;
|
||||
|
||||
let bad_input = r#"#[derive(Lorem)]
|
||||
pub struct BadFoo(String, u32);"#;
|
||||
|
||||
let parsed = syn::parse_str(good_input).unwrap();
|
||||
let receiver = Lorem::from_derive_input(&parsed).unwrap();
|
||||
let wrong_shape_parsed = syn::parse_str(bad_input).unwrap();
|
||||
let wrong_shape = Lorem::from_derive_input(&wrong_shape_parsed).expect_err("Shape was wrong");
|
||||
|
||||
println!(
|
||||
r#"
|
||||
INPUT:
|
||||
|
||||
{}
|
||||
|
||||
PARSED AS:
|
||||
|
||||
{:?}
|
||||
|
||||
BAD INPUT:
|
||||
|
||||
{}
|
||||
|
||||
PRODUCED ERROR:
|
||||
|
||||
{}
|
||||
"#,
|
||||
good_input, receiver, bad_input, wrong_shape
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user