Skip to content

Commit 44a0ccd

Browse files
committed
Merge branch 'main' into new_custom_palettes_editor
2 parents 479eeeb + 1e081a7 commit 44a0ccd

37 files changed

+2669
-974
lines changed

pio-scripts/output_bins.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import os
33
import shutil
44
import gzip
5+
import json
56

67
OUTPUT_DIR = "build_output{}".format(os.path.sep)
78
#OUTPUT_DIR = os.path.join("build_output")
@@ -22,7 +23,8 @@ def create_release(source):
2223
release_name_def = _get_cpp_define_value(env, "WLED_RELEASE_NAME")
2324
if release_name_def:
2425
release_name = release_name_def.replace("\\\"", "")
25-
version = _get_cpp_define_value(env, "WLED_VERSION")
26+
with open("package.json", "r") as package:
27+
version = json.load(package)["version"]
2628
release_file = os.path.join(OUTPUT_DIR, "release", f"WLED_{version}_{release_name}.bin")
2729
release_gz_file = release_file + ".gz"
2830
print(f"Copying {source} to {release_file}")
Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
Import('env')
22
import subprocess
3+
import json
34
import re
45

56
def get_github_repo():
@@ -42,7 +43,7 @@ def get_github_repo():
4243

4344
# Check if it's a GitHub URL
4445
if 'github.com' not in remote_url.lower():
45-
return 'unknown'
46+
return None
4647

4748
# Parse GitHub URL patterns:
4849
# https://github.com/owner/repo.git
@@ -63,17 +64,53 @@ def get_github_repo():
6364
if ssh_match:
6465
return ssh_match.group(1)
6566

66-
return 'unknown'
67+
return None
6768

6869
except FileNotFoundError:
6970
# Git CLI is not installed or not in PATH
70-
return 'unknown'
71+
return None
7172
except subprocess.CalledProcessError:
7273
# Git command failed (e.g., not a git repo, no remote, etc.)
73-
return 'unknown'
74+
return None
7475
except Exception:
7576
# Any other unexpected error
76-
return 'unknown'
77+
return None
7778

78-
repo = get_github_repo()
79-
env.Append(BUILD_FLAGS=[f'-DWLED_REPO=\\"{repo}\\"'])
79+
# WLED version is managed by package.json; this is picked up in several places
80+
# - It's integrated in to the UI code
81+
# - Here, for wled_metadata.cpp
82+
# - The output_bins script
83+
# We always take it from package.json to ensure consistency
84+
with open("package.json", "r") as package:
85+
WLED_VERSION = json.load(package)["version"]
86+
87+
def has_def(cppdefs, name):
88+
""" Returns true if a given name is set in a CPPDEFINES collection """
89+
for f in cppdefs:
90+
if isinstance(f, tuple):
91+
f = f[0]
92+
if f == name:
93+
return True
94+
return False
95+
96+
97+
def add_wled_metadata_flags(env, node):
98+
cdefs = env["CPPDEFINES"].copy()
99+
100+
if not has_def(cdefs, "WLED_REPO"):
101+
repo = get_github_repo()
102+
if repo:
103+
cdefs.append(("WLED_REPO", f"\\\"{repo}\\\""))
104+
105+
cdefs.append(("WLED_VERSION", WLED_VERSION))
106+
107+
# This transforms the node in to a Builder; it cannot be modified again
108+
return env.Object(
109+
node,
110+
CPPDEFINES=cdefs
111+
)
112+
113+
env.AddBuildMiddleware(
114+
add_wled_metadata_flags,
115+
"*/wled_metadata.cpp"
116+
)

pio-scripts/set_version.py

Lines changed: 0 additions & 8 deletions
This file was deleted.

platformio.ini

Lines changed: 55 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,26 @@
1010
# ------------------------------------------------------------------------------
1111

