@@ -40,6 +40,7 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
40
40
: WipperSnapper_I2C_Driver(i2c, sensorAddress) {
41
41
_i2c = i2c;
42
42
_sensorAddress = sensorAddress;
43
+ _mlx90632 = nullptr ;
43
44
_deviceTemp = NAN;
44
45
_objectTemp = NAN;
45
46
_lastRead = 0 ;
@@ -50,7 +51,12 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
50
51
@brief Destructor for an MLX90632 sensor.
51
52
*/
52
53
/* ******************************************************************************/
53
- ~WipperSnapper_I2C_Driver_MLX90632D () { delete _mlx90632; }
54
+ ~WipperSnapper_I2C_Driver_MLX90632D () {
55
+ if (_mlx90632){
56
+ delete _mlx90632;
57
+ _mlx90632 = nullptr ;
58
+ }
59
+ }
54
60
55
61
/* ******************************************************************************/
56
62
/* !
@@ -125,9 +131,7 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
125
131
// (!_mlx90632->setMode(MLX90632_MODE_SLEEPING_STEP)) { // Uncomment for
126
132
// sleeping step mode testing
127
133
WS_DEBUG_PRINTLN (F (" Failed to set mode" ));
128
- while (1 ) {
129
- delay (10 );
130
- }
134
+ return false ;
131
135
}
132
136
133
137
// TODO: use Step mode?
@@ -157,17 +161,13 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
157
161
if (!extendedInsteadOfMedicalRange &&
158
162
!_mlx90632->setMeasurementSelect (MLX90632_MEAS_MEDICAL)) {
159
163
WS_DEBUG_PRINTLN (F (" Failed to set measurement select to Medical" ));
160
- while (1 ) {
161
- delay (10 );
162
- }
164
+ return false ;
163
165
} else if (extendedInsteadOfMedicalRange &&
164
166
!_mlx90632->setMeasurementSelect (
165
167
MLX90632_MEAS_EXTENDED_RANGE)) {
166
168
WS_DEBUG_PRINTLN (
167
169
F (" Failed to set measurement select to Extended Range" ));
168
- while (1 ) {
169
- delay (10 );
170
- }
170
+ return false ;
171
171
}
172
172
173
173
mlx90632_meas_select_t currentMeasSelect =
@@ -189,9 +189,7 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
189
189
WS_DEBUG_PRINTLN (F (" \n --- Refresh Rate Settings ---" ));
190
190
if (!_mlx90632->setRefreshRate (MLX90632_REFRESH_2HZ)) {
191
191
WS_DEBUG_PRINTLN (F (" Failed to set refresh rate to 2Hz" ));
192
- while (1 ) {
193
- delay (10 );
194
- }
192
+ return false ;
195
193
}
196
194
197
195
mlx90632_refresh_rate_t currentRefreshRate = _mlx90632->getRefreshRate ();
@@ -229,9 +227,7 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
229
227
WS_DEBUG_PRINTLN (F (" \\ n--- Starting Continuous Measurements ---" ));
230
228
if (!_mlx90632->resetNewData ()) {
231
229
WS_DEBUG_PRINTLN (F (" Failed to reset new data flag" ));
232
- while (1 ) {
233
- delay (10 );
234
- }
230
+ return false ;
235
231
}
236
232
return true ;
237
233
}
0 commit comments