How shadowroot2/zephcore works
ZephCore is Zephyr-based firmware for MeshCore-compatible LoRa mesh nodes. A companion node exchanges MeshCore protocol traffic with an app over BLE, USB, or (on supported ESP32 boards) WiFi; the firmware also provides distinct repeater, room-server, observer, KISS-modem, and repeater-bridge roles. The sampled sources show companion composition, GPS event processing, sensor telemetry, and adaptive CAD; the README documents additional role and feature branches. Many role implementations and transport links are unsampled, so those relationships are omitted or marked unverified.
Main entry points: main_companion.cpp Companion runtime · LoRaRadio.cpp LoRa radio · Mesh.cpp Mesh engine · CompanionMesh.cpp Companion mesh
Components 26
Mesh runtime
- Companion runtime
zephcore/src/main_companion.cpp - Companion mesh
zephcore/app/CompanionMesh.cpp - Mesh engine
zephcore/src/Mesh.cpp - Packet dispatch
zephcore/src/Dispatcher.cpp - Mesh identity
zephcore/src/Identity.cpp - Companion protocol
zephcore/app/CompanionProtocol.h - Cryptography
zephcore/lib/monocypher/monocypher.c
Device roles
- Repeater role
zephcore/app/RepeaterMesh.cpp - Room server
zephcore/app/RoomServerMesh.cpp - Observer role
zephcore/app/ObserverMesh.cpp - KISS modem
zephcore/app/KissModem.cpp - Repeater bridge
zephcore/app/RepeaterBridge.cpp
Radio and transports
- LoRa radio
zephcore/adapters/radio/LoRaRadio.cpp - Adaptive CAD
zephcore/adapters/radio/CadController.cpp - LR20xx driver
zephcore/patches/zephyr-new/drivers/lora/lr20xx - BLE adapter
zephcore/adapters/ble/ZephyrBLE.cpp - USB companion
zephcore/adapters/usb/ZephyrCompanionUSB.cpp - WiFi station
zephcore/adapters/wifi/ZephyrWiFiStation.c - MQTT uplink
zephcore/adapters/mqtt/ZephyrMQTTPublisher.c
Device services
- GPS manager
zephcore/adapters/gps/ZephyrGPSManager.cpp - Sensor telemetry
zephcore/adapters/sensors/ZephyrSensorManager.cpp - Persistent data
zephcore/adapters/datastore/ZephyrDataStore.cpp
User features
- Display UI
zephcore/helpers/ui/display.h - UI task
zephcore/helpers/ui/ui_task.h - WiFi OTA
zephcore/adapters/ota/wifi_ota.c
Other components
- MeshCore app
Connections 25
- MeshCore app → Companion runtime: connects to
README.md - Companion runtime → Companion mesh: runs
zephcore/src/main_companion.cpp - Companion runtime → BLE adapter: enables transport
zephcore/src/main_companion.cpp - Companion runtime → USB companion: enables transport
zephcore/src/main_companion.cpp - Companion mesh → Companion protocol: implements protocol
zephcore/app/CompanionMesh.cpp - Companion runtime → LoRa radio: instantiates
zephcore/src/main_companion.cpp - Companion runtime → Mesh engine: uses mesh runtime
- Mesh engine → Packet dispatch: dispatches packets
- Mesh engine → Mesh identity: uses identity
- LoRa radio → Adaptive CAD: feeds probe results
- LoRa radio → LR20xx driver: uses radio driver
- Companion runtime → GPS manager: processes GPS events
- Sensor telemetry → GPS manager: reads position
zephcore/adapters/sensors/ZephyrSensorManager.cpp - Sensor telemetry → Companion mesh: provides telemetry
- Companion runtime → Display UI: composes UI
zephcore/src/main_companion.cpp - Companion runtime → UI task: starts UI
zephcore/src/main_companion.cpp - Repeater role → LoRa radio: uses mesh radio
- Room server → Companion protocol: serves app users
README.md - Observer role → MQTT uplink: publishes received traffic
README.md - KISS modem → LoRa radio: provides raw modem
README.md - Repeater bridge → LoRa radio: bridges radio nodes
README.md - Companion runtime → WiFi station: optional transport
README.md - Companion runtime → Persistent data: persists settings
- Companion runtime → WiFi OTA: offers update service
- Mesh engine → Cryptography: uses cryptography