From b32ef64dba793c70bd150a051771cd5b1cb37d69 Mon Sep 17 00:00:00 2001
From: Sergi Hernandez Juan <shernand@iri.upc.edu>
Date: Tue, 9 Jul 2019 11:22:54 +0200
Subject: [PATCH] Solved a bug when the first attempt to configure the bus
 failed (the communications object was not properly handled).

---
 src/dynamixelserver_serial.cpp | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/dynamixelserver_serial.cpp b/src/dynamixelserver_serial.cpp
index 26c6587..2d55c3d 100644
--- a/src/dynamixelserver_serial.cpp
+++ b/src/dynamixelserver_serial.cpp
@@ -41,15 +41,18 @@ void CDynamixelServerSerial::config_bus(const std::string &device, int baudrate)
 {
   TRS232_config serial_config;
 
-  serial_config.baud=baudrate;
-  serial_config.num_bits=8;
-  serial_config.parity=none;
-  serial_config.stop_bits=1;
-  this->comm_dev=new CRS232(device);
-  this->comm_dev->open((void *)&device);
-  this->comm_dev->config(&serial_config);
-  this->bus_info.baud_rate=baudrate;
-  this->bus_info.device=device;
+  if(this->comm_dev==NULL)
+  {
+    serial_config.baud=baudrate;
+    serial_config.num_bits=8;
+    serial_config.parity=none;
+    serial_config.stop_bits=1;
+    this->comm_dev=new CRS232(device);
+    this->comm_dev->open((void *)&device);
+    this->comm_dev->config(&serial_config);
+    this->bus_info.baud_rate=baudrate;
+    this->bus_info.device=device;
+  }
 }
 
 #ifdef _HAVE_XSD
-- 
GitLab