Skip to content

Commit 89c3360

Browse files
committed
SR_DEBUG shows stack high water marks
some debug support for showing free stack space.
1 parent a792431 commit 89c3360

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

usermods/audioreactive/audio_reactive.h

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,9 +449,9 @@ void FFTcode(void * parameter)
449449
}
450450

451451
#if defined(WLED_DEBUG) || defined(SR_DEBUG)|| defined(SR_STATS)
452+
// timing
452453
uint64_t start = esp_timer_get_time();
453454
bool haveDoneFFT = false; // indicates if second measurement (FFT time) is valid
454-
455455
static uint64_t lastCycleStart = 0;
456456
static uint64_t lastLastTime = 0;
457457
if ((lastCycleStart > 0) && (lastCycleStart < start)) { // filter out overflows
@@ -466,6 +466,14 @@ void FFTcode(void * parameter)
466466
if (audioSource) audioSource->getSamples(vReal, samplesFFT);
467467

468468
#if defined(WLED_DEBUG) || defined(SR_DEBUG)|| defined(SR_STATS)
469+
// debug info in case that stack usage changes
470+
static unsigned int minStackFree = UINT32_MAX;
471+
unsigned int stackFree = uxTaskGetStackHighWaterMark(NULL);
472+
if (minStackFree > stackFree) {
473+
minStackFree = stackFree;
474+
DEBUGSR_PRINTF("|| %-9s min free stack %d\n", pcTaskGetTaskName(NULL), minStackFree); //WLEDMM
475+
}
476+
// timing
469477
if (start < esp_timer_get_time()) { // filter out overflows
470478
uint64_t sampleTimeInMillis = (esp_timer_get_time() - start +5ULL) / 10ULL; // "+5" to ensure proper rounding
471479
sampleTime = (sampleTimeInMillis*3 + sampleTime*7)/10.0; // smooth
@@ -715,6 +723,7 @@ void FFTcode(void * parameter)
715723
postProcessFFTResults((fabsf(volumeSmth)>0.25f)? true : false , NUM_GEQ_CHANNELS); // this function modifies fftCalc, fftAvg and fftResult
716724

717725
#if defined(WLED_DEBUG) || defined(SR_DEBUG)|| defined(SR_STATS)
726+
// timing
718727
static uint64_t lastLastFFT = 0;
719728
if (haveDoneFFT && (start < esp_timer_get_time())) { // filter out overflows
720729
uint64_t fftTimeInMillis = ((esp_timer_get_time() - start) +5ULL) / 10ULL; // "+5" to ensure proper rounding
@@ -1758,6 +1767,10 @@ class AudioReactive : public Usermod {
17581767
DEBUGSR_PRINT(F("AR: init done, enabled = "));
17591768
DEBUGSR_PRINTLN(enabled ? F("true.") : F("false."));
17601769
USER_FLUSH();
1770+
1771+
#if defined(ARDUINO_ARCH_ESP32) && defined(SR_DEBUG)
1772+
DEBUGSR_PRINTF("|| %-9s min free stack %d\n", pcTaskGetTaskName(NULL), uxTaskGetStackHighWaterMark(NULL)); //WLEDMM
1773+
#endif
17611774
}
17621775

17631776

@@ -1788,6 +1801,10 @@ class AudioReactive : public Usermod {
17881801
DEBUGSR_PRINTLN(udpSyncConnected ? F("AR connected(): UDP: connected to WIFI.") : F("AR connected(): UDP is disconnected (Wifi)."));
17891802
}
17901803
}
1804+
1805+
#if defined(ARDUINO_ARCH_ESP32) && defined(SR_DEBUG)
1806+
DEBUGSR_PRINTF("|| %-9s min free stack %d\n", pcTaskGetTaskName(NULL), uxTaskGetStackHighWaterMark(NULL)); //WLEDMM
1807+
#endif
17911808
}
17921809

17931810

@@ -1844,6 +1861,15 @@ class AudioReactive : public Usermod {
18441861
#ifdef ARDUINO_ARCH_ESP32
18451862
if (!audioSource->isInitialized()) disableSoundProcessing = true; // no audio source
18461863

1864+
#ifdef SR_DEBUG
1865+
// debug info in case that task stack usage changes
1866+
static unsigned int minLoopStackFree = UINT32_MAX;
1867+
unsigned int stackFree = uxTaskGetStackHighWaterMark(NULL);
1868+
if (minLoopStackFree > stackFree) {
1869+
minLoopStackFree = stackFree;
1870+
DEBUGSR_PRINTF("|| %-9s min free stack %d\n", pcTaskGetTaskName(NULL), minLoopStackFree); //WLEDMM
1871+
}
1872+
#endif
18471873

18481874
// Only run the sampling code IF we're not in Receive mode or realtime mode
18491875
if (!(audioSyncEnabled & 0x02) && !disableSoundProcessing) {
@@ -2040,6 +2066,10 @@ class AudioReactive : public Usermod {
20402066
micDataReal = 0.0f; // just to be sure
20412067
if (enabled) disableSoundProcessing = false;
20422068
updateIsRunning = init;
2069+
2070+
#if defined(ARDUINO_ARCH_ESP32) && defined(SR_DEBUG)
2071+
DEBUGSR_PRINTF("|| %-9s min free stack %d\n", pcTaskGetTaskName(NULL), uxTaskGetStackHighWaterMark(NULL)); //WLEDMM
2072+
#endif
20432073
}
20442074

20452075
#else // reduced function for 8266

0 commit comments

Comments
 (0)