diff --git a/CMakeLists.txt b/CMakeLists.txt index 49c7e1b7356814ef7cf17c3f104b2a331cfee5f3..f46ee062a6763bef551a7fe687a11e923ee5b053 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,7 +91,7 @@ IF (UNIX) SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "labrobotica - labrobotica@iri.upc.edu") # Uncomment to add the necessary mantainer scripts -# SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/package_scripts/preinst;${CMAKE_SOURCE_DIR}/package_scripts/postinst;${CMAKE_SOURCE_DIR}/package_scripts/prerm;${CMAKE_SOURCE_DIR}/package_scripts/postrm") + SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/scripts/debian/postinst;${CMAKE_SOURCE_DIR}/scripts/debian/prerm") # Uncomment to add dependencies comma separated # SET(CPACK_DEBIAN_PACKAGE_DEPENDS "iri-<package_name>-dev (>= 1.0~${DISTRIB})") diff --git a/scripts/debian/postinst b/scripts/debian/postinst new file mode 100755 index 0000000000000000000000000000000000000000..7eea91b6f417f85b46ba3c95a9599369a27baba4 --- /dev/null +++ b/scripts/debian/postinst @@ -0,0 +1,22 @@ +#!/bin/bash + +set -e + +case "$1" in + configure) + echo " Trying to add library to ldconfig..." + /usr/share/iri/add_lib_to_ld_config.sh -l dynamixel -p && echo " Done." || echo " /usr/share/iri/add_lib_to_ld_config.sh doesn't exists. Download it from iriutils and execute it." + + ;; + abort-upgrade) + + ;; + abort-remove) + + ;; + abort-deconfigure) + + ;; +esac + +exit 0 diff --git a/scripts/debian/prerm b/scripts/debian/prerm new file mode 100644 index 0000000000000000000000000000000000000000..a2e8b2ad545d6bd7842baa3282c318ad02657190 --- /dev/null +++ b/scripts/debian/prerm @@ -0,0 +1,22 @@ +#!/bin/bash + +set -e + +case "$1" in + remove) + echo " Trying to remove library from ldconfig..." + /usr/share/iri/remove_lib_from_ld_config.sh -l dynamixel -p && echo " Done." || echo " /usr/share/iri/remove_lib_from_ld_config.sh doesn't exists. Download it from iriutils and execute it." + + ;; + upgrade) + + ;; + deconfigure) + + ;; + failed-upgrade) + + ;; +esac + +exit 0 diff --git a/src/dynamixel.cpp b/src/dynamixel.cpp index 61df2a885df3aec397a17fc06206a2be73be2f39..31f8ea8e1200b61d0b77d1b4c0239c79ae3d4ee3 100644 --- a/src/dynamixel.cpp +++ b/src/dynamixel.cpp @@ -118,7 +118,7 @@ unsigned char CDynamixel::receive_status_packet_v1(unsigned char **data,unsigned do{ if((num=this->comm_dev->get_num_data())==0) { - this->event_server->wait_all(events,500); + this->event_server->wait_all(events,100); num=this->comm_dev->get_num_data(); } if((read+num)>1024) @@ -139,7 +139,7 @@ unsigned char CDynamixel::receive_status_packet_v1(unsigned char **data,unsigned { if((num=this->comm_dev->get_num_data())==0) { - this->event_server->wait_all(events,500); + this->event_server->wait_all(events,100); num=this->comm_dev->get_num_data(); } if((read-start+num)>length) @@ -201,7 +201,7 @@ unsigned char CDynamixel::receive_status_packet_v2(unsigned char **data,unsigned do{ if((num=this->comm_dev->get_num_data())==0) { - this->event_server->wait_all(events,500); + this->event_server->wait_all(events,100); num=this->comm_dev->get_num_data(); } if((read+num)>1024) @@ -222,7 +222,7 @@ unsigned char CDynamixel::receive_status_packet_v2(unsigned char **data,unsigned { if((num=this->comm_dev->get_num_data())==0) { - this->event_server->wait_all(events,500); + this->event_server->wait_all(events,100); num=this->comm_dev->get_num_data(); } if((read-start+num)>1024) diff --git a/src/dynamixel_slave_ftdi.cpp b/src/dynamixel_slave_ftdi.cpp index 47335a99309c9a5847447408f9a5e10982dbd39c..f947036d02851d2ed405706273618f36144bca72 100644 --- a/src/dynamixel_slave_ftdi.cpp +++ b/src/dynamixel_slave_ftdi.cpp @@ -68,7 +68,7 @@ void CDynamixelSlaveFTDI::config(std::string &filename) { // try to open the specified file try{ - std::auto_ptr<dyn_server_ftdi_config_t> cfg(dyn_server_ftdi_config(filename.c_str(), xml_schema::flags::dont_validate)); + std::unique_ptr<dyn_server_ftdi_config_t> cfg(dyn_server_ftdi_config(filename.c_str(), xml_schema::flags::dont_validate)); this->config_bus(cfg->serial_num(),cfg->baudrate()); }catch (const xml_schema::exception& e){ std::ostringstream os; diff --git a/src/dynamixelserver_ftdi.cpp b/src/dynamixelserver_ftdi.cpp index e29bcdd9dea05a6f6b3c9b749e7748976601f57a..da88b2c5f25c0f65f56f175d9bacfdd8619ccdd1 100644 --- a/src/dynamixelserver_ftdi.cpp +++ b/src/dynamixelserver_ftdi.cpp @@ -87,7 +87,7 @@ void CDynamixelServerFTDI::config(std::string &filename) { // try to open the specified file try{ - std::auto_ptr<dyn_server_ftdi_config_t> cfg(dyn_server_ftdi_config(filename.c_str(), xml_schema::flags::dont_validate)); + std::unique_ptr<dyn_server_ftdi_config_t> cfg(dyn_server_ftdi_config(filename.c_str(), xml_schema::flags::dont_validate)); this->config_bus(cfg->serial_num(),cfg->baudrate()); }catch (const xml_schema::exception& e){ std::ostringstream os; diff --git a/src/dynamixelserver_serial.cpp b/src/dynamixelserver_serial.cpp index 2d55c3d434b451d771fb43f33b30a9123e7b1b3c..03d0676fb9a14d09938d285473a68d2c18738d0f 100644 --- a/src/dynamixelserver_serial.cpp +++ b/src/dynamixelserver_serial.cpp @@ -41,8 +41,12 @@ void CDynamixelServerSerial::config_bus(const std::string &device, int baudrate) { TRS232_config serial_config; - if(this->comm_dev==NULL) + if(this->comm_dev!=NULL) { + delete this->comm_dev; + this->comm_dev=NULL; + } + try{ serial_config.baud=baudrate; serial_config.num_bits=8; serial_config.parity=none; @@ -52,6 +56,13 @@ void CDynamixelServerSerial::config_bus(const std::string &device, int baudrate) this->comm_dev->config(&serial_config); this->bus_info.baud_rate=baudrate; this->bus_info.device=device; + }catch(CException &e){ + if(this->comm_dev!=NULL) + { + delete this->comm_dev; + this->comm_dev=NULL; + } + throw e; } } @@ -64,7 +75,7 @@ void CDynamixelServerSerial::config(std::string &filename) { // try to open the specified file try{ - std::auto_ptr<dyn_server_serial_config_t> cfg(dyn_server_serial_config(filename.c_str(), xml_schema::flags::dont_validate)); + std::unique_ptr<dyn_server_serial_config_t> cfg(dyn_server_serial_config(filename.c_str(), xml_schema::flags::dont_validate)); this->config_bus(cfg->serial_dev(),cfg->baudrate()); }catch (const xml_schema::exception& e){ std::ostringstream os; diff --git a/src/xml/CMakeLists.txt b/src/xml/CMakeLists.txt index 1a4a350e0aa0687fcbe60dff22a89823fd3d620f..d49ad31560929acfd1ba549a5fcc4e2fc74299bd 100644 --- a/src/xml/CMakeLists.txt +++ b/src/xml/CMakeLists.txt @@ -36,7 +36,7 @@ IF(XSD_FOUND) ADD_CUSTOM_TARGET(xsd_files_gen DEPENDS ${XSD_SOURCES_INT}) ADD_CUSTOM_COMMAND( OUTPUT ${XSD_SOURCES_INT} - COMMAND xsdcxx cxx-tree --generate-serialization ${XSD_FILES} + COMMAND xsdcxx cxx-tree --std c++11 --generate-serialization ${XSD_FILES} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${XSD_PATH_FILES} COMMENT "Parsing the xml template file ${XSD_FILES}")