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
+39
@@ -0,0 +1,39 @@
|
||||
# Crunchy
|
||||
|
||||
The crunchy unroller - deterministically unroll constant loops. For number
|
||||
"crunching".
|
||||
|
||||
The Rust optimizer will unroll constant loops that don't use the loop variable,
|
||||
like this:
|
||||
|
||||
```rust
|
||||
for _ in 0..100 {
|
||||
println!("Hello!");
|
||||
}
|
||||
```
|
||||
|
||||
However, using the loop variable will cause it to never unroll the loop. This is
|
||||
unfortunate because it means that you can't constant-fold the loop variable, and
|
||||
if you end up stomping on the registers it will have to do a load for each
|
||||
iteration. This crate ensures that your code is unrolled and const-folded. It
|
||||
only works on literals, unfortunately, but there's a work-around:
|
||||
|
||||
```rust
|
||||
debug_assert_eq!(MY_CONSTANT, 100);
|
||||
unroll! {
|
||||
for i in 0..100 {
|
||||
println!("Iteration {}", i);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
This means that your tests will catch if you redefine the constant.
|
||||
|
||||
To default maximum number of loops to unroll is `128`, but that can be easily decreased or increased using the cargo features:
|
||||
|
||||
* `limit_64`
|
||||
* `limit_128`
|
||||
* `limit_256`
|
||||
* `limit_512`
|
||||
* `limit_1024`
|
||||
* `limit_2048`
|
||||
Reference in new issue
Block a user