From 656509c74d29d4c262c864530166a49c8e267bc2 Mon Sep 17 00:00:00 2001 From: samuelbles07 Date: Thu, 27 Mar 2025 14:34:26 +0700 Subject: [PATCH] resize measurement cycle queue if already more than reserved --- examples/OneOpenAir/OneOpenAir.ino | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index 70ee0b4..2910869 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -76,6 +76,7 @@ CC BY-SA 4.0 Attribution-ShareAlike 4.0 International License #define FIRMWARE_CHECK_FOR_UPDATE_MS (60 * 60 * 1000) /** ms */ #define MAXIMUM_MEASUREMENT_CYCLE_QUEUE 80 +#define RESERVED_MEASUREMENT_CYCLE_CAPACITY 10 /** I2C define */ #define I2C_SDA_PIN 7 @@ -270,7 +271,7 @@ void setup() { measurementSchedule.update(); // Queue now only applied for cellular // Allocate queue memory to avoid always reallocation - measurementCycleQueue.reserve(10); + measurementCycleQueue.reserve(RESERVED_MEASUREMENT_CYCLE_CAPACITY); // Initialize mutex to access mesurementCycleQueue mutexMeasurementCycleQueue = xSemaphoreCreateMutex(); } @@ -1351,6 +1352,11 @@ void postUsingCellular() { xSemaphoreTake(mutexMeasurementCycleQueue, portMAX_DELAY); measurementCycleQueue.erase(measurementCycleQueue.begin(), measurementCycleQueue.begin() + queueSize); + + if (measurementCycleQueue.capacity() > RESERVED_MEASUREMENT_CYCLE_CAPACITY) { + Serial.println("measurementCycleQueue capacity more than reserved space, resizing.."); + measurementCycleQueue.resize(RESERVED_MEASUREMENT_CYCLE_CAPACITY); + } xSemaphoreGive(mutexMeasurementCycleQueue); }