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>
37 lines
1.0 KiB
Rust
37 lines
1.0 KiB
Rust
extern crate once_cell;
|
|
|
|
use once_cell::sync::{Lazy, OnceCell};
|
|
use std::collections::HashMap;
|
|
|
|
static HASHMAP: Lazy<HashMap<u32, &'static str>> = Lazy::new(|| {
|
|
let mut m = HashMap::new();
|
|
m.insert(0, "foo");
|
|
m.insert(1, "bar");
|
|
m.insert(2, "baz");
|
|
m
|
|
});
|
|
|
|
// Same, but completely without macros
|
|
fn hashmap() -> &'static HashMap<u32, &'static str> {
|
|
static INSTANCE: OnceCell<HashMap<u32, &'static str>> = OnceCell::new();
|
|
INSTANCE.get_or_init(|| {
|
|
let mut m = HashMap::new();
|
|
m.insert(0, "foo");
|
|
m.insert(1, "bar");
|
|
m.insert(2, "baz");
|
|
m
|
|
})
|
|
}
|
|
|
|
fn main() {
|
|
// First access to `HASHMAP` initializes it
|
|
println!("The entry for `0` is \"{}\".", HASHMAP.get(&0).unwrap());
|
|
|
|
// Any further access to `HASHMAP` just returns the computed value
|
|
println!("The entry for `1` is \"{}\".", HASHMAP.get(&1).unwrap());
|
|
|
|
// The same works for function-style:
|
|
assert_eq!(hashmap().get(&0), Some(&"foo"));
|
|
assert_eq!(hashmap().get(&1), Some(&"bar"));
|
|
}
|