1212
# CI/release binaries
13-
default_envs = nodemcuv2, esp8266_2m, esp01_1m_full, nodemcuv2_160, esp8266_2m_160, esp01_1m_full_160, nodemcuv2_compat, esp8266_2m_compat, esp01_1m_full_compat, esp32dev, esp32_eth, lolin_s2_mini, esp32c3dev, esp32s3dev_16MB_opi, esp32s3dev_8MB_opi, esp32s3_4M_qspi, esp32_wrover, usermods
13+
default_envs = nodemcuv2
14+
esp8266_2m
15+
esp01_1m_full
16+
nodemcuv2_160
17+
esp8266_2m_160
18+
esp01_1m_full_160
19+
nodemcuv2_compat
20+
esp8266_2m_compat
21+
esp01_1m_full_compat
22+
esp32dev
23+
esp32dev_debug
24+
esp32_eth
25+
esp32_wrover
26+
lolin_s2_mini
27+
esp32c3dev
28+
esp32c3dev_qio
29+
esp32s3dev_16MB_opi
30+
esp32s3dev_8MB_opi
31+
esp32s3_4M_qspi
32+
usermods
1433

1534
src_dir = ./wled00
1635
data_dir = ./wled00/data
@@ -110,8 +129,7 @@ ldscript_4m1m = eagle.flash.4m1m.ld
110129

111130
[scripts_defaults]
112131
extra_scripts =
113-
pre:pio-scripts/set_version.py
114-
pre:pio-scripts/set_repo.py
132+
pre:pio-scripts/set_metadata.py
115133
post:pio-scripts/output_bins.py
116134
post:pio-scripts/strip-floats.py
117135
pre:pio-scripts/user_config_copy.py
@@ -265,12 +283,14 @@ AR_lib_deps = ;; for pre-usermod-library platformio_override compatibility
265283

266284
[esp32_idf_V4]
267285
;; build environment for ESP32 using ESP-IDF 4.4.x / arduino-esp32 v2.0.5
286+
;; *** important: build flags from esp32_idf_V4 are inherited by _all_ esp32-based MCUs: esp32, esp32s2, esp32s3, esp32c3
268287
;;
269288
;; please note that you can NOT update existing ESP32 installs with a "V4" build. Also updating by OTA will not work properly.
270289
;; You need to completely erase your device (esptool erase_flash) first, then install the "V4" build from VSCode+platformio.
271290

272291
;; select arduino-esp32 v2.0.9 (arduino-esp32 2.0.10 thru 2.0.14 are buggy so avoid them)
273292
platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.06.02/platform-espressif32.zip ;; Tasmota Arduino Core 2.0.9 with IPv6 support, based on IDF 4.4.4
293+
platform_packages =
274294
build_unflags = ${common.build_unflags}
275295
build_flags = -g
276296
-Wshadow=compatible-local ;; emit warning in case a local variable "shadows" another local one
@@ -285,6 +305,7 @@ lib_deps =
285305
[esp32s2]
286306
;; generic definitions for all ESP32-S2 boards
287307
platform = ${esp32_idf_V4.platform}
308+
platform_packages = ${esp32_idf_V4.platform_packages}
288309
build_unflags = ${common.build_unflags}
289310
build_flags = -g
290311
-DARDUINO_ARCH_ESP32
@@ -303,6 +324,7 @@ board_build.partitions = ${esp32.default_partitions} ;; default partioning for
303324
[esp32c3]
304325
;; generic definitions for all ESP32-C3 boards
305326
platform = ${esp32_idf_V4.platform}
327+
platform_packages = ${esp32_idf_V4.platform_packages}
306328
build_unflags = ${common.build_unflags}
307329
build_flags = -g
308330
-DARDUINO_ARCH_ESP32
@@ -321,6 +343,7 @@ board_build.flash_mode = qio
321343
[esp32s3]
322344
;; generic definitions for all ESP32-S3 boards
323345
platform = ${esp32_idf_V4.platform}
346+
platform_packages = ${esp32_idf_V4.platform_packages}
324347
build_unflags = ${common.build_unflags}
325348
build_flags = -g
326349
-DESP32
@@ -429,21 +452,31 @@ custom_usermods = audioreactive
429452
[env:esp32dev]
430453
board = esp32dev
431454
platform = ${esp32_idf_V4.platform}
455+
platform_packages = ${esp32_idf_V4.platform_packages}
432456
build_unflags = ${common.build_unflags}
433457
custom_usermods = audioreactive
434-
build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags} -D WLED_RELEASE_NAME=\"ESP32_V4\" #-D WLED_DISABLE_BROWNOUT_DET
458+
build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags} -D WLED_RELEASE_NAME=\"ESP32\" #-D WLED_DISABLE_BROWNOUT_DET
435459
-DARDUINO_USB_CDC_ON_BOOT=0 ;; this flag is mandatory for "classic ESP32" when building with arduino-esp32 >=2.0.3
436460
lib_deps = ${esp32_idf_V4.lib_deps}
437461
monitor_filters = esp32_exception_decoder
438462
board_build.partitions = ${esp32.default_partitions}
439463
board_build.flash_mode = dio
440464

