diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 95f8ba91984e0b15d0aab74a43850b534d9bc116..eccdafd3002e6aec31ba8859eed35cf2c60c9032 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 96c545cae70ec860f23f7876bdacc7ae4d4242c9..2ab05597c3592d53ce6e44ca6a87a5d0528b0111 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 37c91fcd3e430215b3f94bb56f52d7b06673f42e..1528875a3071f4d430ae9e29f2454c5bdbcbed39 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 9c5559abda51b86b4510f97ca63b7f6ab4f28657..160c164ff0276d4f8b5c0c6ef417e832051862bf 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