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
+69
@@ -0,0 +1,69 @@
|
||||
#[repr(C)]
|
||||
#[cfg_attr(feature = "impl-register-debug", derive(Debug))]
|
||||
#[doc = "Cluster HC%s, containing HCCHAR?, HCINT?, HCINTMSK?, HCTSIZ?, HCDMA?, HCDMAB?"]
|
||||
pub struct HC {
|
||||
char: CHAR,
|
||||
_reserved1: [u8; 0x04],
|
||||
int: INT,
|
||||
intmsk: INTMSK,
|
||||
tsiz: TSIZ,
|
||||
dma: DMA,
|
||||
_reserved5: [u8; 0x04],
|
||||
dmab: DMAB,
|
||||
}
|
||||
impl HC {
|
||||
#[doc = "0x00 - "]
|
||||
#[inline(always)]
|
||||
pub const fn char(&self) -> &CHAR {
|
||||
&self.char
|
||||
}
|
||||
#[doc = "0x08 - "]
|
||||
#[inline(always)]
|
||||
pub const fn int(&self) -> &INT {
|
||||
&self.int
|
||||
}
|
||||
#[doc = "0x0c - "]
|
||||
#[inline(always)]
|
||||
pub const fn intmsk(&self) -> &INTMSK {
|
||||
&self.intmsk
|
||||
}
|
||||
#[doc = "0x10 - "]
|
||||
#[inline(always)]
|
||||
pub const fn tsiz(&self) -> &TSIZ {
|
||||
&self.tsiz
|
||||
}
|
||||
#[doc = "0x14 - "]
|
||||
#[inline(always)]
|
||||
pub const fn dma(&self) -> &DMA {
|
||||
&self.dma
|
||||
}
|
||||
#[doc = "0x1c - "]
|
||||
#[inline(always)]
|
||||
pub const fn dmab(&self) -> &DMAB {
|
||||
&self.dmab
|
||||
}
|
||||
}
|
||||
#[doc = "CHAR (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`char::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`char::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@char`] module"]
|
||||
pub type CHAR = crate::Reg<char::CHAR_SPEC>;
|
||||
#[doc = ""]
|
||||
pub mod char;
|
||||
#[doc = "INT (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`int::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`int::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@int`] module"]
|
||||
pub type INT = crate::Reg<int::INT_SPEC>;
|
||||
#[doc = ""]
|
||||
pub mod int;
|
||||
#[doc = "INTMSK (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`intmsk::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`intmsk::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@intmsk`] module"]
|
||||
pub type INTMSK = crate::Reg<intmsk::INTMSK_SPEC>;
|
||||
#[doc = ""]
|
||||
pub mod intmsk;
|
||||
#[doc = "TSIZ (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`tsiz::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`tsiz::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@tsiz`] module"]
|
||||
pub type TSIZ = crate::Reg<tsiz::TSIZ_SPEC>;
|
||||
#[doc = ""]
|
||||
pub mod tsiz;
|
||||
#[doc = "DMA (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`dma::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`dma::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@dma`] module"]
|
||||
pub type DMA = crate::Reg<dma::DMA_SPEC>;
|
||||
#[doc = ""]
|
||||
pub mod dma;
|
||||
#[doc = "DMAB (r) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`dmab::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@dmab`] module"]
|
||||
pub type DMAB = crate::Reg<dmab::DMAB_SPEC>;
|
||||
#[doc = ""]
|
||||
pub mod dmab;
|
||||
Reference in new issue
Block a user