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":"865af4dbc1e3247e143709f36ab7d61a0ea0b78ea49e0d0ff086ab8a1993a0f8","Cargo.toml":"cd186a5ec1dd1e91e92c27513122ae4715cef1bc354c61805cc6271bc35a49e8","Cargo.toml.orig":"fba83ae1dc09cab2e5f8e9186d8fa570db158c068a2e0cb5b59caae2c66c41c8","README.md":"15d9bb9bf93de2419dcd3ae121b9162f8d887ea2a9c0cb87a7606487c9ee06c5","build.rs":"0196fb21a218de974f9cbe9021ea542ebec1ec595b06328c35250742ee8d04f1","device.x":"568e8dc4a5b6fe41e4ffe932309865ac0554a5deb750f22152416f33c650781b","src/approtect_ns.rs":"01a8007e751223ba078990acc98737fe48ee9b39a66fc5b8ae31ac64f5126890","src/approtect_ns/approtect.rs":"5e595516dd2868f8bed08afe7b25011d50cc6adc041b62555bba65cb950a8e3b","src/approtect_ns/approtect/disable.rs":"26c22ef0f6a7886b5d171eae34534b3a8d0b7310f59814f067fa99417d9a414c","src/approtect_ns/approtect/forceprotect.rs":"db32c5b0628c3dfac7abc0a5d75389a53b8e62e35fa153a1ef11c24963e7e831","src/approtect_ns/secureapprotect.rs":"e9457fc9e7ff9ceecdfa0038e43ba90edd959180516d82ec2f84543277508f36","src/approtect_ns/secureapprotect/disable.rs":"09c351e6275462059ee43e8d7849e1857f36dc9fe549376ecda073b044c80963","src/approtect_ns/secureapprotect/forceprotect.rs":"372924ad14f8b73a17b9bf34caca037d21b64858a4b0b58f4079961144af395d","src/cc_host_rgf_s.rs":"575165b5a2427b4cc1da0f6471846da0ee9b7e6b6244b743415b2fd549a23d03","src/cc_host_rgf_s/host_cryptokey_sel.rs":"6ade4fba171216144a42f0ba4ff2a357eb2e033b89bc9cc2c6fbd32ea906cda1","src/cc_host_rgf_s/host_iot_kdr0.rs":"142c8867bf6737789d7f79b8da4e9697236e28b5d5bfa245902dd130523adcb4","src/cc_host_rgf_s/host_iot_kdr1.rs":"872e0965be15b1b6c013d42a9183130a12d4acd9614896455f285bd851a26888","src/cc_host_rgf_s/host_iot_kdr2.rs":"dc410736f517667dc0a754ad84fc8c03e3835108b8a2ef7d244a45f7db61a645","src/cc_host_rgf_s/host_iot_kdr3.rs":"7ddb2bd1056751d4fa03d57c944ccc51df31a219bf3a233c6ba984f2e06aa418","src/cc_host_rgf_s/host_iot_kprtl_lock.rs":"cfef36de9cab0a39cd651433d858b675ae0bb8b41d6183b7c5c93712ad672182","src/cc_host_rgf_s/host_iot_lcs.rs":"0d0faeb24661e5eddb2e82209baba8b3fc9fab014d397cfe3cb9ab88249a6630","src/clock_ns.rs":"291c7fbbf75180d38ae7e3a5a2839c4eb830117e9e92382ba69f02a5ed508c8f","src/clock_ns/events_hfclkstarted.rs":"1416a98df250265e3543a6b881b300a18325c72ff7e388207d529ba56c7c61d1","src/clock_ns/events_lfclkstarted.rs":"46c574c9e21b07ad69d5495815856a230e258146098cd51964f89bd511cab26d","src/clock_ns/hfclkrun.rs":"ab621d0295a37c07a876d156102bac0c4790725864ec84c699422235157550b4","src/clock_ns/hfclkstat.rs":"2397eb94d33a256b231dd7654cb75d4315eec0d7d27a6ed46fa2c4c0397389eb","src/clock_ns/inten.rs":"491b2494245d4742875d158aaeedb8dad3f16b30aee158309875de7a34e8c169","src/clock_ns/intenclr.rs":"7b712f526b5df7fb487c4cf71e19454ed58a6769ad25353d44b3da8ddc2b75f0","src/clock_ns/intenset.rs":"21181f486c73430d6cd43984689073302645c59e312333455867983331de3fc3","src/clock_ns/intpend.rs":"d89a21a5d61257e816dfc7b15d394777445af6e133e59ee44f2040343127fbd7","src/clock_ns/lfclkrun.rs":"ba062438e43618deaa8e834875a15b1a535469393e9796f6d85281129af2c397","src/clock_ns/lfclksrc.rs":"20e4adba7b2c0592f6ab4d96113c9b0e28c55cead0c6cfc21b85d6c92a27ebe0","src/clock_ns/lfclksrccopy.rs":"5b12c9c3651b233c2a66f4897937eb32158487035ba57b2196dbc8b4f56c5bf5","src/clock_ns/lfclkstat.rs":"576a07a3c52eac3f639bda4c818c9b5b57e1d8149ac9d352776dbaee121a6f74","src/clock_ns/publish_hfclkstarted.rs":"603c259854bae0f15a80715e2fe1afeaeffa24f1908549a0070e301b438cf3be","src/clock_ns/publish_lfclkstarted.rs":"75944f607dd977f72c4935bceab7ec7b304bc15c5b14083f976f701b2d4e9d8a","src/clock_ns/subscribe_hfclkstart.rs":"e7d06230d97caf958caf9f9d258a27ab1c8ea055ff42f3e49de5a414f7186362","src/clock_ns/subscribe_hfclkstop.rs":"ad8ce9758db74cfe53b85af98ad80bde4d63e4f794470a6941f230f6844a0c85","src/clock_ns/subscribe_lfclkstart.rs":"0378d481fe7cf5b906d561c55ab9149af10196e4f4502a1e94b534a327086ecc","src/clock_ns/subscribe_lfclkstop.rs":"9120a82b5bacf60918f052239f2349eb9251932f953ca5ab9a43afa0f072c132","src/clock_ns/tasks_hfclkstart.rs":"f768769ee91340e78fe3e05f097b68edf1f25c961889aec8d2df9af255a2c656","src/clock_ns/tasks_hfclkstop.rs":"b17a5d6554455e71b7163c95e44cff08b40dffe5664fd83e88da803b33de7540","src/clock_ns/tasks_lfclkstart.rs":"2f4f1d8cb0fa52ff6e046f49bdbc80138d9f467d7fccaa9c9c3fd7860be12dfe","src/clock_ns/tasks_lfclkstop.rs":"064dae4221bcf1299a122336b1d389c5e0b13413de0924961e442c93e61fc67f","src/cryptocell_s.rs":"5f07d25a97c298ea0e561bf2630d64733da203c4930434e5dff368d185c10890","src/cryptocell_s/enable.rs":"b708c4c2a34191a8556ed4f97c39d50ea3f4b40dc905564898249ba6b82ba229","src/ctrl_ap_peri_s.rs":"b2c9c5dfeae35b6f709abbff127e1b8a82b3c082055ec805f09de8cec78181f4","src/ctrl_ap_peri_s/eraseprotect.rs":"eadd2b1425c569fb64f44eee9b05969734ea22bd857230371e526f3ea3213fa7","src/ctrl_ap_peri_s/eraseprotect/disable.rs":"40964d702030b7020cfa95ae6e898f95fa061a34101d5b945a54f61f5b4184d8","src/ctrl_ap_peri_s/eraseprotect/lock.rs":"a4da55ec61435fe5ac0b97e700f90c55cf3531882293cc7d651eabbd230e8cd1","src/ctrl_ap_peri_s/mailbox.rs":"78f3a97e42e949759Line truncated