9#include "target_constants.h"
15 .name =
"RMD MyActuator (1)" ,
20 .name =
"RMD MyActuator (2)" ,
51 if(
port->getSpeedPreset() < 3){
52 port->setSpeedPreset(3);
55 this->
port->setSilentMode(
false);
57 this->
port->takePort();
87 uint16_t data1 = (this->
nodeId-1) & 0x1F;
128 uint32_t filter_id = (
nodeId + 0x240);
129 uint32_t filter_mask = 0x3FF;
152 return static_cast<Encoder*
>(
this);
182 if(!
port->sendMessage(msg)){
188 std::array<uint8_t,8>
data = {0};
206 std::array<uint8_t,8>
data{0xA1,0,0,0,(uint8_t)(
torque & 0xff),(uint8_t)((
torque >> 8) & 0xff),0,0};
236 std::array<uint8_t,8>
data{0xB6,cmd,(uint8_t)(enable & 1),(uint8_t)(interval_10ms & 0xff),(uint8_t)((interval_10ms >> 8) & 0xff),0,0,0};
245 uint8_t cmd = msg.
data[0];
251 int16_t speed = (msg.
data[4] | (msg.
data[5] << 8));
252 int16_t angle = (msg.
data[6] | (msg.
data[7] << 8));
253 uint32_t ustime =
micros();
267 int32_t
pos = (msg.
data[4] | (msg.
data[5] << 8) | (msg.
data[6] << 16) | (msg.
data[7] << 24));
339 replies.emplace_back(this->
nodeId);
341 if(cmd.
val != this->nodeId){
void registerCommand(const char *cmd, const ID cmdid, const char *help=nullptr, uint32_t flags=0)
static CommandStatus handleGetSet(const ParsedCommand &cmd, std::vector< CommandReply > &replies, TVal &value)
CommandHandler(const char *clsname, uint16_t clsid, uint8_t instance=0)
static ClassIdentifier info
static bool isCreatable()
const ClassIdentifier getInfo()
static ClassIdentifier info
static bool isCreatable()
const ClassIdentifier getInfo()
const uint32_t angleUpdateMs
bool requestConstantReportEnable
RmdMotorCAN(uint8_t instance)
void sendCmd(uint8_t cmd)
int32_t getPos() override
void sendMsg(std::array< uint8_t, 8 > &data, uint8_t len=8)
uint32_t getCpr() override
uint32_t lastTorqueStatusUpdate_us
void stopMotor() override
void canRxPendCallback(CANPort *port, CAN_rx_msg &msg) override
void turn(int16_t power) override
void saveFlash() override
void updateRequestMode(bool activerequests)
void errorCb(ErrorStatus &errors)
void setPos(int32_t pos) override
void setTorque(int16_t torque)
void requestConstantReports(uint8_t cmd, bool enable, uint16_t interval_10ms)
void startMotor() override
CommandStatus command(const ParsedCommand &cmd, std::vector< CommandReply > &replies) override
Encoder * getEncoder() override
EncoderType getEncoderType() override
void restoreFlash() override
void Delay(const TickType_t Delay)
Thread(const std::string Name, uint16_t StackDepth, UBaseType_t Priority)
static struct @024127060247016123033304002117326322243354210111 data
bool Flash_Write(uint16_t adr, uint16_t dat)
bool Flash_Read(uint16_t adr, uint16_t *buf, bool checkempty=true)
static void * memcpy(void *dst, const void *src, size_t n)
uint8_t data[CAN_MSGBUFSIZE]
uint8_t data[CAN_MSGBUFSIZE]