diff --git a/README.md b/README.md index f6124e8..8d8a91c 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,7 @@ For exact `west build -b` board strings, flash methods, and special setup, see t - **Companion** (default) -- connects to MeshCore mobile apps via BLE. Contacts, channels, offline message queue. - **Repeater** -- forwards packets, configured via USB serial CLI. See the [Repeater CLI Command Reference](zephcore/Repeater_CLI_commands.md) for all available commands. +- **Room Server** -- store-and-forward shared message room (a "BBS"). Clients log in with an admin or guest password and post messages; the server pushes each new post to every other logged-in client. No BLE; configured via the same USB serial CLI as the repeater. - **Observer** (ESP32 only) -- listen-only node that publishes received LoRa packets to MQTT over WiFi STA. Configured at runtime via serial CLI. ## Building @@ -97,6 +98,10 @@ west build -b rak4631 zephcore --pristine -- \ west build -b xiao_esp32s3/esp32s3/procpu zephcore --pristine --sysbuild -- \ -DEXTRA_CONF_FILE="boards/common/repeater.conf;boards/common/wifi_ota.conf" +# Room Server (store-and-forward BBS, USB CLI) +west build -b rak4631 zephcore --pristine -- \ + -DEXTRA_CONF_FILE="boards/common/room_server.conf" + # Observer (ESP32, listen-only WiFi+MQTT) west build -b xiao_esp32c3 zephcore --pristine -- \ -DEXTRA_CONF_FILE="boards/common/observer.conf" diff --git a/zephcore/ARCHITECTURE.md b/zephcore/ARCHITECTURE.md index 1ea2fc6..4313a9a 100644 --- a/zephcore/ARCHITECTURE.md +++ b/zephcore/ARCHITECTURE.md @@ -25,10 +25,12 @@ ## 1. Project Overview -ZephCore is a LoRa mesh networking firmware running on Zephyr RTOS. It supports two device roles: +ZephCore is a LoRa mesh networking firmware running on Zephyr RTOS. It supports four device roles: - **Companion**: BLE-connected device paired with a phone app. Full contact/channel/message management. - **Repeater**: Autonomous headless relay node. CLI administration via authenticated mesh connections or serial UART. +- **Room Server**: Headless store-and-forward shared message room (BBS). Reuses the repeater's ACL/region/CLI; pushes new posts to logged-in clients (per-client sync cursor + ACK). +- **Observer** (ESP32): Listen-only node that publishes received LoRa packets to MQTT over WiFi. Supported hardware: nRF52840, nRF54L15, ESP32-C3/C6/S3, EFR32MG24 — all with SX1262 or LR1110 LoRa radios. diff --git a/zephcore/Repeater_CLI_commands.md b/zephcore/Repeater_CLI_commands.md index 21c3328..e5bc7e7 100644 --- a/zephcore/Repeater_CLI_commands.md +++ b/zephcore/Repeater_CLI_commands.md @@ -2,6 +2,8 @@ All commands are sent over USB serial (CDC-ACM). Commands sent remotely over the mesh (non-zero `sender_timestamp`) cannot access USB-only commands. +> The **Room Server** role shares this CLI — the common commands (radio, region, password, advert, gps, etc.) plus `setperm` / `get acl` all apply. + **Sources:** - `helpers/CommonCLI.cpp` — common commands shared by all roles - `app/RepeaterMesh.cpp` — repeater-specific commands diff --git a/zephcore/boards/example_board/README.md b/zephcore/boards/example_board/README.md index 46782f8..f4ddb1f 100644 --- a/zephcore/boards/example_board/README.md +++ b/zephcore/boards/example_board/README.md @@ -113,6 +113,14 @@ Append `-- -DEXTRA_CONF_FILE="boards/common/repeater.conf"` to any build command west build -b rak4631 zephcore -- -DEXTRA_CONF_FILE="boards/common/repeater.conf" ``` +### Building for Room Server Role + +Append `-- -DEXTRA_CONF_FILE="boards/common/room_server.conf"` to any build command: + +``` +west build -b rak4631 zephcore -- -DEXTRA_CONF_FILE="boards/common/room_server.conf" +``` + ### Production Build (logging disabled) ```