diff --git a/dynamixel_base/include/dynamixel_slave.h b/dynamixel_base/include/dynamixel_slave.h index 9254389dae21c86327d034ad9c377f0fc58c5c09..d608c9daefec8df569f50d9a0df2576b2dad8941 100644 --- a/dynamixel_base/include/dynamixel_slave.h +++ b/dynamixel_base/include/dynamixel_slave.h @@ -65,6 +65,11 @@ typedef struct TDynamixelSlave * */ unsigned char rx_buffer[MAX_DYN_SLAVE_RX_BUFFER_LEN]; + /** + * \brief + * + */ + unsigned char current_packet[MAX_DYN_SLAVE_RX_BUFFER_LEN]; /** * \brief * diff --git a/dynamixel_base/src/dynamixel_slave.c b/dynamixel_base/src/dynamixel_slave.c index 54937ed1472fd45ffc00ef11415febe5077d963b..881d1b8a3d1e65313500d7508f1297d15bf48dce 100644 --- a/dynamixel_base/src/dynamixel_slave.c +++ b/dynamixel_base/src/dynamixel_slave.c @@ -224,20 +224,20 @@ unsigned char dyn_slave_get_next_packet(TDynamixelSlave *slave,unsigned char *pa void dyn_slave_loop(TDynamixelSlave *slave) { - unsigned char send_status=0xFF,error,data_in[MAX_DYN_SLAVE_RX_BUFFER_LEN],data_out[MAX_DYN_SLAVE_RX_BUFFER_LEN]; + unsigned char send_status=0xFF,error,data_out[MAX_DYN_SLAVE_RX_BUFFER_LEN]={0}; unsigned short int length,i; if(slave!=0x00000000) { - while(dyn_slave_get_next_packet(slave,data_in)) + while(dyn_slave_get_next_packet(slave,slave->current_packet)) { // check address for(i=0;i<slave->num_slave_devices;i++) { if(slave->version==DYN_VER1) - send_status=dyn_v1_slave_loop(slave->slave_devices[i],data_in,&error,(unsigned char *)&length,data_out); + send_status=dyn_v1_slave_loop(slave->slave_devices[i],slave->current_packet,&error,(unsigned char *)&length,data_out); else - send_status=dyn_v2_slave_loop(slave->slave_devices[i],data_in,&error,&length,data_out); + send_status=dyn_v2_slave_loop(slave->slave_devices[i],slave->current_packet,&error,&length,data_out); if(send_status==0x01) dyn_slave_send_status_packet(slave,slave->slave_devices[i]->address,error,length,data_out,slave->slave_devices[i]->return_delay); }