9#include "target_constants.h"
15 .
name =
"RMD MyActuator (1)" ,
20 .
name =
"RMD MyActuator (2)" ,
70 this->
nodeId = (data & 0x1F) + 1;
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);
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){
virtual uint8_t getSpeedPreset()=0
virtual void setSpeedPreset(uint8_t preset)=0
virtual int32_t addCanFilter(CAN_filter filter)=0
virtual bool sendMessage(CAN_tx_msg &msg)=0
virtual void removeCanFilter(uint8_t filterId)=0
virtual void setSilentMode(bool silent)=0
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)
static ClassIdentifier info
static bool isCreatable()
const ClassIdentifier getInfo()
Command handlers always have class infos. Works well with ChoosableClass.
static ClassIdentifier info
static bool isCreatable()
const ClassIdentifier getInfo()
Command handlers always have class infos. Works well with ChoosableClass.
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)
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]