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>
38 lines
1.1 KiB
Rust
38 lines
1.1 KiB
Rust
#[maybe_async_cfg::maybe(sync(feature = "is_sync"), async(not(feature = "is_sync")))]
|
|
async fn async_fn() -> bool {
|
|
true
|
|
}
|
|
|
|
#[maybe_async_cfg::maybe(
|
|
idents(async_fn),
|
|
sync(feature = "is_sync", test),
|
|
async(all(not(feature="is_sync"), feature = "async_std"), async_std::test),
|
|
async(all(not(feature="is_sync"), feature = "tokio"), tokio::test)
|
|
)]
|
|
async fn test_async_fn() {
|
|
let res = async_fn().await;
|
|
assert_eq!(res, true);
|
|
}
|
|
|
|
#[maybe_async_cfg::maybe(sync(feature = "is_sync", test), async(not(feature = "is_sync"), async_std::test))]
|
|
async fn test_async_fn2() {
|
|
let res = async_fn().await;
|
|
assert_eq!(res, true);
|
|
}
|
|
|
|
#[maybe_async_cfg::maybe(sync(feature = "is_sync", test), async(not(feature = "is_sync"), async_std::test))]
|
|
async fn test_async_fn3() {
|
|
let res = async_fn().await;
|
|
assert_eq!(res, true);
|
|
}
|
|
|
|
#[maybe_async_cfg::maybe(sync(feature = "is_sync", test), async(not(feature = "is_sync"), async_std::test))]
|
|
async fn test_async_fn4() {
|
|
let res = async_fn().await;
|
|
assert_eq!(res, true);
|
|
}
|
|
|
|
fn main() {
|
|
|
|
}
|