From 47238a29c1f65955024885feed62faed636cb9bb Mon Sep 17 00:00:00 2001
From: Robert Hedman <robert.hedman@mac.com>
Date: Wed, 13 Dec 2017 12:47:45 +0100
Subject: [PATCH] Fixed missing endOfMessage case in controller

---
 src/main.rs | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/main.rs b/src/main.rs
index 01ee19c..39f787d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -23,9 +23,12 @@ use serial::prelude::*;
 
 //lidar
 const LIDAR_ADDRESS: &str = "127.0.0.1:8080";
-const COUNTER_SERIAL_PORT: &str = "/dev/cu.usbmodem1422";
 const LIDAR_BUF_SIZE: usize = 4096;
 
+//Arduinos
+const COUNTER_SERIAL_PORT: &str = "/dev/cu.usbmodem1422";
+const DRIVER_SERIAL_PORT: &str = "/dev/cu.usbmodem1423";
+
 //controller
 const REMOTE_OPERATOR_ADDRESS: &str = "10.9.0.3:30000"; // remember to double check port!
 const CONTROLLER_SAMPLING_TIME: u32 = 200; //ms
@@ -89,7 +92,7 @@ fn main() {
                     // get controller input (We expect to set soloMode here.)
                     for r in stream.try_clone().expect("stream clone failed").bytes() {
                         match r {
-                            Ok(b) => { // TODO Add case if EOM is missing
+                            Ok(b) => {
                                 if b == 250 && !recording {
                                     //println!("Server found start of message");
                                     message[received_bytes] = b;
@@ -117,7 +120,11 @@ fn main() {
 
                             },
                             Err(_) => {}, //TODO
-                        } 
+                        }
+                        if received_bytes > message_len && recording { // EOM is missing!
+                            received_bytes = 0;
+                            recording = false;
+                        }
                     }
 
 
-- 
GitLab