Skip to content

Commit 40a7ecb

Browse files
committed
clean up object and stop infinite loops
1 parent d391989 commit 40a7ecb

File tree

1 file changed

+12
-16
lines changed

1 file changed

+12
-16
lines changed

src/components/i2c/drivers/WipperSnapper_I2C_Driver_MLX90632D.h

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)