This repository has been archived on 2026-08-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
donglora/Justfile
T
swaitsandClaude Opus 4.6 3102fc747a 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>
2026-03-29 20:42:54 -06:00

83 lines
2.9 KiB
Makefile

set shell := ["bash", "-c"]
# Board definitions: feature target chip
# Xtensa targets require the esp toolchain (espup); check-all gracefully skips
# boards whose toolchain isn't installed.
heltec_v3 := "heltec_v3 xtensa-esp32s3-none-elf esp32s3"
rak_4631 := "rak_4631 thumbv7em-none-eabihf nRF52840_xxAA"
firmware_dir := "firmware"
# All known boards
boards := "heltec_v3 rak_4631"
# Check all boards that can build with the available toolchain
check-all:
@for board in {{boards}}; do \
if just _can_build $board 2>/dev/null; then \
echo "── checking $board ──"; \
just check $board; \
else \
echo "── skipping $board (toolchain not available) ──"; \
fi; \
done
# Check a single board compiles
check board:
@just _cargo {{board}} check
# Run clippy on a single board
clippy board:
@read -r feat target chip <<< "$(just _info {{board}})"; \
tc=""; \
case "$target" in xtensa-*) tc="+esp" ;; esac; \
cargo $tc clippy --target $target --features $feat -- -D warnings
# Build release firmware and copy to firmware/ with a readable name
build board profile="release":
@just _cargo {{board}} "build --{{profile}}"
@just _copy_firmware {{board}} {{profile}}
# Build and flash a board via probe-rs
flash board:
@just build {{board}} release
@read -r feat target chip <<< "$(just _info {{board}})"; \
probe-rs run --chip $chip "{{firmware_dir}}/lora-dongle-{{board}}-release.elf"
# Show binary size for a release build
size board:
@just _cargo {{board}} "size --release"
# ── Private helpers ───────────────────────────────────────────────────
# Run a cargo command for a board, using +esp toolchain for Xtensa targets
[private]
_cargo board cmd:
@read -r feat target chip <<< "$(just _info {{board}})"; \
tc=""; \
case "$target" in xtensa-*) tc="+esp" ;; esac; \
cargo $tc {{cmd}} --target $target --features $feat
# Check if a board's toolchain is available
[private]
_can_build board:
@read -r feat target chip <<< "$(just _info {{board}})"; \
case "$target" in \
xtensa-*) rustup toolchain list | grep -q "^esp" ;; \
*) rustup target list --installed | grep -q "^$target$" || rustup target add "$target" >/dev/null 2>&1 ;; \
esac
[private]
_copy_firmware board profile:
@mkdir -p {{firmware_dir}}
@read -r feat target chip <<< "$(just _info {{board}})"; \
src="target/$target/{{profile}}/lora-dongle"; \
dst="{{firmware_dir}}/lora-dongle-{{board}}-{{profile}}"; \
if [ -f "$src" ]; then cp "$src" "$dst.elf"; echo "→ $dst.elf"; fi
[private]
_info name:
@if [ "{{name}}" == "heltec_v3" ]; then echo "{{heltec_v3}}"; \
elif [ "{{name}}" == "rak_4631" ]; then echo "{{rak_4631}}"; \
else echo "Unknown board: {{name}}" >&2; exit 1; fi