Skip to content

Commit 7d72cc6

Browse files
committed
[Feature] Added API for HardwareError
Signed-off-by: Jonghee Son <zzongaone@gmail.com>
1 parent a5782fd commit 7d72cc6

2 files changed

Lines changed: 28 additions & 3 deletions

File tree

src/Dynamixel2Arduino.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -915,6 +915,20 @@ bool Dynamixel2Arduino::getTorqueEnableStat(uint8_t id)
915915
return ret;
916916
}
917917

918+
uint8_t Dynamixel2Arduino::getHardwareError(uint8_t id)
919+
{
920+
uint16_t model_num = getModelNumberFromTable(id);
921+
922+
if(model_num == AX12A || model_num == AX12W || model_num == AX18A || model_num == DX113 || model_num == DX116 || model_num == DX117 || model_num == RX10 || model_num == RX24F || model_num == RX28 || model_num == RX64 || model_num == EX106 || model_num == MX12W || model_num == MX28 || model_num == MX64 || model_num == MX106 || model_num == XL320)
923+
{
924+
setLastLibErrCode(DXL_LIB_ERROR_INVAILD_PROTOCOL_VERSION);
925+
926+
return 0;
927+
}
928+
929+
return readControlTableItem(ControlTableItem::HARDWARE_ERROR_STATUS, id);
930+
}
931+
918932
int32_t Dynamixel2Arduino::readControlTableItem(uint8_t item_idx, uint8_t id, uint32_t timeout)
919933
{
920934
int32_t ret = 0;

src/Dynamixel2Arduino.h

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,20 @@ class Dynamixel2Arduino : public DYNAMIXEL::Master
385385
* @return It returns the Torque Enable data read from DXL control table item.
386386
* If the Torque is On, true(1) is returned. Otherwise false(0) is returned.
387387
*/
388-
bool getTorqueEnableStat(uint8_t id);
388+
bool getTorqueEnableStat(uint8_t id);
389+
390+
/**
391+
* @brief It is API for getting hardware error status of DYNAMIXEL.
392+
* @code
393+
* const int DXL_DIR_PIN = 2;
394+
* Dynamixel2Arduino dxl(Serial1, DXL_DIR_PIN);
395+
* Serial.print(dxl.getHardwareError(1));
396+
* @endcode
397+
* @param id DYNAMIXEL Actuator's ID.
398+
* @return It returns 0 on no error, value any other than 0 on hardware error.
399+
* If the read fails, 0 is returned. Whether or not this is an actual value can be confirmed with @getLastLibErrCode().
400+
*/
401+
uint8_t getHardwareError(uint8_t id);
389402

390403
/**
391404
* @brief It is API for getting data of a DYNAMIXEL control table item.
@@ -441,8 +454,6 @@ class Dynamixel2Arduino : public DYNAMIXEL::Master
441454
bool setPositionPIDGain(uint8_t id, uint16_t p_gain, uint16_t i_gain, uint16_t d_gain);
442455
bool setVelocityPIGain(uint8_t id, uint16_t p_gain, uint16_t i_gain);
443456
bool setFeedForwardGain(uint8_t id, uint16_t fisrt_gain, uint16_t second_gain);
444-
445-
uint8_t getHardwareError(uint8_t id);
446457

447458
// https://github.com/ROBOTIS-GIT/Dynamixel2Arduino/issues/73
448459
uint8_t getOperatingMode(uint8_t id);

0 commit comments

Comments
 (0)