[SYS] Implement a central queue (#1767)

to avoid concurrency issues when modules or/and gateways want to publish data
This commit is contained in:
Florian authored and GitHub committed 2023-11-08 07:26:21 -06:00
1 parent ca9ef664ab
commit 029409c0c3
39 files changed
+491 -407

No files matched your search

+4 -3
View File
@@ -64,8 +64,8 @@ void MeasureADC() {
if (val >= persistedadc + ThresholdReadingADC || val <= persistedadc - ThresholdReadingADC || (MinTimeInSecBetweenPublishingADC > 0 && millis() - timeadcpub > (MinTimeInSecBetweenPublishingADC * 1000UL))) {
timeadcpub = millis();
Log.trace(F("Creating ADC buffer" CR));
StaticJsonDocument<JSON_MSG_BUFFER> jsonBuffer;
JsonObject ADCdata = jsonBuffer.to<JsonObject>();
StaticJsonDocument<JSON_MSG_BUFFER> ADCdataBuffer;
JsonObject ADCdata = ADCdataBuffer.to<JsonObject>();
ADCdata["adc"] = (int)val;
if (NumberOfReadingsADC > 1) {
ADCdata["adc_reads"] = NumberOfReadingsADC;
@@ -93,7 +93,8 @@ void MeasureADC() {
ADCdata["adc_sum"] = (int)sum_val;
ADCdata["mvolt_scaled"] = (int)voltage; // real scaled/calibrated value in mV
# endif
pub(ADCTOPIC, ADCdata);
ADCdata["origin"] = ADCTOPIC;
enqueueJsonObject(ADCdata);
persistedadc = val;
}
}