465+
[env:esp32dev_debug]
466+
extends = env:esp32dev
467+
upload_speed = 921600
468+
build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags}
469+
-D WLED_DEBUG
470+
-D WLED_RELEASE_NAME=\"ESP32_DEBUG\"
471+
441472
[env:esp32dev_8M]
442473
board = esp32dev
443474
platform = ${esp32_idf_V4.platform}
475+
platform_packages = ${esp32_idf_V4.platform_packages}
444476
custom_usermods = audioreactive
445477
build_unflags = ${common.build_unflags}
446478
build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags} -D WLED_RELEASE_NAME=\"ESP32_8M\" #-D WLED_DISABLE_BROWNOUT_DET
479+
-DARDUINO_USB_CDC_ON_BOOT=0 ;; this flag is mandatory for "classic ESP32" when building with arduino-esp32 >=2.0.3
447480
lib_deps = ${esp32_idf_V4.lib_deps}
448481
monitor_filters = esp32_exception_decoder
449482
board_build.partitions = ${esp32.large_partitions}
@@ -455,9 +488,11 @@ board_build.flash_mode = dio
455488
[env:esp32dev_16M]
456489
board = esp32dev
457490
platform = ${esp32_idf_V4.platform}
491+
platform_packages = ${esp32_idf_V4.platform_packages}
458492
custom_usermods = audioreactive
459493
build_unflags = ${common.build_unflags}
460494
build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags} -D WLED_RELEASE_NAME=\"ESP32_16M\" #-D WLED_DISABLE_BROWNOUT_DET
495+
-DARDUINO_USB_CDC_ON_BOOT=0 ;; this flag is mandatory for "classic ESP32" when building with arduino-esp32 >=2.0.3
461496
lib_deps = ${esp32_idf_V4.lib_deps}
462497
monitor_filters = esp32_exception_decoder
463498
board_build.partitions = ${esp32.extreme_partitions}
@@ -469,10 +504,12 @@ board_build.flash_mode = dio
469504
[env:esp32_eth]
470505
board = esp32-poe
471506
platform = ${esp32_idf_V4.platform}
507+
platform_packages = ${esp32_idf_V4.platform_packages}
472508
upload_speed = 921600
473509
custom_usermods = audioreactive
474510
build_unflags = ${common.build_unflags}
475511
build_flags = ${common.build_flags} ${esp32.build_flags} -D WLED_RELEASE_NAME=\"ESP32_Ethernet\" -D RLYPIN=-1 -D WLED_USE_ETHERNET -D BTNPIN=-1
512+
-DARDUINO_USB_CDC_ON_BOOT=0 ;; this flag is mandatory for "classic ESP32" when building with arduino-esp32 >=2.0.3
476513
; -D WLED_DISABLE_ESPNOW ;; ESP-NOW requires wifi, may crash with ethernet only
477514
lib_deps = ${esp32.lib_deps}
478515
board_build.partitions = ${esp32.default_partitions}
@@ -487,13 +524,15 @@ board_build.partitions = ${esp32.extended_partitions}
487524
custom_usermods = audioreactive
488525
build_unflags = ${common.build_unflags}
489526
build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags} -D WLED_RELEASE_NAME=\"ESP32_WROVER\"
527+
-DARDUINO_USB_CDC_ON_BOOT=0 ;; this flag is mandatory for "classic ESP32" when building with arduino-esp32 >=2.0.3
490528
-DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue ;; Older ESP32 (rev.<3) need a PSRAM fix (increases static RAM used) https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/external-ram.html
491529
-D DATA_PINS=25
492530
lib_deps = ${esp32_idf_V4.lib_deps}
493531

