ct_clamp: Check sample() return value is not NaN (#921)

Don't try to update CT clamp's state with NaN values returned from the
underlaying sensor.  A single IO error in the sensor code will cause a
NaN to be returned and if we use that in CTClampSensor's floating point
maths both sample_sum_ and offset_ will become NaN and from there every
future calculation will use the NaN offset_ and return NaN too.
This commit is contained in:
Andrew Zaborowski 2019-12-17 12:08:37 +01:00 committed by Otto Winter
parent f5b7cc81d8
commit c8ccb06f11

View file

@ -64,6 +64,8 @@ void CTClampSensor::loop() {
// Perform a single sample
float value = this->source_->sample();
if (isnan(value))
return;
if (this->is_calibrating_offset_) {
this->sample_sum_ += value;