From 396f5e4f8fcef262f193bc53a9eebe3cb1d61566 Mon Sep 17 00:00:00 2001 From: Sergi Hernandez Juan <shernand@iri.upc.edu> Date: Fri, 27 Sep 2019 15:35:04 +0200 Subject: [PATCH] Added destructors to the CDynamixel and CDynamixelServer classes. Moved some attributes from the private to the protected section to be used by inherited classes. --- src/CMakeLists.txt | 2 +- src/dynamixel.h | 68 ++++++++++++++++++++--------------------- src/dynamixelserver.cpp | 3 ++ src/dynamixelserver.h | 25 +++++++-------- 4 files changed, 51 insertions(+), 47 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 95f8ba9..eccdafd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,7 +3,7 @@ ADD_SUBDIRECTORY(xml) # edit the following line to add all the source code files of the library SET(sources dynamixel.cpp dynamixelserver.cpp dynamixelserver_ftdi.cpp dynamixelserver_serial.cpp dynamixelexceptions.cpp dynamixel_slave.cpp dynamixel_slave_ftdi.cpp dynamixel_slave_serial.cpp) # edit the following line to add all the header files of the library -SET(headers dynamixel.h dynamixelserver.h dynamixelserver_ftdi.h dynamixelserver_serial.h dynamixelexceptions.h dynamixel_common.h dynamixel_slave.h dynamixel_slave_ftdi.h dynamixel_slave_serial.h) +SET(headers dynamixel.h dynamixelserver.h dynamixelserver_ftdi.h dynamixelserver_serial.h dynamixelexceptions.h dynamixel_common.h dynamixel_slave.h dynamixel_slave_ftdi.h dynamixel_slave_serial.h) INCLUDE_DIRECTORIES(.) diff --git a/src/dynamixel.h b/src/dynamixel.h index 96c545c..2ab0559 100644 --- a/src/dynamixel.h +++ b/src/dynamixel.h @@ -24,87 +24,87 @@ class CDynamixel private: friend class CDynamixelServer; /** - * \brief - * + * \brief + * */ - CDynamixelServer *dyn_server; + unsigned char id_register; /** - * \brief Handle to the communications device + * \brief * - */ - CComm *comm_dev; + */ + unsigned char baudrate_register; /** - * \brief - * + * \brief + * */ - unsigned char node_address; + void set_baudrate(int baudrate); /** - * \brief mutual exclusion mechanism to access the usb + * \brief * */ - CMutex *usb_access; + void sync_packet_v1(unsigned char *data,unsigned int length,int *start); /** - * \brief Handle to the unique event server + * \brief * */ - CEventServer *event_server; + void sync_packet_v2(unsigned char *data,unsigned int length,int *start); + + protected: /** * \brief data reception event * */ std::string usb_rx_event_id; /** - * \brief + * \brief * */ - unsigned char id_register; + dyn_version_t version; /** - * \brief - * + * \brief + * */ - unsigned char baudrate_register; + CDynamixelServer *dyn_server; /** - * \brief - * + * \brief + * */ - void set_baudrate(int baudrate); + unsigned char node_address; /** - * \brief + * \brief Handle to the unique event server * */ - void sync_packet_v1(unsigned char *data,unsigned int length,int *start); + CEventServer *event_server; /** - * \brief + * \brief Handle to the communications device * - */ - void sync_packet_v2(unsigned char *data,unsigned int length,int *start); + */ + CComm *comm_dev; /** - * \brief + * \brief mutual exclusion mechanism to access the usb * */ - dyn_version_t version; - - protected: + CMutex *usb_access; /** * \brief * */ - void send_instruction_packet_v1(dyn_inst_t inst,unsigned char *data=NULL,unsigned char len=0); + virtual void send_instruction_packet_v1(dyn_inst_t inst,unsigned char *data=NULL,unsigned char len=0); /** * \brief * */ - void send_instruction_packet_v2(dyn_inst_t inst,unsigned char *data=NULL,unsigned short int len=0); + virtual void send_instruction_packet_v2(dyn_inst_t inst,unsigned char *data=NULL,unsigned short int len=0); /** * \brief * */ - unsigned char receive_status_packet_v1(unsigned char **data,unsigned char *len); + virtual unsigned char receive_status_packet_v1(unsigned char **data,unsigned char *len); /** * \brief * */ - unsigned char receive_status_packet_v2(unsigned char **data,unsigned short int *len); + virtual unsigned char receive_status_packet_v2(unsigned char **data,unsigned short int *len); /** * \brief * diff --git a/src/dynamixelserver.cpp b/src/dynamixelserver.cpp index 37c91fc..1528875 100644 --- a/src/dynamixelserver.cpp +++ b/src/dynamixelserver.cpp @@ -1347,3 +1347,6 @@ void CDynamixelServer::read_bulk(std::vector<unsigned char>& servo_ids,std::vect } } +CDynamixelServer::~CDynamixelServer() +{ +} diff --git a/src/dynamixelserver.h b/src/dynamixelserver.h index 9c5559a..160c164 100644 --- a/src/dynamixelserver.h +++ b/src/dynamixelserver.h @@ -50,11 +50,6 @@ const int frequencies[9]={1000000,500000,400000,250000,200000,115200,57600,19200 class CDynamixelServer { private: - /** - * \brief - * - */ - CEventServer *event_server; /** * \brief * @@ -99,33 +94,38 @@ class CDynamixelServer * \brief * */ - void send_instruction_packet_v1(dyn_inst_t inst,unsigned char *data=NULL,unsigned char len=0,unsigned char id=0xFE); + virtual void send_instruction_packet_v1(dyn_inst_t inst,unsigned char *data=NULL,unsigned char len=0,unsigned char id=0xFE); /** * \brief * */ - void send_instruction_packet_v2(dyn_inst_t inst,unsigned char *data=NULL,unsigned short int len=0,unsigned char id=0xFE); + virtual void send_instruction_packet_v2(dyn_inst_t inst,unsigned char *data=NULL,unsigned short int len=0,unsigned char id=0xFE); /** * \brief * */ - unsigned char receive_status_packet_v1(unsigned char **data,unsigned char *len); + virtual unsigned char receive_status_packet_v1(unsigned char **data,unsigned char *len); /** * \brief * */ - unsigned char receive_status_packet_v2(unsigned char **data,unsigned short int *len); + virtual unsigned char receive_status_packet_v2(unsigned char **data,unsigned short int *len); /** * \brief * */ - void sync_packet_v1(unsigned char *data,unsigned int length,int *start); + virtual void sync_packet_v1(unsigned char *data,unsigned int length,int *start); /** * \brief * */ - void sync_packet_v2(unsigned char *data,unsigned int length,int *start); + virtual void sync_packet_v2(unsigned char *data,unsigned int length,int *start); protected: + /** + * \brief + * + */ + CEventServer *event_server; /** * \brief * @@ -243,7 +243,7 @@ class CDynamixelServer * \brief * */ - CDynamixel *get_device(int dev_id,dyn_version_t version=dyn_version1); + virtual CDynamixel *get_device(int dev_id,dyn_version_t version=dyn_version1); /** * \brief * @@ -284,6 +284,7 @@ class CDynamixelServer * */ void read_bulk(std::vector<unsigned char>& servo_ids,std::vector<unsigned short int> &start_addr,std::vector<unsigned short int> &length, std::vector< std::vector<unsigned char> >& data,dyn_version_t version=dyn_version2); + virtual ~CDynamixelServer(); }; #endif -- GitLab