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
1007 B
Rust
37 lines
1007 B
Rust
#[maybe_async_cfg::maybe(sync(feature = "is_sync"), async(not(feature = "is_sync")))]
|
|
async fn some_function() -> bool {
|
|
true
|
|
}
|
|
|
|
#[maybe_async_cfg::maybe(
|
|
idents(some_function(fn)),
|
|
sync(feature = "is_sync", test),
|
|
async(not(feature = "is_sync"), async_std::test)
|
|
)]
|
|
async fn test_async_fn() {
|
|
let res = some_function().await;
|
|
assert_eq!(res, true);
|
|
}
|
|
|
|
#[maybe_async_cfg::maybe(
|
|
idents(some_function(fn)),
|
|
sync(feature = "is_sync", test),
|
|
async(not(feature = "is_sync"), tokio::test)
|
|
)]
|
|
async fn test_async_fn2() {
|
|
let res = some_function().await;
|
|
assert_eq!(res, true);
|
|
}
|
|
|
|
#[maybe_async_cfg::maybe(idents(some_function(fn)), sync(feature = "is_sync", test))]
|
|
async fn test_async_fn3() {
|
|
let res = some_function().await;
|
|
assert_eq!(res, true);
|
|
}
|
|
|
|
#[maybe_async_cfg::maybe(idents(some_function(fn)), sync(feature = "is_sync", test))]
|
|
async fn test_sync_fn() {
|
|
let res = some_function();
|
|
assert_eq!(res, true);
|
|
}
|