mirror of
https://github.com/rstrouse/ESPSomfy-RTS.git
synced 2026-02-17 12:12:11 +01:00
Reduce heap emits for interface sockets
This commit is contained in:
parent
2b59f330a9
commit
9205723125
3 changed files with 34 additions and 7 deletions
39
Network.cpp
39
Network.cpp
|
|
@ -18,6 +18,8 @@ extern rebootDelay_t rebootDelay;
|
||||||
extern Network net;
|
extern Network net;
|
||||||
extern SomfyShadeController somfy;
|
extern SomfyShadeController somfy;
|
||||||
|
|
||||||
|
static unsigned long _lastHeapEmit = 0;
|
||||||
|
|
||||||
static bool _apScanning = false;
|
static bool _apScanning = false;
|
||||||
static uint32_t _lastMaxHeap = 0;
|
static uint32_t _lastMaxHeap = 0;
|
||||||
static uint32_t _lastHeap = 0;
|
static uint32_t _lastHeap = 0;
|
||||||
|
|
@ -605,16 +607,41 @@ void Network::networkEvent(WiFiEvent_t event) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Network::emitHeap(uint8_t num) {
|
void Network::emitHeap(uint8_t num) {
|
||||||
if(num != 255 || this->needsBroadcast || (ESP.getMaxAllocHeap() != _lastMaxHeap || ESP.getFreeHeap() != _lastHeap)) {
|
bool bEmit = false;
|
||||||
_lastMaxHeap = ESP.getMaxAllocHeap();
|
bool bTimeEmit = millis() - _lastHeapEmit > 15000;
|
||||||
_lastHeap = ESP.getFreeHeap();
|
bool bRoomEmit = false;
|
||||||
|
bool bValEmit = false;
|
||||||
|
if(num != 255 || this->needsBroadcast) bEmit = true;
|
||||||
|
if(millis() - _lastHeapEmit > 15000) bTimeEmit = true;
|
||||||
|
uint32_t freeHeap = ESP.getFreeHeap();
|
||||||
|
uint32_t maxHeap = ESP.getMaxAllocHeap();
|
||||||
|
uint32_t minHeap = ESP.getMinFreeHeap();
|
||||||
|
if(abs((int)(freeHeap - _lastHeap)) > 1500) bValEmit = true;
|
||||||
|
if(abs((int)(maxHeap - _lastMaxHeap)) > 1500) bValEmit = true;
|
||||||
|
bRoomEmit = sockEmit.activeClients(0) > 0;
|
||||||
|
if(bValEmit) bTimeEmit = millis() - _lastHeapEmit > 7000;
|
||||||
|
if(bEmit || bTimeEmit || bRoomEmit || bValEmit) {
|
||||||
JsonSockEvent *json = sockEmit.beginEmit("memStatus");
|
JsonSockEvent *json = sockEmit.beginEmit("memStatus");
|
||||||
json->beginObject();
|
json->beginObject();
|
||||||
json->addElem("max", _lastMaxHeap);
|
json->addElem("max", maxHeap);
|
||||||
json->addElem("free", _lastHeap);
|
json->addElem("free", freeHeap);
|
||||||
json->addElem("min", ESP.getMinFreeHeap());
|
json->addElem("min", minHeap);
|
||||||
json->addElem("total", ESP.getHeapSize());
|
json->addElem("total", ESP.getHeapSize());
|
||||||
json->endObject();
|
json->endObject();
|
||||||
|
if(num == 255 && bTimeEmit && bValEmit) {
|
||||||
sockEmit.endEmit(num);
|
sockEmit.endEmit(num);
|
||||||
|
_lastHeapEmit = millis();
|
||||||
|
_lastHeap = freeHeap;
|
||||||
|
_lastMaxHeap = maxHeap;
|
||||||
|
//Serial.printf("BROAD HEAP: Emit:%d TimeEmit:%d ValEmit:%d\n", bEmit, bTimeEmit, bValEmit);
|
||||||
|
}
|
||||||
|
else if(num != 255) {
|
||||||
|
sockEmit.endEmit(num);
|
||||||
|
//Serial.printf("TARGET HEAP %d: Emit:%d TimeEmit:%d ValEmit:%d\n", num, bEmit, bTimeEmit, bValEmit);
|
||||||
|
}
|
||||||
|
else if(bRoomEmit) {
|
||||||
|
sockEmit.endEmitRoom(0);
|
||||||
|
//Serial.printf("ROOM HEAP: Emit:%d TimeEmit:%d ValEmit:%d\n", bEmit, bTimeEmit, bValEmit);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue