8#ifndef USEREXTENSIONS_SRC_VESCCAN_H_
9#define USEREXTENSIONS_SRC_VESCCAN_H_
21#define VESC_THREAD_MEM 512
22#define VESC_THREAD_PRIO 25
23#define BUFFER_RX_SIZE 64
25#define FW_MIN_RELEASE ((5 << 16) | (3 << 8) | 51)
58 offbcanid,
vesccanid,
canspd,
errorflags,
vescstate,
voltage,
encrate,
pos,
torque,
forcePosRead,
useEncoder,
offset
62 uint16_t
canId = ADR_VESC1_CANID;
63 uint16_t
data = ADR_VESC1_DATA;
93 uint32_t
getCpr()
override;
104 return "VESC CAN interface";
@ VESC_STATE_INCOMPATIBLE
@ CAN_PACKET_FILL_RX_BUFFER
@ CAN_PACKET_PROCESS_RX_BUFFER
@ CAN_PACKET_SET_CURRENT_REL
@ CAN_PACKET_POLL_ROTOR_POS
@ CAN_PACKET_PROCESS_SHORT_BUFFER
@ CAN_PACKET_FILL_RX_BUFFER_LONG
@ COMM_GET_VALUES_SELECTIVE
const ClassIdentifier getInfo()
Command handlers always have class infos. Works well with ChoosableClass.
static ClassIdentifier info
static bool isCreatable()
static bool isCreatable()
static ClassIdentifier info
const ClassIdentifier getInfo()
Command handlers always have class infos. Works well with ChoosableClass.
float buffer_get_float16(const uint8_t *buffer, float scale, int32_t *index)
uint8_t buffer_rx[BUFFER_RX_SIZE]
bool motorReady() override
void decodeEncoderPosition(float newPos)
volatile uint8_t vescErrorFlag
int32_t getPos() override
void buffer_append_int32(uint8_t *buffer, int32_t number, int32_t *index)
void setTorque(float torque)
int32_t buffer_get_int32(const uint8_t *buffer, int32_t *index)
uint32_t getCpr() override
virtual std::string getHelpstring()
void askPositionEncoder()
VescFlashAddrs flashAddrs
void stopMotor() override
volatile uint32_t encCount
volatile uint32_t lastVescResponse
void decode_buffer(uint8_t *buffer, uint8_t len)
void turn(int16_t power) override
int16_t buffer_get_int16(const uint8_t *buffer, int32_t *index)
uint32_t buffer_get_uint32(const uint8_t *buffer, int32_t *index)
float buffer_get_float32(const uint8_t *buffer, float scale, int32_t *index)
float getPos_f() override
void buffer_append_uint32(uint8_t *buffer, uint32_t number, int32_t *index)
void sendMsg(uint8_t cmd, uint8_t *buffer, uint8_t len)
bool isFirmwareCompatible()
static bool crcTableInitialized
static const uint16_t crcpoly
void saveFlash() override
bool hasIntegratedEncoder() override
static std::array< uint16_t, 256 > crc16_tab
void startMotor() override
void restoreFlash() override
CommandStatus command(const ParsedCommand &cmd, std::vector< CommandReply > &replies)
void setPos(int32_t pos) override
void buffer_append_float32(uint8_t *buffer, float number, float scale, int32_t *index)
Encoder * getEncoder() override
EncoderType getEncoderType() override
volatile uint32_t encStartPeriod
void canRxPendCallback(CANPort *port, CAN_rx_msg &msg) override
void setAddress(uint8_t address)