From b2f5bee20dfe294bc01fae1e85748cefedca9ed8 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Fri, 7 May 2021 11:51:48 +0200 Subject: [PATCH] Conditional compile for disabled features. --- wled00/cfg.cpp | 25 +++++++++++++++++++++++++ wled00/set.cpp | 4 ++++ wled00/wled.cpp | 4 ++++ wled00/wled.h | 8 +++++++- wled00/wled_eeprom.cpp | 6 ++++++ wled00/xml.cpp | 4 ++++ 6 files changed, 50 insertions(+), 1 deletion(-) diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index 7543e3733..6af7a86e4 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -269,6 +269,7 @@ void deserializeConfig() { CJSON(macroAlexaOn, interfaces[F("va")][F("macros")][0]); CJSON(macroAlexaOff, interfaces[F("va")][F("macros")][1]); +#ifndef WLED_DISABLE_BLYNK const char* apikey = interfaces["blynk"][F("token")] | "Hidden"; tdd = strnlen(apikey, 36); if (tdd > 20 || tdd == 0) @@ -277,7 +278,9 @@ void deserializeConfig() { JsonObject if_blynk = interfaces["blynk"]; getStringFromJson(blynkHost, if_blynk[F("host")], 33); CJSON(blynkPort, if_blynk["port"]); +#endif +#ifdef WLED_ENABLE_MQTT JsonObject if_mqtt = interfaces["mqtt"]; CJSON(mqttEnabled, if_mqtt["en"]); getStringFromJson(mqttServer, if_mqtt[F("broker")], 33); @@ -288,7 +291,9 @@ void deserializeConfig() { getStringFromJson(mqttDeviceTopic, if_mqtt[F("topics")][F("device")], 33); // "wled/test" getStringFromJson(mqttGroupTopic, if_mqtt[F("topics")][F("group")], 33); // "" +#endif +#ifndef WLED_DISABLE_HUESYNC JsonObject if_hue = interfaces[F("hue")]; CJSON(huePollingEnabled, if_hue["en"]); CJSON(huePollLightId, if_hue["id"]); @@ -304,6 +309,7 @@ void deserializeConfig() { for (byte i = 0; i < 4; i++) CJSON(hueIP[i], if_hue_ip[i]); +#endif JsonObject if_ntp = interfaces[F("ntp")]; CJSON(ntpEnabled, if_ntp["en"]); @@ -586,11 +592,15 @@ void serializeConfig() { JsonArray if_va_macros = if_va.createNestedArray("macros"); if_va_macros.add(macroAlexaOn); if_va_macros.add(macroAlexaOff); + +#ifndef WLED_DISABLE_BLYNK JsonObject if_blynk = interfaces.createNestedObject("blynk"); if_blynk[F("token")] = strlen(blynkApiKey) ? "Hidden":""; if_blynk[F("host")] = blynkHost; if_blynk["port"] = blynkPort; +#endif +#ifdef WLED_ENABLE_MQTT JsonObject if_mqtt = interfaces.createNestedObject("mqtt"); if_mqtt["en"] = mqttEnabled; if_mqtt[F("broker")] = mqttServer; @@ -602,7 +612,9 @@ void serializeConfig() { JsonObject if_mqtt_topics = if_mqtt.createNestedObject(F("topics")); if_mqtt_topics[F("device")] = mqttDeviceTopic; if_mqtt_topics[F("group")] = mqttGroupTopic; +#endif +#ifndef WLED_DISABLE_HUESYNC JsonObject if_hue = interfaces.createNestedObject("hue"); if_hue["en"] = huePollingEnabled; if_hue["id"] = huePollLightId; @@ -617,6 +629,7 @@ void serializeConfig() { for (byte i = 0; i < 4; i++) { if_hue_ip.add(hueIP[i]); } +#endif JsonObject if_ntp = interfaces.createNestedObject("ntp"); if_ntp["en"] = ntpEnabled; @@ -700,15 +713,21 @@ bool deserializeConfigSec() { JsonObject interfaces = doc["if"]; +#ifndef WLED_DISABLE_BLYNK const char* apikey = interfaces["blynk"][F("token")] | "Hidden"; int tdd = strnlen(apikey, 36); if (tdd > 20 || tdd == 0) getStringFromJson(blynkApiKey, apikey, 36); +#endif +#ifdef WLED_ENABLE_MQTT JsonObject if_mqtt = interfaces["mqtt"]; getStringFromJson(mqttPass, if_mqtt["psk"], 41); +#endif +#ifndef WLED_DISABLE_HUESYNC getStringFromJson(hueApiKey, interfaces[F("hue")][F("key")], 47); +#endif JsonObject ota = doc["ota"]; getStringFromJson(otaPass, ota[F("pwd")], 33); @@ -735,12 +754,18 @@ void serializeConfigSec() { ap["psk"] = apPass; JsonObject interfaces = doc.createNestedObject("if"); +#ifndef WLED_DISABLE_BLYNK JsonObject if_blynk = interfaces.createNestedObject("blynk"); if_blynk[F("token")] = blynkApiKey; +#endif +#ifdef WLED_ENABLE_MQTT JsonObject if_mqtt = interfaces.createNestedObject("mqtt"); if_mqtt["psk"] = mqttPass; +#endif +#ifndef WLED_DISABLE_HUESYNC JsonObject if_hue = interfaces.createNestedObject("hue"); if_hue[F("key")] = hueApiKey; +#endif JsonObject ota = doc.createNestedObject("ota"); ota[F("pwd")] = otaPass; diff --git a/wled00/set.cpp b/wled00/set.cpp index 191fbefbf..94559e1b1 100644 --- a/wled00/set.cpp +++ b/wled00/set.cpp @@ -239,6 +239,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) alexaEnabled = request->hasArg(F("AL")); strlcpy(alexaInvocationName, request->arg(F("AI")).c_str(), 33); + #ifndef WLED_DISABLE_BLYNK strlcpy(blynkHost, request->arg("BH").c_str(), 33); t = request->arg(F("BP")).toInt(); if (t > 0) blynkPort = t; @@ -246,6 +247,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) if (request->hasArg("BK") && !request->arg("BK").equals(F("Hidden"))) { strlcpy(blynkApiKey, request->arg("BK").c_str(), 36); initBlynk(blynkApiKey, blynkHost, blynkPort); } + #endif #ifdef WLED_ENABLE_MQTT mqttEnabled = request->hasArg(F("MQ")); @@ -308,8 +310,10 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) analogClock5MinuteMarks = request->hasArg(F("O5")); analogClockSecondsTrail = request->hasArg(F("OS")); + #ifndef WLED_DISABLE_CRONIXIE strcpy(cronixieDisplay,request->arg(F("CX")).c_str()); cronixieBacklight = request->hasArg(F("CB")); + #endif countdownMode = request->hasArg(F("CE")); countdownYear = request->arg(F("CY")).toInt(); countdownMonth = request->arg(F("CI")).toInt(); diff --git a/wled00/wled.cpp b/wled00/wled.cpp index a0209f5ad..eddd92c1e 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -566,11 +566,13 @@ void WLED::initInterfaces() { DEBUG_PRINTLN(F("Init STA interfaces")); +#ifndef WLED_DISABLE_HUESYNC if (hueIP[0] == 0) { hueIP[0] = Network.localIP()[0]; hueIP[1] = Network.localIP()[1]; hueIP[2] = Network.localIP()[2]; } +#endif // init Alexa hue emulation if (alexaEnabled) @@ -608,7 +610,9 @@ void WLED::initInterfaces() if (ntpEnabled) ntpConnected = ntpUdp.begin(ntpLocalPort); +#ifndef WLED_DISABLE_BLYNK initBlynk(blynkApiKey, blynkHost, blynkPort); +#endif e131.begin(e131Multicast, e131Port, e131Universe, E131_MAX_UNIVERSE_COUNT); reconnectHue(); initMqtt(); diff --git a/wled00/wled.h b/wled00/wled.h index 4b5e7f8ce..c8c6fc330 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2105061 +#define VERSION 2105071 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG @@ -279,9 +279,11 @@ WLED_GLOBAL bool notifyTwice _INIT(false); // notificatio 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 +#ifndef WLED_DISABLE_BLYNK WLED_GLOBAL char blynkApiKey[36] _INIT(""); // Auth token for Blynk server. If empty, no connection will be made WLED_GLOBAL char blynkHost[33] _INIT("blynk-cloud.com"); // Default Blynk host WLED_GLOBAL uint16_t blynkPort _INIT(80); // Default Blynk port +#endif 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 @@ -311,6 +313,7 @@ WLED_GLOBAL char mqttPass[41] _INIT(""); // optional: password WLED_GLOBAL char mqttClientID[41] _INIT(""); // override the client ID WLED_GLOBAL uint16_t mqttPort _INIT(1883); +#ifndef WLED_DISABLE_HUESYNC 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 @@ -319,6 +322,7 @@ WLED_GLOBAL IPAddress hueIP _INIT_N(((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); +#endif // Time CONFIG WLED_GLOBAL bool ntpEnabled _INIT(false); // get internet time. Only required if you use clock overlays or time-activated macros @@ -333,8 +337,10 @@ WLED_GLOBAL byte analogClock12pixel _INIT(0); // The pixel in your 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 +#ifndef WLED_DISABLE_CRONIXIE 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 +#endif 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 diff --git a/wled00/wled_eeprom.cpp b/wled00/wled_eeprom.cpp index cd428636a..576793a15 100644 --- a/wled00/wled_eeprom.cpp +++ b/wled00/wled_eeprom.cpp @@ -157,6 +157,7 @@ void loadSettingsFromEEPROM() receiveNotifications = (receiveNotificationBrightness || receiveNotificationColor || receiveNotificationEffects); if (lastEEPROMversion > 4) { + #ifndef WLED_DISABLE_HUESYNC huePollingEnabled = EEPROM.read(2048); //hueUpdatingEnabled = EEPROM.read(2049); for (int i = 2050; i < 2054; ++i) @@ -172,6 +173,7 @@ void loadSettingsFromEEPROM() hueApplyBri = EEPROM.read(2104); hueApplyColor = EEPROM.read(2105); huePollLightId = EEPROM.read(2106); + #endif } if (lastEEPROMversion > 5) { overlayMin = EEPROM.read(2150); @@ -188,8 +190,10 @@ void loadSettingsFromEEPROM() countdownSec = EEPROM.read(2161); setCountdown(); + #ifndef WLED_DISABLE_CRONIXIE readStringFromEEPROM(2165, cronixieDisplay, 6); cronixieBacklight = EEPROM.read(2171); + #endif //macroBoot = EEPROM.read(2175); macroAlexaOn = EEPROM.read(2176); @@ -343,8 +347,10 @@ void loadSettingsFromEEPROM() //custom macro memory (16 slots/ each 64byte) //1024-2047 reserved + #ifndef WLED_DISABLE_BLYNK readStringFromEEPROM(2220, blynkApiKey, 35); if (strlen(blynkApiKey) < 25) blynkApiKey[0] = 0; + #endif #ifdef WLED_ENABLE_DMX // DMX (2530 - 2549)2535 diff --git a/wled00/xml.cpp b/wled00/xml.cpp index f69897468..f8c997766 100644 --- a/wled00/xml.cpp +++ b/wled00/xml.cpp @@ -419,8 +419,10 @@ void getSettingsJS(byte subPage, char* dest) sappends('s',SET_F("AI"),alexaInvocationName); sappend('c',SET_F("SA"),notifyAlexa); sappends('s',SET_F("BK"),(char*)((blynkEnabled)?SET_F("Hidden"):"")); + #ifndef WLED_DISABLE_BLYNK sappends('s',SET_F("BH"),blynkHost); sappend('v',SET_F("BP"),blynkPort); + #endif #ifdef WLED_ENABLE_MQTT sappend('c',SET_F("MQ"),mqttEnabled); @@ -489,8 +491,10 @@ void getSettingsJS(byte subPage, char* dest) sappend('v',SET_F("OM"),analogClock12pixel); sappend('c',SET_F("OS"),analogClockSecondsTrail); sappend('c',SET_F("O5"),analogClock5MinuteMarks); + #ifndef WLED_DISABLE_CRONIXIE sappends('s',SET_F("CX"),cronixieDisplay); sappend('c',SET_F("CB"),cronixieBacklight); + #endif sappend('c',SET_F("CE"),countdownMode); sappend('v',SET_F("CY"),countdownYear); sappend('v',SET_F("CI"),countdownMonth);