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>
45 lines
756 B
Rust
45 lines
756 B
Rust
use darling::{FromDeriveInput, FromMeta};
|
|
use syn::parse_quote;
|
|
|
|
#[derive(Debug, FromMeta, PartialEq, Eq)]
|
|
enum Dolor {
|
|
Sit,
|
|
#[darling(word)]
|
|
Amet,
|
|
}
|
|
|
|
impl Default for Dolor {
|
|
fn default() -> Self {
|
|
Dolor::Sit
|
|
}
|
|
}
|
|
|
|
#[derive(FromDeriveInput)]
|
|
#[darling(attributes(hello))]
|
|
struct Receiver {
|
|
#[darling(default)]
|
|
example: Dolor,
|
|
}
|
|
|
|
#[test]
|
|
fn missing_meta() {
|
|
let di = Receiver::from_derive_input(&parse_quote! {
|
|
#[hello]
|
|
struct Example;
|
|
})
|
|
.unwrap();
|
|
|
|
assert_eq!(Dolor::Sit, di.example);
|
|
}
|
|
|
|
#[test]
|
|
fn empty_meta() {
|
|
let di = Receiver::from_derive_input(&parse_quote! {
|
|
#[hello(example)]
|
|
struct Example;
|
|
})
|
|
.unwrap();
|
|
|
|
assert_eq!(Dolor::Amet, di.example);
|
|
}
|