diff --git a/.gitignore b/.gitignore
index 74e5dde34f..a95dd5ac22 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,7 +7,7 @@
/wled00/Release
/wled00/extLibs
/platformio_override.ini
-/wled00/user_config_override.h
+/wled00/my_config.h
/build_output
.DS_Store
.gitignore
diff --git a/pio/override_copy.py b/pio/override_copy.py
deleted file mode 100644
index 82549e7501..0000000000
--- a/pio/override_copy.py
+++ /dev/null
@@ -1,9 +0,0 @@
-Import('env')
-import os
-import shutil
-
-# copy WLED00/user_config_override_sample.h to WLED00/user_config_override.h
-if os.path.isfile("wled00/user_config_override.h"):
- print ("*** use provided user_config_override.h as planned ***")
-else:
- shutil.copy("wled00/user_config_override_sample.h", "wled00/user_config_override.h")
diff --git a/pio/user_config_copy.py b/pio/user_config_copy.py
new file mode 100644
index 0000000000..1251ca178d
--- /dev/null
+++ b/pio/user_config_copy.py
@@ -0,0 +1,9 @@
+Import('env')
+import os
+import shutil
+
+# copy WLED00/my_config_sample.h to WLED00/my_config.h
+if os.path.isfile("wled00/my_config.h"):
+ print ("*** use existing my_config.h ***")
+else:
+ shutil.copy("wled00/my_config_sample.h", "wled00/my_config.h")
diff --git a/platformio.ini b/platformio.ini
index a19378466a..e95f27f1d9 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -2,20 +2,13 @@
; Please visit documentation: https://docs.platformio.org/page/projectconf.html
[platformio]
-src_dir = ./wled00
-data_dir = ./wled00/data
-lib_dir = ./wled00/src
-build_cache_dir = ~/.buildcache
-extra_configs =
- platformio_override.ini
-
# ------------------------------------------------------------------------------
# ENVIRONMENTS
#
# Please uncomment one of the lines below to select your board(s)
# ------------------------------------------------------------------------------
-# Travis CI binaries
+# Travis CI binaries (comment this out with a ';' when building for your own board)
default_envs = travis_esp8266, travis_esp32
# Release binaries
@@ -41,36 +34,21 @@ default_envs = travis_esp8266, travis_esp32
; default_envs = m5atom
; default_envs = esp32_poe
+src_dir = ./wled00
+data_dir = ./wled00/data
+build_cache_dir = ~/.buildcache
+extra_configs =
+ platformio_override.ini
+
[common]
# ------------------------------------------------------------------------------
# PLATFORM:
# !! DO NOT confuse platformio's ESP8266 development platform with Arduino core for ESP8266
#
-# arduino core 2.3.0 = platformIO 1.5.0
-# arduino core 2.4.0 = platformIO 1.6.0
-# arduino core 2.4.1 = platformIO 1.7.3
-# arduino core 2.4.2 = platformIO 1.8.0
-# arduino core 2.5.0 = platformIO 2.0.4
-# arduino core 2.5.1 = platformIO 2.1.1
-# arduino core 2.5.2 = platformIO 2.2.3
-# arduino core 2.6.1 = platformIO 2.3.0
-# arduino core 2.6.2 = platformIO 2.3.1
# arduino core 2.6.3 = platformIO 2.3.2
# arduino core 2.7.0 = platformIO 2.5.0
# ------------------------------------------------------------------------------
-arduino_core_2_3_0 = espressif8266@1.5.0
-arduino_core_2_4_0 = espressif8266@1.6.0
-arduino_core_2_4_1 = espressif8266@1.7.3
-arduino_core_2_4_2 = espressif8266@1.8.0
-arduino_core_2_5_0 = espressif8266@2.0.4
-arduino_core_2_5_1 = espressif8266@2.1.1
-arduino_core_2_5_2 = espressif8266@2.2.3
-arduino_core_2_6_1 = espressif8266@2.3.0
-arduino_core_2_6_2 = espressif8266@2.3.1
arduino_core_2_6_3 = espressif8266@2.3.3
-arduino_core_2_7_1 = espressif8266@2.5.1
-arduino_core_2_7_2 = espressif8266@2.6.0
-arduino_core_2_7_3 = espressif8266@2.6.1
arduino_core_2_7_4 = espressif8266@2.6.2
# Development platforms
@@ -79,7 +57,6 @@ arduino_core_git = https://github.com/platformio/platform-espressif8266#feature/
# Platform to use for ESP8266
platform_wled_default = ${common.arduino_core_2_7_4}
-platform_latest = ${common.arduino_core_2_7_4}
# We use 2.7.4.7 for all, includes PWM flicker fix and Wstring optimization
platform_packages = tasmota/framework-arduinoespressif8266 @ 3.20704.7
@@ -92,7 +69,7 @@ debug_flags = -D DEBUG=1 -D WLED_DEBUG -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT
#-DDEBUG_ESP_CORE is not working right now
# ------------------------------------------------------------------------------
-# FLAGS: ldscript
+# FLAGS: ldscript (available ldscripts at https://github.com/esp8266/Arduino/tree/master/tools/sdk/ld)
# ldscript_512k ( 512 KB) = 487 KB sketch, 4 KB eeprom, no spiffs, 16 KB reserved
# ldscript_1m0m (1024 KB) = 999 KB sketch, 4 KB eeprom, no spiffs, 16 KB reserved
# ldscript_2m1m (2048 KB) = 1019 KB sketch, 4 KB eeprom, 1004 KB spiffs, 16 KB reserved
@@ -103,6 +80,7 @@ debug_flags = -D DEBUG=1 -D WLED_DEBUG -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT
# -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH = v1.4 Higher Bandwidth (default)
# -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY = v2 Lower Memory
# -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH = v2 Higher Bandwidth
+# -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH
#
# BearSSL performance:
# When building with -DSECURE_CLIENT=SECURE_CLIENT_BEARSSL, please add `board_build.f_cpu = 160000000` to the environment configuration
@@ -127,36 +105,24 @@ build_flags =
-Wno-sequence-point
-Wno-narrowing
-Wno-reorder
- -Wno-unused-local-typedefs
-DMQTT_MAX_PACKET_SIZE=1024
-DSECURE_CLIENT=SECURE_CLIENT_BEARSSL
-DBEARSSL_SSL_BASIC
-D CORE_DEBUG_LEVEL=0
-D NDEBUG
- -DFP_IN_IROM
-; NONOSDK22x_190703 = 2.2.2-dev(38a443e)
- -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190703
-; lwIP 2 - Higher Bandwidth no Features
- -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH
-; VTABLES in Flash
- -DVTABLES_IN_FLASH
-; restrict to minimal mime-types
- -DMIMETYPE_MINIMAL
-#build_flags for the IRremoteESP8266 library (enabled decoders have to appear here)
+ #build_flags for the IRremoteESP8266 library (enabled decoders have to appear here)
-D _IR_ENABLE_DEFAULT_=false
-D DECODE_HASH=true
-D DECODE_NEC=true
-D DECODE_SONY=true
-D DECODE_SAMSUNG=true
-D DECODE_LG=true
+ -DWLED_USE_MY_CONFIG
build_unflags =
-Wall
-Wdeprecated-declarations
-build_flags_esp8266 = ${common.build_flags} -DESP8266
-build_flags_esp32 = ${esp32.build_flags} -DARDUINO_ARCH_ESP32
-
# enables all features for travis CI
build_flags_all_features =
-D WLED_USE_ANALOG_LED
@@ -167,34 +133,36 @@ build_flags_all_features =
-D WLED_ENABLE_MQTT
-D WLED_ENABLE_WEBSOCKETS
+build_flags_esp8266 = ${common.build_flags} ${esp8266.build_flags}
+build_flags_esp32 = ${common.build_flags} ${esp32.build_flags}
+
ldscript_512k = eagle.flash.512k.ld ;for older versions change this to eagle.flash.512k0.ld
ldscript_1m0m = eagle.flash.1m.ld ;for older versions change this to eagle.flash.1m0.ld
ldscript_2m1m = eagle.flash.2m1m.ld
ldscript_4m1m = eagle.flash.4m1m.ld
-ldscript_4m3m = eagle.flash.4m3m.ld
-shared_libdeps_dir = ./wled00/src
+[esp8266]
+build_flags =
+ -DESP8266
+ -DFP_IN_IROM
+; NONOSDK22x_190703 = 2.2.2-dev(38a443e)
+ -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190703
+; lwIP 2 - Higher Bandwidth no Features
+ -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH
+; VTABLES in Flash
+ -DVTABLES_IN_FLASH
+; restrict to minimal mime-types
+ -DMIMETYPE_MINIMAL
[esp32]
build_flags = -w -g
- -DMQTT_MAX_PACKET_SIZE=1024
- -DSECURE_CLIENT=SECURE_CLIENT_BEARSSL
- -DBEARSSL_SSL_BASIC
- -D CORE_DEBUG_LEVEL=0
- -D NDEBUG
-#build_flags for the IRremoteESP8266 library (enabled decoders have to appear here)
- -D _IR_ENABLE_DEFAULT_=false
- -D DECODE_HASH=true
- -D DECODE_NEC=true
- -D DECODE_SONY=true
- -D DECODE_SAMSUNG=true
- -D DECODE_LG=true
+ -DARDUINO_ARCH_ESP32
[scripts_defaults]
extra_scripts = pio/name-firmware.py
pio/gzip-firmware.py
pio/strip-floats.py
- pio/override_copy.py
+ pio/user_config_copy.py
# ------------------------------------------------------------------------------
# COMMON SETTINGS:
@@ -204,12 +172,8 @@ framework = arduino
board_build.flash_mode = dout
monitor_speed = 115200
upload_speed = 115200
-; *** Upload Serial reset method for Wemos and NodeMCU
-upload_resetmethod = nodemcu
-upload_port = COM5
-lib_extra_dirs =
- ${common.shared_libdeps_dir}
+lib_extra_dirs = ./wled00/src
# ------------------------------------------------------------------------------
# LIBRARIES: required dependencies
@@ -335,7 +299,7 @@ lib_ignore =
[env:esp8285_4CH_MagicHome]
board = esp8285
-platform = ${common.platform_latest}
+platform = ${common.platform_wled_default}
platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_1m0m}
build_unflags = ${common.build_unflags}
@@ -343,7 +307,7 @@ build_flags = ${common.build_flags_esp8266} -D WLED_DISABLE_HUESYNC -D WLED_USE_
[env:esp8285_4CH_H801]
board = esp8285
-platform = ${common.platform_latest}
+platform = ${common.platform_wled_default}
platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_1m0m}
build_unflags = ${common.build_unflags}
@@ -351,7 +315,7 @@ build_flags = ${common.build_flags_esp8266} -D WLED_DISABLE_HUESYNC -D WLED_USE_
[env:esp8285_5CH_H801]
board = esp8285
-platform = ${common.platform_latest}
+platform = ${common.platform_wled_default}
platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_1m0m}
build_unflags = ${common.build_unflags}
@@ -359,7 +323,7 @@ build_flags = ${common.build_flags_esp8266} -D WLED_DISABLE_HUESYNC -D WLED_USE_
[env:d1_mini_5CH_Shojo_PCB]
board = d1_mini
-platform = ${common.platform_latest}
+platform = ${common.platform_wled_default}
platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
build_unflags = ${common.build_unflags}
@@ -395,7 +359,7 @@ build_flags = ${common.build_flags_esp8266}
[env:custom_LEDPIN_4]
board = d1_mini
-platform = ${common.platform_latest}
+platform = ${common.platform_wled_default}
platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
build_unflags = ${common.build_unflags}
@@ -403,7 +367,7 @@ build_flags = ${common.build_flags_esp8266} -D LEDPIN=4 -D IRPIN=5
[env:custom_LEDPIN_16]
board = d1_mini
-platform = ${common.platform_latest}
+platform = ${common.platform_wled_default}
platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
build_unflags = ${common.build_unflags}
@@ -412,7 +376,7 @@ build_flags = ${common.build_flags_esp8266} -D LEDPIN=16
[env:custom_LEDPIN_3]
board = d1_mini
-platform = ${common.platform_latest}
+platform = ${common.platform_wled_default}
platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
build_unflags = ${common.build_unflags}
@@ -420,7 +384,7 @@ build_flags = ${common.build_flags_esp8266} -D LEDPIN=3
[env:custom_APA102]
board = d1_mini
-platform = ${common.platform_latest}
+platform = ${common.platform_wled_default}
platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
build_unflags = ${common.build_unflags}
@@ -428,7 +392,7 @@ build_flags = ${common.build_flags_esp8266} -D USE_APA102
[env:custom_WS2801]
board = d1_mini
-platform = ${common.platform_latest}
+platform = ${common.platform_wled_default}
platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
build_unflags = ${common.build_unflags}
@@ -509,7 +473,7 @@ build_flags = ${common.build_flags_esp8266} -D LEDPIN=3
[env:codm-controller-0.4-WS2801]
board = esp_wroom_02
-platform = ${common.platform_latest}
+platform = ${common.platform_wled_default}
platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_2m1m}
build_unflags = ${common.build_unflags}
@@ -517,7 +481,7 @@ build_flags = ${common.build_flags_esp8266} -D USE_WS2801 -D CLKPIN=13 -D DATAPI
[env:codm-controller-0.4-APA102]
board = esp_wroom_02
-platform = ${common.platform_latest}
+platform = ${common.platform_wled_default}
platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_2m1m}
build_unflags = ${common.build_unflags}
@@ -533,7 +497,7 @@ build_flags = ${common.build_flags_esp8266}
[env:codm-controller-0.5-WS2801]
board = esp_wroom_02
-platform = ${common.platform_latest}
+platform = ${common.platform_wled_default}
platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_2m1m}
build_unflags = ${common.build_unflags}
@@ -541,7 +505,7 @@ build_flags = ${common.build_flags_esp8266} -D USE_WS2801 #-D CLKPIN=0 -D DATAPI
[env:codm-controller-0.5-APA102]
board = esp_wroom_02
-platform = ${common.platform_latest}
+platform = ${common.platform_wled_default}
platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_2m1m}
build_unflags = ${common.build_unflags}
diff --git a/platformio_override.ini.example b/platformio_override.ini.example
index e6c636a3a1..cf9da26828 100644
--- a/platformio_override.ini.example
+++ b/platformio_override.ini.example
@@ -15,8 +15,8 @@ board_build.ldscript = ${common.ldscript_1m0m}
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266}
; *********************************************************************
-; *** Use custom settings from file user_config_override.h
- -DUSE_CONFIG_OVERRIDE
+; *** Use custom settings from file my_config.h
+ -DWLED_USE_MY_CONFIG
; *********************************************************************
; -D WLED_DISABLE_OTA
; -D WLED_DISABLE_ALEXA
diff --git a/readme.md b/readme.md
index a1112bd916..e85f98ecc7 100644
--- a/readme.md
+++ b/readme.md
@@ -6,7 +6,7 @@
-
+
diff --git a/wled00/const.h b/wled00/const.h
index a681012012..1f131d76b7 100644
--- a/wled00/const.h
+++ b/wled00/const.h
@@ -116,8 +116,11 @@
#define NTP_PACKET_SIZE 48
-// maximum number of LEDs - MAX_LEDS is coming from the JSON response getting too big, MAX_LEDS_DMA will become a timing issue
+// maximum number of LEDs - more than 1500 LEDs (or 500 DMA "LEDPIN 3" driven ones) will cause a low memory condition on ESP8266
+#ifndef MAX_LEDS
#define MAX_LEDS 1500
+#endif
+
#define MAX_LEDS_DMA 500
// string temp buffer (now stored in stack locally)
diff --git a/wled00/my_config_sample.h b/wled00/my_config_sample.h
new file mode 100644
index 0000000000..fc54c1c5c0
--- /dev/null
+++ b/wled00/my_config_sample.h
@@ -0,0 +1,25 @@
+#pragma once
+
+/*
+ * Welcome!
+ * You can use the file "my_config.h" to make changes to the way WLED is compiled!
+ * It is possible to enable and disable certain features as well as set defaults for some runtime changeable settings.
+ *
+ * How to use:
+ * PlatformIO: Just compile the unmodified code once! The file "my_config.h" will be generated automatically and now you can make your changes.
+ *
+ * ArduinoIDE: Make a copy of this file and name it "my_config.h". Go to wled.h and uncomment "#define WLED_USE_MY_CONFIG" in the top of the file.
+ *
+ * DO NOT make changes to the "my_config_sample.h" file directly! Your changes will not be applied.
+ */
+
+// force the compiler to show a warning to confirm that this file is included
+#warning **** my_config.h: Settings from this file are honored ****
+
+/* Uncomment to use your WIFI settings as defaults
+ //WARNING: this will hardcode these as the default even after a factory reset
+#define CLIENT_SSID "Your_SSID"
+#define CLIENT_PASS "Your_Password"
+*/
+
+//#define MAX_LEDS 1500 //Maximum total LEDs. More than 1500 might create a low memory situation on ESP8266.
\ No newline at end of file
diff --git a/wled00/user_config_override_sample.h b/wled00/user_config_override_sample.h
deleted file mode 100644
index 39a61d16d7..0000000000
--- a/wled00/user_config_override_sample.h
+++ /dev/null
@@ -1,550 +0,0 @@
-// force the compiler to show a warning to confirm that this file is included
-#warning **** user_config_override.h: Using Settings from this File ****
-
-/* Uncomment and use your WIFI settings
-#define CLIENT_SSID "Your_SSID"
-#define CLIENT_PASS "Your_Password"
-*/
-
-// ESP8266-01 (blue) got too little storage space to work with all features of WLED. To use it, you must use ESP8266 Arduino Core v2.4.2 and the setting 512K(No SPIFFS).
-// ESP8266-01 (black) has 1MB flash and can thus fit the whole program. Use 1M(64K SPIFFS).
-// Uncomment some of the following lines to disable features to compile for ESP8266-01 (max flash size 434kB):
-// Alternatively, with platformio pass your chosen flags to your custom build target in platformio.ini.override
-
-// You are required to disable over-the-air updates:
-//#define WLED_DISABLE_OTA // saves 14kb
-
-// You need to choose some of these features to disable:
-//#define WLED_DISABLE_ALEXA // saves 11kb
-//#define WLED_DISABLE_BLYNK // saves 6kb
-//#define WLED_DISABLE_CRONIXIE // saves 3kb
-//#define WLED_DISABLE_HUESYNC // saves 4kb
-//#define WLED_DISABLE_INFRARED // there is no pin left for this on ESP8266-01, saves 12kb
-#ifndef WLED_DISABLE_MQTT
- #define WLED_ENABLE_MQTT // saves 12kb
-#endif
-#define WLED_ENABLE_ADALIGHT // saves 500b only
-//#define WLED_ENABLE_DMX // uses 3.5kb (use LEDPIN other than 2)
-#define WLED_ENABLE_LOXONE // uses 1.2kb
-#ifndef WLED_DISABLE_WEBSOCKETS
- #define WLED_ENABLE_WEBSOCKETS
-#endif
-
-#define WLED_DISABLE_FILESYSTEM // SPIFFS is not used by any WLED feature yet
-//#define WLED_ENABLE_FS_SERVING // Enable sending html file from SPIFFS before serving progmem version
-//#define WLED_ENABLE_FS_EDITOR // enable /edit page for editing SPIFFS content. Will also be disabled with OTA lock
-
-// to toggle usb serial debug (un)comment the following line
-//#define WLED_DEBUG
-
-// Library inclusions.
-#include
-#ifdef ESP8266
- #include
- #include
- #include
- extern "C"
- {
- #include
- }
-#else // ESP32
- #include
- #include "esp_wifi.h"
- #include
- #include
- #include "SPIFFS.h"
-#endif
-
-#include
-#include
-#include
-#include
-#ifndef WLED_DISABLE_OTA
- #include
-#endif
-#include
-#include "src/dependencies/time/TimeLib.h"
-#include "src/dependencies/timezone/Timezone.h"
-
-#ifndef WLED_DISABLE_ALEXA
- #define ESPALEXA_ASYNC
- #define ESPALEXA_NO_SUBPAGE
- #define ESPALEXA_MAXDEVICES 1
- // #define ESPALEXA_DEBUG
- #include "src/dependencies/espalexa/Espalexa.h"
-#endif
-#ifndef WLED_DISABLE_BLYNK
- #include "src/dependencies/blynk/BlynkSimpleEsp.h"
-#endif
-
-#ifdef WLED_ENABLE_DMX
- #include "src/dependencies/dmx/ESPDMX.h"
-#endif
-
-#include "src/dependencies/e131/ESPAsyncE131.h"
-#include "src/dependencies/async-mqtt-client/AsyncMqttClient.h"
-
-#define ARDUINOJSON_DECODE_UNICODE 0
-#include "src/dependencies/json/AsyncJson-v6.h"
-#include "src/dependencies/json/ArduinoJson-v6.h"
-
-#include "fcn_declare.h"
-#include "html_ui.h"
-#include "html_settings.h"
-#include "html_other.h"
-#include "FX.h"
-#include "ir_codes.h"
-#include "const.h"
-
-#ifndef CLIENT_SSID
- #define CLIENT_SSID DEFAULT_CLIENT_SSID
-#endif
-
-#ifndef CLIENT_PASS
- #define CLIENT_PASS ""
-#endif
-
-#if IR_PIN < 0
- #ifndef WLED_DISABLE_INFRARED
- #define WLED_DISABLE_INFRARED
- #endif
-#endif
-
-#ifndef WLED_DISABLE_INFRARED
- #include
- #include
- #include
-#endif
-
-// remove flicker because PWM signal of RGB channels can become out of phase (part of core as of Arduino core v2.7.0)
-//#if defined(WLED_USE_ANALOG_LEDS) && defined(ESP8266)
-// #include "src/dependencies/arduino/core_esp8266_waveform.h"
-//#endif
-
-// enable additional debug output
-#ifdef WLED_DEBUG
- #ifndef ESP8266
- #include
- #endif
- #define DEBUG_PRINT(x) Serial.print(x)
- #define DEBUG_PRINTLN(x) Serial.println(x)
- #define DEBUG_PRINTF(x) Serial.printf(x)
-#else
- #define DEBUG_PRINT(x)
- #define DEBUG_PRINTLN(x)
- #define DEBUG_PRINTF(x)
-#endif
-
-// GLOBAL VARIABLES
-// both declared and defined in header (solution from http://www.keil.com/support/docs/1868.htm)
-//
-//e.g. byte test = 2 becomes WLED_GLOBAL byte test _INIT(2);
-// int arr[]{0,1,2} becomes WLED_GLOBAL int arr[] _INIT_N(({0,1,2}));
-
-#ifndef WLED_DEFINE_GLOBAL_VARS
-# define WLED_GLOBAL extern
-# define _INIT(x)
-# define _INIT_N(x)
-#else
-# define WLED_GLOBAL
-# define _INIT(x) = x
-
-//needed to ignore commas in array definitions
-#define UNPACK( ... ) __VA_ARGS__
-# define _INIT_N(x) UNPACK x
-#endif
-
-// Global Variable definitions
-WLED_GLOBAL char versionString[] _INIT("0.10.2");
-#define WLED_CODENAME "Fumikiri"
-
-// AP and OTA default passwords (for maximum security change them!)
-WLED_GLOBAL char apPass[65] _INIT(DEFAULT_AP_PASS);
-WLED_GLOBAL char otaPass[33] _INIT(DEFAULT_OTA_PASS);
-
-// Hardware CONFIG (only changeble HERE, not at runtime)
-// LED strip pin, button pin and IR pin changeable in NpbWrapper.h!
-
-WLED_GLOBAL byte auxDefaultState _INIT(0); // 0: input 1: high 2: low
-WLED_GLOBAL byte auxTriggeredState _INIT(0); // 0: input 1: high 2: low
-WLED_GLOBAL char ntpServerName[33] _INIT("0.wled.pool.ntp.org"); // NTP server to use
-
-// WiFi CONFIG (all these can be changed via web UI, no need to set them here)
-WLED_GLOBAL char clientSSID[33] _INIT(CLIENT_SSID);
-WLED_GLOBAL char clientPass[65] _INIT(CLIENT_PASS);
-WLED_GLOBAL char cmDNS[33] _INIT("x"); // mDNS address (placeholder, is replaced by wledXXXXXX.local)
-WLED_GLOBAL char apSSID[33] _INIT(""); // AP off by default (unless setup)
-WLED_GLOBAL byte apChannel _INIT(1); // 2.4GHz WiFi AP channel (1-13)
-WLED_GLOBAL byte apHide _INIT(0); // hidden AP SSID
-WLED_GLOBAL byte apBehavior _INIT(AP_BEHAVIOR_BOOT_NO_CONN); // access point opens when no connection after boot by default
-WLED_GLOBAL IPAddress staticIP _INIT_N((( 0, 0, 0, 0))); // static IP of ESP
-WLED_GLOBAL IPAddress staticGateway _INIT_N((( 0, 0, 0, 0))); // gateway (router) IP
-WLED_GLOBAL IPAddress staticSubnet _INIT_N(((255, 255, 255, 0))); // most common subnet in home networks
-WLED_GLOBAL bool noWifiSleep _INIT(false); // disabling modem sleep modes will increase heat output and power usage, but may help with connection issues
-
-// LED CONFIG
-WLED_GLOBAL uint16_t ledCount _INIT(30); // overcurrent prevented by ABL
-WLED_GLOBAL bool useRGBW _INIT(false); // SK6812 strips can contain an extra White channel
-WLED_GLOBAL bool turnOnAtBoot _INIT(true); // turn on LEDs at power-up
-WLED_GLOBAL byte bootPreset _INIT(0); // save preset to load after power-up
-
-WLED_GLOBAL byte col[] _INIT_N(({ 255, 160, 0, 0 })); // current RGB(W) primary color. col[] should be updated if you want to change the color.
-WLED_GLOBAL byte colSec[] _INIT_N(({ 0, 0, 0, 0 })); // current RGB(W) secondary color
-WLED_GLOBAL byte briS _INIT(128); // default brightness
-
-WLED_GLOBAL byte nightlightTargetBri _INIT(0); // brightness after nightlight is over
-WLED_GLOBAL byte nightlightDelayMins _INIT(60);
-WLED_GLOBAL byte nightlightMode _INIT(NL_MODE_FADE); // See const.h for available modes. Was nightlightFade
-WLED_GLOBAL bool fadeTransition _INIT(true); // enable crossfading color transition
-WLED_GLOBAL uint16_t transitionDelay _INIT(750); // default crossfade duration in ms
-
-WLED_GLOBAL bool skipFirstLed _INIT(false); // ignore first LED in strip (useful if you need the LED as signal repeater)
-WLED_GLOBAL byte briMultiplier _INIT(100); // % of brightness to set (to limit power, if you set it to 50 and set bri to 255, actual brightness will be 127)
-
-// User Interface CONFIG
-WLED_GLOBAL char serverDescription[33] _INIT("WLED"); // Name of module
-WLED_GLOBAL bool syncToggleReceive _INIT(false); // UIs which only have a single button for sync should toggle send+receive if this is true, only send otherwise
-
-// Sync CONFIG
-WLED_GLOBAL bool buttonEnabled _INIT(true);
-WLED_GLOBAL byte irEnabled _INIT(0); // Infrared receiver
-
-WLED_GLOBAL uint16_t udpPort _INIT(21324); // WLED notifier default port
-WLED_GLOBAL uint16_t udpPort2 _INIT(65506); // WLED notifier supplemental port
-WLED_GLOBAL uint16_t udpRgbPort _INIT(19446); // Hyperion port
-
-WLED_GLOBAL bool receiveNotificationBrightness _INIT(true); // apply brightness from incoming notifications
-WLED_GLOBAL bool receiveNotificationColor _INIT(true); // apply color
-WLED_GLOBAL bool receiveNotificationEffects _INIT(true); // apply effects setup
-WLED_GLOBAL bool notifyDirect _INIT(false); // send notification if change via UI or HTTP API
-WLED_GLOBAL bool notifyButton _INIT(false); // send if updated by button or infrared remote
-WLED_GLOBAL bool notifyAlexa _INIT(false); // send notification if updated via Alexa
-WLED_GLOBAL bool notifyMacro _INIT(false); // send notification for macro
-WLED_GLOBAL bool notifyHue _INIT(true); // send notification if Hue light changes
-WLED_GLOBAL bool notifyTwice _INIT(false); // notifications use UDP: enable if devices don't sync reliably
-
-WLED_GLOBAL bool alexaEnabled _INIT(false); // enable device discovery by Amazon Echo
-WLED_GLOBAL char alexaInvocationName[33] _INIT("Light"); // speech control name of device. Choose something voice-to-text can understand
-
-WLED_GLOBAL char blynkApiKey[36] _INIT(""); // Auth token for Blynk server. If empty, no connection will be made
-
-WLED_GLOBAL uint16_t realtimeTimeoutMs _INIT(2500); // ms timeout of realtime mode before returning to normal mode
-WLED_GLOBAL int arlsOffset _INIT(0); // realtime LED offset
-WLED_GLOBAL bool receiveDirect _INIT(true); // receive UDP realtime
-WLED_GLOBAL bool arlsDisableGammaCorrection _INIT(true); // activate if gamma correction is handled by the source
-WLED_GLOBAL bool arlsForceMaxBri _INIT(false); // enable to force max brightness if source has very dark colors that would be black
-
-#ifdef WLED_ENABLE_DMX
-WLED_GLOBAL DMXESPSerial dmx;
-WLED_GLOBAL uint16_t e131ProxyUniverse _INIT(0); // output this E1.31 (sACN) / ArtNet universe via MAX485 (0 = disabled)
-#endif
-WLED_GLOBAL uint16_t e131Universe _INIT(1); // settings for E1.31 (sACN) protocol (only DMX_MODE_MULTIPLE_* can span over consequtive universes)
-WLED_GLOBAL uint16_t e131Port _INIT(5568); // DMX in port. E1.31 default is 5568, Art-Net is 6454
-WLED_GLOBAL byte DMXMode _INIT(DMX_MODE_MULTIPLE_RGB); // DMX mode (s.a.)
-WLED_GLOBAL uint16_t DMXAddress _INIT(1); // DMX start address of fixture, a.k.a. first Channel [for E1.31 (sACN) protocol]
-WLED_GLOBAL byte DMXOldDimmer _INIT(0); // only update brightness on change
-WLED_GLOBAL byte e131LastSequenceNumber[E131_MAX_UNIVERSE_COUNT]; // to detect packet loss
-WLED_GLOBAL bool e131Multicast _INIT(false); // multicast or unicast
-WLED_GLOBAL bool e131SkipOutOfSequence _INIT(false); // freeze instead of flickering
-
-WLED_GLOBAL bool mqttEnabled _INIT(true);
-WLED_GLOBAL char mqttDeviceTopic[33] _INIT(""); // main MQTT topic (individual per device, default is wled/mac)
-WLED_GLOBAL char mqttGroupTopic[33] _INIT("wled/all"); // second MQTT topic (for example to group devices)
-WLED_GLOBAL char mqttServer[33] _INIT("your_broker.ip"); // both domains and IPs should work (no SSL)
-WLED_GLOBAL char mqttUser[41] _INIT("your_mqtt_user"); // optional: username for MQTT auth
-WLED_GLOBAL char mqttPass[41] _INIT("your_mqtt_pwd"); // optional: password for MQTT auth
-WLED_GLOBAL char mqttClientID[41] _INIT(""); // override the client ID
-WLED_GLOBAL uint16_t mqttPort _INIT(1883);
-
-WLED_GLOBAL bool huePollingEnabled _INIT(false); // poll hue bridge for light state
-WLED_GLOBAL uint16_t huePollIntervalMs _INIT(2500); // low values (< 1sec) may cause lag but offer quicker response
-WLED_GLOBAL char hueApiKey[47] _INIT("api"); // key token will be obtained from bridge
-WLED_GLOBAL byte huePollLightId _INIT(1); // ID of hue lamp to sync to. Find the ID in the hue app ("about" section)
-WLED_GLOBAL IPAddress hueIP _INIT((0, 0, 0, 0)); // IP address of the bridge
-WLED_GLOBAL bool hueApplyOnOff _INIT(true);
-WLED_GLOBAL bool hueApplyBri _INIT(true);
-WLED_GLOBAL bool hueApplyColor _INIT(true);
-
-// Time CONFIG
-WLED_GLOBAL bool ntpEnabled _INIT(true); // get internet time. Only required if you use clock overlays or time-activated macros
-WLED_GLOBAL bool useAMPM _INIT(false); // 12h/24h clock format
-WLED_GLOBAL byte currentTimezone _INIT(2); // Timezone ID. Refer to timezones array in wled10_ntp.ino
-WLED_GLOBAL int utcOffsetSecs _INIT(0); // Seconds to offset from UTC before timzone calculation
-
-WLED_GLOBAL byte overlayDefault _INIT(0); // 0: no overlay 1: analog clock 2: single-digit clocl 3: cronixie
-WLED_GLOBAL byte overlayMin _INIT(0), overlayMax _INIT(ledCount - 1); // boundaries of overlay mode
-
-WLED_GLOBAL byte analogClock12pixel _INIT(0); // The pixel in your strip where "midnight" would be
-WLED_GLOBAL bool analogClockSecondsTrail _INIT(false); // Display seconds as trail of LEDs instead of a single pixel
-WLED_GLOBAL bool analogClock5MinuteMarks _INIT(false); // Light pixels at every 5-minute position
-
-WLED_GLOBAL char cronixieDisplay[7] _INIT("HHMMSS"); // Cronixie Display mask. See wled13_cronixie.ino
-WLED_GLOBAL bool cronixieBacklight _INIT(true); // Allow digits to be back-illuminated
-
-WLED_GLOBAL bool countdownMode _INIT(false); // Clock will count down towards date
-WLED_GLOBAL byte countdownYear _INIT(20), countdownMonth _INIT(1); // Countdown target date, year is last two digits
-WLED_GLOBAL byte countdownDay _INIT(1) , countdownHour _INIT(0);
-WLED_GLOBAL byte countdownMin _INIT(0) , countdownSec _INIT(0);
-
-WLED_GLOBAL byte macroBoot _INIT(0); // macro loaded after startup
-WLED_GLOBAL byte macroNl _INIT(0); // after nightlight delay over
-WLED_GLOBAL byte macroCountdown _INIT(0);
-WLED_GLOBAL byte macroAlexaOn _INIT(0), macroAlexaOff _INIT(0);
-WLED_GLOBAL byte macroButton _INIT(0), macroLongPress _INIT(0), macroDoublePress _INIT(0);
-
-// Security CONFIG
-WLED_GLOBAL bool otaLock _INIT(false); // prevents OTA firmware updates without password. ALWAYS enable if system exposed to any public networks
-WLED_GLOBAL bool wifiLock _INIT(false); // prevents access to WiFi settings when OTA lock is enabled
-WLED_GLOBAL bool aOtaEnabled _INIT(false); // ArduinoOTA allows easy updates directly from the IDE. Careful, it does not auto-disable when OTA lock is on
-
-WLED_GLOBAL uint16_t userVar0 _INIT(0), userVar1 _INIT(0); //available for use in usermod
-
-#ifdef WLED_ENABLE_DMX
- // dmx CONFIG
- WLED_GLOBAL byte DMXChannels _INIT(7); // number of channels per fixture
- WLED_GLOBAL byte DMXFixtureMap[15] _INIT_N(({ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }));
- // assigns the different channels to different functions. See wled21_dmx.ino for more information.
- WLED_GLOBAL uint16_t DMXGap _INIT(10); // gap between the fixtures. makes addressing easier because you don't have to memorize odd numbers when climbing up onto a rig.
- WLED_GLOBAL uint16_t DMXStart _INIT(10); // start address of the first fixture
- WLED_GLOBAL uint16_t DMXStartLED _INIT(0); // LED from which DMX fixtures start
-#endif
-
-// internal global variable declarations
-// wifi
-WLED_GLOBAL bool apActive _INIT(false);
-WLED_GLOBAL bool forceReconnect _INIT(false);
-WLED_GLOBAL uint32_t lastReconnectAttempt _INIT(0);
-WLED_GLOBAL bool interfacesInited _INIT(false);
-WLED_GLOBAL bool wasConnected _INIT(false);
-
-// color
-WLED_GLOBAL byte colOld[] _INIT_N(({ 0, 0, 0, 0 })); // color before transition
-WLED_GLOBAL byte colT[] _INIT_N(({ 0, 0, 0, 0 })); // color that is currently displayed on the LEDs
-WLED_GLOBAL byte colIT[] _INIT_N(({ 0, 0, 0, 0 })); // color that was last sent to LEDs
-WLED_GLOBAL byte colSecT[] _INIT_N(({ 0, 0, 0, 0 }));
-WLED_GLOBAL byte colSecOld[] _INIT_N(({ 0, 0, 0, 0 }));
-WLED_GLOBAL byte colSecIT[] _INIT_N(({ 0, 0, 0, 0 }));
-
-WLED_GLOBAL byte lastRandomIndex _INIT(0); // used to save last random color so the new one is not the same
-
-// transitions
-WLED_GLOBAL bool transitionActive _INIT(false);
-WLED_GLOBAL uint16_t transitionDelayDefault _INIT(transitionDelay);
-WLED_GLOBAL uint16_t transitionDelayTemp _INIT(transitionDelay);
-WLED_GLOBAL unsigned long transitionStartTime;
-WLED_GLOBAL float tperLast _INIT(0); // crossfade transition progress, 0.0f - 1.0f
-WLED_GLOBAL bool jsonTransitionOnce _INIT(false);
-
-// nightlight
-WLED_GLOBAL bool nightlightActive _INIT(false);
-WLED_GLOBAL bool nightlightActiveOld _INIT(false);
-WLED_GLOBAL uint32_t nightlightDelayMs _INIT(10);
-WLED_GLOBAL byte nightlightDelayMinsDefault _INIT(nightlightDelayMins);
-WLED_GLOBAL unsigned long nightlightStartTime;
-WLED_GLOBAL byte briNlT _INIT(0); // current nightlight brightness
-WLED_GLOBAL byte colNlT[] _INIT_N(({ 0, 0, 0, 0 })); // current nightlight color
-
-// brightness
-WLED_GLOBAL unsigned long lastOnTime _INIT(0);
-WLED_GLOBAL bool offMode _INIT(!turnOnAtBoot);
-WLED_GLOBAL byte bri _INIT(briS);
-WLED_GLOBAL byte briOld _INIT(0);
-WLED_GLOBAL byte briT _INIT(0);
-WLED_GLOBAL byte briIT _INIT(0);
-WLED_GLOBAL byte briLast _INIT(128); // brightness before turned off. Used for toggle function
-WLED_GLOBAL byte whiteLast _INIT(128); // white channel before turned off. Used for toggle function
-
-// button
-WLED_GLOBAL bool buttonPressedBefore _INIT(false);
-WLED_GLOBAL bool buttonLongPressed _INIT(false);
-WLED_GLOBAL unsigned long buttonPressedTime _INIT(0);
-WLED_GLOBAL unsigned long buttonWaitTime _INIT(0);
-
-// notifications
-WLED_GLOBAL bool notifyDirectDefault _INIT(notifyDirect);
-WLED_GLOBAL bool receiveNotifications _INIT(true);
-WLED_GLOBAL unsigned long notificationSentTime _INIT(0);
-WLED_GLOBAL byte notificationSentCallMode _INIT(NOTIFIER_CALL_MODE_INIT);
-WLED_GLOBAL bool notificationTwoRequired _INIT(false);
-
-// effects
-WLED_GLOBAL byte effectCurrent _INIT(0);
-WLED_GLOBAL byte effectSpeed _INIT(128);
-WLED_GLOBAL byte effectIntensity _INIT(128);
-WLED_GLOBAL byte effectPalette _INIT(0);
-
-// network
-WLED_GLOBAL bool udpConnected _INIT(false), udp2Connected _INIT(false), udpRgbConnected _INIT(false);
-
-// ui style
-WLED_GLOBAL bool showWelcomePage _INIT(false);
-
-// hue
-WLED_GLOBAL byte hueError _INIT(HUE_ERROR_INACTIVE);
-// WLED_GLOBAL uint16_t hueFailCount _INIT(0);
-WLED_GLOBAL float hueXLast _INIT(0), hueYLast _INIT(0);
-WLED_GLOBAL uint16_t hueHueLast _INIT(0), hueCtLast _INIT(0);
-WLED_GLOBAL byte hueSatLast _INIT(0), hueBriLast _INIT(0);
-WLED_GLOBAL unsigned long hueLastRequestSent _INIT(0);
-WLED_GLOBAL bool hueAuthRequired _INIT(false);
-WLED_GLOBAL bool hueReceived _INIT(false);
-WLED_GLOBAL bool hueStoreAllowed _INIT(false), hueNewKey _INIT(false);
-
-// overlays
-WLED_GLOBAL byte overlayCurrent _INIT(overlayDefault);
-WLED_GLOBAL byte overlaySpeed _INIT(200);
-WLED_GLOBAL unsigned long overlayRefreshMs _INIT(200);
-WLED_GLOBAL unsigned long overlayRefreshedTime;
-
-// cronixie
-WLED_GLOBAL byte dP[] _INIT_N(({ 0, 0, 0, 0, 0, 0 }));
-WLED_GLOBAL bool cronixieInit _INIT(false);
-
-// countdown
-WLED_GLOBAL unsigned long countdownTime _INIT(1514764800L);
-WLED_GLOBAL bool countdownOverTriggered _INIT(true);
-
-// timer
-WLED_GLOBAL byte lastTimerMinute _INIT(0);
-WLED_GLOBAL byte timerHours[] _INIT_N(({ 0, 0, 0, 0, 0, 0, 0, 0 }));
-WLED_GLOBAL byte timerMinutes[] _INIT_N(({ 0, 0, 0, 0, 0, 0, 0, 0 }));
-WLED_GLOBAL byte timerMacro[] _INIT_N(({ 0, 0, 0, 0, 0, 0, 0, 0 }));
-WLED_GLOBAL byte timerWeekday[] _INIT_N(({ 255, 255, 255, 255, 255, 255, 255, 255 })); // weekdays to activate on
-// bit pattern of arr elem: 0b11111111: sun,sat,fri,thu,wed,tue,mon,validity
-
-// blynk
-WLED_GLOBAL bool blynkEnabled _INIT(false);
-
-// preset cycling
-WLED_GLOBAL bool presetCyclingEnabled _INIT(false);
-WLED_GLOBAL byte presetCycleMin _INIT(1), presetCycleMax _INIT(5);
-WLED_GLOBAL uint16_t presetCycleTime _INIT(12);
-WLED_GLOBAL unsigned long presetCycledTime _INIT(0);
-WLED_GLOBAL byte presetCycCurr _INIT(presetCycleMin);
-WLED_GLOBAL bool presetApplyBri _INIT(true);
-WLED_GLOBAL bool saveCurrPresetCycConf _INIT(false);
-
-// realtime
-WLED_GLOBAL byte realtimeMode _INIT(REALTIME_MODE_INACTIVE);
-WLED_GLOBAL byte realtimeOverride _INIT(REALTIME_OVERRIDE_NONE);
-WLED_GLOBAL IPAddress realtimeIP _INIT((0, 0, 0, 0));
-WLED_GLOBAL unsigned long realtimeTimeout _INIT(0);
-WLED_GLOBAL uint8_t tpmPacketCount _INIT(0);
-WLED_GLOBAL uint16_t tpmPayloadFrameSize _INIT(0);
-
-// mqtt
-WLED_GLOBAL long lastMqttReconnectAttempt _INIT(0);
-WLED_GLOBAL long lastInterfaceUpdate _INIT(0);
-WLED_GLOBAL byte interfaceUpdateCallMode _INIT(NOTIFIER_CALL_MODE_INIT);
-WLED_GLOBAL char mqttStatusTopic[40] _INIT(""); // this must be global because of async handlers
-
-#if AUXPIN >= 0
- // auxiliary debug pin
- WLED_GLOBAL byte auxTime _INIT(0);
- WLED_GLOBAL unsigned long auxStartTime _INIT(0);
- WLED_GLOBAL bool auxActive _INIT(false, auxActiveBefore _INIT(false);
-#endif
-
-// alexa udp
-WLED_GLOBAL String escapedMac;
-#ifndef WLED_DISABLE_ALEXA
- WLED_GLOBAL Espalexa espalexa;
- WLED_GLOBAL EspalexaDevice* espalexaDevice;
-#endif
-
-// dns server
-WLED_GLOBAL DNSServer dnsServer;
-
-// network time
-WLED_GLOBAL bool ntpConnected _INIT(false);
-WLED_GLOBAL time_t localTime _INIT(0);
-WLED_GLOBAL unsigned long ntpLastSyncTime _INIT(999000000L);
-WLED_GLOBAL unsigned long ntpPacketSentTime _INIT(999000000L);
-WLED_GLOBAL IPAddress ntpServerIP;
-WLED_GLOBAL uint16_t ntpLocalPort _INIT(2390);
-WLED_GLOBAL uint16_t rolloverMillis _INIT(0);
-
-// Temp buffer
-WLED_GLOBAL char* obuf;
-WLED_GLOBAL uint16_t olen _INIT(0);
-
-// presets
-WLED_GLOBAL uint16_t savedPresets _INIT(0);
-WLED_GLOBAL int8_t currentPreset _INIT(-1);
-WLED_GLOBAL bool isPreset _INIT(false);
-
-WLED_GLOBAL byte errorFlag _INIT(0);
-
-WLED_GLOBAL String messageHead, messageSub;
-WLED_GLOBAL byte optionType;
-
-WLED_GLOBAL bool doReboot _INIT(false); // flag to initiate reboot from async handlers
-WLED_GLOBAL bool doPublishMqtt _INIT(false);
-
-// server library objects
-WLED_GLOBAL AsyncWebServer server _INIT_N(((80)));
-#ifdef WLED_ENABLE_WEBSOCKETS
-WLED_GLOBAL AsyncWebSocket ws _INIT_N((("/ws")));
-#endif
-WLED_GLOBAL AsyncClient* hueClient _INIT(NULL);
-WLED_GLOBAL AsyncMqttClient* mqtt _INIT(NULL);
-
-// udp interface objects
-WLED_GLOBAL WiFiUDP notifierUdp, rgbUdp, notifier2Udp;
-WLED_GLOBAL WiFiUDP ntpUdp;
-WLED_GLOBAL ESPAsyncE131 e131 _INIT_N(((handleE131Packet)));
-WLED_GLOBAL bool e131NewData _INIT(false);
-
-// led fx library object
-WLED_GLOBAL WS2812FX strip _INIT(WS2812FX());
-
-// Usermod manager
-WLED_GLOBAL UsermodManager usermods _INIT(UsermodManager());
-
-// Status LED
-#if STATUSLED && STATUSLED != LEDPIN
- WLED_GLOBAL unsigned long ledStatusLastMillis _INIT(0);
- WLED_GLOBAL unsigned short ledStatusType _INIT(0); // current status type - corresponds to number of blinks per second
- WLED_GLOBAL bool ledStatusState _INIT(0); // the current LED state
-#endif
-
-// debug macro variable definitions
-#ifdef WLED_DEBUG
- WLED_GLOBAL unsigned long debugTime _INIT(0);
- WLED_GLOBAL int lastWifiState _INIT(3);
- WLED_GLOBAL unsigned long wifiStateChangedTime _INIT(0);
- WLED_GLOBAL int loops _INIT(0);
-#endif
-
-
-#define WLED_CONNECTED (WiFi.status() == WL_CONNECTED)
-#define WLED_WIFI_CONFIGURED (strlen(clientSSID) >= 1 && strcmp(clientSSID, DEFAULT_CLIENT_SSID) != 0)
-#define WLED_MQTT_CONNECTED (mqtt != nullptr && mqtt->connected())
-
-// append new c string to temp buffer efficiently
-bool oappend(const char* txt);
-// append new number to temp buffer efficiently
-bool oappendi(int i);
-
-class WLED {
-public:
- WLED();
- static WLED& instance()
- {
- static WLED instance;
- return instance;
- }
-
- // boot starts here
- void setup();
-
- void loop();
- void reset();
-
- void beginStrip();
- void handleConnection();
- void initAP(bool resetAP = false);
- void initConnection();
- void initInterfaces();
- void handleStatusLED();
-};
diff --git a/wled00/wled.h b/wled00/wled.h
index f266e8dfc6..73e1f1671a 100644
--- a/wled00/wled.h
+++ b/wled00/wled.h
@@ -10,9 +10,11 @@
// version code in format yymmddb (b = daily build)
#define VERSION 2011120
+//uncomment this if you have a "my_config.h" file you'd like to use
+//#define WLED_USE_MY_CONFIG
+
// ESP8266-01 (blue) got too little storage space to work with all features of WLED. To use it, you must use ESP8266 Arduino Core v2.4.2 and the setting 512K(No SPIFFS).
-#ifndef USE_CONFIG_OVERRIDE
// ESP8266-01 (black) has 1MB flash and can thus fit the whole program. Use 1M(64K SPIFFS).
// Uncomment some of the following lines to disable features to compile for ESP8266-01 (max flash size 434kB):
// Alternatively, with platformio pass your chosen flags to your custom build target in platformio.ini.override
@@ -64,6 +66,10 @@
#include "src/dependencies/network/Network.h"
+#ifdef WLED_USE_MY_CONFIG
+ #include "my_config.h"
+#endif
+
#include
#include
#include
@@ -560,11 +566,4 @@ class WLED {
void initInterfaces();
void handleStatusLED();
};
-#endif // USE_CONFIG_OVERRIDE
-
-// User settings in file "user_config_override.h" added in gitignore so it will not be overwritten
-#ifdef USE_CONFIG_OVERRIDE
- #include "user_config_override.h" // Configuration overrides
-#endif
-
#endif // WLED_H