@@ -92,7 +92,8 @@ void notify(byte callMode, bool followUp)
9292void realtimeLock (uint32_t timeoutMs, byte md)
9393{
9494 if (!realtimeMode && !realtimeOverride){
95- for (uint16_t i = 0 ; i < ledCount; i++)
95+ uint16_t totalLen = strip.getLengthTotal ();
96+ for (uint16_t i = 0 ; i < totalLen; i++)
9697 {
9798 strip.setPixelColor (i,0 ,0 ,0 ,0 );
9899 }
@@ -168,10 +169,11 @@ void handleNotifications()
168169 realtimeLock (realtimeTimeoutMs, REALTIME_MODE_HYPERION);
169170 if (realtimeOverride) return ;
170171 uint16_t id = 0 ;
172+ uint16_t totalLen = strip.getLengthTotal ();
171173 for (uint16_t i = 0 ; i < packetSize -2 ; i += 3 )
172174 {
173175 setRealtimePixel (id, lbuf[i], lbuf[i+1 ], lbuf[i+2 ], 0 );
174- id++; if (id >= ledCount ) break ;
176+ id++; if (id >= totalLen ) break ;
175177 }
176178 strip.show ();
177179 return ;
@@ -339,9 +341,10 @@ void handleNotifications()
339341 byte numPackets = udpIn[5 ];
340342
341343 uint16_t id = (tpmPayloadFrameSize/3 )*(packetNum-1 ); // start LED
344+ uint16_t totalLen = strip.getLengthTotal ();
342345 for (uint16_t i = 6 ; i < tpmPayloadFrameSize + 4 ; i += 3 )
343346 {
344- if (id < ledCount )
347+ if (id < totalLen )
345348 {
346349 setRealtimePixel (id, udpIn[i], udpIn[i+1 ], udpIn[i+2 ], 0 );
347350 id++;
@@ -372,6 +375,7 @@ void handleNotifications()
372375 }
373376 if (realtimeOverride) return ;
374377
378+ uint16_t totalLen = strip.getLengthTotal ();
375379 if (udpIn[0 ] == 1 ) // warls
376380 {
377381 for (uint16_t i = 2 ; i < packetSize -3 ; i += 4 )
@@ -385,7 +389,7 @@ void handleNotifications()
385389 {
386390 setRealtimePixel (id, udpIn[i], udpIn[i+1 ], udpIn[i+2 ], 0 );
387391
388- id++; if (id >= ledCount ) break ;
392+ id++; if (id >= totalLen ) break ;
389393 }
390394 } else if (udpIn[0 ] == 3 ) // drgbw
391395 {
@@ -394,14 +398,14 @@ void handleNotifications()
394398 {
395399 setRealtimePixel (id, udpIn[i], udpIn[i+1 ], udpIn[i+2 ], udpIn[i+3 ]);
396400
397- id++; if (id >= ledCount ) break ;
401+ id++; if (id >= totalLen ) break ;
398402 }
399403 } else if (udpIn[0 ] == 4 ) // dnrgb
400404 {
401405 uint16_t id = ((udpIn[3 ] << 0 ) & 0xFF ) + ((udpIn[2 ] << 8 ) & 0xFF00 );
402406 for (uint16_t i = 4 ; i < packetSize -2 ; i += 3 )
403407 {
404- if (id >= ledCount ) break ;
408+ if (id >= totalLen ) break ;
405409 setRealtimePixel (id, udpIn[i], udpIn[i+1 ], udpIn[i+2 ], 0 );
406410 id++;
407411 }
@@ -410,7 +414,7 @@ void handleNotifications()
410414 uint16_t id = ((udpIn[3 ] << 0 ) & 0xFF ) + ((udpIn[2 ] << 8 ) & 0xFF00 );
411415 for (uint16_t i = 4 ; i < packetSize -2 ; i += 4 )
412416 {
413- if (id >= ledCount ) break ;
417+ if (id >= totalLen ) break ;
414418 setRealtimePixel (id, udpIn[i], udpIn[i+1 ], udpIn[i+2 ], udpIn[i+3 ]);
415419 id++;
416420 }
@@ -438,7 +442,7 @@ void handleNotifications()
438442void setRealtimePixel (uint16_t i, byte r, byte g, byte b, byte w)
439443{
440444 uint16_t pix = i + arlsOffset;
441- if (pix < ledCount )
445+ if (pix < strip. getLengthTotal () )
442446 {
443447 if (!arlsDisableGammaCorrection && strip.gammaCorrectCol )
444448 {
0 commit comments