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
+42
@@ -0,0 +1,42 @@
|
||||
|
||||
|
||||
/* Do not exceed this mark in the error messages above | */
|
||||
ASSERT(ORIGIN(ROTEXT) % 4 == 0, "
|
||||
ERROR(riscv-rt): the start of the ROTEXT must be 4-byte aligned");
|
||||
|
||||
ASSERT(ORIGIN(RODATA) % 4 == 0, "
|
||||
ERROR(riscv-rt): the start of the RODATA must be 4-byte aligned");
|
||||
|
||||
ASSERT(ORIGIN(REGION_DATA) % 4 == 0, "
|
||||
ERROR(riscv-rt): the start of the REGION_DATA must be 4-byte aligned");
|
||||
|
||||
ASSERT(ORIGIN(ROTEXT) % 4 == 0, "
|
||||
ERROR(riscv-rt): the start of the ROTEXT must be 4-byte aligned");
|
||||
|
||||
ASSERT(ORIGIN(REGION_STACK) % 4 == 0, "
|
||||
ERROR(riscv-rt): the start of the REGION_STACK must be 4-byte aligned");
|
||||
|
||||
ASSERT(_stext % 4 == 0, "
|
||||
ERROR(riscv-rt): `_stext` must be 4-byte aligned");
|
||||
|
||||
ASSERT(_data_start % 4 == 0 && _data_end % 4 == 0, "
|
||||
BUG(riscv-rt): .data is not 4-byte aligned");
|
||||
|
||||
ASSERT(_sidata % 4 == 0, "
|
||||
BUG(riscv-rt): the LMA of .data is not 4-byte aligned");
|
||||
|
||||
ASSERT(_bss_start % 4 == 0 && _bss_end % 4 == 0, "
|
||||
BUG(riscv-rt): .bss is not 4-byte aligned");
|
||||
|
||||
ASSERT(_stext + SIZEOF(.text) < ORIGIN(ROTEXT) + LENGTH(ROTEXT), "
|
||||
ERROR(riscv-rt): The .text section must be placed inside the ROTEXT region.
|
||||
Set _stext to an address smaller than 'ORIGIN(ROTEXT) + LENGTH(ROTEXT)'");
|
||||
|
||||
ASSERT(SIZEOF(.got) == 0, "
|
||||
.got section detected in the input files. Dynamic relocations are not
|
||||
supported. If you are linking to C code compiled using the `gcc` crate
|
||||
then modify your build script to compile the C code _without_ the
|
||||
-fPIC flag. See the documentation of the `gcc::Config.fpic` method for
|
||||
details.");
|
||||
|
||||
/* Do not exceed this mark in the error messages above | */
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
|
||||
|
||||
SECTIONS {
|
||||
.eh_frame (INFO) : { KEEP(*(.eh_frame)) }
|
||||
.eh_frame_hdr (INFO) : { *(.eh_frame_hdr) }
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
PROVIDE(DefaultHandler = EspDefaultHandler);
|
||||
|
||||
PROVIDE(interrupt1 = DefaultHandler);
|
||||
PROVIDE(interrupt2 = DefaultHandler);
|
||||
PROVIDE(interrupt3 = DefaultHandler);
|
||||
PROVIDE(interrupt4 = DefaultHandler);
|
||||
PROVIDE(interrupt5 = DefaultHandler);
|
||||
PROVIDE(interrupt6 = DefaultHandler);
|
||||
PROVIDE(interrupt7 = DefaultHandler);
|
||||
PROVIDE(interrupt8 = DefaultHandler);
|
||||
PROVIDE(interrupt9 = DefaultHandler);
|
||||
PROVIDE(interrupt10 = DefaultHandler);
|
||||
PROVIDE(interrupt11 = DefaultHandler);
|
||||
PROVIDE(interrupt12 = DefaultHandler);
|
||||
PROVIDE(interrupt13 = DefaultHandler);
|
||||
PROVIDE(interrupt14 = DefaultHandler);
|
||||
PROVIDE(interrupt15 = DefaultHandler);
|
||||
PROVIDE(interrupt16 = DefaultHandler);
|
||||
PROVIDE(interrupt17 = DefaultHandler);
|
||||
PROVIDE(interrupt18 = DefaultHandler);
|
||||
PROVIDE(interrupt19 = DefaultHandler);
|
||||
PROVIDE(interrupt20 = DefaultHandler);
|
||||
PROVIDE(interrupt21 = DefaultHandler);
|
||||
PROVIDE(interrupt22 = DefaultHandler);
|
||||
PROVIDE(interrupt23 = DefaultHandler);
|
||||
PROVIDE(interrupt24 = DefaultHandler);
|
||||
PROVIDE(interrupt25 = DefaultHandler);
|
||||
PROVIDE(interrupt26 = DefaultHandler);
|
||||
PROVIDE(interrupt27 = DefaultHandler);
|
||||
PROVIDE(interrupt28 = DefaultHandler);
|
||||
PROVIDE(interrupt29 = DefaultHandler);
|
||||
PROVIDE(interrupt30 = DefaultHandler);
|
||||
PROVIDE(interrupt31 = DefaultHandler);
|
||||
|
||||
INCLUDE "device.x"
|
||||
Reference in new issue
Block a user