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
+81
@@ -0,0 +1,81 @@
|
||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
|
||||
// default pin_project! is completely safe.
|
||||
|
||||
::pin_project_lite::pin_project! {
|
||||
/// Testing default struct.
|
||||
#[derive(Debug)]
|
||||
#[allow(clippy::exhaustive_structs)] // for the type itself
|
||||
pub struct DefaultStruct<T, U> {
|
||||
#[pin]
|
||||
pub pinned: T,
|
||||
pub unpinned: U,
|
||||
}
|
||||
}
|
||||
|
||||
::pin_project_lite::pin_project! {
|
||||
/// Testing named struct.
|
||||
#[allow(clippy::exhaustive_structs)] // for the type itself
|
||||
#[project = DefaultStructProj]
|
||||
#[project_ref = DefaultStructProjRef]
|
||||
#[derive(Debug)]
|
||||
pub struct DefaultStructNamed<T, U> {
|
||||
#[pin]
|
||||
pub pinned: T,
|
||||
pub unpinned: U,
|
||||
}
|
||||
}
|
||||
|
||||
::pin_project_lite::pin_project! {
|
||||
/// Testing enum.
|
||||
#[allow(clippy::exhaustive_enums)] // for the type itself
|
||||
#[project = DefaultEnumProj]
|
||||
#[project_ref = DefaultEnumProjRef]
|
||||
#[derive(Debug)]
|
||||
pub enum DefaultEnum<T, U> {
|
||||
/// Struct variant.
|
||||
Struct {
|
||||
#[pin]
|
||||
pinned: T,
|
||||
unpinned: U,
|
||||
},
|
||||
/// Unit variant.
|
||||
Unit,
|
||||
}
|
||||
}
|
||||
|
||||
::pin_project_lite::pin_project! {
|
||||
/// Testing pinned drop struct.
|
||||
#[allow(clippy::exhaustive_structs)] // for the type itself
|
||||
#[derive(Debug)]
|
||||
pub struct PinnedDropStruct<T, U> {
|
||||
#[pin]
|
||||
pub pinned: T,
|
||||
pub unpinned: U,
|
||||
}
|
||||
impl<T, U> PinnedDrop for PinnedDropStruct<T, U> {
|
||||
fn drop(_this: Pin<&mut Self>) {}
|
||||
}
|
||||
}
|
||||
|
||||
::pin_project_lite::pin_project! {
|
||||
/// Testing pinned drop enum.
|
||||
#[allow(clippy::absolute_paths, clippy::exhaustive_enums)] // for the type itself
|
||||
#[project = PinnedDropEnumProj]
|
||||
#[project_ref = PinnedDropEnumProjRef]
|
||||
#[derive(Debug)]
|
||||
pub enum PinnedDropEnum<T: ::pin_project_lite::__private::Unpin, U> {
|
||||
/// Struct variant.
|
||||
Struct {
|
||||
#[pin]
|
||||
pinned: T,
|
||||
unpinned: U,
|
||||
},
|
||||
/// Unit variant.
|
||||
Unit,
|
||||
}
|
||||
#[allow(clippy::absolute_paths)]
|
||||
impl<T: ::pin_project_lite::__private::Unpin, U> PinnedDrop for PinnedDropEnum<T, U> {
|
||||
fn drop(_this: Pin<&mut Self>) {}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user