feat: add display UI with splash screen, dashboard, and RSSI sparkline
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>
This commit is contained in:
17624 files changed
+4564928
-38
No files matched your search
Vendored
+59
@@ -0,0 +1,59 @@
|
||||
//! Memory and object pools
|
||||
//!
|
||||
//! # Target support
|
||||
//!
|
||||
//! This module / API is only available on these compilation targets:
|
||||
//!
|
||||
//! - ARM architectures which instruction set include the LDREX, CLREX and STREX instructions, e.g.
|
||||
//! `thumbv7m-none-eabi` but not `thumbv6m-none-eabi`
|
||||
//! - 32-bit x86, e.g. `i686-unknown-linux-gnu`
|
||||
//!
|
||||
//! # Benchmarks
|
||||
//!
|
||||
//! - compilation settings
|
||||
//! - `codegen-units = 1`
|
||||
//! - `lto = 'fat'`
|
||||
//! - `opt-level = 'z'`
|
||||
//! - compilation target: `thumbv7em-none-eabihf`
|
||||
//! - CPU: ARM Cortex-M4F
|
||||
//!
|
||||
//! - test program:
|
||||
//!
|
||||
//! ``` no_run
|
||||
//! use heapless::box_pool;
|
||||
//!
|
||||
//! box_pool!(P: ()); // or `arc_pool!` or `object_pool!`
|
||||
//!
|
||||
//! bkpt();
|
||||
//! let res = P.alloc(());
|
||||
//! bkpt();
|
||||
//!
|
||||
//! if let Ok(boxed) = res {
|
||||
//! bkpt();
|
||||
//! drop(boxed);
|
||||
//! bkpt();
|
||||
//! }
|
||||
//! # fn bkpt() {}
|
||||
//! ```
|
||||
//!
|
||||
//! - measurement method: the cycle counter (CYCCNT) register was sampled each time a breakpoint
|
||||
//! (`bkpt`) was hit. the difference between the "after" and the "before" value of CYCCNT yields the
|
||||
//! execution time in clock cycles.
|
||||
//!
|
||||
//! | API | clock cycles |
|
||||
//! |------------------------------|--------------|
|
||||
//! | `BoxPool::alloc` | 23 |
|
||||
//! | `pool::boxed::Box::drop` | 23 |
|
||||
//! | `ArcPool::alloc` | 28 |
|
||||
//! | `pool::arc::Arc::drop` | 59 |
|
||||
//! | `ObjectPool::request` | 23 |
|
||||
//! | `pool::object::Object::drop` | 23 |
|
||||
//!
|
||||
//! Note that the execution time won't include `T`'s initialization nor `T`'s destructor which will
|
||||
//! be present in the general case for `Box` and `Arc`.
|
||||
|
||||
mod treiber;
|
||||
|
||||
pub mod arc;
|
||||
pub mod boxed;
|
||||
pub mod object;
|
||||
Reference in new issue
Block a user