From b2bce55cb6ec71d479e8d9198f23ddf728f474f0 Mon Sep 17 00:00:00 2001
From: Hoop77 <p.badenhoop@gmx.de>
Date: Thu, 10 May 2018 15:55:33 +0200
Subject: [PATCH] ultrasonic returns MAX_DISTANCE instance of 0

---
 .../src/VeloxProtocolLib/test/TerminalControl.cpp         | 2 +-
 modules/catkin_ws/src/VeloxProtocolLib/test/USS_SRF02.cpp | 6 +++++-
 modules/catkin_ws/src/VeloxProtocolLib/test/USS_SRF02.h   | 2 ++
 modules/catkin_ws/src/car/include/ultrasonic/USS_SRF02.h  | 2 ++
 modules/catkin_ws/src/car/src/ultrasonic/USS_SRF02.cpp    | 8 ++++++--
 modules/catkin_ws/src/car/src/ultrasonic/Ultrasonic.cpp   | 2 --
 6 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/modules/catkin_ws/src/VeloxProtocolLib/test/TerminalControl.cpp b/modules/catkin_ws/src/VeloxProtocolLib/test/TerminalControl.cpp
index 5aa457dc..cbb8c8d0 100644
--- a/modules/catkin_ws/src/VeloxProtocolLib/test/TerminalControl.cpp
+++ b/modules/catkin_ws/src/VeloxProtocolLib/test/TerminalControl.cpp
@@ -39,7 +39,7 @@ int main(int argc, char ** argv)
 
             while (running)
             {
-                int distance = uss.getDistance();
+                int distance = uss.getDistance();;
                 if (distance > 20)
                     conn->setSpeed(0);
 
diff --git a/modules/catkin_ws/src/VeloxProtocolLib/test/USS_SRF02.cpp b/modules/catkin_ws/src/VeloxProtocolLib/test/USS_SRF02.cpp
index aa0084d5..6419817b 100644
--- a/modules/catkin_ws/src/VeloxProtocolLib/test/USS_SRF02.cpp
+++ b/modules/catkin_ws/src/VeloxProtocolLib/test/USS_SRF02.cpp
@@ -16,6 +16,7 @@ constexpr int USS_SRF02::RESULT_HIGH_BYTE;
 constexpr int USS_SRF02::RESULT_LOW_BYTE;
 constexpr int USS_SRF02::RANGING_MODE_CM;
 constexpr int USS_SRF02::DELAY;
+constexpr int USS_SRF02::MAX_DISTANCE;
 
 USS_SRF02::USS_SRF02(int devId)
 {
@@ -28,5 +29,8 @@ int USS_SRF02::getDistance()
 {
     wiringPiI2CWriteReg8(fd, COMMAND_REGISTER, RANGING_MODE_CM);
     usleep(DELAY * 1000);
-    return wiringPiI2CReadReg16(fd, RESULT_LOW_BYTE);
+    int distance = wiringPiI2CReadReg16(fd, RESULT_LOW_BYTE);
+    if (distance == 0)  // 0 means distance too far
+        distance = 255;
+    return distance;
 }
diff --git a/modules/catkin_ws/src/VeloxProtocolLib/test/USS_SRF02.h b/modules/catkin_ws/src/VeloxProtocolLib/test/USS_SRF02.h
index 698f5bb8..b3fb842e 100644
--- a/modules/catkin_ws/src/VeloxProtocolLib/test/USS_SRF02.h
+++ b/modules/catkin_ws/src/VeloxProtocolLib/test/USS_SRF02.h
@@ -23,6 +23,8 @@ public:
 
     static constexpr int DELAY = 70; //70 ms for ranging to finish
 
+    static constexpr int MAX_DISTANCE = 255;
+
     explicit USS_SRF02(int devId);
 
     int getDistance();
diff --git a/modules/catkin_ws/src/car/include/ultrasonic/USS_SRF02.h b/modules/catkin_ws/src/car/include/ultrasonic/USS_SRF02.h
index 698f5bb8..b3fb842e 100644
--- a/modules/catkin_ws/src/car/include/ultrasonic/USS_SRF02.h
+++ b/modules/catkin_ws/src/car/include/ultrasonic/USS_SRF02.h
@@ -23,6 +23,8 @@ public:
 
     static constexpr int DELAY = 70; //70 ms for ranging to finish
 
+    static constexpr int MAX_DISTANCE = 255;
+
     explicit USS_SRF02(int devId);
 
     int getDistance();
diff --git a/modules/catkin_ws/src/car/src/ultrasonic/USS_SRF02.cpp b/modules/catkin_ws/src/car/src/ultrasonic/USS_SRF02.cpp
index 6cda3f79..6419817b 100644
--- a/modules/catkin_ws/src/car/src/ultrasonic/USS_SRF02.cpp
+++ b/modules/catkin_ws/src/car/src/ultrasonic/USS_SRF02.cpp
@@ -1,4 +1,4 @@
-#include "ultrasonic/USS_SRF02.h"
+#include "USS_SRF02.h"
 #include "wiringPiI2C.h"
 
 #include <iostream>
@@ -16,6 +16,7 @@ constexpr int USS_SRF02::RESULT_HIGH_BYTE;
 constexpr int USS_SRF02::RESULT_LOW_BYTE;
 constexpr int USS_SRF02::RANGING_MODE_CM;
 constexpr int USS_SRF02::DELAY;
+constexpr int USS_SRF02::MAX_DISTANCE;
 
 USS_SRF02::USS_SRF02(int devId)
 {
@@ -28,5 +29,8 @@ int USS_SRF02::getDistance()
 {
     wiringPiI2CWriteReg8(fd, COMMAND_REGISTER, RANGING_MODE_CM);
     usleep(DELAY * 1000);
-    return wiringPiI2CReadReg16(fd, RESULT_LOW_BYTE);
+    int distance = wiringPiI2CReadReg16(fd, RESULT_LOW_BYTE);
+    if (distance == 0)  // 0 means distance too far
+        distance = 255;
+    return distance;
 }
diff --git a/modules/catkin_ws/src/car/src/ultrasonic/Ultrasonic.cpp b/modules/catkin_ws/src/car/src/ultrasonic/Ultrasonic.cpp
index 3e8df4b9..1c964212 100644
--- a/modules/catkin_ws/src/car/src/ultrasonic/Ultrasonic.cpp
+++ b/modules/catkin_ws/src/car/src/ultrasonic/Ultrasonic.cpp
@@ -16,8 +16,6 @@ Ultrasonic::Ultrasonic()
       , messageOStream(nh, "Ultrasonic")
 {}
 
-static std::size_t counter = 0;
-
 void Ultrasonic::onInit()
 {
     messageOStream.write("onInit", "START");
-- 
GitLab