mirror of
https://github.com/meshtastic/firmware.git
synced 2026-01-14 05:47:23 +00:00
Merge branch 'develop' into sfpp
This commit is contained in:
4
.github/workflows/main_matrix.yml
vendored
4
.github/workflows/main_matrix.yml
vendored
@@ -8,7 +8,9 @@ on:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
- pioarduino # Remove when merged // use `feature/` in the future.
|
||||
- event/*
|
||||
- feature/*
|
||||
paths-ignore:
|
||||
- "**.md"
|
||||
- version.properties
|
||||
@@ -18,7 +20,9 @@ on:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
- pioarduino # Remove when merged // use `feature/` in the future.
|
||||
- event/*
|
||||
- feature/*
|
||||
paths-ignore:
|
||||
- "**.md"
|
||||
#- "**.yml"
|
||||
|
||||
@@ -38,4 +38,4 @@ cp bin/device-install.* $OUTDIR/
|
||||
cp bin/device-update.* $OUTDIR/
|
||||
|
||||
echo "Copying manifest"
|
||||
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json
|
||||
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json || true
|
||||
|
||||
@@ -49,4 +49,4 @@ if (echo $1 | grep -q "rak4631"); then
|
||||
fi
|
||||
|
||||
echo "Copying manifest"
|
||||
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json
|
||||
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json || true
|
||||
|
||||
@@ -30,4 +30,4 @@ echo "Copying uf2 file"
|
||||
cp $BUILDDIR/$basename.uf2 $OUTDIR/$basename.uf2
|
||||
|
||||
echo "Copying manifest"
|
||||
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json
|
||||
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json || true
|
||||
|
||||
@@ -30,4 +30,4 @@ echo "Copying STM32 bin file"
|
||||
cp $BUILDDIR/$basename.bin $OUTDIR/$basename.bin
|
||||
|
||||
echo "Copying manifest"
|
||||
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json
|
||||
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json || true
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
# trunk-ignore-all(ruff/F821)
|
||||
# trunk-ignore-all(flake8/F821): For SConstruct imports
|
||||
import sys
|
||||
from os.path import join, basename, isfile
|
||||
from os.path import join
|
||||
import subprocess
|
||||
import json
|
||||
import re
|
||||
from datetime import datetime
|
||||
from typing import Dict
|
||||
|
||||
from readprops import readProps
|
||||
|
||||
@@ -14,8 +15,47 @@ Import("env")
|
||||
platform = env.PioPlatform()
|
||||
progname = env.get("PROGNAME")
|
||||
lfsbin = f"{progname.replace('firmware-', 'littlefs-')}.bin"
|
||||
manifest_ran = False
|
||||
|
||||
def infer_architecture(board_cfg):
|
||||
try:
|
||||
mcu = board_cfg.get("build.mcu") if board_cfg else None
|
||||
except KeyError:
|
||||
mcu = None
|
||||
except Exception:
|
||||
mcu = None
|
||||
if not mcu:
|
||||
return None
|
||||
mcu_l = str(mcu).lower()
|
||||
if "esp32s3" in mcu_l:
|
||||
return "esp32-s3"
|
||||
if "esp32c6" in mcu_l:
|
||||
return "esp32-c6"
|
||||
if "esp32c3" in mcu_l:
|
||||
return "esp32-c3"
|
||||
if "esp32" in mcu_l:
|
||||
return "esp32"
|
||||
if "rp2040" in mcu_l:
|
||||
return "rp2040"
|
||||
if "rp2350" in mcu_l:
|
||||
return "rp2350"
|
||||
if "nrf52" in mcu_l or "nrf52840" in mcu_l:
|
||||
return "nrf52840"
|
||||
if "stm32" in mcu_l:
|
||||
return "stm32"
|
||||
return None
|
||||
|
||||
def manifest_gather(source, target, env):
|
||||
global manifest_ran
|
||||
if manifest_ran:
|
||||
return
|
||||
# Skip manifest generation if we cannot determine architecture (host/native builds)
|
||||
board_arch = infer_architecture(env.BoardConfig())
|
||||
if not board_arch:
|
||||
print(f"Skipping mtjson generation for unknown architecture (env={env.get('PIOENV')})")
|
||||
manifest_ran = True
|
||||
return
|
||||
manifest_ran = True
|
||||
out = []
|
||||
board_platform = env.BoardConfig().get("platform")
|
||||
needs_ota_suffix = board_platform == "nordicnrf52"
|
||||
@@ -47,14 +87,39 @@ def manifest_gather(source, target, env):
|
||||
manifest_write(out, env)
|
||||
|
||||
def manifest_write(files, env):
|
||||
# Defensive: also skip manifest writing if we cannot determine architecture
|
||||
def get_project_option(name):
|
||||
try:
|
||||
return env.GetProjectOption(name)
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
def get_project_option_any(names):
|
||||
for name in names:
|
||||
val = get_project_option(name)
|
||||
if val is not None:
|
||||
return val
|
||||
return None
|
||||
|
||||
def as_bool(val):
|
||||
return str(val).strip().lower() in ("1", "true", "yes", "on")
|
||||
|
||||
def as_int(val):
|
||||
try:
|
||||
return int(str(val), 10)
|
||||
except (TypeError, ValueError):
|
||||
return None
|
||||
|
||||
def as_list(val):
|
||||
return [item.strip() for item in str(val).split(",") if item.strip()]
|
||||
|
||||
manifest = {
|
||||
"version": verObj["long"],
|
||||
"build_epoch": build_epoch,
|
||||
"board": env.get("PIOENV"),
|
||||
"platformioTarget": env.get("PIOENV"),
|
||||
"mcu": env.get("BOARD_MCU"),
|
||||
"repo": repo_owner,
|
||||
"files": files,
|
||||
"part": None,
|
||||
"has_mui": False,
|
||||
"has_inkhud": False,
|
||||
}
|
||||
@@ -69,6 +134,51 @@ def manifest_write(files, env):
|
||||
if "MESHTASTIC_INCLUDE_INKHUD" in env.get("CPPDEFINES", []):
|
||||
manifest["has_inkhud"] = True
|
||||
|
||||
pioenv = env.get("PIOENV")
|
||||
device_meta = {}
|
||||
device_meta_fields = [
|
||||
("hwModel", ["custom_meshtastic_hw_model"], as_int),
|
||||
("hwModelSlug", ["custom_meshtastic_hw_model_slug"], str),
|
||||
("architecture", ["custom_meshtastic_architecture"], str),
|
||||
("activelySupported", ["custom_meshtastic_actively_supported"], as_bool),
|
||||
("displayName", ["custom_meshtastic_display_name"], str),
|
||||
("supportLevel", ["custom_meshtastic_support_level"], as_int),
|
||||
("images", ["custom_meshtastic_images"], as_list),
|
||||
("tags", ["custom_meshtastic_tags"], as_list),
|
||||
("requiresDfu", ["custom_meshtastic_requires_dfu"], as_bool),
|
||||
("partitionScheme", ["custom_meshtastic_partition_scheme"], str),
|
||||
("url", ["custom_meshtastic_url"], str),
|
||||
("key", ["custom_meshtastic_key"], str),
|
||||
("variant", ["custom_meshtastic_variant"], str),
|
||||
]
|
||||
|
||||
|
||||
for manifest_key, option_keys, caster in device_meta_fields:
|
||||
raw_val = get_project_option_any(option_keys)
|
||||
if raw_val is None:
|
||||
continue
|
||||
parsed = caster(raw_val) if callable(caster) else raw_val
|
||||
if parsed is not None and parsed != "":
|
||||
device_meta[manifest_key] = parsed
|
||||
|
||||
# Determine architecture once; if we can't infer it, skip manifest generation
|
||||
board_arch = device_meta.get("architecture") or infer_architecture(env.BoardConfig())
|
||||
if not board_arch:
|
||||
print(f"Skipping mtjson write for unknown architecture (env={env.get('PIOENV')})")
|
||||
return
|
||||
|
||||
device_meta["architecture"] = board_arch
|
||||
|
||||
# Always set requiresDfu: true for nrf52840 targets
|
||||
if board_arch == "nrf52840":
|
||||
device_meta["requiresDfu"] = True
|
||||
|
||||
device_meta.setdefault("displayName", pioenv)
|
||||
device_meta.setdefault("activelySupported", False)
|
||||
|
||||
if device_meta:
|
||||
manifest.update(device_meta)
|
||||
|
||||
# Write the manifest to the build directory
|
||||
with open(env.subst("$BUILD_DIR/${PROGNAME}.mt.json"), "w") as f:
|
||||
json.dump(manifest, f, indent=2)
|
||||
@@ -166,8 +276,12 @@ def load_boot_logo(source, target, env):
|
||||
if ("HAS_TFT", 1) in env.get("CPPDEFINES", []):
|
||||
env.AddPreAction(f"$BUILD_DIR/{lfsbin}", load_boot_logo)
|
||||
|
||||
mtjson_deps = ["buildprog"]
|
||||
if platform.name == "espressif32":
|
||||
board_arch = infer_architecture(env.BoardConfig())
|
||||
should_skip_manifest = board_arch is None
|
||||
|
||||
# For host/native envs, avoid depending on 'buildprog' (some targets don't define it)
|
||||
mtjson_deps = [] if should_skip_manifest else ["buildprog"]
|
||||
if not should_skip_manifest and platform.name == "espressif32":
|
||||
# Build littlefs image as part of mtjson target
|
||||
# Equivalent to `pio run -t buildfs`
|
||||
target_lfs = env.DataToBin(
|
||||
@@ -175,11 +289,27 @@ if platform.name == "espressif32":
|
||||
)
|
||||
mtjson_deps.append(target_lfs)
|
||||
|
||||
env.AddCustomTarget(
|
||||
name="mtjson",
|
||||
dependencies=mtjson_deps,
|
||||
actions=[manifest_gather],
|
||||
title="Meshtastic Manifest",
|
||||
description="Generating Meshtastic manifest JSON + Checksums",
|
||||
always_build=False,
|
||||
)
|
||||
if should_skip_manifest:
|
||||
def skip_manifest(source, target, env):
|
||||
print(f"mtjson: skipped for native environment: {env.get('PIOENV')}")
|
||||
|
||||
env.AddCustomTarget(
|
||||
name="mtjson",
|
||||
dependencies=mtjson_deps,
|
||||
actions=[skip_manifest],
|
||||
title="Meshtastic Manifest (skipped)",
|
||||
description="mtjson generation is skipped for native environments",
|
||||
always_build=True,
|
||||
)
|
||||
else:
|
||||
env.AddCustomTarget(
|
||||
name="mtjson",
|
||||
dependencies=mtjson_deps,
|
||||
actions=[manifest_gather],
|
||||
title="Meshtastic Manifest",
|
||||
description="Generating Meshtastic manifest JSON + Checksums",
|
||||
always_build=True,
|
||||
)
|
||||
|
||||
# Run manifest generation as part of the default build pipeline for non-native builds.
|
||||
env.Default("mtjson")
|
||||
|
||||
@@ -18,8 +18,9 @@ def readProps(prefsLoc):
|
||||
|
||||
# Try to find current build SHA if if the workspace is clean. This could fail if git is not installed
|
||||
try:
|
||||
# Pin abbreviation length to keep local builds and CI matching (avoid auto-shortening)
|
||||
sha = (
|
||||
subprocess.check_output(["git", "rev-parse", "--short", "HEAD"])
|
||||
subprocess.check_output(["git", "rev-parse", "--short=7", "HEAD"])
|
||||
.decode("utf-8")
|
||||
.strip()
|
||||
)
|
||||
|
||||
50
boards/t-beam-1w.json
Normal file
50
boards/t-beam-1w.json
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"build": {
|
||||
"arduino": {
|
||||
"ldscript": "esp32s3_out.ld",
|
||||
"memory_type": "qio_opi"
|
||||
},
|
||||
"core": "esp32",
|
||||
"extra_flags": [
|
||||
"-DBOARD_HAS_PSRAM",
|
||||
"-DLILYGO_TBEAM_1W",
|
||||
"-DARDUINO_USB_CDC_ON_BOOT=1",
|
||||
"-DARDUINO_USB_MODE=0",
|
||||
"-DARDUINO_RUNNING_CORE=1",
|
||||
"-DARDUINO_EVENT_RUNNING_CORE=1"
|
||||
],
|
||||
"f_cpu": "240000000L",
|
||||
"f_flash": "80000000L",
|
||||
"flash_mode": "qio",
|
||||
"psram_type": "opi",
|
||||
"hwids": [
|
||||
[
|
||||
"0x303A",
|
||||
"0x1001"
|
||||
]
|
||||
],
|
||||
"mcu": "esp32s3",
|
||||
"variant": "t-beam-1w"
|
||||
},
|
||||
"connectivity": [
|
||||
"wifi",
|
||||
"bluetooth",
|
||||
"lora"
|
||||
],
|
||||
"debug": {
|
||||
"openocd_target": "esp32s3.cfg"
|
||||
},
|
||||
"frameworks": [
|
||||
"arduino"
|
||||
],
|
||||
"name": "LilyGo TBeam-1W",
|
||||
"upload": {
|
||||
"flash_size": "16MB",
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 16777216,
|
||||
"require_upload_port": true,
|
||||
"speed": 921600
|
||||
},
|
||||
"url": "http://www.lilygo.cn/",
|
||||
"vendor": "LilyGo"
|
||||
}
|
||||
@@ -444,6 +444,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// BME680 BSEC2 support detection
|
||||
#if !defined(MESHTASTIC_BME680_BSEC2_SUPPORTED)
|
||||
#if defined(RAK_4631) || defined(TBEAM_V10)
|
||||
|
||||
#define MESHTASTIC_BME680_BSEC2_SUPPORTED 1
|
||||
#define MESHTASTIC_BME680_HEADER <bsec2.h>
|
||||
#else
|
||||
#define MESHTASTIC_BME680_BSEC2_SUPPORTED 0
|
||||
#define MESHTASTIC_BME680_HEADER <Adafruit_BME680.h>
|
||||
#endif // defined(RAK_4631)
|
||||
#endif // !defined(MESHTASTIC_BME680_BSEC2_SUPPORTED)
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Global switches to turn off features for a minimized build
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
@@ -449,13 +449,14 @@ void menuHandler::clockMenu()
|
||||
}
|
||||
void menuHandler::messageResponseMenu()
|
||||
{
|
||||
enum optionsNumbers { Back = 0, ViewMode, DeleteAll, DeleteOldest, ReplyMenu, Aloud, enumEnd };
|
||||
enum optionsNumbers { Back = 0, ViewMode, DeleteAll, DeleteOldest, ReplyMenu, MuteChannel, Aloud, enumEnd };
|
||||
|
||||
static const char *optionsArray[enumEnd];
|
||||
static int optionsEnumArray[enumEnd];
|
||||
int options = 0;
|
||||
|
||||
auto mode = graphics::MessageRenderer::getThreadMode();
|
||||
int threadChannel = graphics::MessageRenderer::getThreadChannel();
|
||||
|
||||
optionsArray[options] = "Back";
|
||||
optionsEnumArray[options++] = Back;
|
||||
@@ -467,6 +468,15 @@ void menuHandler::messageResponseMenu()
|
||||
optionsArray[options] = "View Chats";
|
||||
optionsEnumArray[options++] = ViewMode;
|
||||
|
||||
// If viewing ALL chats, hide “Mute Chat”
|
||||
if (mode != graphics::MessageRenderer::ThreadMode::ALL && mode != graphics::MessageRenderer::ThreadMode::DIRECT) {
|
||||
const uint8_t chIndex = (threadChannel != 0) ? (uint8_t)threadChannel : channels.getPrimaryIndex();
|
||||
auto &chan = channels.getByIndex(chIndex);
|
||||
|
||||
optionsArray[options] = chan.settings.module_settings.is_muted ? "Unmute Channel" : "Mute Channel";
|
||||
optionsEnumArray[options++] = MuteChannel;
|
||||
}
|
||||
|
||||
// Delete submenu
|
||||
optionsArray[options] = "Delete";
|
||||
optionsEnumArray[options++] = 900;
|
||||
@@ -502,6 +512,14 @@ void menuHandler::messageResponseMenu()
|
||||
menuHandler::menuQueue = menuHandler::reply_menu;
|
||||
screen->runNow();
|
||||
|
||||
} else if (selected == MuteChannel) {
|
||||
const uint8_t chIndex = (ch != 0) ? (uint8_t)ch : channels.getPrimaryIndex();
|
||||
auto &chan = channels.getByIndex(chIndex);
|
||||
if (chan.settings.has_module_settings) {
|
||||
chan.settings.module_settings.is_muted = !chan.settings.module_settings.is_muted;
|
||||
nodeDB->saveToDisk();
|
||||
}
|
||||
|
||||
// Delete submenu
|
||||
} else if (selected == 900) {
|
||||
menuHandler::menuQueue = menuHandler::delete_messages_menu;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "configuration.h"
|
||||
#include "mesh-pb-constants.h"
|
||||
#include "meshUtils.h"
|
||||
#include "modules/TextMessageModule.h"
|
||||
#if !MESHTASTIC_EXCLUDE_TRACEROUTE
|
||||
#include "modules/TraceRouteModule.h"
|
||||
#endif
|
||||
@@ -35,6 +36,10 @@ bool FloodingRouter::shouldFilterReceived(const meshtastic_MeshPacket *p)
|
||||
return true; // we handled it, so stop processing
|
||||
}
|
||||
|
||||
if (!seenRecently && !wasUpgraded && textMessageModule) {
|
||||
seenRecently = textMessageModule->recentlySeen(p->id);
|
||||
}
|
||||
|
||||
if (seenRecently) {
|
||||
printPacket("Ignore dupe incoming msg", p);
|
||||
rxDupe++;
|
||||
|
||||
@@ -246,7 +246,8 @@ uint32_t RadioInterface::getPacketTime(const meshtastic_MeshPacket *p, bool rece
|
||||
/** The delay to use for retransmitting dropped packets */
|
||||
uint32_t RadioInterface::getRetransmissionMsec(const meshtastic_MeshPacket *p)
|
||||
{
|
||||
size_t numbytes = pb_encode_to_bytes(bytes, sizeof(bytes), &meshtastic_Data_msg, &p->decoded);
|
||||
size_t numbytes =p->which_payload_variant == meshtastic_MeshPacket_decoded_tag ?
|
||||
pb_encode_to_bytes(bytes, sizeof(bytes), &meshtastic_Data_msg, &p->decoded) : p->encrypted.size+MESHTASTIC_HEADER_LENGTH;
|
||||
uint32_t packetAirtime = getPacketTime(numbytes + sizeof(PacketHeader));
|
||||
// Make sure enough time has elapsed for this packet to be sent and an ACK is received.
|
||||
// LOG_DEBUG("Waiting for flooding message with airtime %d and slotTime is %d", packetAirtime, slotTimeMsec);
|
||||
|
||||
@@ -62,6 +62,11 @@ template <typename T> bool SX126xInterface<T>::init()
|
||||
digitalWrite(LORA_PA_TX_EN, LOW);
|
||||
#endif
|
||||
|
||||
#ifdef RF95_FAN_EN
|
||||
digitalWrite(RF95_FAN_EN, HIGH);
|
||||
pinMode(RF95_FAN_EN, OUTPUT);
|
||||
#endif
|
||||
|
||||
#if ARCH_PORTDUINO
|
||||
tcxoVoltage = (float)portduino_config.dio3_tcxo_voltage / 1000;
|
||||
if (portduino_config.lora_sx126x_ant_sw_pin.pin != RADIOLIB_NC) {
|
||||
@@ -85,6 +90,13 @@ template <typename T> bool SX126xInterface<T>::init()
|
||||
power = -9;
|
||||
|
||||
int res = lora.begin(getFreq(), bw, sf, cr, syncWord, power, preambleLength, tcxoVoltage, useRegulatorLDO);
|
||||
|
||||
#ifdef SX126X_PA_RAMP_US
|
||||
// Set custom PA ramp time for boards requiring longer stabilization (e.g., T-Beam 1W needs >800us)
|
||||
if (res == RADIOLIB_ERR_NONE) {
|
||||
lora.setPaRampTime(SX126X_PA_RAMP_US);
|
||||
}
|
||||
#endif
|
||||
// \todo Display actual typename of the adapter, not just `SX126x`
|
||||
LOG_INFO("SX126x init result %d", res);
|
||||
if (res == RADIOLIB_ERR_CHIP_NOT_FOUND || res == RADIOLIB_ERR_SPI_CMD_FAILED)
|
||||
|
||||
@@ -45,9 +45,9 @@ int SystemCommandsModule::handleInputEvent(const InputEvent *event)
|
||||
// Mute
|
||||
case INPUT_BROKER_MSG_MUTE_TOGGLE:
|
||||
if (moduleConfig.external_notification.enabled && externalNotificationModule) {
|
||||
externalNotificationModule->setMute(externalNotificationModule->getMute());
|
||||
externalNotificationModule->setMute(!externalNotificationModule->getMute());
|
||||
IF_SCREEN(if (!externalNotificationModule->getMute()) externalNotificationModule->stopNow(); screen->showSimpleBanner(
|
||||
externalNotificationModule->getMute() ? "Notifications\nEnabled" : "Notifications\nDisabled", 3000);)
|
||||
externalNotificationModule->getMute() ? "Notifications\nDisabled" : "Notifications\nEnabled", 3000);)
|
||||
}
|
||||
return 0;
|
||||
// Bluetooth
|
||||
|
||||
@@ -53,7 +53,7 @@ extern void drawCommonHeader(OLEDDisplay *display, int16_t x, int16_t y, const c
|
||||
#include "Sensor/LTR390UVSensor.h"
|
||||
#endif
|
||||
|
||||
#if __has_include(<bsec2.h>)
|
||||
#if __has_include(MESHTASTIC_BME680_HEADER)
|
||||
#include "Sensor/BME680Sensor.h"
|
||||
#endif
|
||||
|
||||
@@ -214,7 +214,7 @@ void EnvironmentTelemetryModule::i2cScanFinished(ScanI2C *i2cScanner)
|
||||
#if __has_include(<Adafruit_LTR390.h>)
|
||||
addSensor<LTR390UVSensor>(i2cScanner, ScanI2C::DeviceType::LTR390UV);
|
||||
#endif
|
||||
#if __has_include(<bsec2.h>)
|
||||
#if __has_include(MESHTASTIC_BME680_HEADER)
|
||||
addSensor<BME680Sensor>(i2cScanner, ScanI2C::DeviceType::BME_680);
|
||||
#endif
|
||||
#if __has_include(<Adafruit_BMP280.h>)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "configuration.h"
|
||||
|
||||
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include(<bsec2.h>)
|
||||
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include(MESHTASTIC_BME680_HEADER)
|
||||
|
||||
#include "../mesh/generated/meshtastic/telemetry.pb.h"
|
||||
#include "BME680Sensor.h"
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
BME680Sensor::BME680Sensor() : TelemetrySensor(meshtastic_TelemetrySensorType_BME680, "BME680") {}
|
||||
|
||||
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||
int32_t BME680Sensor::runOnce()
|
||||
{
|
||||
if (!bme680.run()) {
|
||||
@@ -17,10 +18,13 @@ int32_t BME680Sensor::runOnce()
|
||||
}
|
||||
return 35;
|
||||
}
|
||||
#endif // defined(MESHTASTIC_BME680_BSEC2_SUPPORTED)
|
||||
|
||||
bool BME680Sensor::initDevice(TwoWire *bus, ScanI2C::FoundDevice *dev)
|
||||
{
|
||||
status = 0;
|
||||
|
||||
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||
if (!bme680.begin(dev->address.address, *bus))
|
||||
checkStatus("begin");
|
||||
|
||||
@@ -42,12 +46,25 @@ bool BME680Sensor::initDevice(TwoWire *bus, ScanI2C::FoundDevice *dev)
|
||||
if (status == 0)
|
||||
LOG_DEBUG("BME680Sensor::runOnce: bme680.status %d", bme680.status);
|
||||
|
||||
#else
|
||||
bme680 = makeBME680(bus);
|
||||
|
||||
if (!bme680->begin(dev->address.address)) {
|
||||
LOG_ERROR("Init sensor: %s failed at begin()", sensorName);
|
||||
return status;
|
||||
}
|
||||
|
||||
status = 1;
|
||||
|
||||
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||
|
||||
initI2CSensor();
|
||||
return status;
|
||||
}
|
||||
|
||||
bool BME680Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||
{
|
||||
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||
if (bme680.getData(BSEC_OUTPUT_RAW_PRESSURE).signal == 0)
|
||||
return false;
|
||||
|
||||
@@ -65,9 +82,27 @@ bool BME680Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||
// Check if we need to save state to filesystem (every STATE_SAVE_PERIOD ms)
|
||||
measurement->variant.environment_metrics.iaq = bme680.getData(BSEC_OUTPUT_IAQ).signal;
|
||||
updateState();
|
||||
#else
|
||||
if (!bme680->performReading()) {
|
||||
LOG_ERROR("BME680Sensor::getMetrics: performReading failed");
|
||||
return false;
|
||||
}
|
||||
|
||||
measurement->variant.environment_metrics.has_temperature = true;
|
||||
measurement->variant.environment_metrics.has_relative_humidity = true;
|
||||
measurement->variant.environment_metrics.has_barometric_pressure = true;
|
||||
measurement->variant.environment_metrics.has_gas_resistance = true;
|
||||
|
||||
measurement->variant.environment_metrics.temperature = bme680->readTemperature();
|
||||
measurement->variant.environment_metrics.relative_humidity = bme680->readHumidity();
|
||||
measurement->variant.environment_metrics.barometric_pressure = bme680->readPressure() / 100.0F;
|
||||
measurement->variant.environment_metrics.gas_resistance = bme680->readGas() / 1000.0;
|
||||
|
||||
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||
return true;
|
||||
}
|
||||
|
||||
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||
void BME680Sensor::loadState()
|
||||
{
|
||||
#ifdef FSCom
|
||||
@@ -144,5 +179,6 @@ void BME680Sensor::checkStatus(const char *functionName)
|
||||
else if (bme680.sensor.status > BME68X_OK)
|
||||
LOG_WARN("%s BME68X code: %d", functionName, bme680.sensor.status);
|
||||
}
|
||||
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,23 +1,40 @@
|
||||
#include "configuration.h"
|
||||
|
||||
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include(<bsec2.h>)
|
||||
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include(MESHTASTIC_BME680_HEADER)
|
||||
|
||||
#include "../mesh/generated/meshtastic/telemetry.pb.h"
|
||||
#include "TelemetrySensor.h"
|
||||
|
||||
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||
#include <bme68xLibrary.h>
|
||||
#include <bsec2.h>
|
||||
#else
|
||||
#include <Adafruit_BME680.h>
|
||||
#include <memory>
|
||||
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||
|
||||
#define STATE_SAVE_PERIOD UINT32_C(360 * 60 * 1000) // That's 6 hours worth of millis()
|
||||
|
||||
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||
const uint8_t bsec_config[] = {
|
||||
#include "config/bme680/bme680_iaq_33v_3s_4d/bsec_iaq.txt"
|
||||
};
|
||||
|
||||
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||
class BME680Sensor : public TelemetrySensor
|
||||
{
|
||||
private:
|
||||
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||
Bsec2 bme680;
|
||||
#else
|
||||
using BME680Ptr = std::unique_ptr<Adafruit_BME680>;
|
||||
|
||||
static BME680Ptr makeBME680(TwoWire *bus) { return std::make_unique<Adafruit_BME680>(bus); }
|
||||
|
||||
BME680Ptr bme680;
|
||||
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||
|
||||
protected:
|
||||
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||
const char *bsecConfigFileName = "/prefs/bsec.dat";
|
||||
uint8_t bsecState[BSEC_MAX_STATE_BLOB_SIZE] = {0};
|
||||
uint8_t accuracy = 0;
|
||||
@@ -34,10 +51,13 @@ class BME680Sensor : public TelemetrySensor
|
||||
void loadState();
|
||||
void updateState();
|
||||
void checkStatus(const char *functionName);
|
||||
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||
|
||||
public:
|
||||
BME680Sensor();
|
||||
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||
virtual int32_t runOnce() override;
|
||||
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||
virtual bool getMetrics(meshtastic_Telemetry *measurement) override;
|
||||
virtual bool initDevice(TwoWire *bus, ScanI2C::FoundDevice *dev) override;
|
||||
};
|
||||
|
||||
@@ -17,6 +17,9 @@ ProcessMessage TextMessageModule::handleReceived(const meshtastic_MeshPacket &mp
|
||||
auto &p = mp.decoded;
|
||||
LOG_INFO("Received text msg from=0x%0x, id=0x%x, msg=%.*s", mp.from, mp.id, p.payload.size, p.payload.bytes);
|
||||
#endif
|
||||
// add packet ID to the rolling list of packets
|
||||
textPacketList[textPacketListIndex] = mp.id;
|
||||
textPacketListIndex = (textPacketListIndex + 1) % TEXT_PACKET_LIST_SIZE;
|
||||
|
||||
// We only store/display messages destined for us.
|
||||
devicestate.rx_text_message = mp;
|
||||
@@ -47,3 +50,13 @@ bool TextMessageModule::wantPacket(const meshtastic_MeshPacket *p)
|
||||
{
|
||||
return MeshService::isTextPayload(p);
|
||||
}
|
||||
|
||||
bool TextMessageModule::recentlySeen(uint32_t id)
|
||||
{
|
||||
for (size_t i = 0; i < TEXT_PACKET_LIST_SIZE; i++) {
|
||||
if (textPacketList[i] != 0 && textPacketList[i] == id) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
#include "Observer.h"
|
||||
#include "SinglePortModule.h"
|
||||
#define TEXT_PACKET_LIST_SIZE 50
|
||||
|
||||
/**
|
||||
* Text message handling for Meshtastic.
|
||||
@@ -19,6 +20,8 @@ class TextMessageModule : public SinglePortModule, public Observable<const mesht
|
||||
*/
|
||||
TextMessageModule() : SinglePortModule("text", meshtastic_PortNum_TEXT_MESSAGE_APP) {}
|
||||
|
||||
bool recentlySeen(uint32_t id);
|
||||
|
||||
protected:
|
||||
/** Called to handle a particular incoming message
|
||||
*
|
||||
@@ -27,6 +30,10 @@ class TextMessageModule : public SinglePortModule, public Observable<const mesht
|
||||
*/
|
||||
virtual ProcessMessage handleReceived(const meshtastic_MeshPacket &mp) override;
|
||||
virtual bool wantPacket(const meshtastic_MeshPacket *p) override;
|
||||
|
||||
private:
|
||||
uint32_t textPacketList[TEXT_PACKET_LIST_SIZE] = {0};
|
||||
size_t textPacketListIndex = 0;
|
||||
};
|
||||
|
||||
extern TextMessageModule *textMessageModule;
|
||||
@@ -1,5 +1,12 @@
|
||||
; Port to Disaster Radio's ESP32-v3 Dev Board
|
||||
[env:meshtastic-dr-dev]
|
||||
custom_meshtastic_hw_model = 41
|
||||
custom_meshtastic_hw_model_slug = DR_DEV
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = false
|
||||
custom_meshtastic_display_name = DR-DEV
|
||||
custom_meshtastic_tags = DIY
|
||||
|
||||
extends = esp32_base
|
||||
board = esp32doit-devkit-v1
|
||||
board_level = extra
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
; Hydra - Meshtastic DIY v1 hardware with some specific changes
|
||||
[env:hydra]
|
||||
custom_meshtastic_hw_model = 39
|
||||
custom_meshtastic_hw_model_slug = HYDRA
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = Hydra
|
||||
custom_meshtastic_tags = DIY
|
||||
|
||||
extends = esp32_base
|
||||
board = esp32doit-devkit-v1
|
||||
build_flags =
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
; Meshtastic DIY v1 by Nano VHF Schematic based on ESP32-WROOM-32 (38 pins) devkit & EBYTE E22 SX1262/SX1268 module
|
||||
[env:meshtastic-diy-v1]
|
||||
custom_meshtastic_hw_model = 39
|
||||
custom_meshtastic_hw_model_slug = DIY_V1
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = DIY V1
|
||||
custom_meshtastic_images = diy.svg
|
||||
custom_meshtastic_tags = DIY
|
||||
|
||||
extends = esp32_base
|
||||
board = esp32doit-devkit-v1
|
||||
board_check = true
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
[env:heltec-v1]
|
||||
custom_meshtastic_hw_model = 11
|
||||
custom_meshtastic_hw_model_slug = HELTEC_V1
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = false
|
||||
custom_meshtastic_display_name = Heltec V1
|
||||
custom_meshtastic_tags = Heltec
|
||||
|
||||
;build_type = debug ; to make it possible to step through our jtag debugger
|
||||
extends = esp32_base
|
||||
board_level = extra
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
[env:heltec-v2_1]
|
||||
custom_meshtastic_hw_model = 10
|
||||
custom_meshtastic_hw_model_slug = HELTEC_V2_1
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = false
|
||||
custom_meshtastic_display_name = Heltec V2.1
|
||||
custom_meshtastic_tags = Heltec
|
||||
|
||||
board_level = extra
|
||||
;build_type = debug ; to make it possible to step through our jtag debugger
|
||||
extends = esp32_base
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
[env:heltec-v2_0]
|
||||
custom_meshtastic_hw_model = 5
|
||||
custom_meshtastic_hw_model_slug = HELTEC_V2_0
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = false
|
||||
custom_meshtastic_display_name = Heltec V2.0
|
||||
custom_meshtastic_tags = Heltec
|
||||
|
||||
;build_type = debug ; to make it possible to step through our jtag debugger
|
||||
board_level = extra
|
||||
extends = esp32_base
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
[env:m5stack-core]
|
||||
custom_meshtastic_hw_model = 42
|
||||
custom_meshtastic_hw_model_slug = M5STACK
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = M5 Stack
|
||||
custom_meshtastic_tags = M5Stack
|
||||
|
||||
extends = esp32_base
|
||||
board = m5stack-core-esp32
|
||||
monitor_filters = esp32_exception_decoder
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
; The 1.0 release of the nano-g1-explorer board
|
||||
[env:nano-g1-explorer]
|
||||
custom_meshtastic_hw_model = 17
|
||||
custom_meshtastic_hw_model_slug = NANO_G1_EXPLORER
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = Nano G1 Explorer
|
||||
custom_meshtastic_tags = B&Q
|
||||
|
||||
extends = esp32_base
|
||||
board = ttgo-t-beam
|
||||
build_flags =
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
; The 1.0 release of the nano-g1 board
|
||||
[env:nano-g1]
|
||||
custom_meshtastic_hw_model = 14
|
||||
custom_meshtastic_hw_model_slug = NANO_G1
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = Nano G1
|
||||
custom_meshtastic_tags = B&Q
|
||||
|
||||
extends = esp32_base
|
||||
board = ttgo-t-beam
|
||||
build_flags =
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
[env:radiomaster_900_bandit_nano]
|
||||
custom_meshtastic_hw_model = 64
|
||||
custom_meshtastic_hw_model_slug = RADIOMASTER_900_BANDIT_NANO
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 2
|
||||
custom_meshtastic_display_name = RadioMaster 900 Bandit Nano
|
||||
custom_meshtastic_tags = RadioMaster
|
||||
|
||||
extends = esp32_base
|
||||
board = esp32doit-devkit-v1
|
||||
build_flags =
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
[env:rak11200]
|
||||
custom_meshtastic_hw_model = 13
|
||||
custom_meshtastic_hw_model_slug = RAK11200
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = RAK WisBlock 11200
|
||||
custom_meshtastic_images = rak11200.svg
|
||||
custom_meshtastic_tags = RAK
|
||||
|
||||
extends = esp32_base
|
||||
board = wiscore_rak11200
|
||||
board_level = pr
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
; The 1.0 release of the nano-g1 board
|
||||
[env:station-g1]
|
||||
custom_meshtastic_hw_model = 25
|
||||
custom_meshtastic_hw_model_slug = STATION_G1
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = Station G1
|
||||
custom_meshtastic_tags = B&Q
|
||||
|
||||
extends = esp32_base
|
||||
board = ttgo-t-beam
|
||||
build_flags =
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
; The 1.0 release of the TBEAM board
|
||||
[env:tbeam]
|
||||
custom_meshtastic_hw_model = 4
|
||||
custom_meshtastic_hw_model_slug = TBEAM
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = LILYGO T-Beam
|
||||
custom_meshtastic_images = tbeam.svg
|
||||
custom_meshtastic_tags = LilyGo
|
||||
|
||||
extends = esp32_base
|
||||
board = ttgo-t-beam
|
||||
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
; The original TBEAM board without the AXP power chip and a few other changes
|
||||
[env:tbeam0_7]
|
||||
custom_meshtastic_hw_model = 6
|
||||
custom_meshtastic_hw_model_slug = TBEAM_V0P7
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = false
|
||||
custom_meshtastic_display_name = LILYGO T-Beam V0.7
|
||||
custom_meshtastic_tags = LilyGo
|
||||
|
||||
board_level = extra
|
||||
extends = esp32_base
|
||||
board = ttgo-t-beam
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
[env:tlora-v1]
|
||||
custom_meshtastic_hw_model = 2
|
||||
custom_meshtastic_hw_model_slug = TLORA_V1
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = false
|
||||
custom_meshtastic_display_name = LILYGO T-LoRa V1
|
||||
custom_meshtastic_tags = LilyGo
|
||||
|
||||
board_level = extra
|
||||
extends = esp32_base
|
||||
board = ttgo-lora32-v1
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
[env:tlora-v2]
|
||||
custom_meshtastic_hw_model = 1
|
||||
custom_meshtastic_hw_model_slug = TLORA_V2
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = false
|
||||
custom_meshtastic_display_name = LILYGO T-LoRa V2
|
||||
custom_meshtastic_tags = LilyGo
|
||||
|
||||
board_level = extra
|
||||
extends = esp32_base
|
||||
board = ttgo-lora32-v1
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
[env:tlora-v2-1-1_6]
|
||||
custom_meshtastic_hw_model = 3
|
||||
custom_meshtastic_hw_model_slug = TLORA_V2_1_1P6
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = LILYGO T-LoRa V2.1-1.6
|
||||
custom_meshtastic_images = tlora-v2-1-1_6.svg
|
||||
custom_meshtastic_tags = LilyGo
|
||||
|
||||
extends = esp32_base
|
||||
board = ttgo-lora32-v21
|
||||
board_check = true
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
[env:tlora-v2-1-1_8]
|
||||
custom_meshtastic_hw_model = 15
|
||||
custom_meshtastic_hw_model_slug = TLORA_V2_1_1P8
|
||||
custom_meshtastic_architecture = esp32
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = LILYGO T-LoRa V2.1-1.8
|
||||
custom_meshtastic_images = tlora-v2-1-1_8.svg
|
||||
custom_meshtastic_tags = LilyGo, 2.4GHz
|
||||
|
||||
extends = esp32_base
|
||||
board_level = extra
|
||||
board = ttgo-lora32-v21
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
[env:heltec-ht62-esp32c3-sx1262]
|
||||
custom_meshtastic_hw_model = 53
|
||||
custom_meshtastic_hw_model_slug = HELTEC_HT62
|
||||
custom_meshtastic_architecture = esp32-c3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Heltec HT62
|
||||
custom_meshtastic_images = heltec-ht62-esp32c3-sx1262.svg
|
||||
custom_meshtastic_tags = Heltec
|
||||
|
||||
extends = esp32c3_base
|
||||
board = esp32-c3-devkitm-1
|
||||
board_level = pr
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
[env:m5stack-unitc6l]
|
||||
custom_meshtastic_hw_model = 111
|
||||
custom_meshtastic_hw_model_slug = M5STACK_C6L
|
||||
custom_meshtastic_architecture = esp32-c6
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = M5Stack Unit C6L
|
||||
custom_meshtastic_images = m5_c6l.svg
|
||||
custom_meshtastic_tags = M5Stack
|
||||
|
||||
extends = esp32c6_base
|
||||
board = esp32-c6-devkitc-1
|
||||
;OpenOCD flash method
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
[env:CDEBYTE_EoRa-S3]
|
||||
custom_meshtastic_hw_model = 61
|
||||
custom_meshtastic_hw_model_slug = CDEBYTE_EORA_S3
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = EBYTE EoRa-S3
|
||||
custom_meshtastic_tags = EByte
|
||||
custom_meshtastic_requires_dfu = true
|
||||
|
||||
extends = esp32s3_base
|
||||
board = CDEBYTE_EoRa-S3
|
||||
build_flags =
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
[env:thinknode_m2]
|
||||
custom_meshtastic_hw_model = 90
|
||||
custom_meshtastic_hw_model_slug = THINKNODE_M2
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = ThinkNode M2
|
||||
custom_meshtastic_images = thinknode_m2.svg
|
||||
custom_meshtastic_tags = Elecrow
|
||||
custom_meshtastic_requires_dfu = false
|
||||
|
||||
extends = esp32s3_base
|
||||
board = ESP32-S3-WROOM-1-N4
|
||||
build_flags =
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
[env:thinknode_m5]
|
||||
custom_meshtastic_hw_model = 107
|
||||
custom_meshtastic_hw_model_slug = THINKNODE_M5
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = ThinkNode M5
|
||||
custom_meshtastic_images = thinknode_m1.svg
|
||||
custom_meshtastic_tags = Elecrow
|
||||
custom_meshtastic_requires_dfu = false
|
||||
|
||||
extends = esp32s3_base
|
||||
board = ESP32-S3-WROOM-1-N4
|
||||
build_flags =
|
||||
|
||||
@@ -75,6 +75,17 @@ build_flags =
|
||||
-D DISPLAY_SET_RESOLUTION
|
||||
|
||||
[env:elecrow-adv-24-28-tft]
|
||||
custom_meshtastic_hw_model = 97
|
||||
custom_meshtastic_hw_model_slug = CROWPANEL
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Crowpanel Adv 2.4/2.8 TFT
|
||||
custom_meshtastic_images = crowpanel_2_4.svg, crowpanel_2_8.svg
|
||||
custom_meshtastic_tags = Elecrow
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 16MB
|
||||
|
||||
extends = crowpanel_small_esp32s3_base
|
||||
build_flags =
|
||||
${crowpanel_small_esp32s3_base.build_flags}
|
||||
@@ -99,6 +110,17 @@ build_flags =
|
||||
-D LGFX_TOUCH_ROTATION=0
|
||||
|
||||
[env:elecrow-adv-35-tft]
|
||||
custom_meshtastic_hw_model = 97
|
||||
custom_meshtastic_hw_model_slug = CROWPANEL
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Crowpanel Adv 3.5 TFT
|
||||
custom_meshtastic_images = crowpanel_3_5.svg
|
||||
custom_meshtastic_tags = Elecrow
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 16MB
|
||||
|
||||
extends = crowpanel_small_esp32s3_base
|
||||
board_level = pr
|
||||
build_flags =
|
||||
@@ -127,6 +149,17 @@ build_flags =
|
||||
|
||||
; 4.3, 5.0, 7.0 inch 800x480 IPS (V1)
|
||||
[env:elecrow-adv1-43-50-70-tft]
|
||||
custom_meshtastic_hw_model = 97
|
||||
custom_meshtastic_hw_model_slug = CROWPANEL
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Crowpanel Adv 4.3/5.0/7.0 TFT
|
||||
custom_meshtastic_images = crowpanel_5_0.svg, crowpanel_7_0.svg
|
||||
custom_meshtastic_tags = Elecrow
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 16MB
|
||||
|
||||
extends = crowpanel_large_esp32s3_base
|
||||
build_flags =
|
||||
${crowpanel_large_esp32s3_base.build_flags}
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
[env:heltec-v3]
|
||||
[env:heltec-v3]
|
||||
custom_meshtastic_hw_model = 43
|
||||
custom_meshtastic_hw_model_slug = HELTEC_V3
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Heltec V3
|
||||
custom_meshtastic_images = heltec-v3.svg, heltec-v3-case.svg
|
||||
custom_meshtastic_tags = Heltec
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = heltec_wifi_lora_32_V3
|
||||
board_level = pr
|
||||
|
||||
@@ -10,6 +10,17 @@ build_flags =
|
||||
|
||||
|
||||
[env:heltec-v4]
|
||||
custom_meshtastic_hw_model = 110
|
||||
custom_meshtastic_hw_model_slug = HELTEC_V4
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Heltec V4
|
||||
custom_meshtastic_images = heltec_v4.svg
|
||||
custom_meshtastic_tags = Heltec
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 16MB
|
||||
|
||||
extends = heltec_v4_base
|
||||
build_flags =
|
||||
${heltec_v4_base.build_flags}
|
||||
|
||||
@@ -1,4 +1,15 @@
|
||||
[env:heltec-vision-master-e213]
|
||||
custom_meshtastic_hw_model = 67
|
||||
custom_meshtastic_hw_model_slug = HELTEC_VISION_MASTER_E213
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Heltec Vision Master E213
|
||||
custom_meshtastic_images = heltec-vision-master-e213.svg
|
||||
custom_meshtastic_tags = Heltec
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = heltec_vision_master_e213
|
||||
board_build.partitions = default_8MB.csv
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
; Using the original screen class
|
||||
[env:heltec-vision-master-e290]
|
||||
custom_meshtastic_hw_model = 68
|
||||
custom_meshtastic_hw_model_slug = HELTEC_VISION_MASTER_E290
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Heltec Vision Master E290
|
||||
custom_meshtastic_images = heltec-vision-master-e290.svg
|
||||
custom_meshtastic_tags = Heltec
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = heltec_vision_master_e290
|
||||
board_build.partitions = default_8MB.csv
|
||||
|
||||
@@ -1,4 +1,15 @@
|
||||
[env:heltec-vision-master-t190]
|
||||
custom_meshtastic_hw_model = 66
|
||||
custom_meshtastic_hw_model_slug = HELTEC_VISION_MASTER_T190
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Heltec Vision Master T190
|
||||
custom_meshtastic_images = heltec-vision-master-t190.svg
|
||||
custom_meshtastic_tags = Heltec
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = heltec_vision_master_t190
|
||||
board_build.partitions = default_8MB.csv
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
; Using the original screen class
|
||||
[env:heltec-wireless-paper]
|
||||
custom_meshtastic_hw_model = 49
|
||||
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_PAPER
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Heltec Wireless Paper
|
||||
custom_meshtastic_images = heltec-wireless-paper.svg
|
||||
custom_meshtastic_tags = Heltec
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = heltec_wifi_lora_32_V3
|
||||
board_build.partitions = default_8MB.csv
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
[env:heltec-wireless-paper-v1_0]
|
||||
custom_meshtastic_hw_model = 57
|
||||
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_PAPER_V1_0
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = false
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = Heltec Wireless Paper V1.0
|
||||
custom_meshtastic_images = heltec-wireless-paper-v1_0.svg
|
||||
custom_meshtastic_tags = Heltec
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board_level = extra
|
||||
board = heltec_wifi_lora_32_V3
|
||||
|
||||
@@ -1,4 +1,15 @@
|
||||
[env:heltec-wireless-tracker]
|
||||
custom_meshtastic_hw_model = 48
|
||||
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_TRACKER
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Heltec Wireless Tracker V1.1
|
||||
custom_meshtastic_images = heltec-wireless-tracker.svg
|
||||
custom_meshtastic_tags = Heltec
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = heltec_wireless_tracker
|
||||
board_build.partitions = default_8MB.csv
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
[env:heltec-wireless-tracker-V1-0]
|
||||
custom_meshtastic_hw_model = 58
|
||||
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_TRACKER_V1_0
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = false
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = Heltec Wireless Tracker V1.0
|
||||
custom_meshtastic_images = heltec-wireless-tracker.svg
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board_level = extra
|
||||
board = heltec_wireless_tracker
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
[env:heltec-wsl-v3]
|
||||
[env:heltec-wsl-v3]
|
||||
custom_meshtastic_hw_model = 44
|
||||
custom_meshtastic_hw_model_slug = HELTEC_WSL_V3
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Heltec Wireless Stick Lite V3
|
||||
custom_meshtastic_images = heltec-wsl-v3.svg
|
||||
custom_meshtastic_tags = Heltec
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = heltec_wifi_lora_32_V3
|
||||
board_build.partitions = default_8MB.csv
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
[env:picomputer-s3]
|
||||
custom_meshtastic_hw_model = 52
|
||||
custom_meshtastic_hw_model_slug = PICOMPUTER_S3
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = Pi Computer S3
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = bpi_picow_esp32_s3
|
||||
board_check = true
|
||||
|
||||
@@ -1,4 +1,15 @@
|
||||
[env:rak3312]
|
||||
custom_meshtastic_hw_model = 106
|
||||
custom_meshtastic_hw_model_slug = RAK3312
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = RAK3312
|
||||
custom_meshtastic_images = rak_3312.svg
|
||||
custom_meshtastic_tags = RAK
|
||||
custom_meshtastic_requires_dfu = false
|
||||
custom_meshtastic_partition_scheme = 16MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = wiscore_rak3312
|
||||
board_level = pr
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
; Seeed Studio SenseCAP Indicator
|
||||
[env:seeed-sensecap-indicator]
|
||||
custom_meshtastic_hw_model = 70
|
||||
custom_meshtastic_hw_model_slug = SENSECAP_INDICATOR
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Seeed SenseCAP Indicator
|
||||
custom_meshtastic_images = seeed-sensecap-indicator.svg
|
||||
custom_meshtastic_tags = Seeed
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
= true
|
||||
|
||||
extends = esp32s3_base
|
||||
platform_packages =
|
||||
platformio/framework-arduinoespressif32 @ https://github.com/mverch67/arduino-esp32/archive/aef7fef6de3329ed6f75512d46d63bba12b09bb5.zip ; add_tca9535 (based on 2.0.16)
|
||||
|
||||
@@ -1,4 +1,15 @@
|
||||
[env:seeed-xiao-s3]
|
||||
custom_meshtastic_hw_model = 81
|
||||
custom_meshtastic_hw_model_slug = SEEED_XIAO_S3
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = Seeed Xiao ESP32-S3
|
||||
custom_meshtastic_images = seeed-xiao-s3.svg
|
||||
custom_meshtastic_tags = Seeed
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = seeed-xiao-s3
|
||||
board_level = pr
|
||||
|
||||
@@ -1,4 +1,15 @@
|
||||
[env:station-g2]
|
||||
custom_meshtastic_hw_model = 31
|
||||
custom_meshtastic_hw_model_slug = STATION_G2
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 2
|
||||
custom_meshtastic_display_name = Station G2
|
||||
custom_meshtastic_images = station-g2.svg
|
||||
custom_meshtastic_tags = B&Q
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 16MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = station-g2
|
||||
board_level = pr
|
||||
|
||||
25
variants/esp32s3/t-beam-1w/pins_arduino.h
Normal file
25
variants/esp32s3/t-beam-1w/pins_arduino.h
Normal file
@@ -0,0 +1,25 @@
|
||||
#ifndef Pins_Arduino_h
|
||||
#define Pins_Arduino_h
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define USB_VID 0x303a
|
||||
#define USB_PID 0x1001
|
||||
|
||||
static const uint8_t TX = 43;
|
||||
static const uint8_t RX = 44;
|
||||
|
||||
// I2C for OLED and sensors
|
||||
static const uint8_t SDA = 8;
|
||||
static const uint8_t SCL = 9;
|
||||
|
||||
// Default SPI mapped to Radio/SD
|
||||
static const uint8_t SS = 15; // LoRa CS
|
||||
static const uint8_t MOSI = 11;
|
||||
static const uint8_t MISO = 12;
|
||||
static const uint8_t SCK = 13;
|
||||
|
||||
// SD Card CS
|
||||
#define SDCARD_CS 10
|
||||
|
||||
#endif /* Pins_Arduino_h */
|
||||
14
variants/esp32s3/t-beam-1w/platformio.ini
Normal file
14
variants/esp32s3/t-beam-1w/platformio.ini
Normal file
@@ -0,0 +1,14 @@
|
||||
; LilyGo T-Beam-1W (1 Watt LoRa with external PA)
|
||||
[env:t-beam-1w]
|
||||
extends = esp32s3_base
|
||||
board = t-beam-1w
|
||||
board_build.partitions = default_8MB.csv
|
||||
board_check = true
|
||||
|
||||
lib_deps =
|
||||
${esp32s3_base.lib_deps}
|
||||
|
||||
build_flags =
|
||||
${esp32s3_base.build_flags}
|
||||
-I variants/esp32s3/t-beam-1w
|
||||
-D T_BEAM_1W
|
||||
97
variants/esp32s3/t-beam-1w/variant.h
Normal file
97
variants/esp32s3/t-beam-1w/variant.h
Normal file
@@ -0,0 +1,97 @@
|
||||
// LilyGo T-Beam-1W variant.h
|
||||
// Configuration based on LilyGO utilities.h and RF documentation
|
||||
|
||||
// I2C for OLED display (SH1106 at 0x3C)
|
||||
#define I2C_SDA 8
|
||||
#define I2C_SCL 9
|
||||
|
||||
// GPS - Quectel L76K
|
||||
#define GPS_RX_PIN 5
|
||||
#define GPS_TX_PIN 6
|
||||
#define GPS_1PPS_PIN 7
|
||||
#define GPS_WAKEUP_PIN 16 // GPS_EN_PIN in LilyGO code
|
||||
#define HAS_GPS 1
|
||||
#define GPS_BAUDRATE 9600
|
||||
|
||||
// Buttons
|
||||
#define BUTTON_PIN 0 // BUTTON 1
|
||||
#define BUTTON_PIN_ALT 17 // BUTTON 2
|
||||
|
||||
// SPI (shared by LoRa and SD)
|
||||
#define SPI_MOSI 11
|
||||
#define SPI_SCK 13
|
||||
#define SPI_MISO 12
|
||||
#define SPI_CS 10
|
||||
|
||||
// SD Card
|
||||
#define HAS_SDCARD
|
||||
#define SDCARD_USE_SPI1
|
||||
#define SDCARD_CS SPI_CS
|
||||
|
||||
// LoRa Radio - SX1262 with 1W PA
|
||||
#define USE_SX1262
|
||||
|
||||
#define LORA_SCK SPI_SCK
|
||||
#define LORA_MISO SPI_MISO
|
||||
#define LORA_MOSI SPI_MOSI
|
||||
#define LORA_CS 15
|
||||
#define LORA_RESET 3
|
||||
#define LORA_DIO1 1
|
||||
#define LORA_BUSY 38
|
||||
|
||||
// CRITICAL: Radio power enable - MUST be HIGH before lora.begin()!
|
||||
// GPIO 40 powers the SX1262 + PA module via LDO
|
||||
#define SX126X_POWER_EN 40
|
||||
|
||||
// TX power offset for external PA (0 = no offset, full SX1262 power)
|
||||
#define TX_GAIN_LORA 10
|
||||
|
||||
#ifdef USE_SX1262
|
||||
#define SX126X_CS LORA_CS
|
||||
#define SX126X_DIO1 LORA_DIO1
|
||||
#define SX126X_BUSY LORA_BUSY
|
||||
#define SX126X_RESET LORA_RESET
|
||||
|
||||
// RF switching configuration for 1W PA module
|
||||
// DIO2 controls PA (via SX126X_DIO2_AS_RF_SWITCH)
|
||||
// CTRL PIN (GPIO 21) controls LNA - must be HIGH during RX
|
||||
// Truth table: DIO2=1,CTRL=0 → TX (PA on, LNA off)
|
||||
// DIO2=0,CTRL=1 → RX (PA off, LNA on)
|
||||
#define SX126X_DIO2_AS_RF_SWITCH
|
||||
#define SX126X_RXEN 21 // LNA enable - HIGH during RX
|
||||
|
||||
// TCXO voltage - required for radio init
|
||||
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
|
||||
|
||||
#define SX126X_MAX_POWER 22
|
||||
#endif
|
||||
|
||||
// LED
|
||||
#define LED_PIN 18
|
||||
#define LED_STATE_ON 1 // HIGH = ON
|
||||
|
||||
// Battery ADC
|
||||
#define BATTERY_PIN 4
|
||||
#define ADC_CHANNEL ADC1_GPIO4_CHANNEL
|
||||
#define BATTERY_SENSE_SAMPLES 30
|
||||
#define ADC_MULTIPLIER 2.9333
|
||||
|
||||
// NTC temperature sensor
|
||||
#define NTC_PIN 14
|
||||
|
||||
// Fan control
|
||||
#define FAN_CTRL_PIN 41
|
||||
// Meshtastic standard fan control pin macro
|
||||
#define RF95_FAN_EN FAN_CTRL_PIN
|
||||
|
||||
// PA Ramp Time - T-Beam 1W requires >800us stabilization (default is 200us)
|
||||
// Value 0x05 = RADIOLIB_SX126X_PA_RAMP_800U
|
||||
#define SX126X_PA_RAMP_US 0x05
|
||||
|
||||
// Display - SH1106 OLED (128x64)
|
||||
#define USE_SH1106
|
||||
#define OLED_WIDTH 128
|
||||
#define OLED_HEIGHT 64
|
||||
|
||||
// 32768 Hz crystal present
|
||||
#define HAS_32768HZ 1
|
||||
@@ -1,4 +1,15 @@
|
||||
[env:t-deck-pro]
|
||||
custom_meshtastic_hw_model = 102
|
||||
custom_meshtastic_hw_model_slug = T_DECK_PRO
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = LILYGO T-Deck Pro
|
||||
custom_meshtastic_images = tdeck_pro.svg
|
||||
custom_meshtastic_tags = LilyGo
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 16MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = t-deck-pro
|
||||
board_check = true
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
; LilyGo T-Deck
|
||||
[env:t-deck]
|
||||
custom_meshtastic_hw_model = 50
|
||||
custom_meshtastic_hw_model_slug = T_DECK
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = LILYGO T-Deck
|
||||
custom_meshtastic_images = t-deck.svg
|
||||
custom_meshtastic_tags = LilyGo
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 16MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = t-deck
|
||||
board_check = true
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
; LilyGo T-Watch S3
|
||||
[env:t-watch-s3]
|
||||
custom_meshtastic_hw_model = 51
|
||||
custom_meshtastic_hw_model_slug = T_WATCH_S3
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = LILYGO T-Watch S3
|
||||
custom_meshtastic_images = t-watch-s3.svg
|
||||
custom_meshtastic_tags = LilyGo
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = t-watch-s3
|
||||
board_check = true
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
; The 1.0 release of the LilyGo TBEAM-S3-Core board
|
||||
[env:tbeam-s3-core]
|
||||
custom_meshtastic_hw_model = 12
|
||||
custom_meshtastic_hw_model_slug = LILYGO_TBEAM_S3_CORE
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = LILYGO T-Beam Supreme
|
||||
custom_meshtastic_images = tbeam-s3-core.svg
|
||||
custom_meshtastic_tags = LilyGo
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = tbeam-s3-core
|
||||
board_build.partitions = default_8MB.csv
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
; LilyGo T-Lora-Pager
|
||||
[env:tlora-pager]
|
||||
custom_meshtastic_hw_model = 103
|
||||
custom_meshtastic_hw_model_slug = T_LORA_PAGER
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = LILYGO T-LoRa Pager
|
||||
custom_meshtastic_images = lilygo-tlora-pager.svg
|
||||
custom_meshtastic_tags = LilyGo
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 16MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = t-deck-pro ; same as T-Deck Pro
|
||||
board_check = true
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
[env:tlora-t3s3-epaper]
|
||||
custom_meshtastic_hw_model = 16
|
||||
custom_meshtastic_hw_model_slug = TLORA_T3_S3
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = LILYGO T-LoRa T3-S3 E-Ink
|
||||
custom_meshtastic_images = tlora-t3s3-epaper.svg
|
||||
custom_meshtastic_tags = LilyGo
|
||||
custom_meshtastic_requires_dfu = true
|
||||
|
||||
extends = esp32s3_base
|
||||
board = tlora-t3s3-v1
|
||||
board_check = true
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
[env:tlora-t3s3-v1]
|
||||
custom_meshtastic_hw_model = 16
|
||||
custom_meshtastic_hw_model_slug = TLORA_T3_S3
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = LILYGO T-LoRa T3-S3
|
||||
custom_meshtastic_images = tlora-t3s3-v1.svg
|
||||
custom_meshtastic_tags = LilyGo
|
||||
custom_meshtastic_requires_dfu = true
|
||||
|
||||
extends = esp32s3_base
|
||||
board = tlora-t3s3-v1
|
||||
board_check = true
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
[env:tracksenger]
|
||||
custom_meshtastic_hw_model = 48
|
||||
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_TRACKER
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = TrackSenger (small TFT)
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = heltec_wireless_tracker
|
||||
board_build.partitions = default_8MB.csv
|
||||
@@ -16,6 +25,15 @@ lib_deps =
|
||||
lovyan03/LovyanGFX@1.2.7
|
||||
|
||||
[env:tracksenger-lcd]
|
||||
custom_meshtastic_hw_model = 48
|
||||
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_TRACKER
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = false
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = TrackSenger (big TFT)
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = heltec_wireless_tracker
|
||||
board_build.partitions = default_8MB.csv
|
||||
@@ -33,6 +51,14 @@ lib_deps =
|
||||
lovyan03/LovyanGFX@1.2.7
|
||||
|
||||
[env:tracksenger-oled]
|
||||
custom_meshtastic_hw_model = 48
|
||||
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_TRACKER
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = TrackSenger (big OLED)
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = heltec_wireless_tracker
|
||||
board_build.partitions = default_8MB.csv
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
; platformio.ini for unphone meshtastic
|
||||
|
||||
[env:unphone]
|
||||
custom_meshtastic_hw_model = 59
|
||||
custom_meshtastic_hw_model_slug = UNPHONE
|
||||
custom_meshtastic_architecture = esp32-s3
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = unPhone
|
||||
custom_meshtastic_requires_dfu = true
|
||||
custom_meshtastic_partition_scheme = 8MB
|
||||
|
||||
extends = esp32s3_base
|
||||
board = unphone
|
||||
board_build.partitions = partition-table-8MB.csv
|
||||
|
||||
@@ -34,6 +34,8 @@ lib_deps =
|
||||
adafruit/Adafruit seesaw Library@1.7.9
|
||||
# renovate: datasource=git-refs depName=RAK12034-BMX160 packageName=https://github.com/RAKWireless/RAK12034-BMX160 gitBranch=main
|
||||
https://github.com/RAKWireless/RAK12034-BMX160/archive/dcead07ffa267d3c906e9ca4a1330ab989e957e2.zip
|
||||
# renovate: datasource=custom.pio depName=adafruit/Adafruit BME680 Library packageName=adafruit/library/Adafruit BME680
|
||||
adafruit/Adafruit BME680 Library@^2.0.5
|
||||
|
||||
build_flags =
|
||||
${arduino_base.build_flags}
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
; First prototype eink/nrf52840/sx1262 device
|
||||
[env:thinknode_m1]
|
||||
custom_meshtastic_hw_model = 89
|
||||
custom_meshtastic_hw_model_slug = THINKNODE_M1
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = ThinkNode M1
|
||||
custom_meshtastic_images = thinknode_m1.svg
|
||||
custom_meshtastic_tags = Elecrow
|
||||
|
||||
extends = nrf52840_base
|
||||
board = ThinkNode-M1
|
||||
board_check = true
|
||||
|
||||
@@ -1,8 +1,17 @@
|
||||
[env:thinknode_m3]
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_images = thinknode_m3.svg
|
||||
custom_meshtastic_tags = Elecrow
|
||||
|
||||
extends = nrf52840_base
|
||||
board = ThinkNode-M3
|
||||
board_check = true
|
||||
debug_tool = jlink
|
||||
custom_meshtastic_hw_model = 115
|
||||
custom_meshtastic_hw_model_slug = THINKNODE_M3
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_display_name = Elecrow ThinkNode M3
|
||||
custom_meshtastic_actively_supported = true
|
||||
build_flags =
|
||||
${nrf52840_base.build_flags}
|
||||
-Ivariants/nrf52840/ELECROW-ThinkNode-M3
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
; ThinkNode M6 - Outdoor Solar Power nrf52840/sx1262 device
|
||||
[env:thinknode_m6]
|
||||
custom_meshtastic_hw_model = 120
|
||||
custom_meshtastic_hw_model_slug = THINKNODE_M6
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = false
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = ThinkNode M6
|
||||
custom_meshtastic_images = thinknode_m6.svg
|
||||
custom_meshtastic_tags = Elecrow
|
||||
|
||||
extends = nrf52840_base
|
||||
board = ThinkNode-M6
|
||||
board_check = true
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
; Public Beta oled/nrf52840/sx1262 device
|
||||
[env:canaryone]
|
||||
custom_meshtastic_hw_model = 29
|
||||
custom_meshtastic_hw_model_slug = CANARYONE
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = Canary One
|
||||
custom_meshtastic_tags = Canary
|
||||
|
||||
extends = nrf52840_base
|
||||
board = canaryone
|
||||
debug_tool = jlink
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
; Promicro + E22(0)-xxxM / HT-RA62 modules board variant - DIY - with TCXO
|
||||
[env:nrf52_promicro_diy_tcxo]
|
||||
custom_meshtastic_hw_model = 63
|
||||
custom_meshtastic_hw_model_slug = NRF52_PROMICRO_DIY
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = NRF52 Pro-micro DIY
|
||||
custom_meshtastic_images = promicro.svg
|
||||
custom_meshtastic_tags = DIY
|
||||
custom_meshtastic_requires_dfu = true
|
||||
|
||||
extends = nrf52840_base
|
||||
board = promicro-nrf52840
|
||||
build_flags = ${nrf52840_base.build_flags}
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
; First prototype nrf52840/sx1262 device
|
||||
[env:heltec-mesh-node-t114]
|
||||
custom_meshtastic_hw_model = 69
|
||||
custom_meshtastic_hw_model_slug = HELTEC_MESH_NODE_T114
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Heltec Mesh Node T114
|
||||
custom_meshtastic_images = heltec-mesh-node-t114.svg, heltec-mesh-node-t114-case.svg
|
||||
custom_meshtastic_tags = Heltec
|
||||
|
||||
extends = nrf52840_base
|
||||
board = heltec_mesh_node_t114
|
||||
board_level = pr
|
||||
|
||||
@@ -1,8 +1,20 @@
|
||||
; First prototype nrf52840/sx1262 device
|
||||
[env:heltec-mesh-pocket-5000]
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_images = heltec_mesh_pocket.svg
|
||||
custom_meshtastic_tags = Heltec
|
||||
|
||||
extends = nrf52840_base
|
||||
board = heltec_mesh_pocket
|
||||
debug_tool = jlink
|
||||
custom_device_hw_model = 94
|
||||
custom_meshtastic_hw_model = 94
|
||||
custom_meshtastic_hw_model_slug = HELTEC_MESH_POCKET
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_display_name = Heltec Mesh Pocket
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_variant = 5000mAh
|
||||
custom_meshtastic_key = heltec_mesh_pocket
|
||||
|
||||
# add -DCFG_SYSVIEW if you want to use the Segger systemview tool for OS profiling.
|
||||
build_flags = ${nrf52840_base.build_flags}
|
||||
@@ -31,6 +43,13 @@ lib_deps =
|
||||
[env:heltec-mesh-pocket-5000-inkhud]
|
||||
extends = nrf52840_base, inkhud
|
||||
board = heltec_mesh_pocket
|
||||
custom_meshtastic_hw_model = 94
|
||||
custom_meshtastic_hw_model_slug = HELTEC_MESH_POCKET
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_display_name = Heltec Mesh Pocket
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_variant = 5000mAh InkHUD
|
||||
custom_meshtastic_key = heltec_mesh_pocket
|
||||
build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/heltec_mesh_pocket> ${inkhud.build_src_filter}
|
||||
build_flags =
|
||||
${inkhud.build_flags}
|
||||
@@ -45,9 +64,20 @@ lib_deps =
|
||||
|
||||
; First prototype nrf52840/sx1262 device
|
||||
[env:heltec-mesh-pocket-10000]
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_images = heltec_mesh_pocket.svg
|
||||
custom_meshtastic_tags = Heltec
|
||||
|
||||
extends = nrf52840_base
|
||||
board = heltec_mesh_pocket
|
||||
debug_tool = jlink
|
||||
custom_meshtastic_hw_model = 94
|
||||
custom_meshtastic_hw_model_slug = HELTEC_MESH_POCKET
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_display_name = Heltec Mesh Pocket
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_variant = 10000mAh
|
||||
custom_meshtastic_key = heltec_mesh_pocket
|
||||
|
||||
# add -DCFG_SYSVIEW if you want to use the Segger systemview tool for OS profiling.
|
||||
build_flags = ${nrf52840_base.build_flags}
|
||||
@@ -76,6 +106,13 @@ lib_deps =
|
||||
[env:heltec-mesh-pocket-10000-inkhud]
|
||||
extends = nrf52840_base, inkhud
|
||||
board = heltec_mesh_pocket
|
||||
custom_meshtastic_hw_model = 94
|
||||
custom_meshtastic_hw_model_slug = HELTEC_MESH_POCKET
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_display_name = Heltec Mesh Pocket
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_variant = 10000mAh InkHUD
|
||||
custom_meshtastic_key = heltec_mesh_pocket
|
||||
build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/heltec_mesh_pocket> ${inkhud.build_src_filter}
|
||||
build_flags =
|
||||
${inkhud.build_flags}
|
||||
|
||||
@@ -19,6 +19,15 @@ lib_deps =
|
||||
bblanchon/ArduinoJson@6.21.4
|
||||
|
||||
[env:heltec-mesh-solar]
|
||||
custom_meshtastic_hw_model = 108
|
||||
custom_meshtastic_hw_model_slug = HELTEC_MESH_SOLAR
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = false
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Heltec MeshSolar
|
||||
custom_meshtastic_images = heltec-mesh-solar.svg
|
||||
custom_meshtastic_tags = Heltec
|
||||
|
||||
extends = heltec_mesh_solar_base
|
||||
build_flags = ${heltec_mesh_solar_base.build_flags}
|
||||
-DSPI_INTERFACES_COUNT=1
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
[env:muzi-base]
|
||||
custom_meshtastic_hw_model = 93
|
||||
custom_meshtastic_hw_model_slug = MUZI_BASE
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = muzi BASE
|
||||
custom_meshtastic_images = muzi_base.svg
|
||||
custom_meshtastic_tags = muzi
|
||||
|
||||
extends = nrf52840_base
|
||||
board = muzi-base
|
||||
build_flags = ${nrf52840_base.build_flags}
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
; First prototype eink/nrf52840/sx1262 device
|
||||
[env:nano-g2-ultra]
|
||||
custom_meshtastic_hw_model = 18
|
||||
custom_meshtastic_hw_model_slug = NANO_G2_ULTRA
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 2
|
||||
custom_meshtastic_display_name = Nano G2 Ultra
|
||||
custom_meshtastic_images = nano-g2-ultra.svg
|
||||
custom_meshtastic_tags = B&Q
|
||||
|
||||
extends = nrf52840_base
|
||||
board = nano-g2-ultra
|
||||
debug_tool = jlink
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
; The R1 Neo board
|
||||
[env:r1-neo]
|
||||
custom_meshtastic_hw_model = 101
|
||||
custom_meshtastic_hw_model_slug = MUZI_R1_NEO
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = muzi R1 Neo
|
||||
custom_meshtastic_images = muzi_r1_neo.svg
|
||||
custom_meshtastic_tags = muzi
|
||||
|
||||
extends = nrf52840_base
|
||||
board = r1-neo
|
||||
board_check = true
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
; Firmware for the WisMesh HUB RAK2560, including a onewire module to talk to the RAK 9154 solar battery.
|
||||
[env:rak2560]
|
||||
custom_meshtastic_hw_model = 22
|
||||
custom_meshtastic_hw_model_slug = WISMESH_HUB
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = RAK WisMesh Repeater
|
||||
custom_meshtastic_images = rak2560.svg
|
||||
custom_meshtastic_tags = RAK
|
||||
|
||||
extends = nrf52840_base
|
||||
board = wiscore_rak4631
|
||||
board_check = true
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
; The very slick RAK wireless RAK 4631 / 4630 board - Unified firmware for 5005/19003, with or without OLED RAK 1921
|
||||
[env:rak3401-1watt]
|
||||
custom_meshtastic_hw_model = 117
|
||||
custom_meshtastic_hw_model_slug = RAK3401
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = RAK3401 1W
|
||||
custom_meshtastic_images = rak3401.svg
|
||||
custom_meshtastic_tags = RAK
|
||||
custom_meshtastic_requires_dfu = true
|
||||
|
||||
extends = nrf52840_base
|
||||
board = wiscore_rak4631
|
||||
board_check = true
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
; The very slick RAK wireless RAK 4631 / 4630 board - Unified firmware for 5005/19003, with or without OLED RAK 1921
|
||||
[env:rak4631]
|
||||
custom_meshtastic_hw_model = 9
|
||||
custom_meshtastic_hw_model_slug = RAK4631
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = RAK WisBlock 4631
|
||||
custom_meshtastic_images = rak4631.svg, rak4631_case.svg
|
||||
custom_meshtastic_tags = RAK
|
||||
|
||||
extends = nrf52840_base
|
||||
board = wiscore_rak4631
|
||||
board_level = pr
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
; NomadStar Meteor Pro based on RAK4631 with RGBW LED LP5562 support
|
||||
[env:rak4631_nomadstar_meteor_pro]
|
||||
custom_meshtastic_hw_model = 96
|
||||
custom_meshtastic_hw_model_slug = NOMADSTAR_METEOR_PRO
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = NomadStar Meteor Pro
|
||||
custom_meshtastic_images = meteor_pro.svg
|
||||
custom_meshtastic_tags = NomadStar
|
||||
|
||||
extends = nrf52840_base
|
||||
board = wiscore_rak4631
|
||||
board_check = true
|
||||
|
||||
@@ -1,8 +1,17 @@
|
||||
; The very slick RAK wireless RAK 4631 / 4630 board - Unified firmware for 5005/19003, with or without OLED RAK 1921
|
||||
[env:rak_wismeshtag]
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_images = rak_wismesh_tag.svg
|
||||
custom_meshtastic_tags = RAK
|
||||
|
||||
extends = nrf52840_base
|
||||
board = wiscore_rak4631
|
||||
board_check = true
|
||||
custom_meshtastic_hw_model = 105
|
||||
custom_meshtastic_hw_model_slug = WISMESH_TAG
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_display_name = RAK WisMesh Tag
|
||||
custom_meshtastic_actively_supported = true
|
||||
build_flags = ${nrf52840_base.build_flags}
|
||||
-I variants/nrf52840/rak_wismeshtag
|
||||
-D WISMESH_TAG
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
; The very slick RAK wireless RAK10701 Field Tester device. Note you will have to flash to Arduino bootloader to use this firmware. Be aware touch is not currently working.
|
||||
[env:rak_wismeshtap]
|
||||
custom_meshtastic_hw_model = 84
|
||||
custom_meshtastic_hw_model_slug = WISMESH_TAP
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = RAK WisMesh Tap
|
||||
custom_meshtastic_images = rak-wismeshtap.svg
|
||||
custom_meshtastic_tags = RAK
|
||||
|
||||
extends = nrf52840_base
|
||||
board = wiscore_rak4631
|
||||
build_flags = ${nrf52840_base.build_flags}
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
[env:seeed_solar_node]
|
||||
custom_meshtastic_hw_model = 95
|
||||
custom_meshtastic_hw_model_slug = SEEED_SOLAR_NODE
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Seeed SenseCAP Solar Node
|
||||
custom_meshtastic_images = seeed_solar.svg
|
||||
custom_meshtastic_tags = Seeed
|
||||
|
||||
board = seeed_solar_node
|
||||
extends = nrf52840_base
|
||||
;board_level = extra
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
[env:seeed_wio_tracker_L1]
|
||||
custom_meshtastic_hw_model = 99
|
||||
custom_meshtastic_hw_model_slug = SEEED_WIO_TRACKER_L1
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Seeed Wio Tracker L1
|
||||
custom_meshtastic_images = wio_tracker_l1_case.svg
|
||||
custom_meshtastic_tags = Seeed
|
||||
custom_meshtastic_requires_dfu = true
|
||||
|
||||
board = seeed_wio_tracker_L1
|
||||
extends = nrf52840_base
|
||||
build_flags = ${nrf52840_base.build_flags}
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
[env:seeed_wio_tracker_L1_eink]
|
||||
custom_meshtastic_hw_model = 100
|
||||
custom_meshtastic_hw_model_slug = SEEED_WIO_TRACKER_L1_EINK
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Seeed Wio Tracker L1 E-Ink
|
||||
custom_meshtastic_images = wio_tracker_l1_eink.svg
|
||||
custom_meshtastic_tags = Seeed
|
||||
|
||||
board = seeed_wio_tracker_L1
|
||||
extends = nrf52840_base
|
||||
;board_level = extra
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
; Seeed Xiao BLE: https://wiki.seeedstudio.com/XIAO_BLE/
|
||||
[env:seeed_xiao_nrf52840_kit]
|
||||
custom_meshtastic_hw_model = 88
|
||||
custom_meshtastic_hw_model_slug = XIAO_NRF52_KIT
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = Seeed Xiao NRF52840 Kit
|
||||
custom_meshtastic_images = seeed_xiao_nrf52_kit.svg
|
||||
custom_meshtastic_tags = Seeed
|
||||
|
||||
extends = nrf52840_base
|
||||
board = xiao_ble_sense
|
||||
board_level = pr
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
; Using original screen class
|
||||
[env:t-echo-lite]
|
||||
custom_meshtastic_hw_model = 109
|
||||
custom_meshtastic_hw_model_slug = T_ECHO_LITE
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = false
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = LILYGO T-Echo Lite
|
||||
custom_meshtastic_images = techo_lite.svg
|
||||
custom_meshtastic_tags = LilyGo
|
||||
|
||||
extends = nrf52840_base
|
||||
board = t-echo
|
||||
board_check = true
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
; Using original screen class
|
||||
[env:t-echo]
|
||||
custom_meshtastic_hw_model = 7
|
||||
custom_meshtastic_hw_model_slug = T_ECHO
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_display_name = LILYGO T-Echo
|
||||
custom_meshtastic_images = t-echo.svg
|
||||
custom_meshtastic_tags = LilyGo
|
||||
|
||||
extends = nrf52840_base
|
||||
board = t-echo
|
||||
board_level = pr
|
||||
|
||||
@@ -1,7 +1,16 @@
|
||||
[env:tracker-t1000-e]
|
||||
custom_meshtastic_support_level = 1
|
||||
custom_meshtastic_images = tracker-t1000-e.svg
|
||||
custom_meshtastic_tags = Seeed
|
||||
|
||||
extends = nrf52840_base
|
||||
board = tracker-t1000-e
|
||||
board_level = pr
|
||||
custom_meshtastic_hw_model = 71
|
||||
custom_meshtastic_hw_model_slug = TRACKER_T1000_E
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_display_name = Seeed SenseCAP T1000-E
|
||||
custom_meshtastic_actively_supported = true
|
||||
build_flags = ${nrf52840_base.build_flags}
|
||||
-Ivariants/nrf52840/tracker-t1000-e
|
||||
-Isrc/platform/nrf52/softdevice
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
; The red tracker Dev Board with the WM1110 module
|
||||
[env:wio-tracker-wm1110]
|
||||
custom_meshtastic_hw_model = 21
|
||||
custom_meshtastic_hw_model_slug = WIO_WM1110
|
||||
custom_meshtastic_architecture = nrf52840
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = Seeed Wio WM1110 Tracker
|
||||
custom_meshtastic_images = wio-tracker-wm1110.svg
|
||||
custom_meshtastic_tags = Seeed
|
||||
custom_meshtastic_requires_dfu = true
|
||||
|
||||
extends = nrf52840_base
|
||||
board = wio-tracker-wm1110
|
||||
build_flags = ${nrf52840_base.build_flags}
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
[env:rak11310]
|
||||
custom_meshtastic_hw_model = 26
|
||||
custom_meshtastic_hw_model_slug = RAK11310
|
||||
custom_meshtastic_architecture = rp2040
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 2
|
||||
custom_meshtastic_display_name = RAK WisBlock 11310
|
||||
custom_meshtastic_images = rak11310.svg
|
||||
custom_meshtastic_tags = RAK
|
||||
custom_meshtastic_requires_dfu = true
|
||||
|
||||
extends = rp2040_base
|
||||
board = rakwireless_rak11300
|
||||
board_level = pr
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
[env:rp2040-lora]
|
||||
custom_meshtastic_hw_model = 30
|
||||
custom_meshtastic_hw_model_slug = RP2040_LORA
|
||||
custom_meshtastic_architecture = rp2040
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 2
|
||||
custom_meshtastic_display_name = RP2040 LoRa
|
||||
custom_meshtastic_tags = Waveshare
|
||||
custom_meshtastic_requires_dfu = true
|
||||
|
||||
extends = rp2040_base
|
||||
board = rpipico
|
||||
upload_protocol = picotool
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
[env:pico]
|
||||
custom_meshtastic_hw_model = 47
|
||||
custom_meshtastic_hw_model_slug = RPI_PICO
|
||||
custom_meshtastic_architecture = rp2040
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = Raspberry Pi Pico
|
||||
custom_meshtastic_images = pico.svg
|
||||
custom_meshtastic_tags = RPi, DIY
|
||||
custom_meshtastic_requires_dfu = true
|
||||
|
||||
extends = rp2040_base
|
||||
board = rpipico
|
||||
board_level = pr
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
[env:picow]
|
||||
custom_meshtastic_hw_model = 47
|
||||
custom_meshtastic_hw_model_slug = RPI_PICO
|
||||
custom_meshtastic_architecture = rp2040
|
||||
custom_meshtastic_actively_supported = true
|
||||
custom_meshtastic_support_level = 3
|
||||
custom_meshtastic_display_name = Raspberry Pi Pico W
|
||||
custom_meshtastic_images = rpipicow.svg
|
||||
custom_meshtastic_tags = RPi, DIY
|
||||
custom_meshtastic_requires_dfu = true
|
||||
|
||||
extends = rp2040_base
|
||||
board = rpipicow
|
||||
board_level = pr
|
||||
|
||||
Reference in New Issue
Block a user