13 .
name =
"CAN Analog" ,
51 uint16_t conf1 =
canId & 0x7FF;
52 conf1 |= (
axes & 0xF) << 11;
83 replies.emplace_back(this->
axes);
90 replies.emplace_back(this->
maxAxes);
95 replies.emplace_back(this->
canId);
97 canId = std::min<uint32_t>((cmd.
val) & 0x7ff,0x7ff-(this->axes/4));
110 uint32_t
id = (msg.
header.
id) & 0x7FF;
115 for(uint8_t packet = 0; packet <
packets ; packet++){
116 if(
id != this->
canId+packet){
119 for(uint8_t i = 0; i < 4 && (i + packet*4) <
axes && (i*2+1) < msg.
header.
length; i++) {
120 this->
buf[i + packet*4] = msg.
data[i*2] | (msg.
data[i*2+1] << 8);
std::vector< int32_t > buf
virtual int32_t addCanFilter(CAN_filter filter)=0
virtual void removeCanFilter(uint8_t filterId)=0
static ClassIdentifier info
const ClassIdentifier getInfo()
void setAxisNum(uint8_t num)
void canRxPendCallback(CANPort *port, CAN_rx_msg &msg) override
CommandStatus command(const ParsedCommand &cmd, std::vector< CommandReply > &replies)
CanAnalogBase(uint8_t maxAxes=8)
void registerCommand(const char *cmd, const ID cmdid, const char *help=nullptr, uint32_t flags=0)
bool Flash_Write(uint16_t adr, uint16_t dat)
bool Flash_Read(uint16_t adr, uint16_t *buf, bool checkempty=true)
uint8_t data[CAN_MSGBUFSIZE]