diff --git a/src/Dynamixel2Arduino.cpp b/src/Dynamixel2Arduino.cpp index dc53fdf..7e0625e 100644 --- a/src/Dynamixel2Arduino.cpp +++ b/src/Dynamixel2Arduino.cpp @@ -225,6 +225,27 @@ bool Dynamixel2Arduino::setID(uint8_t id, uint8_t new_id) return writeControlTableItem(ControlTableItem::ID, id, new_id); } +bool Dynamixel2Arduino::setDirectionToNormal(uint8_t id){ + + return writeControlTableItem(ControlTableItem::DRIVE_MODE, id, 0x80); +} +bool Dynamixel2Arduino::setDirectionToReverse(uint8_t id){ + + return writeControlTableItem(ControlTableItem::DRIVE_MODE, id, 0x81); + +} +bool Dynamixel2Arduino::setDirection(uint8_t id, bool dir){ + + bool ret = false; + if(dir){ + ret = setDirectionToNormal(id); + }else{ + ret = setDirectionToReverse(id); + } + return ret; +} + + bool Dynamixel2Arduino::setProtocol(uint8_t id, float version) { uint8_t ver_idx; @@ -886,7 +907,12 @@ bool Dynamixel2Arduino::writeControlTableItem(uint8_t item_idx, uint8_t id, int3 return ret; } +uint8_t Dynamixel2Arduino::getHardwareError(uint8_t id) +{ + int32_t ret = readControlTableItem(ControlTableItem::HARDWARE_ERROR_STATUS, id); + return (uint8_t)ret; +} /* Private Member Function */ diff --git a/src/Dynamixel2Arduino.h b/src/Dynamixel2Arduino.h index 29a6b52..b79219b 100644 --- a/src/Dynamixel2Arduino.h +++ b/src/Dynamixel2Arduino.h @@ -425,12 +425,13 @@ class Dynamixel2Arduino : public DYNAMIXEL::Master bool writeControlTableItem(uint8_t item_idx, uint8_t id, int32_t data, uint32_t timeout = 100); - -#if 0 //TODO + uint8_t getHardwareError(uint8_t id); bool setDirectionToNormal(uint8_t id); bool setDirectionToReverse(uint8_t id); bool setDirection(uint8_t id, bool dir); +#if 0 //TODO + bool setProfileBase(uint8_t id, uint8_t base); bool setProfileToVelocityBased(uint8_t id); bool setProfileToTimeBased(uint8_t id); @@ -441,8 +442,6 @@ class Dynamixel2Arduino : public DYNAMIXEL::Master bool setPositionPIDGain(uint8_t id, uint16_t p_gain, uint16_t i_gain, uint16_t d_gain); bool setVelocityPIGain(uint8_t id, uint16_t p_gain, uint16_t i_gain); bool setFeedForwardGain(uint8_t id, uint16_t fisrt_gain, uint16_t second_gain); - - uint8_t getHardwareError(uint8_t id); // https://github.com/ROBOTIS-GIT/Dynamixel2Arduino/issues/73 uint8_t getOperatingMode(uint8_t id);