[SYS] Optimize memory usage (#1632)

Add MQTT BLEtask stack follow up and reduce allocated stack
Other memory usage optimizations
This commit is contained in:
Florian authored and GitHub committed 2023-05-02 15:22:57 -05:00
1 parent b03e18260f
commit 9bbe909661
3 files changed
+15 -14

No files matched your search

+2 -2
View File
@@ -277,7 +277,7 @@ void ActuatorTrigger() {
PowerIndicatorOFF(); PowerIndicatorOFF();
} }
// Send the state of the switch to the broker so as to update the status // Send the state of the switch to the broker so as to update the status
StaticJsonDocument<JSON_MSG_BUFFER> jsonBuffer; StaticJsonDocument<64> jsonBuffer;
JsonObject ONOFFdata = jsonBuffer.to<JsonObject>(); JsonObject ONOFFdata = jsonBuffer.to<JsonObject>();
ONOFFdata["cmd"] = (int)level; ONOFFdata["cmd"] = (int)level;
# ifdef ESP32 # ifdef ESP32
@@ -292,7 +292,7 @@ void ActuatorTrigger() {
void stateONOFFMeasures() { void stateONOFFMeasures() {
//Publish actuator state //Publish actuator state
StaticJsonDocument<JSON_MSG_BUFFER> jsonBuffer; StaticJsonDocument<64> jsonBuffer;
JsonObject ONOFFdata = jsonBuffer.to<JsonObject>(); JsonObject ONOFFdata = jsonBuffer.to<JsonObject>();
ONOFFdata["cmd"] = (int)digitalRead(ACTUATOR_ONOFF_GPIO); ONOFFdata["cmd"] = (int)digitalRead(ACTUATOR_ONOFF_GPIO);
pub(subjectGTWONOFFtoMQTT, ONOFFdata); pub(subjectGTWONOFFtoMQTT, ONOFFdata);
+9 -8
View File
@@ -59,6 +59,9 @@ BTConfig_s BTConfig;
TheengsDecoder decoder; TheengsDecoder decoder;
static TaskHandle_t xCoreTaskHandle;
static TaskHandle_t xProcBLETaskHandle;
struct decompose { struct decompose {
int start; int start;
int len; int len;
@@ -147,6 +150,7 @@ String stateBTMeasures(bool start) {
jo["btqsum"] = btQueueLengthSum; jo["btqsum"] = btQueueLengthSum;
jo["btqsnd"] = btQueueLengthCount; jo["btqsnd"] = btQueueLengthCount;
jo["btqavg"] = (btQueueLengthCount > 0 ? btQueueLengthSum / (float)btQueueLengthCount : 0); jo["btqavg"] = (btQueueLengthCount > 0 ? btQueueLengthSum / (float)btQueueLengthCount : 0);
jo["bletaskstack"] = uxTaskGetStackHighWaterMark(xProcBLETaskHandle);
if (start) { if (start) {
Log.notice(F("BT sys: ")); Log.notice(F("BT sys: "));
@@ -348,9 +352,6 @@ public:
void PublishDeviceData(JsonObject& BLEdata, bool processBLEData = true); void PublishDeviceData(JsonObject& BLEdata, bool processBLEData = true);
static TaskHandle_t xCoreTaskHandle;
static TaskHandle_t xProcBLETaskHandle;
atomic_int forceBTScan; atomic_int forceBTScan;
JsonBundle jsonBTBufferQueue[BTQueueSize]; JsonBundle jsonBTBufferQueue[BTQueueSize];
@@ -646,7 +647,7 @@ std::string convertServiceData(std::string deviceServiceData) {
char spr[2 * serviceDataLength + 1]; char spr[2 * serviceDataLength + 1];
for (int i = 0; i < serviceDataLength; i++) sprintf(spr + 2 * i, "%.2x", (unsigned char)deviceServiceData[i]); for (int i = 0; i < serviceDataLength; i++) sprintf(spr + 2 * i, "%.2x", (unsigned char)deviceServiceData[i]);
spr[2 * serviceDataLength] = 0; spr[2 * serviceDataLength] = 0;
Log.trace("Converted service data (%d) to %s" CR, serviceDataLength, spr); Log.trace(F("Converted service data (%d) to %s" CR), serviceDataLength, spr);
return spr; return spr;
} }
@@ -969,7 +970,7 @@ void setupBT() {
xTaskCreatePinnedToCore( xTaskCreatePinnedToCore(
coreTask, /* Function to implement the task */ coreTask, /* Function to implement the task */
"coreTask", /* Name of the task */ "coreTask", /* Name of the task */
10000, /* Stack size in bytes */ 5120, /* Stack size in bytes */
NULL, /* Task input parameter */ NULL, /* Task input parameter */
1, /* Priority of the task */ 1, /* Priority of the task */
&xCoreTaskHandle, /* Task handle. */ &xCoreTaskHandle, /* Task handle. */
@@ -1043,9 +1044,9 @@ void launchBTDiscovery(bool overrideDiscovery) {
StaticJsonDocument<JSON_MSG_BUFFER> jsonBuffer; StaticJsonDocument<JSON_MSG_BUFFER> jsonBuffer;
deserializeJson(jsonBuffer, properties); deserializeJson(jsonBuffer, properties);
for (JsonPair prop : jsonBuffer["properties"].as<JsonObject>()) { for (JsonPair prop : jsonBuffer["properties"].as<JsonObject>()) {
Log.trace("Key: %s", prop.key().c_str()); Log.trace(F("Key: %s"), prop.key().c_str());
Log.trace("Unit: %s", prop.value()["unit"].as<const char*>()); Log.trace(F("Unit: %s"), prop.value()["unit"].as<const char*>());
Log.trace("Name: %s", prop.value()["name"].as<const char*>()); Log.trace(F("Name: %s"), prop.value()["name"].as<const char*>());
String entity_name = String(model_id.c_str()) + "-" + String(prop.key().c_str()); String entity_name = String(model_id.c_str()) + "-" + String(prop.key().c_str());
String unique_id = macWOdots + "-" + String(prop.key().c_str()); String unique_id = macWOdots + "-" + String(prop.key().c_str());
# if OpenHABDiscovery # if OpenHABDiscovery
+4 -4
View File
@@ -13,16 +13,16 @@ void errorDecoder(SHTC3_Status_TypeDef message) // The errorDecoder function pri
{ {
switch (message) { switch (message) {
case SHTC3_Status_Nominal: case SHTC3_Status_Nominal:
Log.notice("Nominal"); Log.notice(F("Nominal"));
break; break;
case SHTC3_Status_Error: case SHTC3_Status_Error:
Log.error("Error"); Log.error(F("Error"));
break; break;
case SHTC3_Status_CRC_Fail: case SHTC3_Status_CRC_Fail:
Log.error("CRC Fail"); Log.error(F("CRC Fail"));
break; break;
default: default:
Log.error("Unknown return code"); Log.error(F("Unknown return code"));
break; break;
} }
} }