From 819eef1743a9f0ae84967ae85feae68ec1db40d8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sergi=20Hern=C3=A0ndez=20Juan?= <shernand@iri.upc.edu>
Date: Wed, 16 Mar 2016 11:39:29 +0000
Subject: [PATCH] Solved a problem when starting a new scan when the previous
 one was stopped. The new one never started.

---
 src/dynamixelserver.cpp                | 8 ++++----
 src/examples/test_dynamixel_server.cpp | 1 -
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/dynamixelserver.cpp b/src/dynamixelserver.cpp
index 7b21203..7f503a1 100644
--- a/src/dynamixelserver.cpp
+++ b/src/dynamixelserver.cpp
@@ -2,7 +2,6 @@
 #include "dynamixelserver.h"
 #include "eventexceptions.h"
 #include <sstream>
-#include <iostream>
 
 const unsigned short crc_table[256] = {
         0x0000, 0x8005, 0x800F, 0x000A, 0x801B, 0x001E, 0x0014, 0x8011,
@@ -591,7 +590,6 @@ void *CDynamixelServer::scan_thread(void *param)
       }
       for(freq=0;freq<9;freq++)
       {
-        std::cout << "trying frequency: " << frequencies[freq] << std::endl;
         dyn_server->set_baudrate(frequencies[freq]);
         for(id=0;id<0xFD;id++)
         {
@@ -605,9 +603,7 @@ void *CDynamixelServer::scan_thread(void *param)
           else
           {
             try{
-              std::cout << "checking device ID: " << id << std::endl;
               dyn_server->ping(id,20,dyn_server->scan_version);
-              std::cout << "Found device with ID: " << id << std::endl;
             }catch(CEventTimeoutException &e){
               continue;
             }
@@ -661,6 +657,10 @@ void CDynamixelServer::start_scan(dyn_version_t version)
     this->stop_scan();
     this->devices_v1.clear();
     this->devices_v2.clear();
+    if(this->event_server->event_is_set(this->stop_scan_event_id))
+      this->event_server->reset_event(this->stop_scan_event_id);
+    if(this->event_server->event_is_set(this->scan_error_event_id))
+      this->event_server->reset_event(this->scan_error_event_id);
     this->thread_server->start_thread(this->scan_thread_id);
   }
 }
diff --git a/src/examples/test_dynamixel_server.cpp b/src/examples/test_dynamixel_server.cpp
index b8567e8..8e3ed0f 100644
--- a/src/examples/test_dynamixel_server.cpp
+++ b/src/examples/test_dynamixel_server.cpp
@@ -41,7 +41,6 @@ int main(int argc, char *argv[])
     }
     else
       std::cout << "Error while scanning the bus: " << dyn_server->get_scan_error() << std::endl;
-    return 0;
     try{
       dyn_server->config_bus(0,1000000);
       dyn_server->start_scan();
-- 
GitLab