cycle effect now tracks the heap leakage of the running effects. Cause somewhere's a memory leak leading to restarts of the ESP every about 2 days...
This commit is contained in:
parent
97dd6de280
commit
2b7033b685
@ -8,6 +8,7 @@ private:
|
|||||||
Effect* effect = NULL;
|
Effect* effect = NULL;
|
||||||
uint16_t effect_id = -1;
|
uint16_t effect_id = -1;
|
||||||
unsigned long effectSince = 0;
|
unsigned long effectSince = 0;
|
||||||
|
uint16_t _heap_free = 0;
|
||||||
uint8_t _effects_count;
|
uint8_t _effects_count;
|
||||||
public:
|
public:
|
||||||
CycleEffect();
|
CycleEffect();
|
||||||
|
@ -29,16 +29,26 @@ void CycleEffect::changeEffect() {
|
|||||||
|
|
||||||
if (effect) delete effect;
|
if (effect) delete effect;
|
||||||
|
|
||||||
|
int16_t diff;
|
||||||
|
uint16_t old_heap = _heap_free;
|
||||||
|
_heap_free = ESP.getFreeHeap();
|
||||||
|
if (old_heap) {
|
||||||
|
// diff positive = More heap used (baad)
|
||||||
|
// diff negative = Less heap used (good-ish)
|
||||||
|
diff = old_heap - _heap_free;
|
||||||
|
LOGln("CycleEffect * Heap usage: #%d,%d,%+d", effect_id, _heap_free, diff);
|
||||||
|
}
|
||||||
|
|
||||||
delay(25);
|
delay(25);
|
||||||
LOGln("CycleEffect * Searching for new effect #%d", new_id);
|
LOGln("CycleEffect * Searching for new effect #%d", new_id);
|
||||||
|
uint8_t count = 0;
|
||||||
for (uint8_t i=0; i<effects_size; i++) {
|
for (uint8_t i=0; i<effects_size; i++) {
|
||||||
if (effects[i].use_in_cycle) {
|
if (effects[i].use_in_cycle) {
|
||||||
if (new_id == 0) {
|
if (count == new_id) {
|
||||||
effect = effects[i].create();
|
effect = effects[i].create();
|
||||||
break;
|
break;
|
||||||
} else {
|
|
||||||
new_id--;
|
|
||||||
}
|
}
|
||||||
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (effect) {
|
if (effect) {
|
||||||
|
Loading…
Reference in New Issue
Block a user