license "refactor" :)

This commit is contained in:
liquidraver
2026-06-07 22:47:17 +02:00
parent 2cf4b9704e
commit 2ad185bab4
328 changed files with 869 additions and 832 deletions
+7 -2
View File
@@ -243,8 +243,13 @@ zephcore/
## License
Same license as the upstream MeshCore project.
MIT License — see [`zephcore/LICENSE`](zephcore/LICENSE). Same license as the
upstream MeshCore project, which this work relies heavily on (see the
[official meshcore repo](https://github.com/meshcore-dev/MeshCore/)).
A few vendored dependencies carry their own (compatible) licenses — see the
notice at the bottom of `LICENSE` for details (Monocypher, Zephyr patches).
![aXa0YNLq_700w_0](https://github.com/user-attachments/assets/ddce17fd-7b83-4dc7-999f-0519593fcc3d)
(FYI this is sarcasm, the whole project is 99,9% claude and cursor backed, relying heavily on the [official meshcore repo](https://github.com/meshcore-dev/MeshCore/) and the work they do in it)
(FYI the whole project is 99,9% claude and cursor backed, relying heavily on the [official meshcore repo](https://github.com/meshcore-dev/MeshCore/) and the work they do in it)
+1 -1
View File
@@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: MIT
cmake_minimum_required(VERSION 3.20.0)
+1 -1
View File
@@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: MIT
source "$(ZEPHYR_BASE)/Kconfig.zephyr"
+1 -1
View File
@@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: MIT
#
# DT-driven PSRAM auto-enable for ESP32 boards.
#
+32
View File
@@ -0,0 +1,32 @@
MIT License
Copyright (c) 2025-2026 ZephCore contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
---
This repository vendors third-party code under separate, compatible licenses:
- `lib/monocypher/` — Monocypher, by Loup Vaillant. Dual-licensed
BSD-2-Clause OR CC0-1.0 (see file headers).
- `patches/zephyr/*.patch` — diffs against Zephyr RTOS (Apache-2.0). The
patches are applied to, and remain part of, the separately-licensed Zephyr
source tree fetched via `west update`; they are not distributed as
standalone files under this project's MIT license.
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephCore BLE Adapter — NUS service, advertising, security, TX/RX
*
* Security: SMP pairing with SC + MITM + Bonding, DisplayOnly IO (app_passkey).
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephCore BLE Adapter — NUS service, advertising, security, TX/RX
*/
#pragma once
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
*/
#include "ZephyrBoard.h"
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Zephyr MainBoard base - nRF52840 DK and generic
*/
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
*/
#include "ZephyrMillisecondClock.h"
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Zephyr implementation of MillisecondClock
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
*/
#include "ZephyrRTCClock.h"
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Zephyr software RTC - boot-relative time with settable offset
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
*
* Compact raw-I2C hardware-RTC auto-discovery. See ZephyrRTCDiscover.h.
*
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
*
* Boot-time hardware-RTC auto-discovery (compact raw-I2C reader).
*
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Zephyr DataStore - LittleFS-backed persistence with optional QSPI flash
*
* All platforms use DTS-automounted /lfs.
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Zephyr DataStore - LittleFS-backed persistence with optional QSPI flash
*
* All platforms use DTS-automounted /lfs for identity, prefs, contacts.
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Zephyr GPS Manager - GNSS power management, fix acquisition, constellation config
*
* Event-driven state machine with no polling loops:
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Zephyr GPS Manager - GNSS power management, fix acquisition, constellation config
*
* Event-driven state machine: OFF → ACQUIRING → STANDBY → ACQUIRING → ...
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephyrMQTTPublisher — MQTT client thread for the Observer role.
*
* Thread flow:
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephyrMQTTPublisher — MQTT client thread for the Observer role.
*
* Dedicated thread: waits for WiFi ready, resolves broker hostname,
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* WiFi OTA Firmware Update
*
* Starts a WiFi AP + HTTP server for browser-based firmware upload.
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* WiFi OTA Firmware Update Public API
*
* Starts a WiFi AP + HTTP server for browser-based firmware upload.
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* LR1110 hardware hooks for LoRaRadioBase.
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephCore Radio adapter for LR1110/LR1120/LR1121 using Zephyr LoRa driver
*
* Thin wrapper around LoRaRadioBase only hardware-specific hooks.
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* LR2021 hardware hooks for LoRaRadioBase.
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephCore Radio adapter for LR2021 using Zephyr LoRa driver
*
* Thin wrapper around LoRaRadioBase only hardware-specific hooks.
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* LoRa radio base class shared algorithms for all radio adapters.
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* LoRa radio base class shared state and algorithms.
* Subclasses implement hw*() primitives only.
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* SX126x hardware hooks for LoRaRadioBase native Zephyr driver.
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephCore Radio adapter for SX126x (SX1261/SX1262/SX1268) using native Zephyr driver
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* SX127x hardware hooks for LoRaRadioBase Zephyr loramac-node driver.
*
* The SX127x driver (loramac-node/sx127x.c) exposes only the standard
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephCore Radio adapter for SX127x (SX1272/SX1276/SX1278) using Zephyr loramac-node driver.
*
* The SX127x loramac-node driver supports the standard Zephyr LoRa API
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* LR11xx HAL implementation for Zephyr ZephCore
*/
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* LR11xx HAL for Zephyr ZephCore
*/
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* LR20xx HAL implementation for Zephyr - ZephCore
*
* Based on Semtech SWDR001 lr20xx_driver and the ZephCore lr11xx HAL.
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* LR20xx HAL implementation for Zephyr - ZephCore
*
* Zephyr hardware context for the Semtech lr20xx_driver HAL interface.
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Shared constants and utilities for all LoRa radio adapters.
*
* Anything duplicated between SX126xRadio and LR1110Radio belongs here.
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* RNG::nextInt - shared implementation
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
*/
#include "ZephyrRNG.h"
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Zephyr CSPRNG implementation
*/
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Zephyr Environment & Power Sensors
*
* Auto-detects available sensors via Zephyr devicetree nodelabels.
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Zephyr Environment & Power Sensors
*
* Environment: temperature, humidity, pressure
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Backward-compatibility shim includes GPS manager + env sensors.
* All callers can continue using #include "ZephyrSensorManager.h".
*/
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephCore TCP companion transport drop-in replacement for ZephyrBLE.
*
* Implements the exact zephcore_ble_* C API from adapters/ble/ZephyrBLE.h
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2026 ZephCore
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
*
* Native-Linux (native_sim) runtime setup.
*
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephCore USB CDC Companion Transport
*
* V3-framed USB CDC for companion mode. Extracted from main_companion.cpp.
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephCore USB CDC Companion Transport
*
* V3-framed USB CDC for companion mode: ISR, ring buffer, frame parsing,
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephCore Unified USB CDC ACM init (companion + repeater + observer)
*
* See ZephyrUSBCDC.h for the contract. This implementation:
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephCore Unified USB CDC ACM init (companion + repeater + observer)
*
* Owns the USBD device + CDC ACM class registration, the usbd_msg_callback
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephyrWiFiStation WiFi STA connection manager for the Observer role.
*
* Flow:
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephyrWiFiStation WiFi STA connection manager for the Observer role.
*
* Connects to a WPA2-PSK (or open) network, obtains a DHCP lease, syncs
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* CompanionMesh implementation
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* CompanionMesh - ZephCore Companion device application layer
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ObserverMesh listen-only LoRa mesh node implementation.
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ObserverMesh listen-only LoRa mesh node.
*
* Extends mesh::Dispatcher directly (no routing, no flooding, no ACL).
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* RepeaterDataStore - Filesystem storage for repeater
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* RepeaterDataStore - Filesystem storage for repeater
*
* Uses /lfs/repeater/ prefix to keep data separate from companion.
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* RepeaterMesh - LoRa mesh repeater implementation
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* RepeaterMesh - LoRa mesh repeater implementation
*
* Extends mesh::Mesh with:
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* RepeaterMesh region-definition CLI the `region ...` command family and the
* `region load` continuation-line parser.
*
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* RepeaterMesh MQTT uplink WiFi/MQTT telemetry publishing for repeaters.
*
* Split out of RepeaterMesh.cpp for readability. Defines the RepeaterMesh
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* RoomServerMesh - LoRa mesh shared-room (BBS) server
*
* A store-and-forward shared message room. Clients log in with an admin or
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* RoomServerMesh - LoRa mesh shared-room (BBS) server
*
* Extends mesh::Mesh with:
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* RoomServerMesh region-definition CLI the `region ...` command family and the
* `region load` continuation-line parser.
*
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* ZephCore Observer listen-only LoRa node with WiFi+MQTT forwarding.
*
* Every received LoRa packet is published to an MQTT broker in
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
*/
#include "observer_creds.h"
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Observer runtime credentials stored in LittleFS, configured via serial CLI.
*
* All connection parameters are runtime-configurable so no credentials ever
+1 -1
View File
@@ -4,7 +4,7 @@
*
* Requires board to define: &lfs_partition
*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
*/
/ {
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* nRF52840 partition layout SoftDevice s140 v6 + UF2 bootloader
*
* See nrf52_partitions_sdv7.dtsi for full include guide.
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* nRF52840 partition layout SoftDevice s140 v7 + UF2 bootloader
*
*
+1 -1
View File
@@ -17,7 +17,7 @@
* Include this in any nRF52 board DTS that defines a 'buttons' gpio-keys node.
* Boards without buttons (e.g. ikoka_nano, rak4631) should NOT include this.
*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
*/
&buttons {
+1 -1
View File
@@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: MIT
# Observer role configuration — listen-only LoRa node with WiFi+MQTT forwarding.
# All parameters (WiFi SSID/PSK, MQTT host/port/TLS/user/pass, IATA location code)
# are configured at runtime via serial CLI and stored in LittleFS.
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* QSPI external flash /ext automount optional add-on for any platform
*
* See nrf52_partitions_sdv7.dtsi for full include guide.
+1 -1
View File
@@ -1,6 +1,6 @@
/*
* Common I2C Real-Time-Clock descriptors for ZephCore
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
*
* OPT-IN: include this inside an &i2cN { ... } block ONLY on boards that
* physically have a battery/cap-backed RTC. Kept separate from
+1 -1
View File
@@ -1,6 +1,6 @@
/*
* Common I2C Sensor Definitions for ZephCore
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
*
* Include this file inside an &i2cN { ... } block to define all
* supported sensor nodes on that bus. Sensors that are not physically
@@ -1,134 +1,134 @@
/*
* SPDX-License-Identifier: Apache-2.0
* Heltec WiFi LoRa 32 V3 — ZephCore overlay
*
* The upstream Zephyr DTS already defines SX1262, SSD1306 OLED, button,
* LED, battery ADC, Vext/ADC control, I2C0, SPI2, BLE, and WiFi.
* This overlay adds ZephCore-specific integration on top.
*
* LoRa SPI2 pins: SCLK=9, MOSI=10, MISO=11, NSS=8
* LoRa control: DIO1=14, BUSY=13, RESET=12
* Display I2C0: SDA=17, SCL=18 (SSD1306 @ 0x3C)
* Battery ADC: GPIO1 (ADC1 ch0), enable GPIO37, divider 100K/390K
* Vext: GPIO36 (active-LOW, powers OLED) — regulator + vin-supply in overlay
* Button: GPIO0
* LED: GPIO35
*/
#include <zephyr/dt-bindings/input/input-event-codes.h>
/ {
chosen {
/* Keep console/shell on UART0 for stable host logging on V3 */
zephyr,console = &uart0;
zephyr,shell-uart = &uart0;
};
/* Add label to upstream buttons node (defined without one) */
buttons: buttons {
};
/* Battery ADC — ZephCore reads via zephyr,user { io-channels }
* Upstream vbatt node uses voltage-divider compatible which ZephCore
* doesn't use. Multiplier: 3300mV full-scale * 5.42x = 17886.
* (5.42x is Arduino's empirical divider factor for V3/V4.) */
zephyr,user {
io-channels = <&adc1 0>;
vbat-mv-multiplier = <17886>;
};
/* Battery ADC enable — GPIO37 (gpio1 pin 5) must be driven to read.
* Upstream has adc_ctrl power-domain-gpio; ZephCore expects a
* regulator-fixed named vbat_enable. */
vbat_enable: vbat-enable {
compatible = "regulator-fixed";
regulator-name = "vbat-enable";
enable-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
};
/* Vext — GPIO36, active-LOW enables rail (matches Arduino periph_power / MeshCore
* PIN_VEXT_EN). Replaces upstream vext_ctrl power-domain so SSD1306 init works with
* CONFIG_PM_DEVICE=n. */
vext_enable: vext-enable {
compatible = "regulator-fixed";
regulator-name = "vext";
enable-gpios = <&gpio1 4 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
regulator-boot-on;
regulator-always-on;
};
/* Button chain — same mapping as RAK4631 / WisMesh Pocket (rak4631/board.overlay). */
user_btn_longpress {
compatible = "zephyr,input-longpress";
input = <&buttons>;
input-codes = <INPUT_KEY_0>;
short-codes = <INPUT_KEY_A>;
long-codes = <INPUT_KEY_ENTER>;
long-delay-ms = <1000>;
};
page_btn_multitap {
compatible = "zephcore,input-multi-tap";
input-codes = <INPUT_KEY_A>;
tap-codes = <INPUT_KEY_1 INPUT_KEY_LEFT>;
tap-delay-ms = <400>;
};
};
/* Enable native USB serial for console/CLI */
&usb_serial {
status = "okay";
};
/* Add RX boosted mode and DIO1 pull-down to LoRa radio.
* Upstream omits rx-boosted and has no pull-down on DIO1. */
&lora0 {
dio1-gpios = <&gpio0 14 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>;
rx-boosted;
};
/* Reduce CPU clock from 240 MHz to 160 MHz — saves power, HAL minimum */
&cpu0 {
clock-frequency = <DT_FREQ_M(160)>;
};
&cpu1 {
clock-frequency = <DT_FREQ_M(160)>;
};
/* I2C sensors — auto-detected at runtime */
&i2c0 {
#include "../../common/sensors-i2c.dtsi"
ssd1306_128x64: display-controller@3c {
/delete-property/ power-domains;
vin-supply = <&vext_enable>;
};
};
/*
* Flash partitions — reclaim unused space from 8MB layout.
* Delete lpcore slots, storage, scratch, and coredump partitions.
* Repurpose 0x7A0000 - 0x800000 (384KB) for LittleFS.
*/
/delete-node/ &slot0_lpcore_partition;
/delete-node/ &slot1_lpcore_partition;
/delete-node/ &storage_partition;
/delete-node/ &scratch_partition;
/delete-node/ &coredump_partition;
&flash0 {
partitions {
/* LittleFS 384KB for DataStore + file-based BLE settings */
lfs_partition: partition@7a0000 {
label = "lfs";
reg = <0x7A0000 0x60000>;
};
};
};
/* LittleFS auto-mount — standard /lfs mount point */
#include "../../common/filesystem.dtsi"
/* After SSD1306 no longer references vext_ctrl, remove upstream power-domain node. */
/delete-node/ &vext_ctrl;
/*
* SPDX-License-Identifier: MIT
* Heltec WiFi LoRa 32 V3 — ZephCore overlay
*
* The upstream Zephyr DTS already defines SX1262, SSD1306 OLED, button,
* LED, battery ADC, Vext/ADC control, I2C0, SPI2, BLE, and WiFi.
* This overlay adds ZephCore-specific integration on top.
*
* LoRa SPI2 pins: SCLK=9, MOSI=10, MISO=11, NSS=8
* LoRa control: DIO1=14, BUSY=13, RESET=12
* Display I2C0: SDA=17, SCL=18 (SSD1306 @ 0x3C)
* Battery ADC: GPIO1 (ADC1 ch0), enable GPIO37, divider 100K/390K
* Vext: GPIO36 (active-LOW, powers OLED) — regulator + vin-supply in overlay
* Button: GPIO0
* LED: GPIO35
*/
#include <zephyr/dt-bindings/input/input-event-codes.h>
/ {
chosen {
/* Keep console/shell on UART0 for stable host logging on V3 */
zephyr,console = &uart0;
zephyr,shell-uart = &uart0;
};
/* Add label to upstream buttons node (defined without one) */
buttons: buttons {
};
/* Battery ADC — ZephCore reads via zephyr,user { io-channels }
* Upstream vbatt node uses voltage-divider compatible which ZephCore
* doesn't use. Multiplier: 3300mV full-scale * 5.42x = 17886.
* (5.42x is Arduino's empirical divider factor for V3/V4.) */
zephyr,user {
io-channels = <&adc1 0>;
vbat-mv-multiplier = <17886>;
};
/* Battery ADC enable — GPIO37 (gpio1 pin 5) must be driven to read.
* Upstream has adc_ctrl power-domain-gpio; ZephCore expects a
* regulator-fixed named vbat_enable. */
vbat_enable: vbat-enable {
compatible = "regulator-fixed";
regulator-name = "vbat-enable";
enable-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
};
/* Vext — GPIO36, active-LOW enables rail (matches Arduino periph_power / MeshCore
* PIN_VEXT_EN). Replaces upstream vext_ctrl power-domain so SSD1306 init works with
* CONFIG_PM_DEVICE=n. */
vext_enable: vext-enable {
compatible = "regulator-fixed";
regulator-name = "vext";
enable-gpios = <&gpio1 4 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
regulator-boot-on;
regulator-always-on;
};
/* Button chain — same mapping as RAK4631 / WisMesh Pocket (rak4631/board.overlay). */
user_btn_longpress {
compatible = "zephyr,input-longpress";
input = <&buttons>;
input-codes = <INPUT_KEY_0>;
short-codes = <INPUT_KEY_A>;
long-codes = <INPUT_KEY_ENTER>;
long-delay-ms = <1000>;
};
page_btn_multitap {
compatible = "zephcore,input-multi-tap";
input-codes = <INPUT_KEY_A>;
tap-codes = <INPUT_KEY_1 INPUT_KEY_LEFT>;
tap-delay-ms = <400>;
};
};
/* Enable native USB serial for console/CLI */
&usb_serial {
status = "okay";
};
/* Add RX boosted mode and DIO1 pull-down to LoRa radio.
* Upstream omits rx-boosted and has no pull-down on DIO1. */
&lora0 {
dio1-gpios = <&gpio0 14 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>;
rx-boosted;
};
/* Reduce CPU clock from 240 MHz to 160 MHz — saves power, HAL minimum */
&cpu0 {
clock-frequency = <DT_FREQ_M(160)>;
};
&cpu1 {
clock-frequency = <DT_FREQ_M(160)>;
};
/* I2C sensors — auto-detected at runtime */
&i2c0 {
#include "../../common/sensors-i2c.dtsi"
ssd1306_128x64: display-controller@3c {
/delete-property/ power-domains;
vin-supply = <&vext_enable>;
};
};
/*
* Flash partitions — reclaim unused space from 8MB layout.
* Delete lpcore slots, storage, scratch, and coredump partitions.
* Repurpose 0x7A0000 - 0x800000 (384KB) for LittleFS.
*/
/delete-node/ &slot0_lpcore_partition;
/delete-node/ &slot1_lpcore_partition;
/delete-node/ &storage_partition;
/delete-node/ &scratch_partition;
/delete-node/ &coredump_partition;
&flash0 {
partitions {
/* LittleFS 384KB for DataStore + file-based BLE settings */
lfs_partition: partition@7a0000 {
label = "lfs";
reg = <0x7A0000 0x60000>;
};
};
};
/* LittleFS auto-mount — standard /lfs mount point */
#include "../../common/filesystem.dtsi"
/* After SSD1306 no longer references vext_ctrl, remove upstream power-domain node. */
/delete-node/ &vext_ctrl;
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Heltec WiFi LoRa 32 V4 — ZephCore overlay
*
* The DTS already defines: SX1262 (lora0), SSD1306 OLED, button, LED, PWM,
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Heltec WiFi LoRa 32 V4 Pin Control Definitions
*
* Pin assignments (identical to V3):
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Heltec WiFi LoRa 32 V4 ZephCore procpu DTS
*
* Hardware:
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Heltec WiFi LoRa 32 V4.3 — ZephCore overlay
*
* The DTS already defines: SX1262 (lora0), SSD1306 OLED, button, LED, PWM,
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Heltec WiFi LoRa 32 V4.3 Pin Control Definitions
*
* Pin assignments identical to V4.2 (GPIO5/CTX is plain GPIO, no pinctrl entry needed):
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Heltec WiFi LoRa 32 V4.3 ZephCore procpu DTS
*
* Hardware:
@@ -1,6 +1,6 @@
# LilyGo T-LoRa C6 board configuration
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: MIT
config BOARD_LILYGO_TLORA_C6
select SOC_ESP32_C6_WROOM_1U_N4
@@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: MIT
if(NOT "${OPENOCD}" MATCHES "^${ESPRESSIF_TOOLCHAIN_PATH}/.*")
set(OPENOCD OPENOCD-NOTFOUND)
@@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: MIT
# LilyGo T-LoRa C6 (T3-C6) + SX1262 LoRa
#
# Hardware:
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* LilyGo T-LoRa C6 (T3-C6) + SX1262 LoRa
*
* Pin mapping (from Arduino MeshCore variants/lilygo_tlora_c6):
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* LilyGo T-LoRa C6 Pin Control Definitions
*
* Pin mapping (from Arduino MeshCore variants/lilygo_tlora_c6):
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* LilyGo T-LoRa C6 (T3-C6) ESP32-C6-MINI-1U, 4MB flash
*
* Hardware:
+26 -26
View File
@@ -1,26 +1,26 @@
# SPDX-License-Identifier: Apache-2.0
# BQ Station G2 — ZephCore board configuration
#
# Hardware:
# ESP32-S3 (16MB flash, 8MB PSRAM)
# SX1262 + PA on SPI2 (TX power 7 dBm → ~27 dBm with PA)
# SH1106 128x64 OLED on I2C0
# GPS on UART1
# User button on GPIO38
#
# Include order: prj.conf → zephcore_common.conf → esp32_common.conf → board.conf
# Board identification
CONFIG_ZEPHCORE_BOARD_NAME="Station G2"
CONFIG_BT_DIS_MODEL_NUMBER_STR="BQ Station G2"
# TX power — Station G2 has ~20dB external PA.
# Default 15 dBm → ~35 dBm output (P1dB point). Not capped — user can raise.
CONFIG_ZEPHCORE_DEFAULT_TX_POWER_DBM=15
# Flash size — 16MB (override Zephyr default)
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
# PSRAM mode — ESP32-S3R8 is silicon-strapped OPI octal.
# Enable is auto-detected from DTS by Kconfig.psram; only the mode is set here.
CONFIG_SPIRAM_MODE_OCT=y
# SPDX-License-Identifier: MIT
# BQ Station G2 — ZephCore board configuration
#
# Hardware:
# ESP32-S3 (16MB flash, 8MB PSRAM)
# SX1262 + PA on SPI2 (TX power 7 dBm → ~27 dBm with PA)
# SH1106 128x64 OLED on I2C0
# GPS on UART1
# User button on GPIO38
#
# Include order: prj.conf → zephcore_common.conf → esp32_common.conf → board.conf
# Board identification
CONFIG_ZEPHCORE_BOARD_NAME="Station G2"
CONFIG_BT_DIS_MODEL_NUMBER_STR="BQ Station G2"
# TX power — Station G2 has ~20dB external PA.
# Default 15 dBm → ~35 dBm output (P1dB point). Not capped — user can raise.
CONFIG_ZEPHCORE_DEFAULT_TX_POWER_DBM=15
# Flash size — 16MB (override Zephyr default)
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
# PSRAM mode — ESP32-S3R8 is silicon-strapped OPI octal.
# Enable is auto-detected from DTS by Kconfig.psram; only the mode is set here.
CONFIG_SPIRAM_MODE_OCT=y
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* BQ Station G2 — ZephCore overlay
*
* Adds LoRa radio, display, GPS, button, and filesystem on top of the
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* BQ Station G2 Pin Control Definitions
*
* Pin mapping (from Arduino MeshCore variants/station_g2):
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* BQ Station G2 ESP32-S3, 16MB flash, 8MB PSRAM
*
* Hardware:
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* TTGO LoRa32 — ZephCore overlay
*
* The upstream Zephyr DTS (ttgo_lora32_esp32_procpu.dts) already defines:
@@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: MIT
# Seeed XIAO ESP32-C3 + SX1262 LoRa
#
# Hardware:
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* XIAO ESP32-C3 + SX1262 LoRa
*
* Pin mapping (from Arduino MeshCore variants/xiao_c3):
@@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: MIT
# Seeed XIAO ESP32-C6 + SX1262 LoRa
#
# Hardware:
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* XIAO ESP32-C6 + SX1262 LoRa
*
* Pin mapping (from Arduino MeshCore variants/xiao_c6):
@@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: MIT
# Seeed XIAO ESP32-S3 + WIO-SX1262 LoRa
#
# Hardware:
@@ -1,5 +1,5 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: MIT
* Seeed XIAO ESP32-S3 + WIO-SX1262 LoRa
*
* Pin mapping (from Arduino MeshCore variants/xiao_s3_wio):

Some files were not shown because too many files have changed in this diff Show More