diff --git a/src/darwin_dyn_slave.c b/src/darwin_dyn_slave.c index a35588338663274d82427391b6800f223d1c5c82..0da5b8ac11a7d6677e7acbd41fbcf91c711d0c4b 100755 --- a/src/darwin_dyn_slave.c +++ b/src/darwin_dyn_slave.c @@ -1,4 +1,5 @@ #include "darwin_dyn_slave.h" +#include "darwin_dyn_master.h" #include "darwin_time.h" #include "usart3.h" #include "eeprom.h" @@ -15,6 +16,9 @@ TScheduler *darwin_dyn_slave_sch; /* memory module */ TMemory *darwin_dyn_slave_memory; +extern TDynamixelMaster *darwin_master; +extern TDynamixelMaster *darwin_master2; + /* eeprom data */ dyn_slave_control_eeprom_data(example_dyn_slave,".eeprom",EEPROM_DYN_SLAVE_BASE_ADDRESS1,EEPROM_DYN_SLAVE_BASE_ADDRESS2,DARWIN_DEVICE_MODEL,DARWIN_FIRMWARE_VERSION,DARWIN_DEVICE_ID,DEFAULT_BAUDRATE,DEFAULT_RETURN_DELAY,DEFAULT_RETURN_LEVEL); @@ -37,6 +41,17 @@ void darwin_on_ping(void) { } +unsigned char darwin_on_relay(TDynVersion version,unsigned char *inst_pkt,unsigned char *status_pkt) +{ + unsigned char error; + + error=dyn_master_relay(darwin_master,version,inst_pkt,status_pkt); + if(error!=DYN_SUCCESS) + error=dyn_master_relay(darwin_master2,version,inst_pkt,status_pkt); + + return error; +} + // public functions uint8_t darwin_dyn_slave_init(TMemory **memory,TScheduler *scheduler) { @@ -78,6 +93,7 @@ uint8_t darwin_dyn_slave_init(TMemory **memory,TScheduler *scheduler) status=dyn_slave_init(&darwin_dyn_slave,&darwin_dyn_slave_comm,scheduler,SCHED_CH1,DYN_VER2); darwin_dyn_slave.set_baudrate=usart3_set_baudrate; + darwin_dyn_slave.on_relay=darwin_on_relay; dyn_slave_add_device(&darwin_dyn_slave,&darwin_dyn_slave_device); return status; diff --git a/stm32_libraries b/stm32_libraries index c3575a6117c3a0bdac5d242d89eba6fa264c3938..188e1f8bda9d26ef613378a93087ce29d528c755 160000 --- a/stm32_libraries +++ b/stm32_libraries @@ -1 +1 @@ -Subproject commit c3575a6117c3a0bdac5d242d89eba6fa264c3938 +Subproject commit 188e1f8bda9d26ef613378a93087ce29d528c755