From 69aacdd903de9f0b9d76ae40cef5ca27d2ef0cff Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Wed, 21 Aug 2019 14:00:14 +0200 Subject: [PATCH] esp32 compatibility --- platformio.ini | 8 +- platformio.pro | 171 +++++++++++++++++++++++------------ src/ledcontroller.h | 2 +- src/ledsettings.h | 2 +- src/main.cpp | 150 +++++++++++++++--------------- src/patterns/plasmapattern.h | 20 +--- 6 files changed, 203 insertions(+), 150 deletions(-) diff --git a/platformio.ini b/platformio.ini index 4fa4a6d..ae3bfa8 100644 --- a/platformio.ini +++ b/platformio.ini @@ -1,4 +1,4 @@ -; PlatformIO Project Configuration File +;PlatformIO Project Configuration File ; ; Build options: build flags, source filter ; Upload options: custom upload port, speed and extra flags @@ -8,7 +8,13 @@ ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html +[env:esp32dev] +platform = espressif32 +board = esp32dev +framework = arduino + [env:d1_mini] platform = espressif8266 board = d1_mini framework = arduino + diff --git a/platformio.pro b/platformio.pro index b361d99..50053cd 100644 --- a/platformio.pro +++ b/platformio.pro @@ -5,75 +5,126 @@ else { HOMEDIR += $$(HOME) } -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/tools/sdk/include" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/tools/sdk/libc/xtensa-lx106-elf/include" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/cores/esp8266" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/tools/sdk/lwip2/include" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/variants/d1_mini" -INCLUDEPATH += "$${HOMEDIR}/LedController/lib/FastLED" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SoftwareSerial" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WebServer/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ArduinoOTA" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/DNSServer/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/EEPROM" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266AVRISP/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPClient/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPUpdateServer/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266LLMNR" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266NetBIOS" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266SSDP" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFiMesh/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266httpUpdate/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266mDNS/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Ethernet/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/GDBStub/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Hash/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SD/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SPI" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SPISlave/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Servo/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/TFT_Touch_Shield_V2" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Ticker" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Wire" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/esp8266/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/4.8.2" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/4.8.2/xtensa-lx106-elf" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/lib/gcc/xtensa-lx106-elf/4.8.2/include-fixed" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/lib/gcc/xtensa-lx106-elf/4.8.2/include" +INCLUDEPATH += "$${HOMEDIR}/projects/LedController/include" +INCLUDEPATH += "$${HOMEDIR}/projects/LedController/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/FS/src" +INCLUDEPATH += "$${HOMEDIR}/projects/LedController/lib/FastLED" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/config" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_trace" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_update" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/asio" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bootloader_support" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bt" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/coap" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/console" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/driver" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp-tls" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_adc_cal" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_event" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_client" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_server" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_ota" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_server" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_ringbuf" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/ethernet" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/expat" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/fatfs" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freemodbus" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/heap" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/idf_test" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/jsmn" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/json" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/libsodium" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/log" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/lwip" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mbedtls" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mdns" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/micro-ecc" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mqtt" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/newlib" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/nghttp" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/nvs_flash" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/openssl" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/protobuf-c" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/protocomm" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/pthread" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/sdmmc" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/smartconfig_ack" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/soc" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/spi_flash" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/spiffs" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/tcp_transport" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/tcpip_adapter" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/ulp" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/unity" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/vfs" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wear_levelling" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wifi_provisioning" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wpa_supplicant" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/xtensa-debug-module" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32-camera" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp-face" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/fb_gfx" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/cores/esp32" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/variants/esp32" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/ArduinoOTA/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/AsyncUDP/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/AzureIoT/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/BluetoothSerial/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/DNSServer/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/EEPROM" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/ESP32/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/ESPmDNS/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/FFat/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdate/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/NetBIOS/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/Preferences/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/SD/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/SD_MMC/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/SPI/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/SPIFFS/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/SimpleBLE/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/Ticker/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/Update/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/WiFiClientSecure/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/Wire/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include/c++/5.2.0" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include/c++/5.2.0/xtensa-esp32-elf" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa32/lib/gcc/xtensa-esp32-elf/5.2.0/include" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa32/lib/gcc/xtensa-esp32-elf/5.2.0/include-fixed" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/tool-unity" -INCLUDEPATH += "$${HOMEDIR}/LedController/include" -INCLUDEPATH += "$${HOMEDIR}/LedController/src" -DEFINES += "PLATFORMIO=30603" -DEFINES += "ESP8266" -DEFINES += "ARDUINO_ARCH_ESP8266" -DEFINES += "ARDUINO_ESP8266_WEMOS_D1MINI" -DEFINES += "F_CPU=80000000L" -DEFINES += "__ets__" -DEFINES += "ICACHE_FLASH" +DEFINES += "PLATFORMIO=40000" +DEFINES += "ARDUINO_ESP32_DEV" +DEFINES += "ESP32" +DEFINES += "ESP_PLATFORM" +DEFINES += "F_CPU=240000000L" +DEFINES += "HAVE_CONFIG_H" +DEFINES += "MBEDTLS_CONFIG_FILE="mbedtls/esp_config.h"" DEFINES += "ARDUINO=10805" -DEFINES += "ARDUINO_BOARD="PLATFORMIO_D1_MINI"" -DEFINES += "FLASHMODE_DIO" -DEFINES += "LWIP_OPEN_SRC" -DEFINES += "TCP_MSS=536" -DEFINES += "LWIP_FEATURES=1" -DEFINES += "LWIP_IPV6=0" -DEFINES += "VTABLES_IN_FLASH" +DEFINES += "ARDUINO_ARCH_ESP32" +DEFINES += "ARDUINO_VARIANT="esp32"" +DEFINES += "ARDUINO_BOARD="Espressif ESP32 Dev Module"" OTHER_FILES += platformio.ini -HEADERS += src/pattern.h -HEADERS += src/ledsettings.h -HEADERS += src/ledcontroller.h -SOURCES += src/main.cpp HEADERS += src/controlclient.h +HEADERS += src/pattern.h +HEADERS += src/ledcontroller.h +HEADERS += src/ledsettings.h +SOURCES += src/main.cpp +HEADERS += src/patterns/bpmpattern.h HEADERS += src/patterns/confettipattern.h HEADERS += src/patterns/fire2012pattern.h -HEADERS += src/patterns/sineleonpattern.h -HEADERS += src/patterns/rainbowpattern.h HEADERS += src/patterns/jugglepattern.h +HEADERS += src/patterns/rainbowpattern.h HEADERS += src/patterns/rainbowwithglitterpattern.h -HEADERS += src/patterns/bpmpattern.h +HEADERS += src/patterns/sineleonpattern.h HEADERS += src/patterns/plasmapattern.h diff --git a/src/ledcontroller.h b/src/ledcontroller.h index f64df56..d79924e 100644 --- a/src/ledcontroller.h +++ b/src/ledcontroller.h @@ -61,7 +61,7 @@ class LedController { public: LedController() : - controller(FastLED.addLeds(&leds[0], leds.size())), + controller(FastLED.addLeds(&leds[0], leds.size())), m_rainbow(leds), m_rainbowWithGlitter(leds), m_confetti(leds), diff --git a/src/ledsettings.h b/src/ledsettings.h index a1a491d..b7ffbb9 100644 --- a/src/ledsettings.h +++ b/src/ledsettings.h @@ -10,5 +10,5 @@ FASTLED_USING_NAMESPACE class Pattern; constexpr auto pin = 0; -constexpr auto NUM_LEDS = 100; +constexpr auto NUM_LEDS = 250; using LedContainer = std::array; diff --git a/src/main.cpp b/src/main.cpp index e4a210d..639e247 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,18 +3,33 @@ #include +constexpr bool useRemoteServer = false; + +#ifdef ESP32 +#include +#include +#elif ESP8266 #include #include +#else +#error "unknown board" +#endif #include "ledcontroller.h" #include "controlclient.h" -constexpr auto WIFI_SSID = "McDonalds Free WiFi 2.4GHz"; -constexpr auto WIFI_PASSWD = "Passwort_123"; +constexpr auto WIFI_SSID = "Camp2019-things"; +constexpr auto WIFI_PASSWD = "camp2019"; LedController ledController; +#ifdef ESP32 +WebServer server(80); +#elif ESP8266 ESP8266WebServer server(80); +#else +#error "unknown board" +#endif bool power = true; bool rotatePattern = true; @@ -138,6 +153,7 @@ void setup() ); }); +#if ESP8266 server.on("/update", HTTP_GET, []() { server.sendHeader("Connection", "close"); server.send(200, "text/html", @@ -154,7 +170,6 @@ void setup() }, []() { HTTPUpload& upload = server.upload(); if (upload.status == UPLOAD_FILE_START) { - Serial.setDebugOutput(true); Serial.printf("Update: %s\n", upload.filename.c_str()); uint32_t maxSketchSpace = (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000; @@ -171,11 +186,10 @@ void setup() } else { Update.printError(Serial); } - - Serial.setDebugOutput(false); } yield(); }); +#endif server.on("/reboot", HTTP_GET, []() { server.sendHeader("Connection", "close"); @@ -239,112 +253,103 @@ void setup() server.on("/setPattern", HTTP_GET, []() { - const String *val = nullptr; - for (int i = 0; i < server.args(); i++) if (server.argName(i) == "val") - val = &server.arg(i); + { + const auto val = server.arg(i); - if (!val) - { - server.send(400, "text/html", "val missing"); - return; - } + const auto index = atoi(val.c_str()); + if (index < 0 || index >= ledController.patterns.size()) + { + server.send(400, "text/html", "out of range"); + return; + } - const auto index = atoi(val->c_str()); - if (index < 0 || index >= ledController.patterns.size()) - { - server.send(400, "text/html", "out of range"); - return; - } + ledController.iter = ledController.patterns.begin() + index; - ledController.iter = ledController.patterns.begin() + index; + server.send(200, "text/html", "ok"); + + return; + } + + server.send(400, "text/html", "val missing"); - server.send(200, "text/html", "ok"); }); server.on("/setPower", HTTP_GET, []() { - const String *val = nullptr; - for (int i = 0; i < server.args(); i++) if (server.argName(i) == "val") - val = &server.arg(i); + { + const auto val = server.arg(i); - if (!val) - { - server.send(400, "text/html", "val missing"); - return; - } + if (val != "true" && val != "false") + { + server.send(400, "text/html", "invalid val"); + return; + } - if (*val != "true" && *val != "false") - { - server.send(400, "text/html", "invalid val"); - return; - } + if (val == "true") + client.on(); + else + client.off(); - if (*val == "true") - client.on(); - else - client.off(); + server.send(200, "text/html", "ok"); - server.send(200, "text/html", "ok"); + return; + } + + server.send(400, "text/html", "val missing"); }); server.on("/setPatternRotate", HTTP_GET, []() { - const String *val = nullptr; - for (int i = 0; i < server.args(); i++) if (server.argName(i) == "val") - val = &server.arg(i); + { + const auto val = server.arg(i); - if (!val) - { - server.send(400, "text/html", "val missing"); - return; - } + if (val != "true" && val != "false") + { + server.send(400, "text/html", "invalid val"); + return; + } - if (*val != "true" && *val != "false") - { - server.send(400, "text/html", "invalid val"); - return; - } + rotatePattern = val == "true"; - rotatePattern = *val == "true"; + server.send(200, "text/html", "ok"); + } - server.send(200, "text/html", "ok"); + server.send(400, "text/html", "val missing"); }); server.on("/setBrightness", HTTP_GET, []() { - const String *val = nullptr; - for (int i = 0; i < server.args(); i++) if (server.argName(i) == "val") - val = &server.arg(i); + { + const auto val = server.arg(i); - if (!val) - { - server.send(400, "text/html", "val missing"); - return; - } + const auto brightness = atoi(val.c_str()); + if (brightness < 0 || brightness > 255) + { + server.send(400, "text/html", "out of range"); + return; + } - const auto brightness = atoi(val->c_str()); - if (brightness < 0 || brightness > 255) - { - server.send(400, "text/html", "out of range"); - return; - } + FastLED.setBrightness(brightness); - FastLED.setBrightness(brightness); + server.send(200, "text/html", "ok"); - server.send(200, "text/html", "ok"); + return; + } + + server.send(400, "text/html", "val missing"); }); server.begin(); } - + void loop() { EVERY_N_MILLISECONDS(20) @@ -364,7 +369,8 @@ void loop() } } - client.handleClient(); + if (useRemoteServer) + client.handleClient(); server.handleClient(); } diff --git a/src/patterns/plasmapattern.h b/src/patterns/plasmapattern.h index 179dc36..e1b2d4b 100644 --- a/src/patterns/plasmapattern.h +++ b/src/patterns/plasmapattern.h @@ -9,20 +9,8 @@ FASTLED_USING_NAMESPACE -class PlasmaPattern : public Pattern { - // Use qsuba for smooth pixel colouring and qsubd for non-smooth pixel colouring - template - auto qsubd(T1 x, T2 b) - { - return (x > b) ? b : 0; // Digital unsigned subtraction macro. if result <0, then => 0. Otherwise, take on fixed value. - } - - template - auto qsuba(T1 x, T2 b) - { - return (x > b) ? x - b : 0; // Analog Unsigned subtraction macro. if result <0, then => 0 - } - +class PlasmaPattern : public Pattern +{ public: using Pattern::Pattern; @@ -39,7 +27,9 @@ public: for (int k=0; k b) ? colorIndex - b : 0; leds[k] = ColorFromPalette(currentPalette, colorIndex, thisBright, currentBlending); // Let's now add the foreground colour. }