Scaffold PlatformIO project with 20 board configs and C99/C++ source skeleton

Three-tier configuration hierarchy:
- [env:base] — RadioLib + default LoRa parameters
- [soc_esp32/esp32s3/nrf52] — platform + framework per SoC
- [env:board_name] — board-specific pins + chip selection

20 boards across 4 vendors:
- Heltec: 11 boards (T114, CT62, E213, E290, Mesh Solar, T190, Tracker,
  Tracker V2, V2, V3, V4)
- LilyGo: 4 boards (T-Beam 1W, sx1262, sx1276, supreme)
- Seeed: 1 board (Xiao S3 + Wio SX1262 with verified pins)
- RAK: 4 boards (RAK11310, RAK3112, RAK3401, RAK3x72, RAK4631)

Known/verified pins: Heltec V2/V3/V4, RAK4631, Seeed Xiao S3
FIXME pins: all others (placeholders for future research)

Source skeleton:
- config.h — compile-time defaults + pin validation (#error checks)
- kiss.h/c — KISS protocol implementation (C99)
- radio.h/cpp — RadioLib wrapper with C API (extern "C" boundary)
- main.cpp — Arduino entry point

All files pass pre-commit (prettier, markdownlint, YAML check).
This commit is contained in:
Maze X
2026-03-27 17:15:30 +01:00
parent 777014f375
commit 8883ee3e94
33 changed files with 824 additions and 15 deletions

View File

@@ -146,22 +146,26 @@ Not all bandwidths are legal for all frequency bands — consult local regulatio
## Project Structure
Three-tier configuration hierarchy: base + SoC + board. Pin definitions are compile-time
macros in board configs (no separate pins.h).
```text
loramodem/
├── platformio.ini # Board environments and build configuration
├── PROJECT.md # This file
├── src/
│ ├── main.cpp # Entry point; Arduino setup() and loop()
── kiss.h / kiss.cpp # KISS frame encoder/decoder
│ ├── radio.h / radio.cpp # RadioLib wrapper (init, TX, RX, config)
── config.h # Default radio parameters and pin definitions
├── include/ # Shared headers (if needed)
├── lib/ # Local libraries (if needed)
├── variants/ # Board-specific hardware definitions
│ ├── heltec_wifi_lora_32_v3/pins.h
├── rak4631/pins.h
── [other boards]/pins.h
└── test/ # PlatformIO Unity test suite
├── platformio.ini # [platformio] + [env:base]
├── soc/ # SoC shared configs
│ ├── esp32/platformio.ini
│ ├── esp32s3/platformio.ini
── nrf52/platformio.ini
├── hardware/ # 20 board configs
── heltec/ (11 boards)
│ ├── lilygo/ (4 boards)
│ ├── seeed/ (1 board)
│ └── rak/ (4 boards)
└── src/
├── main.cpp # Arduino setup()/loop() — calls C APIs
── kiss.h / kiss.c # KISS protocol — C99
├── radio.h / radio.cpp # RadioLib wrapper — C++ (extern "C" API)
└── config.h # Compile-time defaults + pin validation
```
## Building
@@ -171,7 +175,9 @@ Prerequisites: [PlatformIO](https://platformio.org/) CLI or IDE extension.
**Build for a specific board:**
```sh
pio run -e heltec_wifi_lora_32_v3
pio run -e heltec_v3
pio run -e rak_rak4631
pio run -e lilygo_t_beam_1w
```
**Upload to a connected board:**