@@ -40,6 +40,7 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
4040 : WipperSnapper_I2C_Driver(i2c, sensorAddress) {
4141 _i2c = i2c;
4242 _sensorAddress = sensorAddress;
43+ _mlx90632 = nullptr ;
4344 _deviceTemp = NAN;
4445 _objectTemp = NAN;
4546 _lastRead = 0 ;
@@ -50,7 +51,12 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
5051 @brief Destructor for an MLX90632 sensor.
5152 */
5253 /* ******************************************************************************/
53- ~WipperSnapper_I2C_Driver_MLX90632D () { delete _mlx90632; }
54+ ~WipperSnapper_I2C_Driver_MLX90632D () {
55+ if (_mlx90632){
56+ delete _mlx90632;
57+ _mlx90632 = nullptr ;
58+ }
59+ }
5460
5561 /* ******************************************************************************/
5662 /* !
@@ -125,9 +131,7 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
125131 // (!_mlx90632->setMode(MLX90632_MODE_SLEEPING_STEP)) { // Uncomment for
126132 // sleeping step mode testing
127133 WS_DEBUG_PRINTLN (F (" Failed to set mode" ));
128- while (1 ) {
129- delay (10 );
130- }
134+ return false ;
131135 }
132136
133137 // TODO: use Step mode?
@@ -157,17 +161,13 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
157161 if (!extendedInsteadOfMedicalRange &&
158162 !_mlx90632->setMeasurementSelect (MLX90632_MEAS_MEDICAL)) {
159163 WS_DEBUG_PRINTLN (F (" Failed to set measurement select to Medical" ));
160- while (1 ) {
161- delay (10 );
162- }
164+ return false ;
163165 } else if (extendedInsteadOfMedicalRange &&
164166 !_mlx90632->setMeasurementSelect (
165167 MLX90632_MEAS_EXTENDED_RANGE)) {
166168 WS_DEBUG_PRINTLN (
167169 F (" Failed to set measurement select to Extended Range" ));
168- while (1 ) {
169- delay (10 );
170- }
170+ return false ;
171171 }
172172
173173 mlx90632_meas_select_t currentMeasSelect =
@@ -189,9 +189,7 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
189189 WS_DEBUG_PRINTLN (F (" \n --- Refresh Rate Settings ---" ));
190190 if (!_mlx90632->setRefreshRate (MLX90632_REFRESH_2HZ)) {
191191 WS_DEBUG_PRINTLN (F (" Failed to set refresh rate to 2Hz" ));
192- while (1 ) {
193- delay (10 );
194- }
192+ return false ;
195193 }
196194
197195 mlx90632_refresh_rate_t currentRefreshRate = _mlx90632->getRefreshRate ();
@@ -229,9 +227,7 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
229227 WS_DEBUG_PRINTLN (F (" \\ n--- Starting Continuous Measurements ---" ));
230228 if (!_mlx90632->resetNewData ()) {
231229 WS_DEBUG_PRINTLN (F (" Failed to reset new data flag" ));
232- while (1 ) {
233- delay (10 );
234- }
230+ return false ;
235231 }
236232 return true ;
237233 }
0 commit comments