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":"323820408bfe43657add7a064076689594240013a3cfcb71e818675f56009109","Cargo.toml":"fa9272cc442cdcacd244e3c138d1404a811392d9a41a00aa76ee77100b1341e4","Cargo.toml.orig":"6264c3b3844382493656a2d000e2bb96c4c673d30dd3137cb402e9d46c9eb32f","README.md":"bac342a6d4e21c9e4934a414542d855f0f4a2ca6077b7efca5c04fa8df6d8869","build.rs":"0196fb21a218de974f9cbe9021ea542ebec1ec595b06328c35250742ee8d04f1","device.x":"076d4b95475c84045f2fe6717126d27f34accc784a7d061be9efb2429dcc104f","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":"786fe1ac489dead9bb9fd83c1c504afda9852bfe2ba3c518a6c34b030ea7c70a","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":"f69172880b0a7b19d6ad65a0e3bdd3ae40ef0548b709c1303212c87829c4571a","src/clock_ns/publish_lfclkstarted.rs":"34217ecf7646feb30e407b0ea706da7c5f92c457c1385917fa9a29c968ad1111","src/clock_ns/subscribe_hfclkstart.rs":"eee5870136f9d4aded5a00c69a0e6d2278ae5c45f291c3cdb71131813dae0084","src/clock_ns/subscribe_hfclkstop.rs":"e2a346f4c1cdaef171667cda97bb5b7a6b80f0b00383857a4d77fe19e672833b","src/clock_ns/subscribe_lfclkstart.rs":"b466dce9632b8e9954dc8c42bb0591820b0e874c5f5cf9a1bbec071336cd1d8b","src/clock_ns/subscribe_lfclkstop.rs":"0bb8b45122ac3024831a1726ec1e4553021d1b54690e2287c2ce3533b32b49ee","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":"2ddcc6292379830e7381a06966b6aab2ea4e491651094adc7587514226b7f526","src/ctrl_ap_peri_s/eraseprotect/disable.rs":"630aa2644f4960ecf4a556cba6c5024cfec6e68dee90cbc5709a4b9a044158e4","src/ctrl_ap_peri_s/eraseprotect/lock.rs":"f61c26b452b7bc893ae8844a1f4e1d408e62d751c5e4ad89c5e9e1c06eda4fcc","src/ctrl_ap_peri_s/mailbox.rs":"d397898a092711403d5d7281d85ac3b2fbf637c322da54189fb6f10b90baccbd","src/ctrl_ap_peri_s/mailbox/rxdata.rs":"34aa0e536d5a9d5716682be12f0f9299f467b19ae4c75aa90777d5d3ba9da7bd","src/ctrl_ap_peri_s/mailbox/rxstatus.rs":"3f932a80c27528944f8516428debb44c94d55d0c7829409138f4e106291d55e2","src/ctrl_ap_peri_s/mailbox/txdata.rs":"58ca98bb0abd8cc96be9175d5b75c8c106932f910cb74ad759c3bd16b8eb3865","src/ctrl_ap_peri_s/mailbox/txstatus.rs":"0c3cf1b0d88f36bd6ef402a71bd2f443c9c2a2132ccd01665a83e6345e84775e","src/dppic_ns.rs":"307c09b4406053e3b6a9bea9a7d03ea7190794e0018f2949e626e5f00d073ead","src/dppic_ns/chen.rs":"210d216a7b5557997e473c9a086455dd46adc0b4945a9dd7de677788228dd4dd","src/dppic_ns/chenclr.rs":"6b3e3d63e78964ceddc5d52044c16f6bde32c3e79b80e2f6860929b0487d5172Line truncated