From c5f3e76b21bd51d422dd4ebd66b5506f30ad4750 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bla=C5=BE=20Kristan?= Date: Wed, 3 Aug 2022 14:23:24 +0200 Subject: [PATCH] Compile optimisations, code reduction. 2D peek resize. --- wled00/FX.h | 79 +++++++++++----- wled00/FX_2Dfcn.cpp | 135 ++++++++------------------ wled00/data/liveviewws2D.htm | 177 +++++++++++++++-------------------- wled00/html_other.h | 112 +++++++++++----------- wled00/wled.h | 2 +- wled00/wled_server.cpp | 2 + wled00/ws.cpp | 12 ++- 7 files changed, 237 insertions(+), 282 deletions(-) diff --git a/wled00/FX.h b/wled00/FX.h index 4eedea2ae..c0ec5aaf2 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -550,10 +550,10 @@ typedef struct Segment { uint16_t virtualLength(void); void setPixelColor(int n, uint32_t c); // set relative pixel within segment with color void setPixelColor(int n, byte r, byte g, byte b, byte w = 0) { setPixelColor(n, RGBW32(r,g,b,w)); } // automatically inline - void setPixelColor(int n, CRGB c) { setPixelColor(n, c.red, c.green, c.blue); } // automatically inline + void setPixelColor(int n, CRGB c) { setPixelColor(n, RGBW32(c.r,c.g,c.b,0)); } // automatically inline void setPixelColor(float i, uint32_t c, bool aa = true); void setPixelColor(float i, uint8_t r, uint8_t g, uint8_t b, uint8_t w = 0, bool aa = true) { setPixelColor(i, RGBW32(r,g,b,w), aa); } - void setPixelColor(float i, CRGB c, bool aa = true) { setPixelColor(i, c.red, c.green, c.blue, 0, aa); } + void setPixelColor(float i, CRGB c, bool aa = true) { setPixelColor(i, RGBW32(c.r,c.g,c.b,0), aa); } uint32_t getPixelColor(uint16_t i); // 1D support functions (some implement 2D as well) void blur(uint8_t); @@ -561,10 +561,10 @@ typedef struct Segment { void fade_out(uint8_t r); void fadeToBlackBy(uint8_t fadeBy); void blendPixelColor(int n, uint32_t color, uint8_t blend); - void blendPixelColor(int n, CRGB c, uint8_t blend) { blendPixelColor(n, RGBW32(c.red, c.green, c.blue, 0), blend); } + void blendPixelColor(int n, CRGB c, uint8_t blend) { blendPixelColor(n, RGBW32(c.r,c.g,c.b,0), blend); } void addPixelColor(int n, uint32_t color); void addPixelColor(int n, byte r, byte g, byte b, byte w = 0) { addPixelColor(n, RGBW32(r,g,b,w)); } // automatically inline - void addPixelColor(int n, CRGB c) { addPixelColor(n, RGBW32(c.red, c.green, c.blue, 0)); } // automatically inline + void addPixelColor(int n, CRGB c) { addPixelColor(n, RGBW32(c.r,c.g,c.b,0)); } // automatically inline void fadePixelColor(uint16_t n, uint8_t fade); uint8_t get_random_wheel_index(uint8_t pos); uint32_t color_from_palette(uint16_t, bool mapping, bool wrap, uint8_t mcol, uint8_t pbri = 255); @@ -573,39 +573,69 @@ typedef struct Segment { // 2D matrix uint16_t virtualWidth(void); uint16_t virtualHeight(void); + #ifndef WLED_DISABLE_2D uint16_t XY(uint16_t x, uint16_t y); // support function to get relative index within segment (for leds[]) void setPixelColorXY(int x, int y, uint32_t c); // set relative pixel within segment with color void setPixelColorXY(int x, int y, byte r, byte g, byte b, byte w = 0) { setPixelColorXY(x, y, RGBW32(r,g,b,w)); } // automatically inline - void setPixelColorXY(int x, int y, CRGB c) { setPixelColorXY(x, y, RGBW32(c.red, c.green, c.blue, 0)); } // automatically inline + void setPixelColorXY(int x, int y, CRGB c) { setPixelColorXY(x, y, RGBW32(c.r,c.g,c.b,0)); } // automatically inline void setPixelColorXY(float x, float y, uint32_t c, bool aa = true); void setPixelColorXY(float x, float y, byte r, byte g, byte b, byte w = 0, bool aa = true) { setPixelColorXY(x, y, RGBW32(r,g,b,w), aa); } - void setPixelColorXY(float x, float y, CRGB c, bool aa = true) { setPixelColorXY(x, y, c.red, c.green, c.blue, 0, aa); } + void setPixelColorXY(float x, float y, CRGB c, bool aa = true) { setPixelColorXY(x, y, RGBW32(c.r,c.g,c.b,0), aa); } uint32_t getPixelColorXY(uint16_t x, uint16_t y); // 2D support functions void blendPixelColorXY(uint16_t x, uint16_t y, uint32_t color, uint8_t blend); - void blendPixelColorXY(uint16_t x, uint16_t y, CRGB c, uint8_t blend) { blendPixelColorXY(x, y, RGBW32(c.red, c.green, c.blue,0), blend); } + void blendPixelColorXY(uint16_t x, uint16_t y, CRGB c, uint8_t blend) { blendPixelColorXY(x, y, RGBW32(c.r,c.g,c.b,0), blend); } void addPixelColorXY(int x, int y, uint32_t color); void addPixelColorXY(int x, int y, byte r, byte g, byte b, byte w = 0) { addPixelColorXY(x, y, RGBW32(r,g,b,w)); } // automatically inline - void addPixelColorXY(int x, int y, CRGB c) { addPixelColorXY(x, y, RGBW32(c.red, c.green, c.blue,0)); } + void addPixelColorXY(int x, int y, CRGB c) { addPixelColorXY(x, y, RGBW32(c.r,c.g,c.b,0)); } void fadePixelColorXY(uint16_t x, uint16_t y, uint8_t fade); void box_blur(uint16_t i, bool vertical, fract8 blur_amount); // 1D box blur (with weight) - void blur1d(CRGB* leds, fract8 blur_amount); - void blur2d(CRGB* leds, fract8 blur_amount); void blurRow(uint16_t row, fract8 blur_amount, CRGB* leds=nullptr); void blurCol(uint16_t col, fract8 blur_amount, CRGB* leds=nullptr); void moveX(int8_t delta); void moveY(int8_t delta); void move(uint8_t dir, uint8_t delta); - void fill_solid(CRGB* leds, CRGB c); void fill_circle(uint16_t cx, uint16_t cy, uint8_t radius, CRGB c); + void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint32_t c); + void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, CRGB c) { drawLine(x0, y0, x1, y1, RGBW32(c.r,c.g,c.b,0)); } // automatic inline + void drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, uint32_t color); + void drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, CRGB c) { drawCharacter(chr, x, y, w, h, RGBW32(c.r,c.g,c.b,0)); } // automatic inline + void wu_pixel(uint32_t x, uint32_t y, CRGB c); + // obsolete + void blur1d(CRGB* leds, fract8 blur_amount); + void blur2d(CRGB* leds, fract8 blur_amount); + void fill_solid(CRGB* leds, CRGB c); void fadeToBlackBy(CRGB* leds, uint8_t fadeBy); void nscale8(CRGB* leds, uint8_t scale); void setPixels(CRGB* leds); - void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, CRGB c); - void drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, CRGB color, CRGB *leds = nullptr); - void wu_pixel(uint32_t x, uint32_t y, CRGB c); - inline void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint32_t c) { drawLine(x0, y0, x1, y1, CRGB(byte(c>>16), byte(c>>8), byte(c))); } - inline void drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, uint32_t c) { drawCharacter(chr, x, y, w, h, CRGB(byte(c>>16), byte(c>>8), byte(c))); } + #else + uint16_t XY(uint16_t x, uint16_t y) { return x; } + void setPixelColorXY(int x, int y, uint32_t c) { setPixelColor(x, c); } + void setPixelColorXY(int x, int y, byte r, byte g, byte b, byte w = 0) { setPixelColor(x, RGBW32(r,g,b,w)); } + void setPixelColorXY(int x, int y, CRGB c) { setPixelColor(x, RGBW32(c.r,c.g,c.b,0)); } + void setPixelColorXY(float x, float y, uint32_t c, bool aa = true) { setPixelColor(x, c, aa); } + void setPixelColorXY(float x, float y, byte r, byte g, byte b, byte w = 0, bool aa = true) { setPixelColor(x, RGBW32(r,g,b,w), aa); } + void setPixelColorXY(float x, float y, CRGB c, bool aa = true) { setPixelColor(x, RGBW32(c.r,c.g,c.b,0), aa); } + uint32_t getPixelColorXY(uint16_t x, uint16_t y) { return getPixelColor(x); } + void blendPixelColorXY(uint16_t x, uint16_t y, uint32_t c, uint8_t blend) { blendPixelColor(x, c, blend); } + void blendPixelColorXY(uint16_t x, uint16_t y, CRGB c, uint8_t blend) { blendPixelColor(x, RGBW32(c.r,c.g,c.b,0), blend); } + void addPixelColorXY(int x, int y, uint32_t color) { addPixelColor(x, color); } + void addPixelColorXY(int x, int y, byte r, byte g, byte b, byte w = 0) { addPixelColor(x, RGBW32(r,g,b,w)); } + void addPixelColorXY(int x, int y, CRGB c) { addPixelColor(x, RGBW32(c.r,c.g,c.b,0)); } + void fadePixelColorXY(uint16_t x, uint16_t y, uint8_t fade) { fadePixelColor(x, fade); } + void box_blur(uint16_t i, bool vertical, fract8 blur_amount) {} + void blurRow(uint16_t row, fract8 blur_amount, CRGB* leds=nullptr) {} + void blurCol(uint16_t col, fract8 blur_amount, CRGB* leds=nullptr) {} + void moveX(int8_t delta) {} + void moveY(int8_t delta) {} + void move(uint8_t dir, uint8_t delta) {} + void fill_circle(uint16_t cx, uint16_t cy, uint8_t radius, CRGB c) {} + void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint32_t c) {} + void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, CRGB c) {} + void drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, uint32_t color) {} + void drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, CRGB color) {} + void wu_pixel(uint32_t x, uint32_t y, CRGB c) {} + #endif } segment; //static int i = sizeof(Segment); @@ -778,10 +808,10 @@ class WS2812FX { // 96 bytes const char ** getModeDataSrc(void) { return &(_modeData[0]); } // vectors use arrays for underlying data - Segment& getSegment(uint8_t id); + Segment& getSegment(uint8_t id); inline Segment& getFirstSelectedSeg(void) { return _segments[getFirstSelectedSegId()]; } - inline Segment& getMainSegment(void) { return _segments[getMainSegmentId()]; } - inline Segment* getSegments(void) { return &(_segments[0]); } + inline Segment& getMainSegment(void) { return _segments[getMainSegmentId()]; } + inline Segment* getSegments(void) { return &(_segments[0]); } // 2D support (panels) bool @@ -800,11 +830,10 @@ class WS2812FX { // 96 bytes matrixHeight; typedef struct panel_bitfield_t { - unsigned char - bottomStart : 1, // starts at bottom? - rightStart : 1, // starts on right? - vertical : 1, // is vertical? - serpentine : 1; // is serpentine? + bool bottomStart : 1; // starts at bottom? + bool rightStart : 1; // starts on right? + bool vertical : 1; // is vertical? + bool serpentine : 1; // is serpentine? } Panel; Panel matrix, @@ -817,7 +846,7 @@ class WS2812FX { // 96 bytes // outsmart the compiler :) by correctly overloading inline void setPixelColorXY(int x, int y, byte r, byte g, byte b, byte w = 0) { setPixelColorXY(x, y, RGBW32(r,g,b,w)); } // automatically inline - inline void setPixelColorXY(int x, int y, CRGB c) { setPixelColorXY(x, y, c.red, c.green, c.blue); } + inline void setPixelColorXY(int x, int y, CRGB c) { setPixelColorXY(x, y, RGBW32(c.r,c.g,c.b,0)); } uint32_t getPixelColorXY(uint16_t, uint16_t); diff --git a/wled00/FX_2Dfcn.cpp b/wled00/FX_2Dfcn.cpp index 078575e4f..7e92e3bfa 100644 --- a/wled00/FX_2Dfcn.cpp +++ b/wled00/FX_2Dfcn.cpp @@ -138,20 +138,17 @@ uint32_t WS2812FX::getPixelColorXY(uint16_t x, uint16_t y) { // Segment:: routines /////////////////////////////////////////////////////////// +#ifndef WLED_DISABLE_2D + // XY(x,y) - gets pixel index within current segment (often used to reference leds[] array element) uint16_t IRAM_ATTR Segment::XY(uint16_t x, uint16_t y) { -#ifndef WLED_DISABLE_2D uint16_t width = virtualWidth(); // segment width in logical pixels uint16_t height = virtualHeight(); // segment height in logical pixels return (x%width) + (y%height) * width; -#else - return x; -#endif } void IRAM_ATTR Segment::setPixelColorXY(int x, int y, uint32_t col) { -#ifndef WLED_DISABLE_2D if (!strip.isMatrix) return; // not a matrix set-up if (leds) leds[XY(x,y)] = col; @@ -193,15 +190,11 @@ void IRAM_ATTR Segment::setPixelColorXY(int x, int y, uint32_t col) } } } -#else - setPixelColor(x, col); -#endif } // anti-aliased version of setPixelColorXY() void Segment::setPixelColorXY(float x, float y, uint32_t col, bool aa) { -#ifndef WLED_DISABLE_2D if (!strip.isMatrix) return; // not a matrix set-up if (x<0.0f || x>1.0f || y<0.0f || y>1.0f) return; // not normalized @@ -241,12 +234,10 @@ void Segment::setPixelColorXY(float x, float y, uint32_t col, bool aa) } else { setPixelColorXY(uint16_t(roundf(fX)), uint16_t(roundf(fY)), col); } -#endif } // returns RGBW values of pixel uint32_t Segment::getPixelColorXY(uint16_t x, uint16_t y) { -#ifndef WLED_DISABLE_2D if (leds) return RGBW32(leds[XY(x,y)].r, leds[XY(x,y)].g, leds[XY(x,y)].b, 0); if (getOption(SEG_OPTION_REVERSED) ) x = virtualWidth() - x - 1; if (getOption(SEG_OPTION_REVERSED_Y)) y = virtualHeight() - y - 1; @@ -255,41 +246,25 @@ uint32_t Segment::getPixelColorXY(uint16_t x, uint16_t y) { y *= groupLength(); // expand to physical pixels if (x >= width() || y >= height()) return 0; return strip.getPixelColorXY(start + x, startY + y); -#else - return getPixelColor(x); -#endif } // Blends the specified color with the existing pixel color. void Segment::blendPixelColorXY(uint16_t x, uint16_t y, uint32_t color, uint8_t blend) { -#ifndef WLED_DISABLE_2D setPixelColorXY(x, y, color_blend(getPixelColorXY(x,y), color, blend)); -#else - setPixelColor(x, color_blend(getPixelColor(x), color, blend)); -#endif } // Adds the specified color with the existing pixel color perserving color balance. void Segment::addPixelColorXY(int x, int y, uint32_t color) { -#ifndef WLED_DISABLE_2D setPixelColorXY(x, y, color_add(getPixelColorXY(x,y), color)); -#else - setPixelColor(x, color_add(getPixelColor(x), color)); -#endif } void Segment::fadePixelColorXY(uint16_t x, uint16_t y, uint8_t fade) { -#ifndef WLED_DISABLE_2D CRGB pix = CRGB(getPixelColorXY(x,y)).nscale8_video(fade); setPixelColor(x, y, pix); -#else - setPixelColor(x, CRGB(getPixelColor(x)).nscale8_video(fade)); -#endif } // blurRow: perform a blur on a row of a rectangular matrix void Segment::blurRow(uint16_t row, fract8 blur_amount, CRGB* leds) { -#ifndef WLED_DISABLE_2D const uint16_t cols = virtualWidth(); const uint16_t rows = virtualHeight(); @@ -313,12 +288,10 @@ void Segment::blurRow(uint16_t row, fract8 blur_amount, CRGB* leds) { else setPixelColorXY(x, row, cur); carryover = part; } -#endif } // blurCol: perform a blur on a column of a rectangular matrix void Segment::blurCol(uint16_t col, fract8 blur_amount, CRGB* leds) { -#ifndef WLED_DISABLE_2D const uint16_t cols = virtualWidth(); const uint16_t rows = virtualHeight(); @@ -342,33 +315,10 @@ void Segment::blurCol(uint16_t col, fract8 blur_amount, CRGB* leds) { else setPixelColorXY(col, i, cur); carryover = part; } -#endif -} - -// blur1d: one-dimensional blur filter. Spreads light to 2 line neighbors. -// blur2d: two-dimensional blur filter. Spreads light to 8 XY neighbors. -// -// 0 = no spread at all -// 64 = moderate spreading -// 172 = maximum smooth, even spreading -// -// 173..255 = wider spreading, but increasing flicker -// -// Total light is NOT entirely conserved, so many repeated -// calls to 'blur' will also result in the light fading, -// eventually all the way to black; this is by design so that -// it can be used to (slowly) clear the LEDs to black. - -void Segment::blur1d(CRGB* leds, fract8 blur_amount) { -#ifndef WLED_DISABLE_2D - const uint16_t rows = virtualHeight(); - for (uint16_t y = 0; y < rows; y++) blurRow(y, blur_amount, leds); -#endif } // 1D Box blur (with added weight - blur_amount: [0=no blur, 255=max blur]) void Segment::box_blur(uint16_t i, bool vertical, fract8 blur_amount) { -#ifndef WLED_DISABLE_2D const uint16_t cols = virtualWidth(); const uint16_t rows = virtualHeight(); const uint16_t dim1 = vertical ? rows : cols; @@ -399,20 +349,35 @@ void Segment::box_blur(uint16_t i, bool vertical, fract8 blur_amount) { uint16_t y = vertical ? j : i; setPixelColorXY(x, y, tmp[j]); } -#endif +} + +// blur1d: one-dimensional blur filter. Spreads light to 2 line neighbors. +// blur2d: two-dimensional blur filter. Spreads light to 8 XY neighbors. +// +// 0 = no spread at all +// 64 = moderate spreading +// 172 = maximum smooth, even spreading +// +// 173..255 = wider spreading, but increasing flicker +// +// Total light is NOT entirely conserved, so many repeated +// calls to 'blur' will also result in the light fading, +// eventually all the way to black; this is by design so that +// it can be used to (slowly) clear the LEDs to black. + +void Segment::blur1d(CRGB* leds, fract8 blur_amount) { + const uint16_t rows = virtualHeight(); + for (uint16_t y = 0; y < rows; y++) blurRow(y, blur_amount, leds); } void Segment::blur2d(CRGB* leds, fract8 blur_amount) { -#ifndef WLED_DISABLE_2D const uint16_t cols = virtualWidth(); const uint16_t rows = virtualHeight(); for (uint16_t i = 0; i < rows; i++) blurRow(i, blur_amount, leds); // blur all rows for (uint16_t k = 0; k < cols; k++) blurCol(k, blur_amount, leds); // blur all columns -#endif } void Segment::moveX(int8_t delta) { -#ifndef WLED_DISABLE_2D const uint16_t cols = virtualWidth(); const uint16_t rows = virtualHeight(); if (!delta) return; @@ -427,11 +392,9 @@ void Segment::moveX(int8_t delta) { setPixelColorXY(x, y, getPixelColorXY(x + delta, y)); } } -#endif } void Segment::moveY(int8_t delta) { -#ifndef WLED_DISABLE_2D const uint16_t cols = virtualWidth(); const uint16_t rows = virtualHeight(); if (!delta) return; @@ -446,14 +409,12 @@ void Segment::moveY(int8_t delta) { setPixelColorXY(x, y, getPixelColorXY(x, y + delta)); } } -#endif } // move() - move all pixels in desired direction delta number of pixels // @param dir direction: 0=left, 1=left-up, 2=up, 3=right-up, 4=right, 5=right-down, 6=down, 7=left-down // @param delta number of pixels to move void Segment::move(uint8_t dir, uint8_t delta) { -#ifndef WLED_DISABLE_2D if (delta==0) return; switch (dir) { case 0: moveX( delta); break; @@ -465,7 +426,20 @@ void Segment::move(uint8_t dir, uint8_t delta) { case 6: moveY(-delta); break; case 7: moveX( delta); moveY(-delta); break; } -#endif +} + +// by stepko, taken from https://editor.soulmatelights.com/gallery/573-blobs +void Segment::fill_circle(uint16_t cx, uint16_t cy, uint8_t radius, CRGB col) { + const uint16_t cols = virtualWidth(); + const uint16_t rows = virtualHeight(); + for (int16_t y = -radius; y <= radius; y++) { + for (int16_t x = -radius; x <= radius; x++) { + if (x * x + y * y <= radius * radius && + int16_t(cx)+x>=0 && int16_t(cy)+y>=0 && + int16_t(cx)+x=0 && int16_t(cy)+y>=0 && - int16_t(cx)+x= cols || x1 >= cols || y0 >= rows || y1 >= rows) return; @@ -534,10 +485,8 @@ void Segment::drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, CRGB if (e2 >-dx) { err -= dy; x0 += sx; } if (e2 < dy) { err += dx; y0 += sy; } } -#endif } -#ifndef WLED_DISABLE_2D // font curtesy of https://github.com/idispatch/raster-fonts static const unsigned char console_font_6x8[] PROGMEM = { @@ -6688,12 +6637,10 @@ static const unsigned char console_font_5x8[] PROGMEM = { 0x00, /* 00000 */ 0x00, /* 00000 */ }; -#endif // draws a raster font character on canvas // only supports 5x8 and 6x8 fonts ATM -void Segment::drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, CRGB color, CRGB *leds) { -#ifndef WLED_DISABLE_2D +void Segment::drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, uint32_t color) { const uint16_t cols = virtualWidth(); const uint16_t rows = virtualHeight(); @@ -6710,17 +6657,14 @@ void Segment::drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, for (uint8_t j = 0; j= 0 || x0 < cols) && ((bits>>(j+(8-w))) & 0x01)) { // bit set & drawing on-screen - if (leds) leds[XY(x0,y0)] = color; - else setPixelColorXY(x0, y0, color); + setPixelColorXY(x0, y0, color); } } } -#endif } #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) void Segment::wu_pixel(uint32_t x, uint32_t y, CRGB c) { //awesome wu_pixel procedure by reddit u/sutaburosu -#ifndef WLED_DISABLE_2D // extract the fractional parts and derive their inverses uint8_t xx = x & 0xff, yy = y & 0xff, ix = 255 - xx, iy = 255 - yy; // calculate the intensities for each affected pixel @@ -6734,6 +6678,7 @@ void Segment::wu_pixel(uint32_t x, uint32_t y, CRGB c) { //awesome wu_pixel led.b = qadd8(led.b, c.b * wu[i] >> 8); setPixelColorXY(int((x >> 8) + (i & 1)), int((y >> 8) + ((i >> 1) & 1)), led); } -#endif } #undef WU_WEIGHT + +#endif // WLED_DISABLE_2D diff --git a/wled00/data/liveviewws2D.htm b/wled00/data/liveviewws2D.htm index 4b8922e0d..946cf4878 100644 --- a/wled00/data/liveviewws2D.htm +++ b/wled00/data/liveviewws2D.htm @@ -1,110 +1,81 @@ - - - - WLED Live Preview - + + + + WLED Live Preview + - LiveView - + LiveView + \ No newline at end of file diff --git a/wled00/html_other.h b/wled00/html_other.h index 39d46271c..b3ca25cd0 100644 --- a/wled00/html_other.h +++ b/wled00/html_other.h @@ -282,63 +282,63 @@ const uint8_t PAGE_liveviewws[] PROGMEM = { // Autogenerated from wled00/data/liveviewws2D.htm, do not edit!! -const uint16_t PAGE_liveviewws2D_length = 865; +const uint16_t PAGE_liveviewws2D_length = 878; const uint8_t PAGE_liveviewws2D[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x6d, 0x54, 0x6d, 0x6f, 0xdb, 0x36, - 0x10, 0xfe, 0xee, 0x5f, 0xa1, 0x72, 0x5d, 0x2b, 0xc6, 0xb4, 0xe4, 0x3a, 0xc9, 0x96, 0xd9, 0x92, - 0x8b, 0x35, 0x35, 0x90, 0x0e, 0xde, 0x62, 0xc0, 0xdd, 0x8c, 0x21, 0x08, 0x50, 0x5a, 0x3a, 0x5b, - 0x6c, 0x25, 0x52, 0x20, 0x69, 0xab, 0x86, 0xa1, 0xff, 0xbe, 0x23, 0xed, 0x38, 0x5e, 0x36, 0x7d, - 0x20, 0xc5, 0xe3, 0xbd, 0x3c, 0xf7, 0xdc, 0xf1, 0x92, 0x57, 0x1f, 0xef, 0x6f, 0x3f, 0xff, 0x3d, - 0x9b, 0x04, 0x85, 0xad, 0xca, 0x71, 0x72, 0x5c, 0x81, 0xe7, 0xe3, 0xa4, 0x02, 0xcb, 0x03, 0xc9, - 0x2b, 0x48, 0xc9, 0x56, 0x40, 0x53, 0x2b, 0x6d, 0x49, 0xd0, 0xc9, 0x94, 0xb4, 0x20, 0x6d, 0x4a, - 0x1a, 0x91, 0xdb, 0x22, 0xcd, 0x61, 0x2b, 0x32, 0xe8, 0xf9, 0x03, 0x13, 0x52, 0x58, 0xc1, 0xcb, - 0x9e, 0xc9, 0x78, 0x09, 0xe9, 0x3b, 0x56, 0xa1, 0xa0, 0xda, 0x54, 0x4f, 0x67, 0x72, 0xf4, 0xd9, - 0xc9, 0x0a, 0xae, 0x0d, 0xa0, 0x8f, 0x8d, 0x5d, 0xf5, 0x6e, 0xc8, 0xbf, 0x42, 0xd9, 0x02, 0x2a, - 0xe8, 0x65, 0xaa, 0x54, 0x9a, 0x04, 0xa7, 0x60, 0x3f, 0x0c, 0xfc, 0x87, 0xaa, 0x56, 0xd8, 0x12, - 0xc6, 0x9d, 0xc5, 0x74, 0xf2, 0x31, 0x98, 0x8a, 0x2d, 0x04, 0x33, 0x0d, 0x0e, 0x5e, 0x12, 0x1f, - 0x6e, 0x12, 0x63, 0x77, 0xb8, 0x2d, 0x55, 0xbe, 0xdb, 0x57, 0x5c, 0xaf, 0x85, 0x1c, 0xf6, 0xdb, - 0x24, 0x3e, 0x48, 0x93, 0xf8, 0x90, 0x9a, 0xbb, 0x1d, 0x27, 0x19, 0x97, 0x5b, 0x6e, 0x82, 0x8e, - 0xc8, 0x53, 0x52, 0xa2, 0x2b, 0xe7, 0xe6, 0xd6, 0xcb, 0xc8, 0xd8, 0xb9, 0xfe, 0xcb, 0xbb, 0x3d, - 0x68, 0xa1, 0xdf, 0x4c, 0x8b, 0xda, 0x8e, 0x3b, 0x5b, 0xae, 0x83, 0x2c, 0xcd, 0x55, 0xb6, 0xa9, - 0x10, 0x5a, 0xb4, 0x06, 0x3b, 0x29, 0xc1, 0xfd, 0x7e, 0xd8, 0x7d, 0xca, 0xc3, 0x97, 0x8e, 0xe8, - 0x28, 0x8b, 0x0e, 0x4c, 0x45, 0xbf, 0xdc, 0x5c, 0x34, 0x42, 0xe6, 0xaa, 0x89, 0x84, 0x94, 0xa0, - 0x17, 0x9e, 0xb2, 0x2c, 0x2a, 0x40, 0xac, 0x0b, 0xfb, 0x9f, 0xeb, 0x3b, 0x2f, 0x1e, 0xb9, 0x68, - 0x8d, 0x61, 0x25, 0xe4, 0x26, 0x25, 0x84, 0x55, 0x8b, 0xb4, 0xcf, 0xaa, 0x3b, 0x5c, 0xea, 0xd9, - 0x14, 0xd7, 0xf2, 0x7e, 0x95, 0xf6, 0x47, 0x62, 0x15, 0x66, 0x0e, 0xc8, 0xad, 0xa3, 0xeb, 0xbb, - 0xa5, 0x7b, 0x8f, 0xd1, 0x7e, 0x4f, 0xcf, 0xa5, 0x21, 0x19, 0xe4, 0x08, 0x67, 0xb5, 0x91, 0x99, - 0x15, 0x4a, 0x06, 0xb9, 0xe6, 0xcd, 0x14, 0xf2, 0x5b, 0xa1, 0xb3, 0x12, 0x4c, 0x08, 0xcc, 0x32, - 0xc1, 0x24, 0xd3, 0x4c, 0xd1, 0x3d, 0xda, 0x46, 0x2b, 0x51, 0x96, 0x73, 0xc7, 0x5a, 0xfa, 0x45, - 0xaf, 0x97, 0xe1, 0xeb, 0xbd, 0x68, 0xd9, 0xeb, 0xbd, 0x74, 0x8b, 0x6e, 0xe9, 0x17, 0xe6, 0x74, - 0x96, 0x80, 0xfc, 0xce, 0xb8, 0x2d, 0x42, 0xea, 0xcf, 0x5c, 0x67, 0x21, 0x5c, 0x20, 0xb4, 0x6e, - 0x74, 0xed, 0x37, 0xc4, 0xc7, 0xec, 0x99, 0x80, 0x45, 0x57, 0x7e, 0xeb, 0xb3, 0xc1, 0xc5, 0xef, - 0x68, 0x17, 0xcd, 0x3e, 0x1d, 0x2c, 0x5d, 0xb4, 0x90, 0xb6, 0x27, 0x74, 0x35, 0x17, 0xd2, 0x22, - 0x3c, 0x13, 0xd2, 0xfd, 0x4a, 0xe9, 0x50, 0xa4, 0x57, 0x23, 0x91, 0x38, 0x1a, 0xa2, 0x12, 0xe4, - 0xda, 0x16, 0x23, 0xd1, 0x4d, 0x2f, 0xe9, 0xbe, 0x04, 0x1b, 0x40, 0x1a, 0x8a, 0xde, 0x15, 0x8d, - 0x2f, 0x47, 0x2f, 0x73, 0xfa, 0xb1, 0x5a, 0x30, 0x1f, 0x66, 0x55, 0x2a, 0x74, 0x02, 0x71, 0xb5, - 0xa0, 0x9e, 0xcb, 0x07, 0xf1, 0x78, 0xdc, 0xbb, 0xef, 0x4e, 0x7f, 0x83, 0x47, 0x36, 0xb8, 0xbe, - 0xa6, 0x6d, 0xfb, 0x0c, 0x63, 0x53, 0xe7, 0xdc, 0xc2, 0xb1, 0xc5, 0x42, 0xa0, 0x7b, 0x2c, 0x40, - 0xe8, 0x8b, 0x01, 0xf4, 0x01, 0xf5, 0xb1, 0x14, 0xde, 0xf8, 0xf2, 0xd1, 0x17, 0xc4, 0xc7, 0xc2, - 0xae, 0x0f, 0x8f, 0x45, 0xc7, 0x78, 0xa7, 0x0a, 0xc7, 0xd5, 0x1d, 0xf5, 0xf5, 0x3a, 0x03, 0xf4, - 0xa4, 0xd7, 0x43, 0xe3, 0x0b, 0xc4, 0x16, 0x0f, 0x28, 0x3b, 0xcb, 0xfc, 0x19, 0x07, 0x96, 0xd1, - 0x75, 0xe4, 0x6f, 0x46, 0x49, 0x87, 0xc2, 0xea, 0xdd, 0x1e, 0x8b, 0x4e, 0x1e, 0xd4, 0xf2, 0x2b, - 0x64, 0x36, 0xf8, 0x55, 0x6b, 0xbe, 0xfb, 0xb0, 0x59, 0xad, 0x40, 0x3f, 0x92, 0x34, 0x4d, 0xad, - 0x9a, 0x5b, 0x2d, 0xe4, 0x3a, 0xc2, 0x87, 0x57, 0x86, 0x10, 0x61, 0x12, 0x9c, 0x3e, 0x91, 0x25, - 0xa1, 0x09, 0xfe, 0xc4, 0x18, 0x37, 0xde, 0x2a, 0x84, 0xad, 0x6b, 0x63, 0xaf, 0xe1, 0x1a, 0xe9, - 0xe7, 0x9f, 0x5e, 0xa5, 0xf0, 0xd0, 0x7f, 0xa4, 0x1a, 0xec, 0x46, 0xcb, 0xd1, 0x4b, 0x06, 0xda, - 0x36, 0xe3, 0x36, 0x2b, 0x1c, 0x0a, 0x7c, 0x9d, 0x46, 0x95, 0x10, 0x81, 0xd6, 0x98, 0x0b, 0x99, - 0x01, 0x7c, 0x0b, 0x16, 0xf3, 0xc0, 0x1f, 0x87, 0x84, 0x39, 0x5d, 0x07, 0xb4, 0x31, 0x88, 0xa7, - 0x8e, 0x8e, 0xcd, 0xdd, 0x98, 0x67, 0x07, 0x6d, 0x63, 0xde, 0xbc, 0x69, 0x4c, 0xa4, 0xf1, 0x51, - 0xee, 0xe6, 0x16, 0xe3, 0x20, 0xf6, 0x05, 0x2c, 0xe7, 0x2a, 0xfb, 0x06, 0x36, 0xba, 0x9f, 0x4d, - 0xfe, 0x78, 0x8f, 0xd7, 0x06, 0x24, 0x3e, 0xac, 0xfd, 0xdb, 0x72, 0xfb, 0x76, 0x68, 0xf5, 0x06, - 0x5a, 0x42, 0x87, 0x21, 0x7a, 0x75, 0x89, 0x9c, 0xb4, 0xc3, 0x90, 0x14, 0xd6, 0xd6, 0x66, 0x88, - 0xf9, 0x1f, 0x43, 0x95, 0x0a, 0x23, 0x21, 0x7b, 0x51, 0xad, 0x95, 0x55, 0x38, 0x52, 0xde, 0x93, - 0xc6, 0x18, 0x32, 0xc4, 0x95, 0xd0, 0x2e, 0x19, 0xc6, 0x31, 0xe9, 0x9e, 0xde, 0xf1, 0x49, 0xb9, - 0x50, 0xc6, 0x76, 0x49, 0xec, 0x74, 0x68, 0xa4, 0xa4, 0xaa, 0x41, 0xa6, 0x4f, 0x75, 0xc0, 0x66, - 0xfc, 0x7f, 0x3c, 0x2d, 0x43, 0xf9, 0x52, 0x48, 0xae, 0x77, 0x9f, 0x77, 0x35, 0x8e, 0x31, 0xee, - 0xb8, 0x5d, 0xfa, 0x8a, 0x10, 0x77, 0xc7, 0xf3, 0x7c, 0xe2, 0x88, 0x9e, 0x0a, 0x83, 0x13, 0x0d, - 0x90, 0xae, 0x0a, 0x8c, 0xe1, 0x6b, 0x20, 0xec, 0xac, 0xb6, 0xb4, 0x83, 0x93, 0xea, 0x30, 0x67, - 0x92, 0xf8, 0x30, 0xa4, 0x62, 0x3f, 0x92, 0xff, 0x01, 0x26, 0xf5, 0x85, 0x4c, 0xa8, 0x05, 0x00, - 0x00 + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x6d, 0x54, 0x6d, 0x73, 0xda, 0x46, + 0x10, 0xfe, 0xce, 0xaf, 0x90, 0xaf, 0x69, 0xa2, 0x33, 0x42, 0xc2, 0xd8, 0x6e, 0x5d, 0xe0, 0xc8, + 0x34, 0x0e, 0x33, 0xce, 0x8c, 0x13, 0x33, 0x83, 0x5b, 0xa6, 0xc3, 0x78, 0x26, 0x87, 0xb4, 0xa0, + 0x6b, 0xa4, 0x3b, 0xe6, 0x6e, 0x41, 0xa6, 0x44, 0xff, 0xbd, 0x2b, 0x09, 0x13, 0xd2, 0x94, 0x0f, + 0x2b, 0xee, 0x76, 0xf7, 0xd9, 0xbd, 0x67, 0x5f, 0x86, 0x67, 0xef, 0x1f, 0x6e, 0x1f, 0xff, 0x9a, + 0x8c, 0xbd, 0x14, 0xf3, 0x6c, 0x34, 0x3c, 0x48, 0x90, 0xc9, 0x68, 0x98, 0x03, 0x4a, 0x4f, 0xcb, + 0x1c, 0x04, 0xdb, 0x2a, 0x28, 0xd6, 0xc6, 0x22, 0xf3, 0x5a, 0xb1, 0xd1, 0x08, 0x1a, 0x05, 0x2b, + 0x54, 0x82, 0xa9, 0x48, 0x60, 0xab, 0x62, 0xe8, 0xd4, 0x87, 0x40, 0x69, 0x85, 0x4a, 0x66, 0x1d, + 0x17, 0xcb, 0x0c, 0xc4, 0x45, 0x90, 0xd3, 0x45, 0xbe, 0xc9, 0x5f, 0xce, 0xec, 0x80, 0xd9, 0x8a, + 0x53, 0x69, 0x1d, 0x10, 0xc6, 0x06, 0x97, 0x9d, 0x1b, 0xf6, 0x5d, 0x28, 0x4c, 0x21, 0x87, 0x4e, + 0x6c, 0x32, 0x63, 0x99, 0x77, 0x0c, 0xf6, 0x53, 0xaf, 0xfe, 0x91, 0x29, 0x2a, 0xcc, 0x60, 0xd4, + 0x9a, 0xdd, 0x8f, 0xdf, 0x7b, 0xf7, 0x6a, 0x0b, 0xde, 0xc4, 0x42, 0x95, 0xde, 0x30, 0x6a, 0x34, + 0x43, 0x87, 0x3b, 0xfa, 0x2c, 0x4c, 0xb2, 0xdb, 0xe7, 0xd2, 0xae, 0x94, 0xee, 0x77, 0xcb, 0x61, + 0xd4, 0xdc, 0x0e, 0xa3, 0xe6, 0x69, 0x95, 0x76, 0x34, 0x8c, 0xa5, 0xde, 0x4a, 0xe7, 0xb5, 0x54, + 0x22, 0x58, 0x46, 0x50, 0x15, 0xcc, 0x6d, 0x7d, 0xc7, 0x46, 0x15, 0xf4, 0x9f, 0x35, 0x6c, 0x63, + 0x45, 0xb8, 0xb1, 0x55, 0x6b, 0x1c, 0xb5, 0xb6, 0xd2, 0x7a, 0xb1, 0x48, 0x4c, 0xbc, 0xc9, 0x29, + 0xb5, 0x70, 0x05, 0x38, 0xce, 0xa0, 0xfa, 0xfb, 0x6e, 0xf7, 0x21, 0xf1, 0xff, 0x0b, 0xc4, 0x83, + 0x0c, 0x12, 0x27, 0x18, 0x0b, 0xf2, 0x99, 0xe8, 0x06, 0xf9, 0x1d, 0x89, 0xf5, 0xe4, 0x9e, 0x64, + 0xf6, 0xb0, 0x24, 0x89, 0xa9, 0x35, 0x48, 0x79, 0x27, 0xe2, 0xec, 0x62, 0xb0, 0xdc, 0xe8, 0x18, + 0x95, 0xd1, 0x1e, 0x91, 0xd3, 0xf8, 0xfb, 0x7c, 0x1f, 0x87, 0x0d, 0xd3, 0xe1, 0x6f, 0x37, 0xe7, + 0x85, 0xd2, 0x89, 0x29, 0x42, 0xa5, 0x35, 0xd8, 0x59, 0x4d, 0x79, 0x1c, 0xa6, 0xa0, 0x56, 0x29, + 0xfe, 0xa0, 0xbe, 0xab, 0xaf, 0x4b, 0xb5, 0xf4, 0x4f, 0xc0, 0xc8, 0x9c, 0xf2, 0xbd, 0xad, 0x58, + 0x7d, 0x46, 0xbe, 0xaf, 0x9e, 0x52, 0xb8, 0x20, 0xc6, 0x67, 0x71, 0xaa, 0xf0, 0x59, 0x2f, 0x61, + 0xfc, 0x5b, 0x36, 0x89, 0x95, 0xc5, 0xad, 0xb2, 0x71, 0x06, 0x3e, 0x06, 0x10, 0xd8, 0x40, 0x05, + 0x3a, 0x30, 0x94, 0x19, 0x3e, 0x87, 0x4b, 0x95, 0x65, 0xd3, 0x8a, 0x5b, 0xf1, 0xd9, 0xae, 0x16, + 0xfe, 0xab, 0xbd, 0x2d, 0x83, 0x57, 0x7b, 0x55, 0x09, 0x5d, 0xf2, 0xcf, 0x15, 0x76, 0xb8, 0x00, + 0xaa, 0xc2, 0x44, 0x62, 0x5a, 0x25, 0x40, 0x67, 0x69, 0x63, 0x1f, 0xcf, 0x89, 0x85, 0x76, 0x78, + 0x5d, 0x7f, 0x88, 0x8a, 0x00, 0x4e, 0x2e, 0x82, 0xf0, 0xaa, 0xfe, 0x74, 0x83, 0xde, 0xf9, 0x47, + 0xf2, 0x0b, 0x27, 0x1f, 0x1a, 0xcf, 0x2a, 0x9a, 0xcf, 0x4b, 0xb4, 0xbb, 0x7d, 0xe1, 0x04, 0x9a, + 0x75, 0x78, 0x78, 0x72, 0xe1, 0xca, 0x58, 0x62, 0x9c, 0xfa, 0xf4, 0xaa, 0xb2, 0x70, 0xaf, 0x5f, + 0x17, 0x2e, 0xb4, 0x54, 0xea, 0xdd, 0x14, 0x25, 0x82, 0x10, 0x62, 0x06, 0x8b, 0xa9, 0x89, 0xbf, + 0x00, 0x86, 0x0f, 0x93, 0xf1, 0xa7, 0xb7, 0xa4, 0x76, 0xa0, 0xa9, 0x5c, 0xfb, 0x37, 0xd9, 0xf6, + 0x4d, 0x1f, 0xed, 0x06, 0x4a, 0xc6, 0xfb, 0x3e, 0xa1, 0x6a, 0x28, 0xbc, 0xa3, 0xb5, 0xef, 0xb3, + 0x14, 0x71, 0xed, 0xfa, 0x4c, 0x88, 0x43, 0xa8, 0xcc, 0x50, 0x24, 0xa2, 0x25, 0x5c, 0x53, 0xe5, + 0x0c, 0x35, 0xea, 0x5b, 0x56, 0x38, 0xc7, 0xfa, 0x24, 0x19, 0x6f, 0xb3, 0x7e, 0x14, 0xb1, 0xf6, + 0xb1, 0x3b, 0x8e, 0xc6, 0xa9, 0x71, 0xd8, 0x66, 0x51, 0x65, 0xc3, 0x43, 0xa3, 0xcd, 0x1a, 0xb4, + 0xf0, 0xb9, 0x18, 0xed, 0xff, 0x3f, 0x93, 0x32, 0xa0, 0xfb, 0x85, 0xd2, 0xd2, 0xee, 0x1e, 0x77, + 0x6b, 0x1a, 0x0b, 0x69, 0xad, 0xdc, 0x2d, 0x36, 0xcb, 0x25, 0x58, 0x56, 0xe9, 0x64, 0x92, 0x8c, + 0xb7, 0x14, 0xe1, 0x5e, 0x39, 0x9a, 0x10, 0xb0, 0x3e, 0xcb, 0xc1, 0x39, 0xb9, 0x02, 0x16, 0x20, + 0xa1, 0x56, 0x0c, 0x51, 0xe9, 0xd9, 0xdc, 0x2c, 0xfe, 0x86, 0x18, 0xbd, 0xdf, 0x2b, 0xf7, 0x77, + 0xb5, 0xfb, 0x13, 0x3d, 0x85, 0xa8, 0x9b, 0xa2, 0x55, 0x7a, 0x15, 0xd2, 0x64, 0x66, 0x3e, 0x86, + 0x89, 0x44, 0xc9, 0xf9, 0x3e, 0x03, 0xf4, 0xb0, 0x66, 0xe0, 0x0f, 0xa5, 0xf1, 0xa6, 0xf6, 0xf2, + 0xa1, 0x8a, 0xd3, 0x58, 0x0c, 0x08, 0xf3, 0xd7, 0x5f, 0xce, 0x04, 0xce, 0xbb, 0x4f, 0xdc, 0x02, + 0x6e, 0xac, 0x1e, 0x2c, 0x8d, 0xf5, 0xa9, 0xb7, 0x71, 0xde, 0x7b, 0xaa, 0xda, 0x1b, 0xe7, 0x97, + 0x4f, 0x75, 0x87, 0xd7, 0x85, 0xa3, 0x0d, 0xe0, 0x1f, 0x1a, 0x38, 0xca, 0x67, 0xc7, 0x6e, 0x8d, + 0xf2, 0x3b, 0x5e, 0x0f, 0x40, 0x6d, 0xb4, 0xcc, 0x0c, 0x61, 0xbc, 0xd8, 0x75, 0xc8, 0xf9, 0x3c, + 0x9f, 0xf1, 0xa8, 0xc7, 0x03, 0x25, 0xae, 0x06, 0x6a, 0x48, 0x34, 0x82, 0x5e, 0x61, 0x3a, 0x50, + 0x6d, 0x71, 0xd9, 0x24, 0x09, 0xc2, 0x57, 0x9d, 0x2b, 0x1e, 0x5d, 0x0e, 0x4e, 0x9a, 0x13, 0x7e, + 0xa6, 0x10, 0x27, 0x88, 0x40, 0x21, 0x79, 0x80, 0x73, 0xf5, 0x54, 0x89, 0xf6, 0x45, 0xf3, 0xa1, + 0x34, 0x7b, 0xd7, 0xd7, 0xbc, 0x2c, 0xbf, 0x75, 0x0c, 0xad, 0x19, 0x67, 0x32, 0x08, 0xc1, 0x5a, + 0x72, 0x63, 0x13, 0x80, 0x2f, 0xde, 0x6c, 0xea, 0xd5, 0xc7, 0x3e, 0x11, 0x4a, 0xc6, 0xbc, 0x3c, + 0x94, 0xff, 0x47, 0xe2, 0x2d, 0x38, 0xf5, 0xcf, 0x0b, 0xef, 0x2f, 0xe3, 0xfc, 0xf5, 0xeb, 0x77, + 0x73, 0x77, 0x32, 0xe6, 0xdd, 0x80, 0x14, 0x8f, 0x2a, 0x07, 0xb3, 0xa1, 0xf6, 0xe2, 0xa7, 0x4e, + 0xb4, 0x03, 0x4a, 0x4a, 0xae, 0xcb, 0x79, 0xc9, 0x5b, 0xb4, 0xb3, 0x9a, 0x8d, 0x33, 0x8c, 0x9a, + 0x75, 0x15, 0xd5, 0xcb, 0xf9, 0x5f, 0x15, 0xdf, 0xc4, 0xda, 0xb2, 0x05, 0x00, 0x00 }; diff --git a/wled00/wled.h b/wled00/wled.h index 4533d58c9..1269b819b 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2208011 +#define VERSION 2208031 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG diff --git a/wled00/wled_server.cpp b/wled00/wled_server.cpp index 6a131f927..3b2eb0591 100644 --- a/wled00/wled_server.cpp +++ b/wled00/wled_server.cpp @@ -103,6 +103,7 @@ void initServer() request->send(response); //request->send_P(200, "text/html", PAGE_liveviewws); }); + #ifndef WLED_DISABLE_2D server.on("/liveview2D", HTTP_GET, [](AsyncWebServerRequest *request){ if (handleIfNoneMatchCacheHeader(request)) return; AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", PAGE_liveviewws2D, PAGE_liveviewws2D_length); @@ -111,6 +112,7 @@ void initServer() request->send(response); //request->send_P(200, "text/html", PAGE_liveviewws); }); + #endif #else server.on("/liveview", HTTP_GET, [](AsyncWebServerRequest *request){ if (handleIfNoneMatchCacheHeader(request)) return; diff --git a/wled00/ws.cpp b/wled00/ws.cpp index fd8174ef0..0c11c1c8c 100644 --- a/wled00/ws.cpp +++ b/wled00/ws.cpp @@ -138,7 +138,11 @@ void sendDataWs(AsyncWebSocketClient * client) releaseJSONBufferLock(); } -#define MAX_LIVE_LEDS_WS 1024 +#ifndef WLED_DISABLE_2D + #define MAX_LIVE_LEDS_WS 1024 +#else + #define MAX_LIVE_LEDS_WS 256 +#endif bool sendLiveLedsWs(uint32_t wsClient) { @@ -153,10 +157,14 @@ bool sendLiveLedsWs(uint32_t wsClient) uint8_t* buffer = wsBuf->get(); buffer[0] = 'L'; buffer[1] = 1; //version +#ifndef WLED_DISABLE_2D buffer[2] = strip.matrixWidth; buffer[3] = strip.matrixHeight; - uint16_t pos = 4; +#else + uint16_t pos = 2; +#endif + for (uint16_t i= 0; pos < bufSize -2; i += n) { uint32_t c = strip.getPixelColor(i);