@@ -4,10 +4,10 @@ using namespace DYNAMIXEL;
4
4
5
5
6
6
enum DefaultControlTableItemAddr{
7
- ADDR_MODEL_NUMBER = 0 ,
8
- ADDR_FIRMWARE_VER = 6 ,
9
- ADDR_ID = 7 ,
10
- ADDR_PROTOCOL_VER = 9
7
+ ADDR_ITEM_MODEL_NUMBER = 0 ,
8
+ ADDR_ITEM_FIRMWARE_VER = 6 ,
9
+ ADDR_ITEM_ID = 7 ,
10
+ ADDR_ITEM_PROTOCOL_VER = 9
11
11
};
12
12
13
13
static bool isAddrInRange (uint16_t addr, uint16_t length, uint16_t range_addr, uint16_t range_length);
@@ -309,6 +309,19 @@ void Slave::setReadCallbackFunc(userCallbackFunc callback_func, void* callback_a
309
309
user_read_callbakc_arg_ = callback_arg;
310
310
}
311
311
312
+ bool
313
+ Slave::setPort (DXLPortHandler *p_port)
314
+ {
315
+ if (p_port == nullptr ){
316
+ last_lib_err_ = DXL_LIB_ERROR_NULLPTR;
317
+ return false ;
318
+ }
319
+
320
+ p_port_ = p_port;
321
+
322
+ return true ;
323
+ }
324
+
312
325
bool
313
326
Slave::setPort (DXLPortHandler &port)
314
327
{
@@ -329,6 +342,12 @@ Slave::getLastLibErrCode() const
329
342
return last_lib_err_;
330
343
}
331
344
345
+ void
346
+ Slave::setLastLibErrCode (DXLLibErrorCode_t err_code)
347
+ {
348
+ last_lib_err_ = err_code;
349
+ }
350
+
332
351
uint8_t
333
352
Slave::getLastStatusPacketError () const
334
353
{
@@ -509,21 +528,21 @@ Slave::processInstWrite()
509
528
p_item = &control_table_[i];
510
529
item_start_addr = p_item->start_addr ;
511
530
item_addr_length = p_item->length ;
512
- if (item_start_addr != ADDR_MODEL_NUMBER
513
- && item_start_addr != ADDR_FIRMWARE_VER ){
531
+ if (item_start_addr != ADDR_ITEM_MODEL_NUMBER
532
+ && item_start_addr != ADDR_ITEM_FIRMWARE_VER ){
514
533
if (item_addr_length != 0
515
534
&& p_item->p_data != nullptr
516
535
&& isAddrInRange (item_start_addr, item_addr_length, addr, data_length) == true ){
517
536
// Check data for ID, Protocol Version (Act as a system callback)
518
- if (item_start_addr == ADDR_ID ){
537
+ if (item_start_addr == ADDR_ITEM_ID ){
519
538
backup_data = p_data[item_start_addr-addr];
520
539
if (protocol_ver_idx_ == 2 && backup_data >= 0xFD ){
521
540
packet_err = DXL2_0_ERR_DATA_RANGE;
522
541
}else if (protocol_ver_idx_ == 1 && backup_data >= 0xFE ){
523
542
packet_err |= 1 <<DXL1_0_ERR_RANGE_BIT;
524
543
}
525
544
backup_data = id_;
526
- }else if (item_start_addr == ADDR_PROTOCOL_VER ){
545
+ }else if (item_start_addr == ADDR_ITEM_PROTOCOL_VER ){
527
546
backup_data = p_data[item_start_addr-addr];
528
547
if (backup_data != 1 && backup_data != 2 ){
529
548
if (protocol_ver_idx_ == 2 ){
@@ -548,9 +567,9 @@ Slave::processInstWrite()
548
567
if (packet_err != 0 ){
549
568
// If an error occurs for the ID and Protocol Version,
550
569
// restore the previous data. (Act as a system callback)
551
- if (item_start_addr == ADDR_ID ){
570
+ if (item_start_addr == ADDR_ITEM_ID ){
552
571
id_ = backup_data;
553
- }else if (item_start_addr == ADDR_PROTOCOL_VER ){
572
+ }else if (item_start_addr == ADDR_ITEM_PROTOCOL_VER ){
554
573
protocol_ver_idx_ = backup_data;
555
574
}
556
575
break ;
@@ -573,10 +592,10 @@ Slave::processInstWrite()
573
592
bool
574
593
Slave::addDefaultControlItem ()
575
594
{
576
- if (addControlItem (ADDR_MODEL_NUMBER , (uint16_t &)model_num_) != DXL_LIB_OK
577
- || addControlItem (ADDR_FIRMWARE_VER , firmware_ver_) != DXL_LIB_OK
578
- || addControlItem (ADDR_ID , id_) != DXL_LIB_OK
579
- || addControlItem (ADDR_PROTOCOL_VER , protocol_ver_idx_) != DXL_LIB_OK){
595
+ if (addControlItem (ADDR_ITEM_MODEL_NUMBER , (uint16_t &)model_num_) != DXL_LIB_OK
596
+ || addControlItem (ADDR_ITEM_FIRMWARE_VER , firmware_ver_) != DXL_LIB_OK
597
+ || addControlItem (ADDR_ITEM_ID , id_) != DXL_LIB_OK
598
+ || addControlItem (ADDR_ITEM_PROTOCOL_VER , protocol_ver_idx_) != DXL_LIB_OK){
580
599
return false ;
581
600
}
582
601
0 commit comments