v1.1.0: standalone repeater mode, prebuilt binary, protocol hot-switching

Repeater mode: device auto-relays MeshCore packets when no app is
connected. Enabled by default, toggle with AT+REPEATER=0/1. Includes
deduplication ring and random jitter to prevent loops.

Prebuilt binary: added CI workflow that builds a merged .bin on tag
push so users can flash without installing the Xtensa toolchain.

Protocol hot-switching: auto-resets to detection mode on serial
inactivity (30s) or BLE disconnect. AT+SWITCH for manual reset.

Also: gated test beacons when app connected, updated README with
flash instructions and AT command reference.
This commit is contained in:
STCisGOOD
2026-02-06 16:44:28 -05:00
parent f12e94092f
commit 218d49513d
40 changed files with 23625 additions and 18570 deletions
+84
View File
@@ -0,0 +1,84 @@
name: Build & Release
on:
push:
tags:
- 'v*'
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y git wget flex bison gperf python3 python3-pip \
python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util \
libusb-1.0-0 pkg-config
- name: Install espup
run: |
cargo install espup
espup install
. $HOME/export-esp.sh
echo "$HOME/.rustup/toolchains/esp/bin" >> $GITHUB_PATH
- name: Set ESP-IDF environment
run: |
. $HOME/export-esp.sh
echo "LIBCLANG_PATH=$HOME/.rustup/toolchains/esp/xtensa-esp32-elf-clang/esp-clang/bin" >> $GITHUB_ENV
echo "ESP_IDF_VERSION=v5.2.1" >> $GITHUB_ENV
echo "ESP_IDF_SDKCONFIG_DEFAULTS=sdkconfig.defaults" >> $GITHUB_ENV
echo "ESP_IDF_CMAKE_GENERATOR=Ninja" >> $GITHUB_ENV
- name: Install espflash
run: cargo install espflash
- name: Build release
run: |
. $HOME/export-esp.sh
cargo build --target xtensa-esp32s3-espidf --release
- name: Create merged firmware binary
run: |
espflash save-image --chip esp32s3 --merge \
target/xtensa-esp32s3-espidf/release/lunarcore \
lunarcore-esp32s3.bin
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: lunarcore-esp32s3
path: lunarcore-esp32s3.bin
- name: Create GitHub Release
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v2
with:
files: lunarcore-esp32s3.bin
generate_release_notes: true
body: |
## Flash Instructions
**Prerequisites:** Install esptool (`pip install esptool`)
**Flash the firmware:**
```bash
esptool.py --chip esp32s3 -p PORT write_flash 0x0 lunarcore-esp32s3.bin
```
Replace `PORT` with your serial port:
- **Linux:** `/dev/ttyACM0` or `/dev/ttyUSB0`
- **macOS:** `/dev/cu.usbmodem*`
- **Windows:** `COM3` (check Device Manager)
**Supported hardware:** Heltec WiFi LoRa 32 V3, LilyGo T3-S3, or any ESP32-S3 + SX1262 board.
The binary includes bootloader + partition table + application merged at offset 0x0.