Merge develop into packet authentication policy

This commit is contained in:
Benjamin Faershtein
2026-07-19 15:33:16 -07:00
244 changed files with 10266 additions and 1139 deletions
+1 -1
View File
@@ -12,4 +12,4 @@ build_flags =
lib_deps =
${esp32_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
+1 -1
View File
@@ -70,7 +70,7 @@ lib_deps =
https://github.com/mverch67/libpax/archive/6f52ee989301cdabaeef00bcbf93bff55708ce2f.zip
# renovate: datasource=custom.pio depName=XPowersLib packageName=lewisxhe/library/XPowersLib
lewisxhe/XPowersLib@0.3.3
# renovate: datasource=git-refs depName=meshtastic/Crypto packageName=https://github.com/meshtastic/Crypto gitBranch=master
# renovate: datasource=git-refs depName=meshtastic/Crypto packageName=https://github.com/meshtastic/Crypto gitBranch=main
https://github.com/meshtastic/Crypto/archive/591ff9a690e8168ccb7a36abde8d7783e448d395.zip
lib_ignore =
+12 -11
View File
@@ -22,16 +22,17 @@ build_flags =
-DMESHTASTIC_EXCLUDE_RANGETEST=1
; HACK HACK HACK this is just a proof of concept ESP32+NimBLE but these
; includes need to be done properly somehow
-I${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/nimble/host/include
-I${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/nimble/include
-I${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/porting/nimble/include
-I${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/port/include
-I${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/porting/npl/freertos/include
-I${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/nimble/transport/include
-I${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/nimble/host/services/gap/include
-I${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/esp-hci/include
-I${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/nimble/host/services/gatt/include
-I${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/nimble/host/util/include
; Quotes keep Windows packages_dir backslashes intact through POSIX flag parsing
-I"${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/nimble/host/include"
-I"${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/nimble/include"
-I"${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/porting/nimble/include"
-I"${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/port/include"
-I"${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/porting/npl/freertos/include"
-I"${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/nimble/transport/include"
-I"${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/nimble/host/services/gap/include"
-I"${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/esp-hci/include"
-I"${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/nimble/host/services/gatt/include"
-I"${platformio.packages_dir}/framework-espidf/components/bt/host/nimble/nimble/nimble/host/util/include"
custom_sdkconfig =
${esp32_common.custom_sdkconfig}
@@ -55,5 +56,5 @@ lib_deps =
https://github.com/mverch67/libpax/archive/6f52ee989301cdabaeef00bcbf93bff55708ce2f.zip
# renovate: datasource=custom.pio depName=XPowersLib packageName=lewisxhe/library/XPowersLib
lewisxhe/XPowersLib@0.3.3
# renovate: datasource=git-refs depName=meshtastic/Crypto packageName=https://github.com/meshtastic/Crypto gitBranch=master
# renovate: datasource=git-refs depName=meshtastic/Crypto packageName=https://github.com/meshtastic/Crypto gitBranch=main
https://github.com/meshtastic/Crypto/archive/591ff9a690e8168ccb7a36abde8d7783e448d395.zip
+1 -1
View File
@@ -35,4 +35,4 @@ lib_ignore =
lib_deps =
${esp32_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
+1 -1
View File
@@ -11,7 +11,7 @@ build_flags =
lib_deps =
${esp32_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
# renovate: datasource=custom.pio depName=SX1509 IO Expander packageName=sparkfun/library/SX1509 IO Expander
sparkfun/SX1509 IO Expander@3.0.6
# renovate: datasource=custom.pio depName=APA102 packageName=pololu/library/APA102
+1 -1
View File
@@ -104,7 +104,7 @@ lib_deps =
${networking_extra.lib_deps}
${environmental_base.lib_deps}
${radiolib_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic/Crypto packageName=https://github.com/meshtastic/Crypto gitBranch=master
# renovate: datasource=git-refs depName=meshtastic/Crypto packageName=https://github.com/meshtastic/Crypto gitBranch=main
https://github.com/meshtastic/Crypto/archive/591ff9a690e8168ccb7a36abde8d7783e448d395.zip
# renovate: datasource=git-refs depName=meshtastic-ESP32_Codec2 packageName=https://github.com/meshtastic/ESP32_Codec2 gitBranch=master
https://github.com/meshtastic/ESP32_Codec2/archive/633326c78ac251c059ab3a8c430fcdf25b41672f.zip
@@ -51,7 +51,7 @@ lib_deps = ${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=TCA9534 packageName=hideakitai/library/TCA9534
hideakitai/TCA9534@0.1.1
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
[crowpanel_small_esp32s3_base] ; 2.4, 2.8, 3.5 inch
extends = crowpanel_base
+1 -1
View File
@@ -134,6 +134,6 @@ build_flags =
lib_deps = ${heltec_v4_base.lib_deps}
${device-ui_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
# renovate: datasource=git-refs depName=Quency-D_chsc6x packageName=https://github.com/Quency-D/chsc6x gitBranch=master
https://github.com/Quency-D/chsc6x/archive/3b2b6cebf3177b3e2c33d06e07909b0b10159516.zip
+1 -1
View File
@@ -140,6 +140,6 @@ build_flags =
lib_deps = ${heltec_v4_r8_base.lib_deps}
${device-ui_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
# renovate: datasource=git-refs depName=Quency-D_chsc6x packageName=https://github.com/Quency-D/chsc6x gitBranch=master
https://github.com/Quency-D/chsc6x/archive/3b2b6cebf3177b3e2c33d06e07909b0b10159516.zip
@@ -26,4 +26,4 @@ build_flags =
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
@@ -22,4 +22,4 @@ build_flags =
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
@@ -21,4 +21,4 @@ build_flags =
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
+1 -1
View File
@@ -55,7 +55,7 @@ lib_deps =
${esp32s3_base.lib_deps}
${device-ui_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
[mesh_tab_xpt2046]
extends = mesh_tab_base
@@ -25,7 +25,7 @@ build_flags =
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
build_src_filter =
${esp32s3_base.build_src_filter}
@@ -37,7 +37,7 @@ build_flags =
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
[env:rak_wismesh_tap_v2-tft]
extends = env:rak_wismesh_tap_v2
+1 -1
View File
@@ -29,7 +29,7 @@ build_flags = ${esp32s3_base.build_flags}
lib_deps = ${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
# renovate: datasource=git-refs depName=ESP8266Audio packageName=https://github.com/meshtastic/ESP8266Audio gitBranch=meshtastic-2.0.0-dacfix
https://github.com/meshtastic/ESP8266Audio/archive/343024632ee78d6216907b2353fc943a62422d80.zip
# renovate: datasource=custom.pio depName=ESP8266SAM packageName=earlephilhower/library/ESP8266SAM
+1 -1
View File
@@ -22,7 +22,7 @@ build_flags = ${esp32s3_base.build_flags}
lib_deps = ${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
# renovate: datasource=custom.pio depName=SensorLib packageName=lewisxhe/library/SensorLib
lewisxhe/SensorLib@0.3.4
# renovate: datasource=custom.pio depName=Adafruit DRV2605 packageName=adafruit/library/Adafruit DRV2605 Library
+3 -3
View File
@@ -1,7 +1,7 @@
[t5s3_epaper_base]
extends = esp32s3_base
board = t5-epaper-s3
board_build.partition = default_16MB.csv
board_build.partitions = default_16MB.csv
board_check = true
upload_protocol = esptool
build_flags = -fno-strict-aliasing
@@ -30,8 +30,8 @@ lib_deps =
[env:t5s3_epaper_inkhud]
extends = t5s3_epaper_base, inkhud
board_level = extra # inkhud port is incomplete
board_check = false
board_level = extra
board_check = true
build_flags =
${t5s3_epaper_base.build_flags}
${inkhud.build_flags}
+1 -1
View File
@@ -33,7 +33,7 @@ build_flags = ${esp32s3_base.build_flags}
lib_deps = ${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
# renovate: datasource=git-refs depName=ESP8266Audio packageName=https://github.com/meshtastic/ESP8266Audio gitBranch=meshtastic-2.0.0-dacfix
https://github.com/meshtastic/ESP8266Audio/archive/343024632ee78d6216907b2353fc943a62422d80.zip
# renovate: datasource=custom.pio depName=ESP8266SAM packageName=earlephilhower/library/ESP8266SAM
@@ -1,5 +1,6 @@
#pragma once
#include "FSCommon.h"
#include "configuration.h"
#ifdef MESHTASTIC_INCLUDE_NICHE_GRAPHICS
@@ -29,9 +30,8 @@ void setupNicheGraphics()
// SPI
// -----------------------------
// Display is connected to HSPI
SPIClass *hspi = new SPIClass(HSPI);
hspi->begin(PIN_EINK_SCLK, -1, PIN_EINK_MOSI, PIN_EINK_CS);
// Display shares the HSPI bus with the SD card; reuse it rather than re-init the same host.
SPIClass *hspi = &SPI_HSPI;
// E-Ink Driver
// -----------------------------
@@ -13,13 +13,16 @@ custom_meshtastic_has_ink_hud = true
extends = esp32s3_base
board = tlora-t3s3-v1
board_check = true
board_build.partitions = partition-table-t3s3.csv
upload_protocol = esptool
build_flags =
build_flags =
${esp32s3_base.build_flags}
-D TLORA_T3S3_EPAPER
-I variants/esp32s3/tlora_t3s3_epaper
-DUSE_EINK
-DMESHTASTIC_EXCLUDE_AUDIO=1
-DMESHTASTIC_EXCLUDE_WEBSERVER=1
-DEINK_DISPLAY_MODEL=GxEPD2_213_BN
-DEINK_WIDTH=250
-DEINK_HEIGHT=122
@@ -38,7 +41,11 @@ lib_deps =
extends = esp32s3_base, inkhud
board = tlora-t3s3-v1
board_check = true
board_build.partitions = partition-table-t3s3.csv
upload_protocol = esptool
custom_sdkconfig =
${esp32s3_base.custom_sdkconfig}
CONFIG_ESP_IPC_TASK_STACK_SIZE=2048 ; default 1024 overflows during NimBLE init off USB power
build_src_filter =
${esp32s3_base.build_src_filter}
${inkhud.build_src_filter}
@@ -47,6 +54,8 @@ build_flags =
${inkhud.build_flags}
-I variants/esp32s3/tlora_t3s3_epaper
-D TLORA_T3S3_EPAPER
-DMESHTASTIC_EXCLUDE_AUDIO=1
-DMESHTASTIC_EXCLUDE_WEBSERVER=1
lib_deps =
${inkhud.lib_deps} ; InkHUD libs first, so we get GFXRoot instead of AdafruitGFX
${esp32s3_base.lib_deps}
@@ -12,9 +12,10 @@ custom_meshtastic_requires_dfu = true
extends = esp32s3_base
board = tlora-t3s3-v1
board_check = true
board_build.partitions = partition-table-t3s3.csv
upload_protocol = esptool
build_flags =
build_flags =
${esp32s3_base.build_flags}
-D TLORA_T3S3_V1
-I variants/esp32s3/tlora_t3s3_v1
+2 -2
View File
@@ -22,7 +22,7 @@ build_flags =
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
[env:tracksenger-lcd]
custom_meshtastic_hw_model = 48
@@ -48,7 +48,7 @@ build_flags =
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
[env:tracksenger-oled]
custom_meshtastic_hw_model = 48
+1 -1
View File
@@ -36,7 +36,7 @@ build_src_filter =
lib_deps = ${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
lovyan03/LovyanGFX@1.2.25
# TODO renovate https://gitlab.com/hamishcunningham/unphonelibrary#meshtastic@9.0.0
https://gitlab.com/hamishcunningham/unphonelibrary/-/archive/meshtastic/unphonelibrary-meshtastic.zip
@@ -0,0 +1,20 @@
; Big Visualizer - ESP32-S3-DevKitC-1 (N16R8) + 128x64 HUB75 matrix + Wio-SX1262 - DIY
[env:visualizer-hub75]
extends = esp32s3_base
board = esp32-s3-devkitc-1
board_check = true
board_build.partitions = default_16MB.csv
board_level = extra
board_upload.flash_size = 16MB ; N16R8 -> 16MB flash
board_build.arduino.memory_type = qio_opi ; N16R8 -> 8MB octal (OPI) PSRAM
build_flags =
${esp32s3_base.build_flags}
-D VISUALIZER_HUB75
-D BOARD_HAS_PSRAM
-D ARDUINO_USB_MODE=1
-D ARDUINO_USB_CDC_ON_BOOT=1
-I variants/esp32s3/visualizer-hub75
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=github-tags depName=ESP32-HUB75-MatrixPanel-I2S-DMA packageName=mrfaptastic/ESP32-HUB75-MatrixPanel-I2S-DMA
https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-I2S-DMA/archive/refs/tags/3.0.14.zip
@@ -0,0 +1,66 @@
// Big Visualizer - ESP32-S3-DevKitC-1 (N16R8) driving a 128x64 HUB75 RGB matrix
// via the seengreat "RGB Matrix Adapter Board (E)" Rev. 2.2 (V2.x), plus a
// Wio-SX1262 (for XIAO, Seeed p/n 6379) LoRa header board.
#define BUTTON_PIN 0
#define I2C_SDA 41
#define I2C_SCL 42
// --- Display: HUB75 via seengreat Shield (V2.x, hard-wired) -----------------
#define HAS_SPI_TFT 1 // enable the color BaseUI path (TFTColorRegions/theming)
#define DISPLAY_FORCE_SMALL_FONTS // 128x64 panel: keep OLED-sized fonts, not big TFT fonts
#define USE_HUB75 // select HUB75Display in Screen.cpp
#define TFT_WIDTH 128
#define TFT_HEIGHT 64
#define HUB75_BRIGHTNESS_DEFAULT 180
// RGB data lines.
// This panel is BGR: R and B are swapped per half vs. the nominal seengreat
// mapping (R1<->B1, R2<->B2), verified at bring-up. Software-only fix; the
// shield board is unchanged. G / address / control lines stay as routed.
#define HUB75_R1 17
#define HUB75_G1 8
#define HUB75_B1 18
#define HUB75_R2 15
#define HUB75_G2 1
#define HUB75_B2 16
// Row-address lines (1/32 scan -> A..E)
#define HUB75_A 7
#define HUB75_B 48
#define HUB75_C 6
#define HUB75_D 47
#define HUB75_E 2
// Control lines
#define HUB75_CLK 5
#define HUB75_LAT 21
#define HUB75_OE 4
// --- Radio: Wio-SX1262 for XIAO (header board, Seeed p/n 6379) ---------------
#define USE_SX1262
#define LORA_SCK 12
#define LORA_MISO 13
#define LORA_MOSI 11
#define LORA_CS 10
#define LORA_RESET 9
#define LORA_DIO1 40
#define SX126X_CS LORA_CS
#define SX126X_SCK LORA_SCK
#define SX126X_MOSI LORA_MOSI
#define SX126X_MISO LORA_MISO
#define SX126X_DIO1 LORA_DIO1
#define SX126X_BUSY 14
#define SX126X_RESET LORA_RESET
#define SX126X_DIO2_AS_RF_SWITCH
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
#define SX126X_RXEN 39
#define SX126X_TXEN RADIOLIB_NC
#define SX126X_MAX_POWER 22
#define LED_HEARTBEAT 38
+7 -5
View File
@@ -2,7 +2,7 @@
[portduino_base]
platform =
# renovate: datasource=git-refs depName=platform-native packageName=https://github.com/meshtastic/platform-native gitBranch=develop
https://github.com/meshtastic/platform-native/archive/61067ac3774e4fe27aa9762c72cebea507f116c8.zip
https://github.com/meshtastic/platform-native/archive/86c62edfb7084d11669aa255411a70580e83823b.zip
framework = arduino
build_src_filter =
@@ -23,12 +23,12 @@ lib_deps =
${networking_extra.lib_deps}
${radiolib_base.lib_deps}
${environmental_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic/Crypto packageName=https://github.com/meshtastic/Crypto gitBranch=master
# renovate: datasource=git-refs depName=meshtastic/Crypto packageName=https://github.com/meshtastic/Crypto gitBranch=main
https://github.com/meshtastic/Crypto/archive/591ff9a690e8168ccb7a36abde8d7783e448d395.zip
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.24
; # renovate: datasource=git-refs depName=libch341-spi-userspace packageName=https://github.com/pine64/libch341-spi-userspace gitBranch=main
https://github.com/pine64/libch341-spi-userspace/archive/2e5ff751d0c39667993df672cb683740ed5c9394.zip
lovyan03/LovyanGFX@1.2.25
; # renovate: datasource=git-refs depName=libch341-spi-userspace packageName=https://github.com/meshtastic/libch341-spi-userspace gitBranch=main
https://github.com/meshtastic/libch341-spi-userspace/archive/03bf505d6e5904092c1c389c45b01098f7a302fe.zip
# renovate: datasource=custom.pio depName=adafruit/Adafruit seesaw Library packageName=adafruit/library/Adafruit seesaw Library
adafruit/Adafruit seesaw Library@1.7.9
# renovate: datasource=git-refs depName=RAK12034-BMX160 packageName=https://github.com/RAKWireless/RAK12034-BMX160 gitBranch=main
@@ -56,6 +56,8 @@ build_flags_common =
-luv
-std=gnu17
-std=gnu++17
-DBASEUI_HAS_GAMES=1
-DMAX_TFT_COLOR_REGIONS=64
build_flags =
${portduino_base.build_flags_common}
+57
View File
@@ -0,0 +1,57 @@
#pragma once
#include "configuration.h"
#if defined(HAS_HUB75_NATIVE)
#include <OLEDDisplay.h>
#ifndef HUB75_BRIGHTNESS_DEFAULT
#define HUB75_BRIGHTNESS_DEFAULT 100 // rpi-rgb-led-matrix brightness is a 1..100 percentage
#endif
namespace rgb_matrix
{
class RGBMatrix;
class FrameCanvas;
} // namespace rgb_matrix
/**
* Native (Raspberry Pi / Portduino) HUB75 RGB-matrix display backend.
*
* Drives the panel with hzeller/rpi-rgb-led-matrix. Like the ESP32 HUB75Display it plugs into the
* BaseUI color path by subclassing OLEDDisplay and expanding the mono framebuffer into RGB via the
* shared TFTColorRegions/TFTPalette helpers. It is a separate class (not shared with the ESP32
* driver) so no rpi-rgb-led-matrix code lives in src/graphics/. All wiring/tuning comes from
* config.yaml (portduino_config.hub75_*); the library owns the GPIO pins.
*
* Bodies live in src/platform/portduino/HUB75Native.cpp (compiled native-only).
*/
class HUB75Native : public OLEDDisplay
{
public:
HUB75Native(uint8_t address, int sda, int scl, OLEDDISPLAY_GEOMETRY geometry, HW_I2C i2cBus);
~HUB75Native();
// Redraw the whole panel from the BaseUI buffer (region-aware color expansion).
void display() override;
void setDisplayBrightness(uint8_t brightness);
protected:
int getBufferOffset(void) override { return 0; }
void sendCommand(uint8_t com) override;
bool connect() override;
private:
rgb_matrix::RGBMatrix *matrix = nullptr;
// Offscreen buffer for tear-free updates: display() draws here, then SwapOnVSync() atomically
// presents it. Without this, writing into the live canvas while the refresh thread scans it
// tears (worse when display() is contended during packet TX/RX).
rgb_matrix::FrameCanvas *offscreen = nullptr;
uint8_t brightness = HUB75_BRIGHTNESS_DEFAULT; // 1..100
};
#endif // HAS_HUB75_NATIVE
+83 -1
View File
@@ -20,6 +20,11 @@ build_flags = ${native_base.build_flags}
!pkg-config --libs openssl --silence-errors || :
!pkg-config --cflags --libs sdl2 --silence-errors || :
!pkg-config --cflags --libs libbsd-overlay --silence-errors || :
; Optional HUB75 RGB-matrix support on Raspberry Pi via hzeller/rpi-rgb-led-matrix.
; When the lib is installed (provides rgbmatrix.pc), these add its include/link flags and
; __has_include(<led-matrix.h>) enables HAS_HUB75_NATIVE (see configuration.h). Absent -> no-op.
!pkg-config --cflags rgbmatrix --silence-errors || :
!pkg-config --libs rgbmatrix --silence-errors || :
[env:native-tft]
extends = native_base
@@ -246,6 +251,83 @@ build_flags = ${env:native-macos.build_flags}
build_src_filter = ${env:native-macos.build_src_filter}
lib_ignore = ${env:native-macos.lib_ignore}
; ---------------------------------------------------------------------------
; Native build for Windows (x86_64) via the MSYS2 UCRT64 MinGW-w64 toolchain.
; Headless meshtasticd.exe running in SimRadio mode (`-s`). No BlueZ, libgpiod or
; Linux I2C, and no UDP multicast: the framework's AsyncUDP.cpp is BSD sockets,
; so HAS_UDP_MULTICAST stays unset here as it does on macOS.
;
; MSVC is not an option: platform-native's builder calls env.Tool("gcc") and the
; firmware builds as gnu17/gnu++17 with GNU extensions throughout.
;
; Prerequisites (MSYS2, https://www.msys2.org/):
; pacman -S --needed mingw-w64-ucrt-x86_64-{gcc,pkgconf,yaml-cpp,libuv,jsoncpp,openssl,libusb}
;
; argp is not packaged for MSYS2's mingw environments (msys/libargp links the
; msys-2.0.dll emulation layer and can't be used for a native binary), yet
; Arduino.h includes <argp.h> and main.cpp calls argp_parse(). Build it once from
; source, the same dependency macOS meets with `brew install argp-standalone`:
; git clone https://github.com/tom42/argp-standalone
; cd argp-standalone && cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Release .
; cmake --build build
; cp include/argp-standalone/argp.h /ucrt64/include/argp.h ; ships no install() rules
; cp build/src/libargp-standalone.a /ucrt64/lib/libargp.a
;
; Build from any shell with /ucrt64/bin on PATH:
; pio run -e native-windows
; .pio/build/native-windows/meshtasticd.exe -s
; ---------------------------------------------------------------------------
[env:native-windows]
extends = native_base
build_flags = ${portduino_base.build_flags_common}
-I variants/native/portduino
; Our drop-in libpinedio-usb.h, replacing the libusb one: libusb can only reach
; a device bound to WinUSB, which means Zadig on every machine. See
; src/platform/portduino/windows/libpinedio_ch341dll.c.
-I src/platform/portduino/windows/include
-largp
-lws2_32 ; GpsdSerial.cpp's TCP client
-lbcrypt ; BCryptGenRandom() in HardwareRNG.cpp
-liphlpapi ; GetAdaptersAddresses() host-MAC fallback in PortduinoGlue.cpp
; libch341's libpinedio-usb.h pulls in libusb.h and so <windows.h>, which
; collides with the Arduino API: winuser.h's `typedef struct tagINPUT INPUT` vs
; the PinMode enumerator, and rpcndr.h's `typedef unsigned char boolean` vs
; Arduino's `typedef bool boolean`. NOUSER and WIN32_LEAN_AND_MEAN keep those
; headers out, NOMINMAX stops min/max being macroed over std::min/std::max.
-DWIN32_LEAN_AND_MEAN
-DNOMINMAX
-DNOUSER
-DNOGDI
; yaml-cpp declares its API __declspec(dllimport) unless told the link is
; static, leaving every YAML symbol undefined as __imp_*.
-DYAML_CPP_STATIC_DEFINE
; Headless: variant.h would otherwise default HAS_SCREEN to 1 and pull in the
; screen renderer; EXCLUDE_SCREEN gates the `screen->...` hooks in the sensors.
-DHAS_SCREEN=0
-DMESHTASTIC_EXCLUDE_SCREEN=1
!pkg-config --cflags --libs openssl --silence-errors || :
build_unflags =
-fPIC ; ignored on Windows, where all code is position-independent
; Static link, so meshtasticd.exe stands alone and can't be hijacked by a stray
; System32 DLL. PlatformIO only feeds build_flags to the compile step, hence the script.
extra_scripts =
${env.extra_scripts}
post:extra_scripts/windows_link_flags.py
; LinuxInput drives evdev; Panel_sdl/TFTDisplay pull LovyanGFX. Neither is needed
; for the headless build.
build_src_filter = ${native_base.build_src_filter}
-<input/LinuxInput.cpp>
-<input/LinuxInputImpl.cpp>
-<graphics/Panel_sdl.cpp>
-<graphics/TFTDisplay.cpp>
; LovyanGFX includes <malloc.h> and is only needed by the TFT variants. The pine64
; libch341 is the libusb backend that libpinedio_ch341dll.c replaces; keeping both
; would duplicate every pinedio_* symbol.
lib_ignore =
${portduino_base.lib_ignore}
LovyanGFX
Pine libch341-spi Userspace library
; ---------------------------------------------------------------------------
; WASM (Emscripten) - the portduino node compiled to WebAssembly, driving a real
; LoRa radio over WebUSB through a CH341 (src/platform/portduino/wasm/). The same
@@ -319,7 +401,7 @@ lib_ldf_mode = chain+
lib_deps =
${env.lib_deps}
${radiolib_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic/Crypto packageName=https://github.com/meshtastic/Crypto gitBranch=master
# renovate: datasource=git-refs depName=meshtastic/Crypto packageName=https://github.com/meshtastic/Crypto gitBranch=main
https://github.com/meshtastic/Crypto/archive/591ff9a690e8168ccb7a36abde8d7783e448d395.zip
# renovate: datasource=custom.pio depName=Melopero RV3028 packageName=melopero/library/Melopero RV3028
melopero/Melopero RV3028@1.2.0
@@ -13,7 +13,7 @@
// DIO5 -> RFSW0_V1
// DIO6 -> RFSW1_V2
// DIO7 -> not connected on E80 module - note that GNSS and Wifi scanning are not possible.
#ifdef USE_LR1121
static const uint32_t rfswitch_dio_pins[] = {RADIOLIB_LR11X0_DIO5, RADIOLIB_LR11X0_DIO6, RADIOLIB_LR11X0_DIO7, RADIOLIB_NC,
RADIOLIB_NC};
@@ -30,13 +30,14 @@ static const Module::RfSwitchMode_t rfswitch_table[] = {
END_OF_MODE_TABLE,
// clang-format on
};
#endif
// LR2021 RF switch matrix following the standard Semtech / Seeed T1000-E reference topology.
// DIO5 -> antenna path select (HIGH = sub-GHz LF)
// DIO6 -> TX enable / HP PA select
// DIO7 -> not connected (no GNSS on LR2021)
// DIO8 -> RF front-end power enable
#ifdef USE_LR2021
static const uint32_t lr20x0_rfswitch_dio_pins[] = {RADIOLIB_LR2021_DIO5, RADIOLIB_LR2021_DIO6, RADIOLIB_LR2021_DIO7,
RADIOLIB_LR2021_DIO8, RADIOLIB_NC};
@@ -51,3 +52,4 @@ static const Module::RfSwitchMode_t lr20x0_rfswitch_table[] = {
END_OF_MODE_TABLE,
// clang-format on
};
#endif
@@ -121,9 +121,9 @@ NRF52 PRO MICRO PIN ASSIGNMENT
#define USE_RF95
#define USE_SX1268
#define USE_LR1121
#define USE_LR2021
// RF95 CONFIG
#define LORA_DIO0 (0 + 29) // P0.29 BUSY
#define LORA_DIO1 (0 + 10) // P0.10 IRQ
#define LORA_RESET (0 + 9) // P0.09 NRST
@@ -156,7 +156,7 @@ NRF52 PRO MICRO PIN ASSIGNMENT
#endif
// LR2021
#define USE_LR2021
#ifdef USE_LR2021
#define LR2021_IRQ_PIN (0 + 10) // P0.10 IRQ
#define LR2021_NRESET_PIN LORA_RESET // P0.09 NRST
#define LR2021_BUSY_PIN (0 + 29) // P0.29 BUSY
@@ -164,6 +164,7 @@ NRF52 PRO MICRO PIN ASSIGNMENT
#define LR2021_DIO3_TCXO_VOLTAGE 1.8
#define LR2021_DIO_AS_RF_SWITCH
#define LR2021_IRQ_DIO_NUM 9 // DIO9 → P0.10
#endif
// #define SX126X_MAX_POWER 8 set this if using a high-power board!
+2 -2
View File
@@ -6,7 +6,7 @@ platform =
extends = arduino_base
platform_packages =
; our custom Git version with C++17 support in platform.txt
# renovate: datasource=git-refs depName=meshtastic/Adafruit_nRF52_Arduino packageName=meshtastic/Adafruit_nRF52_Arduino gitBranch=master
# renovate: datasource=git-refs depName=meshtastic/Adafruit_nRF52_Arduino packageName=https://github.com/meshtastic/Adafruit_nRF52_Arduino gitBranch=master
platformio/framework-arduinoadafruitnrf52 @ https://github.com/meshtastic/Adafruit_nRF52_Arduino#0fd295f13203e93df19d578073646ec32f2bf45a
; Don't renovate toolchain-gccarmnoneeabi
platformio/toolchain-gccarmnoneeabi@~1.90301.0
@@ -58,7 +58,7 @@ build_src_filter =
lib_deps=
${arduino_base.lib_deps}
${radiolib_base.lib_deps}
# renovate: datasource=github-tags depName=meshtastic/Crypto packageName=meshtastic/Crypto
# renovate: datasource=git-refs depName=meshtastic/Crypto packageName=https://github.com/meshtastic/Crypto gitBranch=main
https://github.com/meshtastic/Crypto/archive/591ff9a690e8168ccb7a36abde8d7783e448d395.zip
lib_ignore =
@@ -36,6 +36,19 @@ lib_deps =
# 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
; RAK10729 WisMesh Repeater Mini V2 HP (RAK3401 + RAK19007 + RAK13302 + solar battery)
[env:rak_wismesh_repeater_mini_hp]
extends = env:rak3401-1watt
custom_meshtastic_display_name = RAK WisMesh Repeater Mini V2 HP
custom_meshtastic_images = rak3401.svg
build_flags =
${env:rak3401-1watt.build_flags}
-D WISMESH_REPEATER_MINI_HP
-DMESHTASTIC_EXCLUDE_GPS=1
-DLOW_VDD_SYSTEMOFF_DELAY_MS=5000
-DSAFE_VDD_VOLTAGE_THRESHOLD_MV=2900
-DSAFE_VDD_VOLTAGE_THRESHOLD_HYST_MV=100
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
; Note: as of 6/2013 the serial/bootloader based programming takes approximately 30 seconds
;upload_protocol = jlink
@@ -23,6 +23,13 @@
#include "wiring_constants.h"
#include "wiring_digital.h"
#ifdef LOW_VDD_SYSTEMOFF_DELAY_MS
#include "Arduino.h"
#include "FreeRTOS.h"
#include "power/PowerHAL.h"
#include "sleep.h"
#endif
const uint32_t g_ADigitalPinMap[] = {
// P0
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
@@ -40,3 +47,39 @@ void initVariant()
pinMode(PIN_3V3_EN, OUTPUT);
digitalWrite(PIN_3V3_EN, HIGH);
}
#ifdef LOW_VDD_SYSTEMOFF_DELAY_MS
void variant_nrf52LoopHook(void)
{
// If VDD stays unsafe for a while (brownout), force System OFF.
// Skip when VBUS present to allow recovery while USB-powered.
if (!powerHAL_isVBUSConnected()) {
// Rate-limit VDD safety checks: powerHAL_isPowerLevelSafe() calls getVDDVoltage() each time.
static constexpr uint32_t POWER_LEVEL_CHECK_INTERVAL_MS = 100;
static uint32_t last_vdd_check_ms = 0;
static bool last_power_level_safe = true;
const uint32_t now = millis();
if (last_vdd_check_ms == 0 || (uint32_t)(now - last_vdd_check_ms) >= POWER_LEVEL_CHECK_INTERVAL_MS) {
last_vdd_check_ms = now;
last_power_level_safe = powerHAL_isPowerLevelSafe();
}
// Do not use millis()==0 as a sentinel: at boot, millis() may be 0 while VDD is unsafe.
static bool low_vdd_timer_armed = false;
static uint32_t low_vdd_since_ms = 0;
if (!last_power_level_safe) {
if (!low_vdd_timer_armed) {
low_vdd_since_ms = now;
low_vdd_timer_armed = true;
}
if ((uint32_t)(now - low_vdd_since_ms) >= (uint32_t)LOW_VDD_SYSTEMOFF_DELAY_MS) {
cpuDeepSleep(portMAX_DELAY);
}
} else {
low_vdd_timer_armed = false;
}
}
}
#endif
@@ -209,6 +209,13 @@ static const uint8_t SCK = PIN_SPI_SCK;
#define AREF_VOLTAGE 3.0
#define VBAT_AR_INTERNAL AR_INTERNAL_3_0
#define ADC_MULTIPLIER 1.73
#if defined(LOW_VDD_SYSTEMOFF_DELAY_MS)
#if !defined(OCV_ARRAY)
#define OCV_ARRAY 4160, 4020, 3940, 3870, 3810, 3760, 3740, 3720, 3680, 3620, 2990
#endif
#define BATTERY_LPCOMP_INPUT NRF_LPCOMP_INPUT_3
#define BATTERY_LPCOMP_THRESHOLD NRF_LPCOMP_REF_SUPPLY_5_8 // VDD=3.3V AIN3=5/8*VDD=2.06V VBAT=1.66*AIN3=3.41V
#endif
#define RAK_4631 1
+27
View File
@@ -44,6 +44,33 @@ lib_deps =
# 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
; RAK10728 WisMesh Repeater Mini V2 (RAK4631 + RAK19003 + solar battery + GPS module)
[env:rak_wismesh_repeater_mini]
extends = env:rak4631
custom_meshtastic_display_name = RAK WisMesh Repeater Mini V2
custom_meshtastic_images = rak4631.svg
build_flags =
${env:rak4631.build_flags}
-D WISMESH_REPEATER_MINI
-DLOW_VDD_SYSTEMOFF_DELAY_MS=5000
-DSAFE_VDD_VOLTAGE_THRESHOLD_MV=2900
-DSAFE_VDD_VOLTAGE_THRESHOLD_HYST_MV=100
; RAK WisMesh Pocket V3 - rak4631 pin map + OLED; no ethernet (unlike env:rak4631)
[env:rak_wismesh_pocket]
extends = env:rak4631
custom_meshtastic_display_name = RAK WisMesh Pocket V3
custom_meshtastic_images = rak4631.svg
build_flags =
${env:rak4631.build_flags}
-D WISMESH_POCKET
-DLOW_VDD_SYSTEMOFF_DELAY_MS=5000
-DSAFE_VDD_VOLTAGE_THRESHOLD_MV=2900
-DSAFE_VDD_VOLTAGE_THRESHOLD_HYST_MV=100
build_src_filter = ${env:rak4631.build_src_filter}
-<mesh/eth/>
-<mesh/api/>
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
; Note: as of 6/2013 the serial/bootloader based programming takes approximately 30 seconds
;upload_protocol = jlink
+52
View File
@@ -23,6 +23,13 @@
#include "wiring_constants.h"
#include "wiring_digital.h"
#ifdef LOW_VDD_SYSTEMOFF_DELAY_MS
#include "Arduino.h"
#include "FreeRTOS.h"
#include "power/PowerHAL.h"
#include "sleep.h"
#endif
const uint32_t g_ADigitalPinMap[] = {
// P0
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
@@ -40,3 +47,48 @@ void initVariant()
pinMode(PIN_3V3_EN, OUTPUT);
digitalWrite(PIN_3V3_EN, HIGH);
}
#ifdef LOW_VDD_SYSTEMOFF_DELAY_MS
static bool lowVddSystemOff = false; // Set to true when VDD is unsafe for a while (brownout), forcing System OFF.
// Strong override; must be noinline (see main-nrf52.cpp weak default).
__attribute__((noinline)) bool variant_enableBatteryLpcompWake()
{
return lowVddSystemOff;
}
// Hook called each nrf52Loop(); e.g. for low-VDD System OFF.
void variant_nrf52LoopHook(void)
{
// If VDD stays unsafe for a while (brownout), force System OFF.
// Skip when VBUS present to allow recovery while USB-powered.
if (!powerHAL_isVBUSConnected()) {
// Rate-limit VDD safety checks: powerHAL_isPowerLevelSafe() calls getVDDVoltage() each time.
static constexpr uint32_t POWER_LEVEL_CHECK_INTERVAL_MS = 100;
static uint32_t last_vdd_check_ms = 0;
static bool last_power_level_safe = true;
const uint32_t now = millis();
if (last_vdd_check_ms == 0 || (uint32_t)(now - last_vdd_check_ms) >= POWER_LEVEL_CHECK_INTERVAL_MS) {
last_vdd_check_ms = now;
last_power_level_safe = powerHAL_isPowerLevelSafe();
}
// Do not use millis()==0 as a sentinel: at boot, millis() may be 0 while VDD is unsafe.
static bool low_vdd_timer_armed = false;
static uint32_t low_vdd_since_ms = 0;
if (!last_power_level_safe) {
if (!low_vdd_timer_armed) {
low_vdd_since_ms = now;
low_vdd_timer_armed = true;
}
if ((uint32_t)(now - low_vdd_since_ms) >= (uint32_t)LOW_VDD_SYSTEMOFF_DELAY_MS) {
lowVddSystemOff = true;
cpuDeepSleep(portMAX_DELAY);
}
} else {
low_vdd_timer_armed = false;
}
}
}
#endif
+12 -1
View File
@@ -231,6 +231,11 @@ SO GPIO 39/TXEN MAY NOT BE DEFINED FOR SUCCESSFUL OPERATION OF THE SX1262 - TG
#define PIN_3V3_EN (34)
#define WB_IO2 PIN_3V3_EN
#if defined(WISMESH_POCKET)
// Pocket v3: P1.02 (GPIO 34) = GPS_PWR_EN
#define PIN_GPS_EN PIN_3V3_EN
#endif
// RAK1910 GPS module
// If using the wisblock GPS module and pluged into Port A on WisBlock base
// IO1 is hooked to PPS (pin 12 on header) = gpio 17
@@ -253,9 +258,11 @@ SO GPIO 39/TXEN MAY NOT BE DEFINED FOR SUCCESSFUL OPERATION OF THE SX1262 - TG
#define PIN_BUZZER 21 // IO3 is PWM2
// NEW: set this via protobuf instead!
// RAK4631 custom ringtone
// RAK4631 custom ringtone (but not for Pocket - it uses the default ringtone)
#ifndef WISMESH_POCKET
#undef USERPREFS_RINGTONE_RTTTL
#define USERPREFS_RINGTONE_RTTTL "Rak:d=32,o=5,b=200:b7,p,b7,4p,p"
#endif
// Battery
// The battery sense is hooked to pin A0 (5)
@@ -282,7 +289,11 @@ SO GPIO 39/TXEN MAY NOT BE DEFINED FOR SUCCESSFUL OPERATION OF THE SX1262 - TG
// VDD=3.3V AIN3=6/8*VDD=2.47V VBAT=1.66*AIN3=4.1V
#define BATTERY_LPCOMP_THRESHOLD NRF_LPCOMP_REF_SUPPLY_11_16
#if defined(WISMESH_POCKET)
#define HAS_ETHERNET 0
#else
#define HAS_ETHERNET 1
#endif
#define RAK_4631 1
@@ -23,3 +23,11 @@ build_flags = ${nrf52840_base.build_flags}
-DRADIOLIB_EXCLUDE_LR2021=1
-DMESHTASTIC_EXCLUDE_WIFI=1
build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/rak_wismeshtag>
; RAK WisMesh Pod - same board as Tag (no user buttons on hardware; shares Tag pin map)
[env:rak_wismesh_pod]
extends = env:rak_wismeshtag
custom_meshtastic_display_name = RAK WisMesh Pod
build_flags =
${env:rak_wismeshtag.build_flags}
-D WISMESH_POD
@@ -46,6 +46,14 @@ void initVariant()
}
#ifdef LOW_VDD_SYSTEMOFF_DELAY_MS
static bool lowVddSystemOff = false; // Set when brownout forces System OFF (enables LPCOMP wake).
// Strong override; must be noinline (see main-nrf52.cpp weak default).
__attribute__((noinline)) bool variant_enableBatteryLpcompWake()
{
return lowVddSystemOff;
}
void variant_nrf52LoopHook(void)
{
// If VDD stays unsafe for a while (brownout), force System OFF.
@@ -72,6 +80,7 @@ void variant_nrf52LoopHook(void)
low_vdd_timer_armed = true;
}
if ((uint32_t)(now - low_vdd_since_ms) >= (uint32_t)LOW_VDD_SYSTEMOFF_DELAY_MS) {
lowVddSystemOff = true;
cpuDeepSleep(portMAX_DELAY);
}
} else {
+4 -1
View File
@@ -55,10 +55,13 @@ extern "C" {
/*
* Buttons
*/
#ifndef WISMESH_POD
#define PIN_BUTTON1 9 // Pin for button on E-ink button module or IO expansion
#define BUTTON_NEED_PULLUP
#define PIN_BUTTON2 12
#else
#define HAS_BUTTON 0
#endif
/*
* Analog pins
@@ -68,4 +68,6 @@ void initVariant()
pinMode(GPS_RTC_INT, OUTPUT);
digitalWrite(GPS_RTC_INT, LOW);
pinMode(PIN_BUZZER, INPUT_PULLDOWN);
}
+1 -1
View File
@@ -49,7 +49,7 @@ lib_compat_mode = off
lib_deps =
${arduino_base.lib_deps}
${radiolib_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic/Crypto packageName=https://github.com/meshtastic/Crypto gitBranch=master
# renovate: datasource=git-refs depName=meshtastic/Crypto packageName=https://github.com/meshtastic/Crypto gitBranch=main
https://github.com/meshtastic/Crypto/archive/591ff9a690e8168ccb7a36abde8d7783e448d395.zip
; Cherry-picked sensor libs from environmental_base. The full
; environmental_base pulls Adafruit_SSD1306 / GFX which need Arduino
+7
View File
@@ -19,4 +19,11 @@ build_unflags =
${arduino_base.build_unflags}
-DMESHTASTIC_EXCLUDE_XEDDSA=1
lib_deps =
${stm32_base.lib_deps}
# renovate: datasource=github-tags depName=STM32RTC packageName=stm32duino/STM32RTC
https://github.com/stm32duino/STM32RTC/archive/refs/tags/1.9.0.zip
# renovate: datasource=github-tags depName=STM32LowPower packageName=stm32duino/STM32LowPower
https://github.com/stm32duino/STM32LowPower/archive/refs/tags/1.5.0.zip
upload_port = stlink
+3
View File
@@ -24,4 +24,7 @@ Do not expect a working Meshtastic device with this target.
#define RAK3172
#define SERIAL_PRINT_PORT 1
#define HAS_LSE 1
#define STM32WL_LSE_DRIVE RCC_LSEDRIVE_LOW
#endif
-2
View File
@@ -14,13 +14,11 @@ build_flags =
-Ivariants/stm32/russell
-DPRIVATE_HW
-DMESHTASTIC_EXCLUDE_AIR_QUALITY_SENSOR=1
-DMESHTASTIC_EXCLUDE_RANGETEST=1
-DMESHTASTIC_EXCLUDE_DETECTIONSENSOR=1
-DMESHTASTIC_EXCLUDE_EXTERNALNOTIFICATION=1
-DMESHTASTIC_EXCLUDE_POWERSTRESS=1
-DMESHTASTIC_EXCLUDE_NEIGHBORINFO=1
-DMESHTASTIC_EXCLUDE_TRACEROUTE=1
-DMESHTASTIC_EXCLUDE_WAYPOINT=1
lib_deps =
${stm32_base.lib_deps}
# renovate: datasource=custom.pio depName=Adafruit BME280 packageName=adafruit/library/Adafruit BME280 Library
+4
View File
@@ -26,6 +26,10 @@ build_flags =
-DMESHTASTIC_EXCLUDE_WIFI=1
-DMESHTASTIC_EXCLUDE_TZ=1 ; Exclude TZ to save some flash space.
-DMESHTASTIC_EXCLUDE_XEDDSA=1 ; Individual STM32WL variants opt in after size validation.
-DMESHTASTIC_EXCLUDE_PKT_HISTORY_HASH=1
-DMESHTASTIC_EXCLUDE_RANGETEST=1
-DMESHTASTIC_EXCLUDE_WAYPOINT=1
-DMESHTASTIC_EXCLUDE_POWER_TELEMETRY=1
-DSERIAL_RX_BUFFER_SIZE=256 ; For GPS - the default of 64 is too small.
-DHAS_SCREEN=0 ; Always disable screen for STM32, it is not supported.
;-DPIO_FRAMEWORK_ARDUINO_NANOLIB_FLOAT_PRINTF ; Enable this if enabling debugg logging. It is REQUIRED for at least traceroute debug prints - without it the length returned by printf ends up uninitialized.