|
|
@ -74,6 +74,17 @@ bool FeiTeServoMotor::getTorqueSwitch(uint8_t id, bool& on) { |
|
|
|
bool FeiTeServoMotor::getNowPos(uint8_t id, int16_t& pos) { return read_s16(id, kRegServoCurrentPos, 15, pos); } |
|
|
|
bool FeiTeServoMotor::setTargetPos(uint8_t id, int16_t pos) { return write_s16(id, kRegServoTargetPos, 15, pos); } |
|
|
|
|
|
|
|
bool FeiTeServoMotor::triggerAysncWrite(uint8_t id) { |
|
|
|
cmd_header_t* cmd_header = (cmd_header_t*)m_txbuf; |
|
|
|
cmd_header->header = 0xffff; |
|
|
|
cmd_header->id = id; |
|
|
|
cmd_header->len = 2; |
|
|
|
cmd_header->cmd = 5; |
|
|
|
cmd_header->data[0] = checksum((uint8_t*)cmd_header, sizeof(cmd_header_t) + 1); |
|
|
|
HAL_UART_Transmit(m_uart, m_txbuf, sizeof(cmd_header_t) + 1, 1000); |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
bool FeiTeServoMotor::reCalibration(int id, int16_t pos) { |
|
|
|
if (pos < 0 || pos > 4095) { |
|
|
|
ZLOGE(TAG, "reCalibration pos:%d out of range", pos); |
|
|
|