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:
36
PROJECT.md
36
PROJECT.md
@@ -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:**
|
||||
|
||||
Reference in New Issue
Block a user