mirror of
https://github.com/daveallie/crosspoint-reader.git
synced 2025-12-19 07:37:41 +03:00
Memory cleanup
This commit is contained in:
parent
b46f872e37
commit
b87a8c5dd5
@ -68,8 +68,11 @@ void CrossPointWebServer::begin() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Serial.printf("[%lu] [WEB] [MEM] Free heap before begin: %d bytes\n", millis(), ESP.getFreeHeap());
|
||||||
|
|
||||||
Serial.printf("[%lu] [WEB] Creating web server on port %d...\n", millis(), port);
|
Serial.printf("[%lu] [WEB] Creating web server on port %d...\n", millis(), port);
|
||||||
server = new WebServer(port);
|
server = new WebServer(port);
|
||||||
|
Serial.printf("[%lu] [WEB] [MEM] Free heap after WebServer allocation: %d bytes\n", millis(), ESP.getFreeHeap());
|
||||||
|
|
||||||
if (!server) {
|
if (!server) {
|
||||||
Serial.printf("[%lu] [WEB] Failed to create WebServer!\n", millis());
|
Serial.printf("[%lu] [WEB] Failed to create WebServer!\n", millis());
|
||||||
@ -92,12 +95,14 @@ void CrossPointWebServer::begin() {
|
|||||||
server->on("/delete", HTTP_POST, [this]() { handleDelete(); });
|
server->on("/delete", HTTP_POST, [this]() { handleDelete(); });
|
||||||
|
|
||||||
server->onNotFound([this]() { handleNotFound(); });
|
server->onNotFound([this]() { handleNotFound(); });
|
||||||
|
Serial.printf("[%lu] [WEB] [MEM] Free heap after route setup: %d bytes\n", millis(), ESP.getFreeHeap());
|
||||||
|
|
||||||
server->begin();
|
server->begin();
|
||||||
running = true;
|
running = true;
|
||||||
|
|
||||||
Serial.printf("[%lu] [WEB] Web server started on port %d\n", millis(), port);
|
Serial.printf("[%lu] [WEB] Web server started on port %d\n", millis(), port);
|
||||||
Serial.printf("[%lu] [WEB] Access at http://%s/\n", millis(), WiFi.localIP().toString().c_str());
|
Serial.printf("[%lu] [WEB] Access at http://%s/\n", millis(), WiFi.localIP().toString().c_str());
|
||||||
|
Serial.printf("[%lu] [WEB] [MEM] Free heap after server.begin(): %d bytes\n", millis(), ESP.getFreeHeap());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CrossPointWebServer::stop() {
|
void CrossPointWebServer::stop() {
|
||||||
@ -105,12 +110,21 @@ void CrossPointWebServer::stop() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Serial.printf("[%lu] [WEB] [MEM] Free heap before stop: %d bytes\n", millis(), ESP.getFreeHeap());
|
||||||
|
|
||||||
server->stop();
|
server->stop();
|
||||||
|
Serial.printf("[%lu] [WEB] [MEM] Free heap after server->stop(): %d bytes\n", millis(), ESP.getFreeHeap());
|
||||||
|
|
||||||
delete server;
|
delete server;
|
||||||
server = nullptr;
|
server = nullptr;
|
||||||
running = false;
|
running = false;
|
||||||
|
|
||||||
Serial.printf("[%lu] [WEB] Web server stopped\n", millis());
|
Serial.printf("[%lu] [WEB] Web server stopped\n", millis());
|
||||||
|
Serial.printf("[%lu] [WEB] [MEM] Free heap after delete server: %d bytes\n", millis(), ESP.getFreeHeap());
|
||||||
|
|
||||||
|
// Note: Static upload variables (uploadFileName, uploadPath, uploadError) are declared
|
||||||
|
// later in the file and will be cleared when they go out of scope or on next upload
|
||||||
|
Serial.printf("[%lu] [WEB] [MEM] Free heap final: %d bytes\n", millis(), ESP.getFreeHeap());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CrossPointWebServer::handleClient() {
|
void CrossPointWebServer::handleClient() {
|
||||||
|
|||||||
@ -48,24 +48,37 @@ void WifiScreen::onEnter() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void WifiScreen::onExit() {
|
void WifiScreen::onExit() {
|
||||||
|
Serial.printf("[%lu] [WIFI] [MEM] Free heap at onExit start: %d bytes\n", millis(), ESP.getFreeHeap());
|
||||||
|
|
||||||
// Stop any ongoing WiFi scan
|
// Stop any ongoing WiFi scan
|
||||||
WiFi.scanDelete();
|
WiFi.scanDelete();
|
||||||
|
Serial.printf("[%lu] [WIFI] [MEM] Free heap after scanDelete: %d bytes\n", millis(), ESP.getFreeHeap());
|
||||||
|
|
||||||
// Stop the web server to free memory
|
// Stop the web server to free memory
|
||||||
crossPointWebServer.stop();
|
crossPointWebServer.stop();
|
||||||
|
Serial.printf("[%lu] [WIFI] [MEM] Free heap after webserver stop: %d bytes\n", millis(), ESP.getFreeHeap());
|
||||||
|
|
||||||
// Disconnect WiFi to free memory
|
// Disconnect WiFi to free memory
|
||||||
WiFi.disconnect(true);
|
WiFi.disconnect(true);
|
||||||
WiFi.mode(WIFI_OFF);
|
WiFi.mode(WIFI_OFF);
|
||||||
|
Serial.printf("[%lu] [WIFI] [MEM] Free heap after WiFi disconnect: %d bytes\n", millis(), ESP.getFreeHeap());
|
||||||
|
|
||||||
// Wait until not rendering to delete task to avoid killing mid-instruction to EPD
|
// Delete the display task
|
||||||
xSemaphoreTake(renderingMutex, portMAX_DELAY);
|
|
||||||
if (displayTaskHandle) {
|
if (displayTaskHandle) {
|
||||||
vTaskDelete(displayTaskHandle);
|
vTaskDelete(displayTaskHandle);
|
||||||
displayTaskHandle = nullptr;
|
displayTaskHandle = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Small delay to ensure task is fully deleted before cleaning up mutex
|
||||||
|
vTaskDelay(10 / portTICK_PERIOD_MS);
|
||||||
|
|
||||||
|
// Now safe to delete the mutex
|
||||||
|
if (renderingMutex) {
|
||||||
vSemaphoreDelete(renderingMutex);
|
vSemaphoreDelete(renderingMutex);
|
||||||
renderingMutex = nullptr;
|
renderingMutex = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.printf("[%lu] [WIFI] [MEM] Free heap at onExit end: %d bytes\n", millis(), ESP.getFreeHeap());
|
||||||
}
|
}
|
||||||
|
|
||||||
void WifiScreen::startWifiScan() {
|
void WifiScreen::startWifiScan() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user