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:
swaitsandClaude Opus 4.6 committed 2026-03-29 20:42:54 -06:00
1 parent 7064110293
commit 3102fc747a
17624 files changed
+4564928 -38

No files matched your search

+1
View File
@@ -0,0 +1 @@
{"files":{".cargo_vcs_info.json":"40d34056a11c0901a4fb11c57039f5ab91e7898618dd6494fb2b9733c97b2853","Cargo.toml":"4b94b05f4c041d5b60d1900af07b4795647f31f5fd6688cc320555b075b28216","Cargo.toml.orig":"ced28e267fc8dc71809f8718bdf82d5e67173baaa99ad7755637ac245b98965d","README.md":"bac342a6d4e21c9e4934a414542d855f0f4a2ca6077b7efca5c04fa8df6d8869","build.rs":"0196fb21a218de974f9cbe9021ea542ebec1ec595b06328c35250742ee8d04f1","device.x":"69fcb3ce31c467bf7c9076959d59e8726b789562a80659d7b598a9c9272def8c","src/cache_s.rs":"c9e9b18ef9b709c3326440f42d422bec9bb31e1229699b7e964723fd30970638","src/cache_s/debuglock.rs":"6385d1748e89afd7881adfdd3cd8021f75a820cef4c72779104694476c36ed9d","src/cache_s/enable.rs":"9cdef36d35630700e33eecb45584d1159fe44ff5bb11b502cc44a617b0004bce","src/cache_s/erase.rs":"05a6cfbc319ca358c4a5f4bb259b6b4283b52247db13b1aa9a4d78484164fd04","src/cache_s/erasestatus.rs":"b0cfcc6b1ce1f8c63cc28481a55f808b6ce1b1ef0af7fce30e9849b50652ebb6","src/cache_s/invalidate.rs":"debedd331947ee21732f7b3b41f50b53317d3fc29ed584df994d7bcbca4deb2c","src/cache_s/mode.rs":"b58a2636526d8f2735045beb046243b4f83eee672c3ae047bfda4a36cd8150f4","src/cache_s/profiling.rs":"d7d6531835474be227f54933b78e90f670549815387ec5701e28e18b28653570","src/cache_s/profiling/dhit.rs":"92ae4ab5af8b993cf6fe8882db7308e70d0ba7c68815b2a76a3ed7d58254c028","src/cache_s/profiling/dmiss.rs":"8143d45af9d37e190620e97aabe324ddedfcc026aea690a05d20fac79385f25d","src/cache_s/profiling/ihit.rs":"97dc80f1fb3febf3ac297aa9eed34b38b0aed58b27d1b45bef41d1bb4d2ffee2","src/cache_s/profiling/imiss.rs":"d1b125310478751457fb5ac4e0cd1df9429ad314a13b1b9cccae78df15d996ab","src/cache_s/profilingclear.rs":"7ad12422394e31ad6b51a9dad98e42d716a752d5a1ae4a45578ea9c07ecef5b9","src/cache_s/profilingenable.rs":"b2b55ecbf55cf45989bc81d4b9c8c736cc52bd57151c4de626e36314c00307b8","src/cache_s/writelock.rs":"b609774a541dc172925aba8e7dac9c8ea42eab28ba308d497942bc4c11591d8b","src/cachedata_s.rs":"e043a4f3133e80dbedbfc096161bdf8c9cb22e118aa74a5c4a9516c86bbb0c1e","src/cachedata_s/set.rs":"d763c8af8bd246ea0ef61828f907d84ce7984dedd7cc059a985a3381f6a3edc5","src/cachedata_s/set/way.rs":"03241222efb199f7ab9e7e04a904120bc6492a32f434c3a0a0a08c9124066482","src/cachedata_s/set/way/data0.rs":"3be915aa8d33ecbafdc5e920021483cec1cd6eff0b7aa426cfdcdee56662c0c0","src/cachedata_s/set/way/data1.rs":"3d6cc4494cc9f9db19dd33e1bdf0b27bb0a96418efb56ce1db9f4add794ec453","src/cachedata_s/set/way/data2.rs":"96c3cdc982736ab4ab3fb647af526abdd8f317f751673bb27f033d2f8132a5e6","src/cachedata_s/set/way/data3.rs":"beb9457552ccc83e535ccd66121cc76098e10bbd9e5b7bbc10d34d0c282fc3e6","src/cacheinfo_s.rs":"604d54f4ff69ba7a9d852e9cc70f3d81a6b089782059e714bfd8f557d6173246","src/cacheinfo_s/set.rs":"9a68dd04143649afcbd9418b1e507867d248c1958d69ed6c8a09510ae7acc248","src/cacheinfo_s/set/way.rs":"6d7e79b87dd8c2568add9500bc32c8c178a532c7e1ce4e2d0f1ca8fbb88f8c09","src/clock_ns.rs":"7b42e896c1ad3be09c11097c631db43d0c0f300ef08b708fb84a183d78561895","src/clock_ns/events_done.rs":"a0de97d8f2d2af9a2bebb5b0a7e6d8509924d49b52d0da0f7bf0b4dfe5e66953","src/clock_ns/events_hfclk192mstarted.rs":"7dcf91e0a392bbee22e693c53298362775e554e455d91cf091fe895cd44d6be6","src/clock_ns/events_hfclkaudiostarted.rs":"b4d603acbdc56f5f77866f02aee0e871943f3b15ca0bf4f910881cd7e8c05437","src/clock_ns/events_hfclkstarted.rs":"a83e0e69fac8139f233d598970e3a7a9e61c2d42092a38609b7caa70ece16b11","src/clock_ns/events_lfclkstarted.rs":"c6c72f3ebdaaf8029c358c24cb23a80a7ee92c7e9695712e996ad5e7d1ab5f42","src/clock_ns/hfclk192malwaysrun.rs":"07d7f9721aef6a3a7b88b601b530937ebae3da5bced2d201704cadc61ec81e88","src/clock_ns/hfclk192mctrl.rs":"53d04bcadfbf46375a8efbaae459f88bcb544ce6487f9fc02d45848f9ca5aa73","src/clock_ns/hfclk192mrun.rs":"36fdba7d1eb35927dd1553b664f1d335b82fbe75d9106f514e930b493f39fed7","src/clock_ns/hfclk192msrc.rs":"b4dc454e0522256ce27a83b11633e88860b5c27f670d79ce38f3fae463b07460","src/clock_ns/hfclk192mstat.rs":"2d6c8f528a11fc042eae090a2c9f70113ac54879fd8ef96dbfeb1f1bb139ab4c","src/clock_ns/hfclkalwaysrun.rs":"da164c68277b322b74618743adf5e10861e4088113a1111662734c4848b4de50","src/clock_ns/hfclkaudio.rs":"38ff18263ca248e53f8daafc5c322b2f40e561492e432978d8feb90039b0a79e","src/clock_ns/hfclkaudio/frequency.rs":"a5bfeee21d399ce0352a84342575050fe6b9e0289d62ea41bdce9abb2c0dfd27","src/clock_ns/hfclkaudioalwaysrun.rs":"c05c3ab2b2c24958b8b9a2891f4aed53a7de9c49a01812e7e250c828dd642020","src/clock_ns/hfclkaudiorun.rs":"b9366c4ff212340e410bcd2442a82a6dbb955b85e4b415437cdc40801b69a542","src/clock_ns/hfclkaudiostat.rs":"1f480d363bfefad86d7c975f55b5182ef019964659ce22bf1530d5f6ddd869ca","src/clock_ns/hfclkctrl.rs":"22fa52331798ad0de223a31ad0c9af094e70927ebc789a365c926fb2f3dff76d","src/clock_ns/hfclkrun.rs":"ab621d0295a37c07a876d156102bac0c4790725864ec84c699422235157550b4","src/clock_ns/hfclksrc.rs":"c2d4f998c5e9e1444f3c516afba28bdee1142d7d16d0f0900253782121fff5fa","src/clock_ns/hfclkstat.rs":"0e67a8c8b983973391619f583fb379e2fdd65959f7fae4ea8cf5112dcfa3da3f","src/clock_ns/inten.rsLine truncated