From cbf3cee0961fbe8c17fb0aa9468f25564f286c08 Mon Sep 17 00:00:00 2001
From: CarlOlsson <carlolsson.co@gmail.com>
Date: Thu, 5 Apr 2018 14:46:45 +0200
Subject: [PATCH] ll40ls: increase the number of samples used to find a
 correlation peak for LitarLite

Signed-off-by: CarlOlsson <carlolsson.co@gmail.com>
---
 .../distance_sensor/ll40ls/LidarLiteI2C.cpp        | 14 +++++++++++---
 src/drivers/distance_sensor/ll40ls/LidarLiteI2C.h  |  3 +++
 2 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/src/drivers/distance_sensor/ll40ls/LidarLiteI2C.cpp b/src/drivers/distance_sensor/ll40ls/LidarLiteI2C.cpp
index 5c829e85ab..c5a9066c18 100644
--- a/src/drivers/distance_sensor/ll40ls/LidarLiteI2C.cpp
+++ b/src/drivers/distance_sensor/ll40ls/LidarLiteI2C.cpp
@@ -329,18 +329,26 @@ int LidarLiteI2C::measure()
 }
 
 /*
-  reset the sensor to power on defaults
+  reset the sensor to power on defaults plus additional configurations
  */
 int LidarLiteI2C::reset_sensor()
 {
-	int ret = write_reg(LL40LS_MEASURE_REG, LL40LS_MSRREG_RESET);
-
+	int ret;
+	ret = write_reg(LL40LS_MEASURE_REG, LL40LS_MSRREG_RESET);
 	if (ret != OK) {
 		return ret;
 	}
 
 	// wait for sensor reset to complete
 	usleep(1000);
+	ret = write_reg(LL40LS_SIG_COUNT_VAL_REG, LL40LS_SIG_COUNT_VAL_MAX);
+
+	if (ret != OK) {
+		return ret;
+	}
+
+	// wait for register write to complete
+	usleep(1000);
 
 	return OK;
 }
diff --git a/src/drivers/distance_sensor/ll40ls/LidarLiteI2C.h b/src/drivers/distance_sensor/ll40ls/LidarLiteI2C.h
index e99042897f..f2252ab19a 100644
--- a/src/drivers/distance_sensor/ll40ls/LidarLiteI2C.h
+++ b/src/drivers/distance_sensor/ll40ls/LidarLiteI2C.h
@@ -68,6 +68,9 @@
 #define LL40LS_SW_VERSION         0x4f
 #define LL40LS_SIGNAL_STRENGTH_REG  0x5b
 
+#define LL40LS_SIG_COUNT_VAL_REG      0x02        /* Maximum acquisition count register */
+#define LL40LS_SIG_COUNT_VAL_MAX     0xFF        /* Maximum acquisition count max value */
+
 class LidarLiteI2C : public LidarLite, public device::I2C
 {
 public:
-- 
GitLab