Change maxDistance

former logic assumed it was the last distance found, which turns out to not always be the case. Implementing @dkerr64 logic from https://github.com/ratgdo/homekit-ratgdo32/pull/16
This commit is contained in:
Paul Wieland 2024-12-27 12:56:13 -05:00
parent 9714d659ea
commit 89a5c28a32
1 changed files with 9 additions and 2 deletions

View File

@ -87,12 +87,19 @@ namespace ratgdo {
status = this->distance_sensor_.VL53L4CX_GetMultiRangingData(pDistanceData);
objCount = pDistanceData->NumberOfObjectsFound;
maxDistance = objCount == 0 ? -1 : pDistanceData->RangeData[objCount - 1].RangeMilliMeter;
for (int i = 0; i < distanceData.NumberOfObjectsFound; i++) {
VL53L4CX_TargetRangeData_t *d = &pDistanceData->RangeData[i];
if (d->RangeStatus == 0) {
maxDistance = std::max(maxDistance, d->RangeMilliMeter);
}
}
//maxDistance = objCount == 0 ? -1 : pDistanceData->RangeData[objCount - 1].RangeMilliMeter;
/*
* if the sensor is pointed at glass, there are many error -1 readings which will fill the
* vector with out of range data. The sensor should be sensitive enough to detect the floor
* in most situations, but daylight and/or really high ceilings can cause long distance
* measurements to be out of range.
* measurements to be out of range.
*/
this->parent_->set_distance_measurement(maxDistance);