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>
60 lines
1.4 KiB
Rust
60 lines
1.4 KiB
Rust
#[macro_use]
|
|
mod macros;
|
|
|
|
#[test]
|
|
fn test_basic() {
|
|
let content = "#!/usr/bin/env rustx\nfn main() {}";
|
|
let file = syn::parse_file(content).unwrap();
|
|
snapshot!(file, @r###"
|
|
File {
|
|
shebang: Some("#!/usr/bin/env rustx"),
|
|
items: [
|
|
Item::Fn {
|
|
vis: Inherited,
|
|
sig: Signature {
|
|
ident: "main",
|
|
generics: Generics,
|
|
output: Default,
|
|
},
|
|
block: Block,
|
|
},
|
|
],
|
|
}
|
|
"###);
|
|
}
|
|
|
|
#[test]
|
|
fn test_comment() {
|
|
let content = "#!//am/i/a/comment\n[allow(dead_code)] fn main() {}";
|
|
let file = syn::parse_file(content).unwrap();
|
|
snapshot!(file, @r###"
|
|
File {
|
|
attrs: [
|
|
Attribute {
|
|
style: Inner,
|
|
path: Path {
|
|
segments: [
|
|
PathSegment {
|
|
ident: "allow",
|
|
arguments: None,
|
|
},
|
|
],
|
|
},
|
|
tokens: TokenStream(`(dead_code)`),
|
|
},
|
|
],
|
|
items: [
|
|
Item::Fn {
|
|
vis: Inherited,
|
|
sig: Signature {
|
|
ident: "main",
|
|
generics: Generics,
|
|
output: Default,
|
|
},
|
|
block: Block,
|
|
},
|
|
],
|
|
}
|
|
"###);
|
|
}
|