diff --git a/src/mbedos/test-bme688/source/bme688/BME688.cpp b/src/mbedos/test-bme688/source/bme688/BME688.cpp index 005a89a..b52f87c 100644 --- a/src/mbedos/test-bme688/source/bme688/BME688.cpp +++ b/src/mbedos/test-bme688/source/bme688/BME688.cpp @@ -346,8 +346,8 @@ BME688::ReturnCode BME688::SetBme68xConfigParallel( const bsec_bme_settings_t& b shared_heater_dur = BSEC_TOTAL_HEAT_DUR - (GetMeasurementDuration(BME68X_PARALLEL_MODE) / INT64_C(1000)); // set heater profile - status = SetHeaterProfile( (uint16_t*) bsec_bme_conf.heater_temperature_profile, - (uint16_t*) bsec_bme_conf.heater_duration_profile, + status = SetHeaterProfile( ArrayPointer((uint16_t*) bsec_bme_conf.heater_temperature_profile, sizeof(bsec_bme_conf.heater_temperature_profile)), + ArrayPointer((uint16_t*) bsec_bme_conf.heater_duration_profile, sizeof(bsec_bme_conf.heater_duration_profile)), shared_heater_dur, bsec_bme_conf.heater_profile_len ); if( status != ReturnCode::kOk ) @@ -412,16 +412,16 @@ BME688::ReturnCode BME688::SetHeaterProfile( const uint16_t temp, /** * @brief Function to set the heater profile for Parallel mode */ -BME688::ReturnCode BME688::SetHeaterProfile( uint16_t* const temp, - uint16_t* const mul, +BME688::ReturnCode BME688::SetHeaterProfile( const ArrayPointer& temp, + const ArrayPointer& mul, const uint16_t shared_heater_dur, const uint8_t profile_len ) { bme68x_heatr_conf heater_conf { .enable = BME68X_ENABLE, - .heatr_temp_prof = temp, - .heatr_dur_prof = mul, + .heatr_temp_prof = temp.ptr, + .heatr_dur_prof = mul.ptr, .profile_len = profile_len, .shared_heatr_dur = shared_heater_dur }; diff --git a/src/mbedos/test-bme688/source/bme688/BME688.h b/src/mbedos/test-bme688/source/bme688/BME688.h index 896201c..0f3e114 100644 --- a/src/mbedos/test-bme688/source/bme688/BME688.h +++ b/src/mbedos/test-bme688/source/bme688/BME688.h @@ -6,6 +6,7 @@ #include "bsec_interface.h" #include "bsec_datatypes.h" #include "bme68x.h" +#include "ArrayPointer.h" #define BME688_CHIP_ID_LOCATION 0xD0 #define BSEC_REQUESTED_VIRTUAL_SENSORS_NUMBER 4 @@ -99,8 +100,8 @@ class BME688{ ReturnCode SetOperationMode(const uint8_t op_mode); ReturnCode SetHeaterProfile( const uint16_t temp, const uint16_t dur ); - ReturnCode SetHeaterProfile( uint16_t* const temp, - uint16_t* const mul, + ReturnCode SetHeaterProfile( const ArrayPointer& temp, + const ArrayPointer& mul, const uint16_t sharedHeatrDur, const uint8_t profileLen ); uint32_t GetMeasurementDuration(const uint8_t op_mode); diff --git a/src/mbedos/test-bme688/source/utils/ArrayPointer.h b/src/mbedos/test-bme688/source/utils/ArrayPointer.h new file mode 100644 index 0000000..48ef83f --- /dev/null +++ b/src/mbedos/test-bme688/source/utils/ArrayPointer.h @@ -0,0 +1,15 @@ +#ifndef ARRAY_POINTER_H +#define ARRAY_POINTER_H + +#include +#include + +template +class ArrayPointer { + public: + T* const ptr; + const size_t size; + ArrayPointer(T * ptr, size_t size): ptr(ptr), size(size){} +}; + +#endif // ARRAY_POINTER_H \ No newline at end of file diff --git a/src/mbedos/test-bme688/source/bme688/Defer.h b/src/mbedos/test-bme688/source/utils/Defer.h similarity index 81% rename from src/mbedos/test-bme688/source/bme688/Defer.h rename to src/mbedos/test-bme688/source/utils/Defer.h index 26c7560..78c6eb5 100644 --- a/src/mbedos/test-bme688/source/bme688/Defer.h +++ b/src/mbedos/test-bme688/source/utils/Defer.h @@ -1,5 +1,5 @@ -#ifndef __DEFER__H -#define __DEFER__H +#ifndef DEFER_H +#define DEFER_H template class Defer