494532
[env:esp32c3dev]
495533
extends = esp32c3
496534
platform = ${esp32c3.platform}
535+
platform_packages = ${esp32c3.platform_packages}
497536
framework = arduino
498537
board = esp32-c3-devkitm-1
499538
board_build.partitions = ${esp32.default_partitions}
@@ -505,12 +544,19 @@ build_flags = ${common.build_flags} ${esp32c3.build_flags} -D WLED_RELEASE_NAME=
505544
upload_speed = 460800
506545
build_unflags = ${common.build_unflags}
507546
lib_deps = ${esp32c3.lib_deps}
547+
board_build.flash_mode = dio ; safe default, required for OTA updates to 0.16 from older version which used dio (must match the bootloader!)
548+
549+
[env:esp32c3dev_qio]
550+
extends = env:esp32c3dev
551+
build_flags = ${common.build_flags} ${esp32c3.build_flags} -D WLED_RELEASE_NAME=\"ESP32-C3-QIO\"
552+
board_build.flash_mode = qio ; qio is faster and works on almost all boards (some boards may use dio to get 2 extra pins)
508553

509554
[env:esp32s3dev_16MB_opi]
510555
;; ESP32-S3 development board, with 16MB FLASH and >= 8MB PSRAM (memory_type: qio_opi)
511556
board = esp32-s3-devkitc-1 ;; generic dev board; the next line adds PSRAM support
512557
board_build.arduino.memory_type = qio_opi ;; use with PSRAM: 8MB or 16MB
513558
platform = ${esp32s3.platform}
559+
platform_packages = ${esp32s3.platform_packages}
514560
upload_speed = 921600
515561
custom_usermods = audioreactive
516562
build_unflags = ${common.build_unflags}
@@ -532,6 +578,7 @@ monitor_filters = esp32_exception_decoder
532578
board = esp32-s3-devkitc-1 ;; generic dev board; the next line adds PSRAM support
533579
board_build.arduino.memory_type = qio_opi ;; use with PSRAM: 8MB or 16MB
534580
platform = ${esp32s3.platform}
581+
platform_packages = ${esp32s3.platform_packages}
535582
upload_speed = 921600
536583
custom_usermods = audioreactive
537584
build_unflags = ${common.build_unflags}
@@ -550,6 +597,7 @@ monitor_filters = esp32_exception_decoder
550597
;; For ESP32-S3 WROOM-2, a.k.a. ESP32-S3 DevKitC-1 v1.1
551598
;; with >= 16MB FLASH and >= 8MB PSRAM (memory_type: opi_opi)
552599
platform = ${esp32s3.platform}
600+
platform_packages = ${esp32s3.platform_packages}
553601
board = esp32s3camlcd ;; this is the only standard board with "opi_opi"
554602
board_build.arduino.memory_type = opi_opi
555603
upload_speed = 921600
@@ -575,6 +623,7 @@ monitor_filters = esp32_exception_decoder
575623
;; ESP32-S3, with 4MB FLASH and <= 4MB PSRAM (memory_type: qio_qspi)
576624
board = lolin_s3_mini ;; -S3 mini, 4MB flash 2MB PSRAM
577625
platform = ${esp32s3.platform}
626+
platform_packages = ${esp32s3.platform_packages}
578627
upload_speed = 921600
579628
custom_usermods = audioreactive
580629
build_unflags = ${common.build_unflags}
@@ -591,6 +640,7 @@ monitor_filters = esp32_exception_decoder
591640

592641
[env:lolin_s2_mini]
593642
platform = ${esp32s2.platform}
643+
platform_packages = ${esp32s2.platform_packages}
594644
board = lolin_s2_mini
595645
board_build.partitions = ${esp32.default_partitions}
596646
board_build.flash_mode = qio
@@ -617,6 +667,7 @@ lib_deps = ${esp32s2.lib_deps}
617667
[env:usermods]
618668
board = esp32dev
619669
platform = ${esp32_idf_V4.platform}
670+
platform_packages = ${esp32_idf_V4.platform_packages}
620671
build_unflags = ${common.build_unflags}
621672
build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags} -D WLED_RELEASE_NAME=\"ESP32_USERMODS\"
622673
-DTOUCH_CS=9

