kopia lustrzana https://github.com/Aircoookie/WLED
				
				
				
			code spell checking - part1 (core)
I've found a code spellchecker, so this is what can be corrected easily. Changes are only affecting comments, readme and a few user-visible strings. So no functional impact expected.pull/3529/head
							rodzic
							
								
									cb95a7d418
								
							
						
					
					
						commit
						f513cae66e
					
				| 
						 | 
				
			
			@ -432,7 +432,7 @@
 | 
			
		|||
 | 
			
		||||
-   Added application level pong websockets reply (#2139)
 | 
			
		||||
-   Use AsyncTCP 1.0.3 as it mitigates the flickering issue from 0.13.0-b2
 | 
			
		||||
-   Fixed transition manually updated in preset overriden by field value
 | 
			
		||||
-   Fixed transition manually updated in preset overridden by field value
 | 
			
		||||
 | 
			
		||||
#### Build 2108050
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -961,7 +961,7 @@
 | 
			
		|||
 | 
			
		||||
#### Build 2011040
 | 
			
		||||
 | 
			
		||||
-   Inversed Rain direction (fixes #1147)
 | 
			
		||||
-   Inverted Rain direction (fixes #1147)
 | 
			
		||||
 | 
			
		||||
#### Build 2011010
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1172,7 +1172,7 @@
 | 
			
		|||
 | 
			
		||||
-   Added module info page to web UI
 | 
			
		||||
-   Added realtime override functionality to web UI
 | 
			
		||||
-   Added individial segment power and brightness to web UI
 | 
			
		||||
-   Added individual segment power and brightness to web UI
 | 
			
		||||
-   Added feature to one-click select single segment only by tapping segment name
 | 
			
		||||
-   Removed palette jumping to default if color is changed
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -654,7 +654,7 @@ build_flags = ${common.build_flags_esp32}
 | 
			
		|||
  -D RLYPIN=19
 | 
			
		||||
  -D BTNPIN=17
 | 
			
		||||
  -D IRPIN=18
 | 
			
		||||
  -D UWLED_USE_MY_CONFIG
 | 
			
		||||
  -U WLED_USE_MY_CONFIG
 | 
			
		||||
  -D USERMOD_DALLASTEMPERATURE
 | 
			
		||||
  -D USERMOD_FOUR_LINE_DISPLAY
 | 
			
		||||
  -D TEMPERATURE_PIN=23
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@ A fast and feature-rich implementation of an ESP8266/ESP32 webserver to control
 | 
			
		|||
- Up to 250 user presets to save and load colors/effects easily, supports cycling through them.  
 | 
			
		||||
- Presets can be used to automatically execute API calls  
 | 
			
		||||
- Nightlight function (gradually dims down)  
 | 
			
		||||
- Full OTA software updatability (HTTP + ArduinoOTA), password protectable  
 | 
			
		||||
- Full OTA software updateability (HTTP + ArduinoOTA), password protectable  
 | 
			
		||||
- Configurable analog clock (Cronixie, 7-segment and EleksTube IPS clock support via usermods) 
 | 
			
		||||
- Configurable Auto Brightness limit for safe operation  
 | 
			
		||||
- Filesystem-based config for easier backup of presets and settings  
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -51,7 +51,7 @@ uint16_t triwave16(uint16_t in) {
 | 
			
		|||
 * Generates a tristate square wave w/ attac & decay
 | 
			
		||||
 * @param x input value 0-255
 | 
			
		||||
 * @param pulsewidth 0-127
 | 
			
		||||
 * @param attdec attac & decay, max. pulsewidth / 2
 | 
			
		||||
 * @param attdec attack & decay, max. pulsewidth / 2
 | 
			
		||||
 * @returns signed waveform value
 | 
			
		||||
 */
 | 
			
		||||
int8_t tristate_square8(uint8_t x, uint8_t pulsewidth, uint8_t attdec) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1239,7 +1239,7 @@ uint16_t mode_fireworks() {
 | 
			
		|||
      if (SEGMENT.is2D()) SEGMENT.setPixelColorXY(x, y, col);
 | 
			
		||||
      else                SEGMENT.setPixelColor(index, col);
 | 
			
		||||
      SEGENV.aux1 = SEGENV.aux0;  // old spark
 | 
			
		||||
      SEGENV.aux0 = index;        // remember where spark occured
 | 
			
		||||
      SEGENV.aux0 = index;        // remember where spark occurred
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  return FRAMETIME;
 | 
			
		||||
| 
						 | 
				
			
			@ -1272,8 +1272,8 @@ uint16_t mode_rain() {
 | 
			
		|||
      SEGENV.aux0++;  // increase spark index
 | 
			
		||||
      SEGENV.aux1++;
 | 
			
		||||
    }
 | 
			
		||||
    if (SEGENV.aux0 == 0) SEGENV.aux0 = UINT16_MAX; // reset previous spark positiom
 | 
			
		||||
    if (SEGENV.aux1 == 0) SEGENV.aux0 = UINT16_MAX; // reset previous spark positiom
 | 
			
		||||
    if (SEGENV.aux0 == 0) SEGENV.aux0 = UINT16_MAX; // reset previous spark position
 | 
			
		||||
    if (SEGENV.aux1 == 0) SEGENV.aux0 = UINT16_MAX; // reset previous spark position
 | 
			
		||||
    if (SEGENV.aux0 >= width*height) SEGENV.aux0 = 0;     // ignore
 | 
			
		||||
    if (SEGENV.aux1 >= width*height) SEGENV.aux1 = 0;
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			@ -3601,7 +3601,7 @@ uint16_t mode_tetrix(void) {
 | 
			
		|||
      }
 | 
			
		||||
 | 
			
		||||
      if (drop->step == 0) {              // init brick
 | 
			
		||||
        // speed calcualtion: a single brick should reach bottom of strip in X seconds
 | 
			
		||||
        // speed calculation: a single brick should reach bottom of strip in X seconds
 | 
			
		||||
        // if the speed is set to 1 this should take 5s and at 255 it should take 0.25s
 | 
			
		||||
        // as this is dependant on SEGLEN it should be taken into account and the fact that effect runs every FRAMETIME s
 | 
			
		||||
        int speed = SEGMENT.speed ? SEGMENT.speed : random8(1,255);
 | 
			
		||||
| 
						 | 
				
			
			@ -3684,7 +3684,7 @@ static const char _data_FX_MODE_PLASMA[] PROGMEM = "Plasma@Phase,!;!;!";
 | 
			
		|||
 | 
			
		||||
/*
 | 
			
		||||
 * Percentage display
 | 
			
		||||
 * Intesity values from 0-100 turn on the leds.
 | 
			
		||||
 * Intensity values from 0-100 turn on the leds.
 | 
			
		||||
 */
 | 
			
		||||
uint16_t mode_percent(void) {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -3737,7 +3737,7 @@ static const char _data_FX_MODE_PERCENT[] PROGMEM = "Percent@,% of fill,,,,One c
 | 
			
		|||
 | 
			
		||||
/*
 | 
			
		||||
 * Modulates the brightness similar to a heartbeat
 | 
			
		||||
 * (unimplemented?) tries to draw an ECG aproximation on a 2D matrix
 | 
			
		||||
 * (unimplemented?) tries to draw an ECG approximation on a 2D matrix
 | 
			
		||||
 */
 | 
			
		||||
uint16_t mode_heartbeat(void) {
 | 
			
		||||
  uint8_t bpm = 40 + (SEGMENT.speed >> 3);
 | 
			
		||||
| 
						 | 
				
			
			@ -4415,7 +4415,7 @@ uint16_t mode_tv_simulator(void) {
 | 
			
		|||
  // how much time is elapsed ?
 | 
			
		||||
  tvSimulator->elapsed = millis() - tvSimulator->startTime;
 | 
			
		||||
 | 
			
		||||
  // fade from prev volor to next color
 | 
			
		||||
  // fade from prev color to next color
 | 
			
		||||
  if (tvSimulator->elapsed < tvSimulator->fadeTime) {
 | 
			
		||||
    r = map(tvSimulator->elapsed, 0, tvSimulator->fadeTime, tvSimulator->pr, nr);
 | 
			
		||||
    g = map(tvSimulator->elapsed, 0, tvSimulator->fadeTime, tvSimulator->pg, ng);
 | 
			
		||||
| 
						 | 
				
			
			@ -6283,7 +6283,7 @@ uint16_t mode_gravcenter(void) {                // Gravcenter. By Andrew Tuline.
 | 
			
		|||
  SEGMENT.fade_out(251);  // 30%
 | 
			
		||||
 | 
			
		||||
  float segmentSampleAvg = volumeSmth * (float)SEGMENT.intensity / 255.0f;
 | 
			
		||||
  segmentSampleAvg *= 0.125; // divide by 8, to compensate for later "sensitivty" upscaling
 | 
			
		||||
  segmentSampleAvg *= 0.125; // divide by 8, to compensate for later "sensitivity" upscaling
 | 
			
		||||
 | 
			
		||||
  float mySampleAvg = mapf(segmentSampleAvg*2.0, 0, 32, 0, (float)SEGLEN/2.0f); // map to pixels available in current segment
 | 
			
		||||
  uint16_t tempsamp = constrain(mySampleAvg, 0, SEGLEN/2);     // Keep the sample from overflowing.
 | 
			
		||||
| 
						 | 
				
			
			@ -6335,7 +6335,7 @@ uint16_t mode_gravcentric(void) {                     // Gravcentric. By Andrew
 | 
			
		|||
  SEGMENT.fade_out(253);  // 50%
 | 
			
		||||
 | 
			
		||||
  float segmentSampleAvg = volumeSmth * (float)SEGMENT.intensity / 255.0f;
 | 
			
		||||
  segmentSampleAvg *= 0.125f; // divide by 8, to compensate for later "sensitivty" upscaling
 | 
			
		||||
  segmentSampleAvg *= 0.125f; // divide by 8, to compensate for later "sensitivity" upscaling
 | 
			
		||||
 | 
			
		||||
  float mySampleAvg = mapf(segmentSampleAvg*2.0, 0.0f, 32.0f, 0.0f, (float)SEGLEN/2.0f); // map to pixels availeable in current segment
 | 
			
		||||
  int tempsamp = constrain(mySampleAvg, 0, SEGLEN/2);     // Keep the sample from overflowing.
 | 
			
		||||
| 
						 | 
				
			
			@ -6384,7 +6384,7 @@ uint16_t mode_gravimeter(void) {                // Gravmeter. By Andrew Tuline.
 | 
			
		|||
  SEGMENT.fade_out(249);  // 25%
 | 
			
		||||
 | 
			
		||||
  float segmentSampleAvg = volumeSmth * (float)SEGMENT.intensity / 255.0;
 | 
			
		||||
  segmentSampleAvg *= 0.25; // divide by 4, to compensate for later "sensitivty" upscaling
 | 
			
		||||
  segmentSampleAvg *= 0.25; // divide by 4, to compensate for later "sensitivity" upscaling
 | 
			
		||||
 | 
			
		||||
  float mySampleAvg = mapf(segmentSampleAvg*2.0, 0, 64, 0, (SEGLEN-1)); // map to pixels availeable in current segment
 | 
			
		||||
  int tempsamp = constrain(mySampleAvg,0,SEGLEN-1);       // Keep the sample from overflowing.
 | 
			
		||||
| 
						 | 
				
			
			@ -6484,7 +6484,7 @@ uint16_t mode_midnoise(void) {                  // Midnoise. By Andrew Tuline.
 | 
			
		|||
  SEGMENT.fade_out(SEGMENT.speed);
 | 
			
		||||
 | 
			
		||||
  float tmpSound2 = volumeSmth * (float)SEGMENT.intensity / 256.0;  // Too sensitive.
 | 
			
		||||
  tmpSound2 *= (float)SEGMENT.intensity / 128.0;              // Reduce sensitity/length.
 | 
			
		||||
  tmpSound2 *= (float)SEGMENT.intensity / 128.0;              // Reduce sensitivity/length.
 | 
			
		||||
 | 
			
		||||
  int maxLen = mapf(tmpSound2, 0, 127, 0, SEGLEN/2);
 | 
			
		||||
  if (maxLen >SEGLEN/2) maxLen = SEGLEN/2;
 | 
			
		||||
| 
						 | 
				
			
			@ -6895,7 +6895,7 @@ uint16_t mode_freqmatrix(void) {                // Freqmatrix. By Andreas Plesch
 | 
			
		|||
 | 
			
		||||
    if (FFT_MajorPeak > MAX_FREQUENCY) FFT_MajorPeak = 1;
 | 
			
		||||
    // MajorPeak holds the freq. value which is most abundant in the last sample.
 | 
			
		||||
    // With our sampling rate of 10240Hz we have a usable freq range from roughtly 80Hz to 10240/2 Hz
 | 
			
		||||
    // With our sampling rate of 10240Hz we have a usable freq range from roughly 80Hz to 10240/2 Hz
 | 
			
		||||
    // we will treat everything with less than 65Hz as 0
 | 
			
		||||
 | 
			
		||||
    if (FFT_MajorPeak < 80) {
 | 
			
		||||
| 
						 | 
				
			
			@ -6916,7 +6916,7 @@ uint16_t mode_freqmatrix(void) {                // Freqmatrix. By Andreas Plesch
 | 
			
		|||
 | 
			
		||||
  return FRAMETIME;
 | 
			
		||||
} // mode_freqmatrix()
 | 
			
		||||
static const char _data_FX_MODE_FREQMATRIX[] PROGMEM = "Freqmatrix@Speed,Sound effect,Low bin,High bin,Sensivity;;;1f;m12=3,si=0"; // Corner, Beatsin
 | 
			
		||||
static const char _data_FX_MODE_FREQMATRIX[] PROGMEM = "Freqmatrix@Speed,Sound effect,Low bin,High bin,Sensitivity;;;1f;m12=3,si=0"; // Corner, Beatsin
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//////////////////////
 | 
			
		||||
| 
						 | 
				
			
			@ -7000,7 +7000,7 @@ uint16_t mode_freqwave(void) {                  // Freqwave. By Andreas Pleschun
 | 
			
		|||
 | 
			
		||||
    if (FFT_MajorPeak > MAX_FREQUENCY) FFT_MajorPeak = 1.0f;
 | 
			
		||||
    // MajorPeak holds the freq. value which is most abundant in the last sample.
 | 
			
		||||
    // With our sampling rate of 10240Hz we have a usable freq range from roughtly 80Hz to 10240/2 Hz
 | 
			
		||||
    // With our sampling rate of 10240Hz we have a usable freq range from roughly 80Hz to 10240/2 Hz
 | 
			
		||||
    // we will treat everything with less than 65Hz as 0
 | 
			
		||||
 | 
			
		||||
    if (FFT_MajorPeak < 80) {
 | 
			
		||||
| 
						 | 
				
			
			@ -7047,7 +7047,7 @@ uint16_t mode_gravfreq(void) {                  // Gravfreq. By Andrew Tuline.
 | 
			
		|||
  SEGMENT.fade_out(250);
 | 
			
		||||
 | 
			
		||||
  float segmentSampleAvg = volumeSmth * (float)SEGMENT.intensity / 255.0f;
 | 
			
		||||
  segmentSampleAvg *= 0.125f; // divide by 8,  to compensate for later "sensitivty" upscaling
 | 
			
		||||
  segmentSampleAvg *= 0.125f; // divide by 8,  to compensate for later "sensitivity" upscaling
 | 
			
		||||
 | 
			
		||||
  float mySampleAvg = mapf(segmentSampleAvg*2.0f, 0,32, 0, (float)SEGLEN/2.0f); // map to pixels availeable in current segment
 | 
			
		||||
  int tempsamp = constrain(mySampleAvg,0,SEGLEN/2);     // Keep the sample from overflowing.
 | 
			
		||||
| 
						 | 
				
			
			@ -7075,7 +7075,7 @@ uint16_t mode_gravfreq(void) {                  // Gravfreq. By Andrew Tuline.
 | 
			
		|||
 | 
			
		||||
  return FRAMETIME;
 | 
			
		||||
} // mode_gravfreq()
 | 
			
		||||
static const char _data_FX_MODE_GRAVFREQ[] PROGMEM = "Gravfreq@Rate of fall,Sensivity;!,!;!;1f;ix=128,m12=0,si=0"; // Pixels, Beatsin
 | 
			
		||||
static const char _data_FX_MODE_GRAVFREQ[] PROGMEM = "Gravfreq@Rate of fall,Sensitivity;!,!;!;1f;ix=128,m12=0,si=0"; // Pixels, Beatsin
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//////////////////////
 | 
			
		||||
| 
						 | 
				
			
			@ -7667,7 +7667,7 @@ static const char _data_FX_MODE_2DWAVINGCELL[] PROGMEM = "Waving Cell@!,,Amplitu
 | 
			
		|||
static const char _data_RESERVED[] PROGMEM = "RSVD";
 | 
			
		||||
 | 
			
		||||
// add (or replace reserved) effect mode and data into vector
 | 
			
		||||
// use id==255 to find unallocatd gaps (with "Reserved" data string)
 | 
			
		||||
// use id==255 to find unallocated gaps (with "Reserved" data string)
 | 
			
		||||
// if vector size() is smaller than id (single) data is appended at the end (regardless of id)
 | 
			
		||||
void WS2812FX::addEffect(uint8_t id, mode_ptr mode_fn, const char *mode_name) {
 | 
			
		||||
  if (id == 255) { // find empty slot
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -432,7 +432,7 @@ typedef struct Segment {
 | 
			
		|||
      uint8_t       _briT;        // temporary brightness
 | 
			
		||||
      uint8_t       _cctT;        // temporary CCT
 | 
			
		||||
      CRGBPalette16 _palT;        // temporary palette
 | 
			
		||||
      uint8_t       _prevPaletteBlends; // number of previous palette blends (there are max 255 belnds possible)
 | 
			
		||||
      uint8_t       _prevPaletteBlends; // number of previous palette blends (there are max 255 blends possible)
 | 
			
		||||
      unsigned long _start;       // must accommodate millis()
 | 
			
		||||
      uint16_t      _dur;
 | 
			
		||||
      Transition(uint16_t dur=750)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -251,7 +251,7 @@ CRGBPalette16 &Segment::loadPalette(CRGBPalette16 &targetPalette, uint8_t pal) {
 | 
			
		|||
      CRGB sec  = gamma32(colors[1]);
 | 
			
		||||
      CRGB ter  = gamma32(colors[2]);
 | 
			
		||||
      targetPalette = CRGBPalette16(ter,sec,prim); break;}
 | 
			
		||||
    case 5: {//primary + secondary (+tert if not off), more distinct
 | 
			
		||||
    case 5: {//primary + secondary (+tertiary if not off), more distinct
 | 
			
		||||
      CRGB prim = gamma32(colors[0]);
 | 
			
		||||
      CRGB sec  = gamma32(colors[1]);
 | 
			
		||||
      if (colors[2]) {
 | 
			
		||||
| 
						 | 
				
			
			@ -290,7 +290,7 @@ CRGBPalette16 &Segment::loadPalette(CRGBPalette16 &targetPalette, uint8_t pal) {
 | 
			
		|||
 | 
			
		||||
void Segment::startTransition(uint16_t dur) {
 | 
			
		||||
  if (dur == 0) {
 | 
			
		||||
    if (isInTransition()) _t->_dur = dur; // this will stop transition in next handleTransisiton()
 | 
			
		||||
    if (isInTransition()) _t->_dur = dur; // this will stop transition in next handleTransition()
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
  if (isInTransition()) return; // already in transition no need to store anything
 | 
			
		||||
| 
						 | 
				
			
			@ -1339,7 +1339,7 @@ uint8_t WS2812FX::estimateCurrentAndLimitBri() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void WS2812FX::show(void) {
 | 
			
		||||
  // avoid race condition, caputre _callback value
 | 
			
		||||
  // avoid race condition, capture _callback value
 | 
			
		||||
  show_callback callback = _callback;
 | 
			
		||||
  if (callback) callback();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1374,7 +1374,7 @@ bool WS2812FX::isUpdating() {
 | 
			
		|||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the refresh rate of the LED strip. Useful for finding out whether a given setup is fast enough.
 | 
			
		||||
 * Only updates on show() or is set to 0 fps if last show is more than 2 secs ago, so accurary varies
 | 
			
		||||
 * Only updates on show() or is set to 0 fps if last show is more than 2 secs ago, so accuracy varies
 | 
			
		||||
 */
 | 
			
		||||
uint16_t WS2812FX::getFps() {
 | 
			
		||||
  if (millis() - _lastShow > 2000) return 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,7 +64,7 @@ void ColorOrderMap::add(uint16_t start, uint16_t len, uint8_t colorOrder) {
 | 
			
		|||
 | 
			
		||||
uint8_t IRAM_ATTR ColorOrderMap::getPixelColorOrder(uint16_t pix, uint8_t defaultColorOrder) const {
 | 
			
		||||
  if (_count == 0) return defaultColorOrder;
 | 
			
		||||
  // upper nibble containd W swap information
 | 
			
		||||
  // upper nibble contains W swap information
 | 
			
		||||
  uint8_t swapW = defaultColorOrder >> 4;
 | 
			
		||||
  for (uint8_t i = 0; i < _count; i++) {
 | 
			
		||||
    if (pix >= _mappings[i].start && pix < (_mappings[i].start + _mappings[i].len)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -229,7 +229,7 @@ class BusDigital : public Bus {
 | 
			
		|||
        uint8_t* chan = (uint8_t*) &c;
 | 
			
		||||
        for (uint_fast8_t i=0; i<4; i++) {
 | 
			
		||||
          uint_fast16_t val = chan[i];
 | 
			
		||||
          chan[i] = ((val << 8) + restoreBri) / (restoreBri + 1); //adding _bri slighly improves recovery / stops degradation on re-scale
 | 
			
		||||
          chan[i] = ((val << 8) + restoreBri) / (restoreBri + 1); //adding _bri slightly improves recovery / stops degradation on re-scale
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      return c;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,17 +69,17 @@
 | 
			
		|||
#define I_32_RN_NEO_3 21
 | 
			
		||||
#define I_32_I0_NEO_3 22
 | 
			
		||||
#define I_32_I1_NEO_3 23
 | 
			
		||||
#define I_32_BB_NEO_3 24  // bitbangging on ESP32 not recommended
 | 
			
		||||
#define I_32_BB_NEO_3 24  // bitbanging on ESP32 not recommended
 | 
			
		||||
//RGBW
 | 
			
		||||
#define I_32_RN_NEO_4 25
 | 
			
		||||
#define I_32_I0_NEO_4 26
 | 
			
		||||
#define I_32_I1_NEO_4 27
 | 
			
		||||
#define I_32_BB_NEO_4 28  // bitbangging on ESP32 not recommended
 | 
			
		||||
#define I_32_BB_NEO_4 28  // bitbanging on ESP32 not recommended
 | 
			
		||||
//400Kbps
 | 
			
		||||
#define I_32_RN_400_3 29
 | 
			
		||||
#define I_32_I0_400_3 30
 | 
			
		||||
#define I_32_I1_400_3 31
 | 
			
		||||
#define I_32_BB_400_3 32  // bitbangging on ESP32 not recommended
 | 
			
		||||
#define I_32_BB_400_3 32  // bitbanging on ESP32 not recommended
 | 
			
		||||
//TM1814 (RGBW)
 | 
			
		||||
#define I_32_RN_TM1_4 33
 | 
			
		||||
#define I_32_I0_TM1_4 34
 | 
			
		||||
| 
						 | 
				
			
			@ -379,7 +379,7 @@ class PolyBus {
 | 
			
		|||
      case I_32_I1_UCS_4: (static_cast<B_32_I1_UCS_4*>(busPtr))->Begin(); break;
 | 
			
		||||
      #endif
 | 
			
		||||
//      case I_32_BB_UCS_4: (static_cast<B_32_BB_UCS_4*>(busPtr))->Begin(); break;
 | 
			
		||||
      // ESP32 can (and should, to avoid inadvertantly driving the chip select signal) specify the pins used for SPI, but only in begin()
 | 
			
		||||
      // ESP32 can (and should, to avoid inadvertently driving the chip select signal) specify the pins used for SPI, but only in begin()
 | 
			
		||||
      case I_HS_DOT_3: beginDotStar<B_HS_DOT_3*>(busPtr, pins[1], -1, pins[0], -1, clock_kHz); break;
 | 
			
		||||
      case I_HS_LPD_3: beginDotStar<B_HS_LPD_3*>(busPtr, pins[1], -1, pins[0], -1, clock_kHz); break;
 | 
			
		||||
      case I_HS_LPO_3: beginDotStar<B_HS_LPO_3*>(busPtr, pins[1], -1, pins[0], -1, clock_kHz); break;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -171,7 +171,7 @@ void handleAnalog(uint8_t b)
 | 
			
		|||
  // remove noise & reduce frequency of UI updates
 | 
			
		||||
  if (abs(int(aRead) - int(oldRead[b])) <= POT_SENSITIVITY) return;  // no significant change in reading
 | 
			
		||||
 | 
			
		||||
  // Unomment the next lines if you still see flickering related to potentiometer
 | 
			
		||||
  // Un-Comment the next lines if you still see flickering related to potentiometer
 | 
			
		||||
  // This waits until strip finishes updating (why: strip was not updating at the start of handleButton() but may have started during analogRead()?)
 | 
			
		||||
  //unsigned long wait_started = millis();
 | 
			
		||||
  //while(strip.isUpdating() && (millis() - wait_started < STRIP_WAIT_TIME)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -375,7 +375,7 @@ void handleIO()
 | 
			
		|||
    if (!offMode) {
 | 
			
		||||
      #ifdef ESP8266
 | 
			
		||||
      // turn off built-in LED if strip is turned off
 | 
			
		||||
      // this will break digital bus so will need to be reinitialised on On
 | 
			
		||||
      // this will break digital bus so will need to be re-initialised on On
 | 
			
		||||
      PinOwner ledPinOwner = pinManager.getPinOwner(LED_BUILTIN);
 | 
			
		||||
      if (!strip.isOffRefreshRequired() && (ledPinOwner == PinOwner::None || ledPinOwner == PinOwner::BusDigital)) {
 | 
			
		||||
        pinMode(LED_BUILTIN, OUTPUT);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -308,7 +308,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
 | 
			
		|||
  PinManagerPinType i2c[2] = { { i2c_sda, true }, { i2c_scl, true } };
 | 
			
		||||
  if (i2c_scl >= 0 && i2c_sda >= 0 && pinManager.allocateMultiplePins(i2c, 2, PinOwner::HW_I2C)) {
 | 
			
		||||
    #ifdef ESP32
 | 
			
		||||
    if (!Wire.setPins(i2c_sda, i2c_scl)) { i2c_scl = i2c_sda = -1; } // this will fail if Wire is initilised (Wire.begin() called prior)
 | 
			
		||||
    if (!Wire.setPins(i2c_sda, i2c_scl)) { i2c_scl = i2c_sda = -1; } // this will fail if Wire is initialised (Wire.begin() called prior)
 | 
			
		||||
    else Wire.begin();
 | 
			
		||||
    #else
 | 
			
		||||
    Wire.begin(i2c_sda, i2c_scl);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -207,8 +207,8 @@
 | 
			
		|||
#define DMX_MODE_MULTIPLE_RGB     4            //every LED is addressed with its own RGB (ledCount * 3 channels)
 | 
			
		||||
#define DMX_MODE_MULTIPLE_DRGB    5            //every LED is addressed with its own RGB and share a master dimmer (ledCount * 3 + 1 channels)
 | 
			
		||||
#define DMX_MODE_MULTIPLE_RGBW    6            //every LED is addressed with its own RGBW (ledCount * 4 channels)
 | 
			
		||||
#define DMX_MODE_EFFECT_SEGMENT   8            //trigger standalone effects of WLED (15 channels per segement)
 | 
			
		||||
#define DMX_MODE_EFFECT_SEGMENT_W 9            //trigger standalone effects of WLED (18 channels per segement)
 | 
			
		||||
#define DMX_MODE_EFFECT_SEGMENT   8            //trigger standalone effects of WLED (15 channels per segment)
 | 
			
		||||
#define DMX_MODE_EFFECT_SEGMENT_W 9            //trigger standalone effects of WLED (18 channels per segment)
 | 
			
		||||
#define DMX_MODE_PRESET           10           //apply presets (1 channel)
 | 
			
		||||
 | 
			
		||||
//Light capability byte (unused) 0bRCCCTTTT
 | 
			
		||||
| 
						 | 
				
			
			@ -323,7 +323,7 @@
 | 
			
		|||
#define SEG_DIFFERS_OPT        0x02 // all segment options except: selected, reset & transitional
 | 
			
		||||
#define SEG_DIFFERS_COL        0x04 // colors
 | 
			
		||||
#define SEG_DIFFERS_FX         0x08 // effect/mode parameters
 | 
			
		||||
#define SEG_DIFFERS_BOUNDS     0x10 // segment start/stop ounds
 | 
			
		||||
#define SEG_DIFFERS_BOUNDS     0x10 // segment start/stop bounds
 | 
			
		||||
#define SEG_DIFFERS_GSO        0x20 // grouping, spacing & offset
 | 
			
		||||
#define SEG_DIFFERS_SEL        0x80 // selected
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -346,7 +346,7 @@
 | 
			
		|||
#define ERR_FS_PLOAD    12  // It was attempted to load a preset that does not exist
 | 
			
		||||
#define ERR_FS_IRLOAD   13  // It was attempted to load an IR JSON cmd, but the "ir.json" file does not exist
 | 
			
		||||
#define ERR_FS_RMLOAD   14  // It was attempted to load an remote JSON cmd, but the "remote.json" file does not exist
 | 
			
		||||
#define ERR_FS_GENERAL  19  // A general unspecified filesystem error occured
 | 
			
		||||
#define ERR_FS_GENERAL  19  // A general unspecified filesystem error occurred
 | 
			
		||||
#define ERR_OVERTEMP    30  // An attached temperature sensor has measured above threshold temperature (not implemented)
 | 
			
		||||
#define ERR_OVERCURRENT 31  // An attached current sensor has measured a current above the threshold (not implemented)
 | 
			
		||||
#define ERR_UNDERVOLT   32  // An attached voltmeter has measured a voltage below the threshold (not implemented)
 | 
			
		||||
| 
						 | 
				
			
			@ -375,7 +375,7 @@
 | 
			
		|||
#define SUBPAGE_JS              254
 | 
			
		||||
#define SUBPAGE_WELCOME         255
 | 
			
		||||
 | 
			
		||||
#define NTP_PACKET_SIZE 48       // size of NTP recive buffer
 | 
			
		||||
#define NTP_PACKET_SIZE 48       // size of NTP receive buffer
 | 
			
		||||
#define NTP_MIN_PACKET_SIZE 48   // min expected size - NTP v4 allows for "extended information" appended to the standard fields
 | 
			
		||||
 | 
			
		||||
//maximum number of rendered LEDs - this does not have to match max. physical LEDs, e.g. if there are virtual busses
 | 
			
		||||
| 
						 | 
				
			
			@ -461,7 +461,7 @@
 | 
			
		|||
//this is merely a default now and can be changed at runtime
 | 
			
		||||
#ifndef LEDPIN
 | 
			
		||||
#if defined(ESP8266) || (defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM)) || defined(CONFIG_IDF_TARGET_ESP32C3)
 | 
			
		||||
  #define LEDPIN 2    // GPIO2 (D4) on Wemod D1 mini compatible boards
 | 
			
		||||
  #define LEDPIN 2    // GPIO2 (D4) on Wemos D1 mini compatible boards
 | 
			
		||||
#else
 | 
			
		||||
  #define LEDPIN 16   // aligns with GPIO2 (D4) on Wemos D1 mini32 compatible boards
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -485,7 +485,7 @@
 | 
			
		|||
#define PIN_TIMEOUT        900000 // time in ms after which the PIN will be required again, 15 minutes
 | 
			
		||||
 | 
			
		||||
// HW_PIN_SCL & HW_PIN_SDA are used for information in usermods settings page and usermods themselves
 | 
			
		||||
// which GPIO pins are actually used in a hardwarea layout (controller board)
 | 
			
		||||
// which GPIO pins are actually used in a hardware layout (controller board)
 | 
			
		||||
#if defined(I2CSCLPIN) && !defined(HW_PIN_SCL)
 | 
			
		||||
  #define HW_PIN_SCL I2CSCLPIN
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -508,7 +508,7 @@
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
// HW_PIN_SCLKSPI & HW_PIN_MOSISPI & HW_PIN_MISOSPI are used for information in usermods settings page and usermods themselves
 | 
			
		||||
// which GPIO pins are actually used in a hardwarea layout (controller board)
 | 
			
		||||
// which GPIO pins are actually used in a hardware layout (controller board)
 | 
			
		||||
#if defined(SPISCLKPIN) && !defined(HW_PIN_CLOCKSPI)
 | 
			
		||||
  #define HW_PIN_CLOCKSPI SPISCLKPIN
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -485,7 +485,7 @@
 | 
			
		|||
      console.log('Error: ', e); console.log(' Status: ', this.status);
 | 
			
		||||
      //Show some error notification for some time
 | 
			
		||||
      setTimeout(()=>{
 | 
			
		||||
        //Remove it when time has pased
 | 
			
		||||
        //Remove it when time has passed
 | 
			
		||||
      }, 1000);
 | 
			
		||||
    });
 | 
			
		||||
    req.open("POST", "/upload");
 | 
			
		||||
| 
						 | 
				
			
			@ -530,7 +530,7 @@
 | 
			
		|||
      paletteArray.push({"palette":[0,70,70,70,255,70,70,70]});
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //Get static palettes from localStorage and do some magic to reformat them into the same format as the pallete JSONs
 | 
			
		||||
    //Get static palettes from localStorage and do some magic to reformat them into the same format as the palette JSONs
 | 
			
		||||
    //This code excludes any objects with "non valid integer colors", i.e. r, c1, c2, c3 and such
 | 
			
		||||
    //This code also fixes potentially broken palettes which doesn't end on 255
 | 
			
		||||
    //The code finally also removes any representations of the custom palettes, since we read them from file
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1460,9 +1460,9 @@ function readState(s,command=false)
 | 
			
		|||
//      - For AC effects (id<128) 2 sliders and 3 colors and the palette will be shown
 | 
			
		||||
//      - For SR effects (id>128) 5 sliders and 3 colors and the palette will be shown
 | 
			
		||||
// If effective (@)
 | 
			
		||||
//      - a ; seperates slider controls (left) from color controls (middle) and palette control (right)
 | 
			
		||||
//      - a ; separates slider controls (left) from color controls (middle) and palette control (right)
 | 
			
		||||
//      - if left, middle or right is empty no controls are shown
 | 
			
		||||
//      - a , seperates slider controls (max 5) or color controls (max 3). Palette has only one value
 | 
			
		||||
//      - a , separates slider controls (max 5) or color controls (max 3). Palette has only one value
 | 
			
		||||
//      - a ! means that the default is used.
 | 
			
		||||
//             - For sliders: Effect speeds, Effect intensity, Custom 1, Custom 2, Custom 3
 | 
			
		||||
//             - For colors: Fx color, Background color, Custom
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -54,7 +54,7 @@
 | 
			
		|||
						let mW = leds[2]; // matrix width
 | 
			
		||||
						let mH = leds[3]; // matrix height
 | 
			
		||||
						let pPL = Math.min(c.width / mW, c.height / mH); // pixels per LED (width of circle)
 | 
			
		||||
						let lOf = Math.floor((c.width - pPL*mW)/2); //left offeset (to center matrix)
 | 
			
		||||
						let lOf = Math.floor((c.width - pPL*mW)/2); //left offset (to center matrix)
 | 
			
		||||
						var i = 4;
 | 
			
		||||
						for (y=0.5;y<mH;y++) for (x=0.5; x<mW; x++) {
 | 
			
		||||
							ctx.fillStyle = `rgb(${leds[i]},${leds[i+1]},${leds[i+2]})`;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,7 +69,7 @@ function getPixelRGBValues(base64Image) {
 | 
			
		|||
    let sizeY = szY.value;
 | 
			
		||||
 | 
			
		||||
    if (color != accentColor || sizeX < 1 || sizeY < 1){
 | 
			
		||||
      //image will not be rezised Set desitred size to original size
 | 
			
		||||
      //image will not be resized Set desired size to original size
 | 
			
		||||
      sizeX = image.width;
 | 
			
		||||
      sizeY = image.height;
 | 
			
		||||
      //failsafe for not generating huge images automatically
 | 
			
		||||
| 
						 | 
				
			
			@ -153,7 +153,7 @@ function getPixelRGBValues(base64Image) {
 | 
			
		|||
    let curentColorIndex = 0
 | 
			
		||||
    let commandArray = [];
 | 
			
		||||
 | 
			
		||||
    //For evry pixel in the LED array
 | 
			
		||||
    //For every pixel in the LED array
 | 
			
		||||
    for (let i = 0; i < maxi; i++) {
 | 
			
		||||
      let pixel = ledRGBValues[i];
 | 
			
		||||
      let r = pixel[0];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,7 +32,7 @@
 | 
			
		|||
				).reduce(
 | 
			
		||||
					// Filter out duplicate SSIDs. Since it is sorted by signal
 | 
			
		||||
					// strength, the strongest signal will be kept in the
 | 
			
		||||
					// order it orginally appeared in the array.
 | 
			
		||||
					// order it as originally appeared in the array.
 | 
			
		||||
					(unique, other) => {
 | 
			
		||||
						if(!unique.some(obj => obj.ssid === other.ssid)) {
 | 
			
		||||
							unique.push(other);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -964,7 +964,7 @@ function readState(s,command=false)
 | 
			
		|||
		  errstr = "Missing IR.json.";
 | 
			
		||||
		  break;
 | 
			
		||||
		case 19:
 | 
			
		||||
		  errstr = "A filesystem error has occured.";
 | 
			
		||||
		  errstr = "A filesystem error has occurred.";
 | 
			
		||||
		  break;
 | 
			
		||||
		}
 | 
			
		||||
	  showToast('Error ' + s.error + ": " + errstr, true);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -231,7 +231,7 @@ bool deserializeSegment(JsonObject elem, byte it, byte presetId)
 | 
			
		|||
  getVal(elem["c1"], &seg.custom1);
 | 
			
		||||
  getVal(elem["c2"], &seg.custom2);
 | 
			
		||||
  uint8_t cust3 = seg.custom3;
 | 
			
		||||
  getVal(elem["c3"], &cust3); // we can't pass reference to bifield
 | 
			
		||||
  getVal(elem["c3"], &cust3); // we can't pass reference to bitfield
 | 
			
		||||
  seg.custom3 = constrain(cust3, 0, 31);
 | 
			
		||||
 | 
			
		||||
  seg.check1 = elem["o1"] | seg.check1;
 | 
			
		||||
| 
						 | 
				
			
			@ -882,7 +882,7 @@ void serializePalettes(JsonObject root, int page)
 | 
			
		|||
        curPalette.add("c2");
 | 
			
		||||
        curPalette.add("c1");
 | 
			
		||||
        break;
 | 
			
		||||
      case 5: //primary + secondary (+tert if not off), more distinct
 | 
			
		||||
      case 5: //primary + secondary (+tertiary if not off), more distinct
 | 
			
		||||
        curPalette.add("c1");
 | 
			
		||||
        curPalette.add("c1");
 | 
			
		||||
        curPalette.add("c1");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,11 +26,11 @@ void handleRemote(){}
 | 
			
		|||
// since it's broadly commercially available and works out of the box as a drop-in
 | 
			
		||||
typedef struct message_structure {
 | 
			
		||||
  uint8_t program;      // 0x91 for ON button, 0x81 for all others
 | 
			
		||||
  uint8_t seq[4];       // Incremetal sequence number 32 bit unsigned integer LSB first
 | 
			
		||||
  uint8_t seq[4];       // Incremental sequence number 32 bit unsigned integer LSB first
 | 
			
		||||
  uint8_t byte5 = 32;   // Unknown
 | 
			
		||||
  uint8_t button;       // Identifies which button is being pressed
 | 
			
		||||
  uint8_t byte8 = 1;    // Unknown, but always 0x01
 | 
			
		||||
  uint8_t byte9 = 100;  // Unnkown, but always 0x64
 | 
			
		||||
  uint8_t byte9 = 100;  // Unknown, but always 0x64
 | 
			
		||||
 | 
			
		||||
  uint8_t byte10;  // Unknown, maybe checksum
 | 
			
		||||
  uint8_t byte11;  // Unknown, maybe checksum
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -172,7 +172,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
 | 
			
		|||
    }
 | 
			
		||||
    busses.updateColorOrderMap(com);
 | 
			
		||||
 | 
			
		||||
    // upate other pins
 | 
			
		||||
    // update other pins
 | 
			
		||||
    int hw_ir_pin = request->arg(F("IR")).toInt();
 | 
			
		||||
    if (pinManager.allocatePin(hw_ir_pin,false, PinOwner::IR)) {
 | 
			
		||||
      irPin = hw_ir_pin;
 | 
			
		||||
| 
						 | 
				
			
			@ -652,10 +652,10 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
 | 
			
		|||
        DEBUG_PRINTLN(value);
 | 
			
		||||
      } else {
 | 
			
		||||
        // we are using a hidden field with the same name as our parameter (!before the actual parameter!)
 | 
			
		||||
        // to describe the type of parameter (text,float,int), for boolean patameters the first field contains "off"
 | 
			
		||||
        // to describe the type of parameter (text,float,int), for boolean parameters the first field contains "off"
 | 
			
		||||
        // so checkboxes have one or two fields (first is always "false", existence of second depends on checkmark and may be "true")
 | 
			
		||||
        if (subObj[name].isNull()) {
 | 
			
		||||
          // the first occurence of the field describes the parameter type (used in next loop)
 | 
			
		||||
          // the first occurrence of the field describes the parameter type (used in next loop)
 | 
			
		||||
          if (value == "false") subObj[name] = false; // checkboxes may have only one field
 | 
			
		||||
          else                  subObj[name] = value;
 | 
			
		||||
        } else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,7 +45,7 @@ void notify(byte callMode, bool followUp)
 | 
			
		|||
  //3: supports FX intensity, 24 byte packet 4: supports transitionDelay 5: sup palette
 | 
			
		||||
  //6: supports timebase syncing, 29 byte packet 7: supports tertiary color 8: supports sys time sync, 36 byte packet
 | 
			
		||||
  //9: supports sync groups, 37 byte packet 10: supports CCT, 39 byte packet 11: per segment options, variable packet length (40+MAX_NUM_SEGMENTS*3)
 | 
			
		||||
  //12: enhanced effct sliders, 2D & mapping options
 | 
			
		||||
  //12: enhanced effect sliders, 2D & mapping options
 | 
			
		||||
  udpOut[11] = 12;
 | 
			
		||||
  col = mainseg.colors[1];
 | 
			
		||||
  udpOut[12] = R(col);
 | 
			
		||||
| 
						 | 
				
			
			@ -333,7 +333,7 @@ void handleNotifications()
 | 
			
		|||
 | 
			
		||||
    //apply colors from notification to main segment, only if not syncing full segments
 | 
			
		||||
    if ((receiveNotificationColor || !someSel) && (version < 11 || !receiveSegmentOptions)) {
 | 
			
		||||
      // primary color, only apply white if intented (version > 0)
 | 
			
		||||
      // primary color, only apply white if intended (version > 0)
 | 
			
		||||
      strip.setColor(0, RGBW32(udpIn[3], udpIn[4], udpIn[5], (version > 0) ? udpIn[10] : 0));
 | 
			
		||||
      if (version > 1) {
 | 
			
		||||
        strip.setColor(1, RGBW32(udpIn[12], udpIn[13], udpIn[14], udpIn[15])); // secondary color
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,7 +19,7 @@ bool UsermodManager::handleButton(uint8_t b) {
 | 
			
		|||
bool UsermodManager::getUMData(um_data_t **data, uint8_t mod_id) {
 | 
			
		||||
  for (byte i = 0; i < numMods; i++) {
 | 
			
		||||
    if (mod_id > 0 && ums[i]->getId() != mod_id) continue;  // only get data form requested usermod if provided
 | 
			
		||||
    if (ums[i]->getUMData(data)) return true;               // if usermod does provide data return immediately (only one usermod can povide data at one time)
 | 
			
		||||
    if (ums[i]->getUMData(data)) return true;               // if usermod does provide data return immediately (only one usermod can provide data at one time)
 | 
			
		||||
  }
 | 
			
		||||
  return false;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -150,7 +150,7 @@ bool oappend(const char* txt)
 | 
			
		|||
  uint16_t len = strlen(txt);
 | 
			
		||||
  if (olen + len >= SETTINGS_STACK_BUF_SIZE) {
 | 
			
		||||
#ifdef WLED_DEBUG
 | 
			
		||||
    DEBUG_PRINT(F("oappend() buffer overflow. Cannnot append "));
 | 
			
		||||
    DEBUG_PRINT(F("oappend() buffer overflow. Cannot append "));
 | 
			
		||||
    DEBUG_PRINT(len); DEBUG_PRINT(F(" bytes \t\""));
 | 
			
		||||
    DEBUG_PRINT(txt); DEBUG_PRINTLN(F("\""));
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -232,7 +232,7 @@ void releaseJSONBufferLock()
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
// extracts effect mode (or palette) name from names serialized string
 | 
			
		||||
// caller must provide large enough buffer for name (incluing SR extensions)!
 | 
			
		||||
// caller must provide large enough buffer for name (including SR extensions)!
 | 
			
		||||
uint8_t extractModeName(uint8_t mode, const char *src, char *dest, uint8_t maxLen)
 | 
			
		||||
{
 | 
			
		||||
  if (src == JSON_mode_names || src == nullptr) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -152,7 +152,7 @@
 | 
			
		|||
// ESP32-WROVER features SPI RAM (aka PSRAM) which can be allocated using ps_malloc()
 | 
			
		||||
// we can create custom PSRAMDynamicJsonDocument to use such feature (replacing DynamicJsonDocument)
 | 
			
		||||
// The following is a construct to enable code to compile without it.
 | 
			
		||||
// There is a code thet will still not use PSRAM though:
 | 
			
		||||
// There is a code that will still not use PSRAM though:
 | 
			
		||||
//    AsyncJsonResponse is a derived class that implements DynamicJsonDocument (AsyncJson-v6.h)
 | 
			
		||||
#if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) && defined(WLED_USE_PSRAM)
 | 
			
		||||
struct PSRAM_Allocator {
 | 
			
		||||
| 
						 | 
				
			
			@ -412,7 +412,7 @@ WLED_GLOBAL bool arlsForceMaxBri _INIT(false);                    // enable to f
 | 
			
		|||
 #endif
 | 
			
		||||
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 e131Universe _INIT(1);                       // settings for E1.31 (sACN) protocol (only DMX_MODE_MULTIPLE_* can span over consecutive universes)
 | 
			
		||||
WLED_GLOBAL uint16_t e131Port _INIT(5568);                        // DMX in port. E1.31 default is 5568, Art-Net is 6454
 | 
			
		||||
WLED_GLOBAL byte e131Priority _INIT(0);                           // E1.31 port priority (if != 0 priority handling is active)
 | 
			
		||||
WLED_GLOBAL E131Priority highPriority _INIT(3);                   // E1.31 highest priority tracking, init = timeout in seconds
 | 
			
		||||
| 
						 | 
				
			
			@ -548,7 +548,7 @@ WLED_GLOBAL byte colNlT[] _INIT_N(({ 0, 0, 0, 0 }));        // current nightligh
 | 
			
		|||
WLED_GLOBAL unsigned long lastOnTime _INIT(0);
 | 
			
		||||
WLED_GLOBAL bool offMode             _INIT(!turnOnAtBoot);
 | 
			
		||||
WLED_GLOBAL byte bri                 _INIT(briS);          // global brightness (set)
 | 
			
		||||
WLED_GLOBAL byte briOld              _INIT(0);             // global brightnes while in transition loop (previous iteration)
 | 
			
		||||
WLED_GLOBAL byte briOld              _INIT(0);             // global brightness while in transition loop (previous iteration)
 | 
			
		||||
WLED_GLOBAL byte briT                _INIT(0);             // global brightness during transition
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,7 +30,7 @@ void wsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventTyp
 | 
			
		|||
      {
 | 
			
		||||
        if (len > 0 && len < 10 && data[0] == 'p') {
 | 
			
		||||
          // application layer ping/pong heartbeat.
 | 
			
		||||
          // client-side socket layer ping packets are unresponded (investigate)
 | 
			
		||||
          // client-side socket layer ping packets are unanswered (investigate)
 | 
			
		||||
          client->text(F("pong"));
 | 
			
		||||
          return;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue