From b5760eb314ae390cbe77f4bbfa3c28ec390d6638 Mon Sep 17 00:00:00 2001 From: Yurii Date: Sun, 12 Nov 2023 20:54:02 +0300 Subject: [PATCH] fixed heap size fixed core numbers for esp32 tasks compatible with lolin_c3_mini delete task main loop() for esp32 --- platformio.ini | 25 ++++++++++++++++++------- src/MainTask.h | 27 +++++++++++++++++++++------ src/MqttTask.h | 11 ++++++++--- src/OpenThermTask.h | 11 ++++++++--- src/RegulatorTask.h | 13 ++++++++----- src/SensorsTask.h | 8 ++++---- src/WifiManagerTask.h | 10 ++++++++-- src/defines.h | 4 ---- src/main.cpp | 6 +++++- 9 files changed, 80 insertions(+), 35 deletions(-) diff --git a/platformio.ini b/platformio.ini index a2ddfc7..ce6b58b 100644 --- a/platformio.ini +++ b/platformio.ini @@ -35,22 +35,18 @@ lib_deps = lib_ignore = extra_scripts = post:tools/build.py -build_flags = - ${env.build_flags} - -D RAM_SIZE=81920 +build_flags = ${env.build_flags} [esp32_defaults] platform = espressif32 lib_deps = ${env.lib_deps} - laxilef/ESP32Scheduler@^1.0 + laxilef/ESP32Scheduler@^1.0.0 lib_ignore = extra_scripts = post:tools/esp32.py post:tools/build.py -build_flags = - ${env.build_flags} - -D RAM_SIZE=327680 +build_flags = ${env.build_flags} ; Boards @@ -129,6 +125,21 @@ build_flags = -D LED_STATUS_PIN=11 -D LED_OT_RX_PIN=10 +[env:c3_mini] +platform = ${esp32_defaults.platform} +board = lolin_c3_mini +lib_deps = ${esp32_defaults.lib_deps} +lib_ignore = ${esp32_defaults.lib_ignore} +extra_scripts = ${esp32_defaults.extra_scripts} +build_flags = + -D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH + -D OT_IN_PIN_DEFAULT=8 + -D OT_OUT_PIN_DEFAULT=10 + -D SENSOR_OUTDOOR_PIN_DEFAULT=0 + -D SENSOR_INDOOR_PIN_DEFAULT=1 + -D LED_STATUS_PIN=4 + -D LED_OT_RX_PIN=5 + [env:nodemcu_32s] platform = ${esp32_defaults.platform} board = nodemcu-32s diff --git a/src/MainTask.h b/src/MainTask.h index ed92e95..79c8edb 100644 --- a/src/MainTask.h +++ b/src/MainTask.h @@ -7,22 +7,37 @@ public: MainTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {} protected: - const char* taskName = "Main task"; - const int taskCore = 2; - unsigned long lastHeapInfo = 0; unsigned long firstFailConnect = 0; - unsigned int minFreeHeapSize = RAM_SIZE; + unsigned int heapSize = 0; + unsigned int minFreeHeapSize = 0; + + const char* getTaskName() { + return "Main"; + } + + int getTaskCore() { + return 1; + } void setup() { pinMode(LED_STATUS_PIN, OUTPUT); + + #if defined(ESP32) + heapSize = ESP.getHeapSize(); + #elif defined(ESP8266) + heapSize = 81920; + #elif + heapSize = 99999; + #endif + minFreeHeapSize = heapSize; } void loop() { if (eeSettings.tick()) { INFO("Settings updated (EEPROM)"); } - + if (vars.parameters.restartAfterTime > 0 && millis() - vars.parameters.restartSignalTime > vars.parameters.restartAfterTime) { vars.parameters.restartAfterTime = 0; @@ -88,7 +103,7 @@ protected: } if (millis() - lastHeapInfo > 10000 || minFreeHeapSizeDiff > 0) { - DEBUG_F("Free heap size: %u of %u bytes, min: %u bytes (diff: %u bytes)\n", freeHeapSize, RAM_SIZE, minFreeHeapSize, minFreeHeapSizeDiff); + DEBUG_F("Free heap size: %u of %u bytes, min: %u bytes (diff: %u bytes)\n", freeHeapSize, heapSize, minFreeHeapSize, minFreeHeapSizeDiff); lastHeapInfo = millis(); } } diff --git a/src/MqttTask.h b/src/MqttTask.h index e4d36f4..e9bfb50 100644 --- a/src/MqttTask.h +++ b/src/MqttTask.h @@ -12,12 +12,17 @@ public: MqttTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {} protected: - const char* taskName = "Mqtt task"; - const int taskCore = 1; - unsigned long lastReconnectAttempt = 0; unsigned long firstFailConnect = 0; + const char* getTaskName() { + return "Mqtt"; + } + + int getTaskCore() { + return 0; + } + void setup() { DEBUG("[MQTT] Started"); diff --git a/src/OpenThermTask.h b/src/OpenThermTask.h index 4e1ac5b..1756614 100644 --- a/src/OpenThermTask.h +++ b/src/OpenThermTask.h @@ -12,8 +12,13 @@ public: } protected: - const char* taskName = "OpenTherm task"; - const int taskCore = 2; + const char* getTaskName() { + return "OpenTherm"; + } + + int getTaskCore() { + return 1; + } void setup() { vars.parameters.heatingMinTemp = settings.heating.minTemp; @@ -27,7 +32,7 @@ protected: ot->begin(OpenThermTask::handleInterrupt, this->responseCallback); ot->setYieldCallback([](void* self) { - static_cast(self)->yield(); + static_cast(self)->delay(10); }, this); #ifdef LED_OT_RX_PIN diff --git a/src/RegulatorTask.h b/src/RegulatorTask.h index b381c02..1a7a864 100644 --- a/src/RegulatorTask.h +++ b/src/RegulatorTask.h @@ -11,9 +11,6 @@ public: RegulatorTask(bool _enabled = false, unsigned long _interval = 0) : LeanTask(_enabled, _interval) {} protected: - const char* taskName = "Regulator task"; - const int taskCore = 2; - bool tunerInit = false; byte tunerState = 0; byte tunerRegulator = 0; @@ -21,8 +18,14 @@ protected: float prevEtResult = 0; float prevPidResult = 0; - - void setup() {} + const char* getTaskName() { + return "Regulator"; + } + + int getTaskCore() { + return 1; + } + void loop() { byte newTemp = vars.parameters.heatingSetpoint; diff --git a/src/SensorsTask.h b/src/SensorsTask.h index 93e283f..f2a35a8 100644 --- a/src/SensorsTask.h +++ b/src/SensorsTask.h @@ -6,9 +6,6 @@ public: SensorsTask(bool _enabled = false, unsigned long _interval = 0) : LeanTask(_enabled, _interval) {} protected: - const char* taskName = "Sensors task"; - const int taskCore = 2; - OneWire* oneWireOutdoorSensor; OneWire* oneWireIndoorSensor; @@ -25,7 +22,10 @@ protected: bool emptyIndoorTemp = true; - void setup() {} + const char* getTaskName() { + return "Sensors"; + } + void loop() { if (settings.sensors.outdoor.type == 2) { outdoorTemperatureSensor(); diff --git a/src/WifiManagerTask.h b/src/WifiManagerTask.h index a7e9aba..37109ac 100644 --- a/src/WifiManagerTask.h +++ b/src/WifiManagerTask.h @@ -27,11 +27,17 @@ public: WifiManagerTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {} protected: - const char* taskName = "WifiManager"; - const int taskCore = 1; bool connected = false; unsigned long lastArpGratuitous = 0; + const char* getTaskName() { + return "WifiManager"; + } + + int getTaskCore() { + return 0; + } + void setup() { wm.setDebugOutput(settings.debug); diff --git a/src/defines.h b/src/defines.h index a2f3ea1..21a6d4d 100644 --- a/src/defines.h +++ b/src/defines.h @@ -17,10 +17,6 @@ -#ifndef RAM_SIZE - #define RAM_SIZE 999999 -#endif - #ifndef OT_IN_PIN_DEFAULT #define OT_IN_PIN_DEFAULT 0 #endif diff --git a/src/main.cpp b/src/main.cpp index 90dabec..9907b69 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -81,4 +81,8 @@ void setup() { Scheduler.begin(); } -void loop() {} +void loop() { + #if defined(ESP32) + vTaskDelete(NULL); + #endif +}