platformio_override.sample.ini

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -541,12 +541,15 @@ build_flags = ${common.build_flags}
541541
-D WLED_ENABLE_HUB75MATRIX -D NO_GFX
542542
-D WLED_DEBUG_BUS
543543
; -D WLED_DEBUG
544+
-D SR_DMTYPE=-1 -D I2S_SDPIN=-1 -D I2S_CKPIN=-1 -D I2S_WSPIN=-1 -D MCLK_PIN=-1 ;; Disable to prevent pin clash
545+
544546
lib_deps = ${esp32_idf_V4.lib_deps}
545547
https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-DMA.git#3.0.11
546548

547549
monitor_filters = esp32_exception_decoder
548550
board_build.partitions = ${esp32.default_partitions}
549551
board_build.flash_mode = dio
552+
custom_usermods = audioreactive
550553

551554
[env:esp32dev_hub75_forum_pinout]
552555
extends = env:esp32dev_hub75
@@ -555,10 +558,10 @@ build_flags = ${common.build_flags}
555558
-D WLED_ENABLE_HUB75MATRIX -D NO_GFX
556559
-D ESP32_FORUM_PINOUT ;; enable for SmartMatrix default pins
557560
-D WLED_DEBUG_BUS
561+
-D SR_DMTYPE=-1 -D I2S_SDPIN=-1 -D I2S_CKPIN=-1 -D I2S_WSPIN=-1 -D MCLK_PIN=-1 ;; Disable to prevent pin clash
558562
; -D WLED_DEBUG
559563

560564

561-
562565
[env:adafruit_matrixportal_esp32s3]
563566
; ESP32-S3 processor, 8 MB flash, 2 MB of PSRAM, dedicated driver pins for HUB75
564567
board = adafruit_matrixportal_esp32s3
@@ -575,6 +578,7 @@ build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=
575578
-D S3_LCD_DIV_NUM=20 ;; Attempt to fix wifi performance issue when panel active with S3 chips
576579
-D ARDUINO_ADAFRUIT_MATRIXPORTAL_ESP32S3
577580
-D WLED_DEBUG_BUS
581+
-D SR_DMTYPE=-1 -D I2S_SDPIN=-1 -D I2S_CKPIN=-1 -D I2S_WSPIN=-1 -D MCLK_PIN=-1 ;; Disable to prevent pin clash
578582

579583

580584
lib_deps = ${esp32s3.lib_deps}
@@ -584,6 +588,7 @@ board_build.partitions = ${esp32.default_partitions}
584588
board_build.f_flash = 80000000L
585589
board_build.flash_mode = qio
586590
monitor_filters = esp32_exception_decoder
591+
custom_usermods = audioreactive
587592

588593
[env:esp32S3_PSRAM_HUB75]
589594
;; MOONHUB HUB75 adapter board
@@ -601,6 +606,8 @@ build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=
601606
-D S3_LCD_DIV_NUM=20 ;; Attempt to fix wifi performance issue when panel active with S3 chips
602607
-D MOONHUB_S3_PINOUT ;; HUB75 pinout
603608
-D WLED_DEBUG_BUS
609+
-D LEDPIN=14 -D BTNPIN=0 -D RLYPIN=15 -D IRPIN=-1 -D AUDIOPIN=-1 ;; defaults that avoid pin conflicts with HUB75
610+
-D SR_DMTYPE=1 -D I2S_SDPIN=10 -D I2S_CKPIN=11 -D I2S_WSPIN=12 -D MCLK_PIN=-1 ;; I2S mic
604611

605612
lib_deps = ${esp32s3.lib_deps}
606613
https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-DMA.git#aa28e2a ;; S3_LCD_DIV_NUM fix
@@ -609,3 +616,4 @@ board_build.partitions = ${esp32.default_partitions}
609616
board_build.f_flash = 80000000L
610617
board_build.flash_mode = qio
611618
monitor_filters = esp32_exception_decoder
619+
custom_usermods = audioreactive

0 commit comments

Comments
 (0)