From 13dd2231be138a35faf5f567e2261412f542f57b Mon Sep 17 00:00:00 2001 From: Matthias Prinke Date: Tue, 2 Jul 2024 12:35:06 +0200 Subject: [PATCH] Fixed handling of empty list of IDs / 0x00000000 in Preferences --- library.properties | 2 +- package.json | 2 +- src/WeatherSensor.h | 4 ++-- src/WeatherSensorConfig.cpp | 43 +++++++++++++++++++++---------------- 4 files changed, 28 insertions(+), 23 deletions(-) diff --git a/library.properties b/library.properties index 9416110..8088c95 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=BresserWeatherSensorReceiver -version=0.28.7 +version=0.28.8 author=Matthias Prinke maintainer=Matthias Prinke sentence=Bresser 5-in-1/6-in-1/7-in-1 868 MHz Weather Sensor Radio Receiver for Arduino based on CC1101, SX1276/RFM95W or SX1262. diff --git a/package.json b/package.json index 476ff95..14e0ed9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "BresserWeatherSensorReceiver", - "version": "0.28.7", + "version": "0.28.8", "description": "Bresser 5-in-1/6-in-1/7-in-1 868 MHz Weather Sensor Radio Receiver for Arduino based on CC1101, SX1276/RFM95W or SX1262", "main": "WeatherSensor.cpp", "frameworks": "arduino", diff --git a/src/WeatherSensor.h b/src/WeatherSensor.h index bf59785..7bb0610 100644 --- a/src/WeatherSensor.h +++ b/src/WeatherSensor.h @@ -412,7 +412,7 @@ class WeatherSensor { void setSensorsCfg(uint8_t max_sensors, uint8_t rx_flags, uint8_t en_decoders = 0xFF); /*! - * Get sensors include list from Preferences + * Get sensors include list (Preferences/defaults) * * \param payload buffer for storing sensor IDs * @@ -421,7 +421,7 @@ class WeatherSensor { uint8_t getSensorsInc(uint8_t *payload); /*! - * Get sensors exclude list from Preferences + * Get sensors exclude list (Preferences/defaults) * * \param payload buffer for storing sensor IDs * diff --git a/src/WeatherSensorConfig.cpp b/src/WeatherSensorConfig.cpp index 0a546be..b5551d1 100644 --- a/src/WeatherSensorConfig.cpp +++ b/src/WeatherSensorConfig.cpp @@ -39,6 +39,7 @@ // 20240513 Created from WeatherSensor.cpp // 20240608 Modified implementation of maximum number of sensors // 20240609 Fixed implementation of maximum number of sensors +// 20240702 Fixed handling of empty list of IDs / 0x00000000 in Preferences // // // ToDo: @@ -55,6 +56,7 @@ void WeatherSensor::initList(std::vector &list, const std::vector &list, const std::vector &list, const std::vector= 0; i--) + { + *payload++ = (id >> (i * 8)) & 0xFF; + } + } - return size; + return sensor_ids_inc.size() * 4; } // Set sensors exclude list in Preferences @@ -149,16 +152,18 @@ void WeatherSensor::setSensorsExc(uint8_t *buf, uint8_t size) } } -// Get sensors exclude list from Preferences +// Get sensors exclude list uint8_t WeatherSensor::getSensorsExc(uint8_t *payload) { - cfgPrefs.begin("BWS-CFG", false); - uint8_t size = cfgPrefs.getBytesLength("exc"); - cfgPrefs.getBytes("exc", payload, size); - cfgPrefs.end(); - log_d("size: %d", size); + for (const uint32_t &id : sensor_ids_exc) + { + for (int i = 3; i >= 0; i--) + { + *payload++ = (id >> (i * 8)) & 0xFF; + } + } - return size; + return sensor_ids_exc.size() * 4; } // Set sensor configuration and store in in Preferences