From 6cf2e27186244c6ca622aa6af69fe5bd76f7f017 Mon Sep 17 00:00:00 2001 From: Nico van Duijn Date: Thu, 12 Sep 2019 10:13:06 +0200 Subject: [PATCH] drivers: set CM8JL65 signal_quality invalid beyond bounds --- src/drivers/distance_sensor/cm8jl65/cm8jl65.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/drivers/distance_sensor/cm8jl65/cm8jl65.cpp b/src/drivers/distance_sensor/cm8jl65/cm8jl65.cpp index d99d29b390f8..5f6a88a1d801 100644 --- a/src/drivers/distance_sensor/cm8jl65/cm8jl65.cpp +++ b/src/drivers/distance_sensor/cm8jl65/cm8jl65.cpp @@ -227,8 +227,9 @@ class CM8JL65 : public cdev::CDev, public px4::ScheduledWorkItem uint16_t _crc16{0}; - float _max_distance{9.0f}; - float _min_distance{0.10f}; + // Use conservative distance bounds, to make sure we don't fuse garbage data + float _max_distance{7.9f}; // Datasheet: 8.0m + float _min_distance{0.2f}; // Datasheet: 0.17m CM8JL65_PARSE_STATE _parse_state{WAITING_FRAME}; @@ -335,7 +336,7 @@ CM8JL65::collect() report.max_distance = _max_distance; report.min_distance = _min_distance; report.orientation = _rotation; - report.signal_quality = -1; + report.signal_quality = report.current_distance < _max_distance && report.current_distance > _min_distance ? -1 : 0; report.timestamp = hrt_absolute_time(); report.type = distance_sensor_s::MAV_DISTANCE_SENSOR_LASER; report.variance = 0.0f;