Files
ODrive/Arduino/ODriveArduino/ODriveEnums.h
Samuel Sadok cc7bbd47f8 add back subcomponent error flags
These flags were previously removed in 5661a3b5ed
2022-04-05 13:10:17 +02:00

204 lines
8.4 KiB
C

#ifndef ODriveEnums_h
#define ODriveEnums_h
/* TODO: This file is dangerous because the enums could potentially change between API versions. Should transmit as part of the JSON.
** To regenerate this file, nagivate to the top level of the ODrive repository and run:
** python Firmware/interface_generator_stub.py --definitions Firmware/odrive-interface.yaml --template tools/arduino_enums_template.j2 --output Arduino/ODriveArduino/ODriveEnums.h
*/
// ODrive.GpioMode
enum GpioMode {
GPIO_MODE_DIGITAL = 0,
GPIO_MODE_DIGITAL_PULL_UP = 1,
GPIO_MODE_DIGITAL_PULL_DOWN = 2,
GPIO_MODE_ANALOG_IN = 3,
GPIO_MODE_UART_A = 4,
GPIO_MODE_UART_B = 5,
GPIO_MODE_UART_C = 6,
GPIO_MODE_CAN_A = 7,
GPIO_MODE_I2C_A = 8,
GPIO_MODE_SPI_A = 9,
GPIO_MODE_PWM = 10,
GPIO_MODE_ENC0 = 11,
GPIO_MODE_ENC1 = 12,
GPIO_MODE_ENC2 = 13,
GPIO_MODE_MECH_BRAKE = 14,
GPIO_MODE_STATUS = 15,
};
// ODrive.StreamProtocolType
enum StreamProtocolType {
STREAM_PROTOCOL_TYPE_FIBRE = 0,
STREAM_PROTOCOL_TYPE_ASCII = 1,
STREAM_PROTOCOL_TYPE_STDOUT = 2,
STREAM_PROTOCOL_TYPE_ASCII_AND_STDOUT = 3,
};
// ODrive.Can.Protocol
enum Protocol {
PROTOCOL_SIMPLE = 0x00000001,
};
// ODrive.Axis.AxisState
enum AxisState {
AXIS_STATE_UNDEFINED = 0,
AXIS_STATE_IDLE = 1,
AXIS_STATE_STARTUP_SEQUENCE = 2,
AXIS_STATE_FULL_CALIBRATION_SEQUENCE = 3,
AXIS_STATE_MOTOR_CALIBRATION = 4,
AXIS_STATE_ENCODER_INDEX_SEARCH = 6,
AXIS_STATE_ENCODER_OFFSET_CALIBRATION = 7,
AXIS_STATE_CLOSED_LOOP_CONTROL = 8,
AXIS_STATE_LOCKIN_SPIN = 9,
AXIS_STATE_ENCODER_DIR_FIND = 10,
AXIS_STATE_HOMING = 11,
AXIS_STATE_ENCODER_HALL_POLARITY_CALIBRATION = 12,
AXIS_STATE_ENCODER_HALL_PHASE_CALIBRATION = 13,
};
// ODrive.Encoder.Mode
enum EncoderMode {
ENCODER_MODE_INCREMENTAL = 0,
ENCODER_MODE_HALL = 1,
ENCODER_MODE_SINCOS = 2,
ENCODER_MODE_SPI_ABS_CUI = 256,
ENCODER_MODE_SPI_ABS_AMS = 257,
ENCODER_MODE_SPI_ABS_AEAT = 258,
ENCODER_MODE_SPI_ABS_RLS = 259,
ENCODER_MODE_SPI_ABS_MA732 = 260,
};
// ODrive.Controller.ControlMode
enum ControlMode {
CONTROL_MODE_VOLTAGE_CONTROL = 0,
CONTROL_MODE_TORQUE_CONTROL = 1,
CONTROL_MODE_VELOCITY_CONTROL = 2,
CONTROL_MODE_POSITION_CONTROL = 3,
};
// ODrive.Controller.InputMode
enum InputMode {
INPUT_MODE_INACTIVE = 0,
INPUT_MODE_PASSTHROUGH = 1,
INPUT_MODE_VEL_RAMP = 2,
INPUT_MODE_POS_FILTER = 3,
INPUT_MODE_MIX_CHANNELS = 4,
INPUT_MODE_TRAP_TRAJ = 5,
INPUT_MODE_TORQUE_RAMP = 6,
INPUT_MODE_MIRROR = 7,
INPUT_MODE_TUNING = 8,
};
// ODrive.Motor.MotorType
enum MotorType {
MOTOR_TYPE_HIGH_CURRENT = 0,
MOTOR_TYPE_GIMBAL = 2,
MOTOR_TYPE_ACIM = 3,
};
// ODrive.Error
enum ODriveError {
ODRIVE_ERROR_NONE = 0x00000000,
ODRIVE_ERROR_CONTROL_ITERATION_MISSED = 0x00000001,
ODRIVE_ERROR_DC_BUS_UNDER_VOLTAGE = 0x00000002,
ODRIVE_ERROR_DC_BUS_OVER_VOLTAGE = 0x00000004,
ODRIVE_ERROR_DC_BUS_OVER_REGEN_CURRENT = 0x00000008,
ODRIVE_ERROR_DC_BUS_OVER_CURRENT = 0x00000010,
ODRIVE_ERROR_BRAKE_DEADTIME_VIOLATION = 0x00000020,
ODRIVE_ERROR_BRAKE_DUTY_CYCLE_NAN = 0x00000040,
ODRIVE_ERROR_INVALID_BRAKE_RESISTANCE = 0x00000080,
};
// ODrive.Can.Error
enum CanError {
CAN_ERROR_NONE = 0x00000000,
CAN_ERROR_DUPLICATE_CAN_IDS = 0x00000001,
};
// ODrive.Axis.Error
enum AxisError {
AXIS_ERROR_NONE = 0x00000000,
AXIS_ERROR_INVALID_STATE = 0x00000001,
AXIS_ERROR_MOTOR_FAILED = 0x00000040,
AXIS_ERROR_SENSORLESS_ESTIMATOR_FAILED = 0x00000080,
AXIS_ERROR_ENCODER_FAILED = 0x00000100,
AXIS_ERROR_CONTROLLER_FAILED = 0x00000200,
AXIS_ERROR_WATCHDOG_TIMER_EXPIRED = 0x00000800,
AXIS_ERROR_MIN_ENDSTOP_PRESSED = 0x00001000,
AXIS_ERROR_MAX_ENDSTOP_PRESSED = 0x00002000,
AXIS_ERROR_ESTOP_REQUESTED = 0x00004000,
AXIS_ERROR_HOMING_WITHOUT_ENDSTOP = 0x00020000,
AXIS_ERROR_OVER_TEMP = 0x00040000,
AXIS_ERROR_UNKNOWN_POSITION = 0x00080000,
};
// ODrive.Motor.Error
enum MotorError {
MOTOR_ERROR_NONE = 0x00000000,
MOTOR_ERROR_PHASE_RESISTANCE_OUT_OF_RANGE = 0x00000001,
MOTOR_ERROR_PHASE_INDUCTANCE_OUT_OF_RANGE = 0x00000002,
MOTOR_ERROR_DRV_FAULT = 0x00000008,
MOTOR_ERROR_CONTROL_DEADLINE_MISSED = 0x00000010,
MOTOR_ERROR_MODULATION_MAGNITUDE = 0x00000080,
MOTOR_ERROR_CURRENT_SENSE_SATURATION = 0x00000400,
MOTOR_ERROR_CURRENT_LIMIT_VIOLATION = 0x00001000,
MOTOR_ERROR_MODULATION_IS_NAN = 0x00010000,
MOTOR_ERROR_MOTOR_THERMISTOR_OVER_TEMP = 0x00020000,
MOTOR_ERROR_FET_THERMISTOR_OVER_TEMP = 0x00040000,
MOTOR_ERROR_TIMER_UPDATE_MISSED = 0x00080000,
MOTOR_ERROR_CURRENT_MEASUREMENT_UNAVAILABLE = 0x00100000,
MOTOR_ERROR_CONTROLLER_FAILED = 0x00200000,
MOTOR_ERROR_I_BUS_OUT_OF_RANGE = 0x00400000,
MOTOR_ERROR_BRAKE_RESISTOR_DISARMED = 0x00800000,
MOTOR_ERROR_SYSTEM_LEVEL = 0x01000000,
MOTOR_ERROR_BAD_TIMING = 0x02000000,
MOTOR_ERROR_UNKNOWN_PHASE_ESTIMATE = 0x04000000,
MOTOR_ERROR_UNKNOWN_PHASE_VEL = 0x08000000,
MOTOR_ERROR_UNKNOWN_TORQUE = 0x10000000,
MOTOR_ERROR_UNKNOWN_CURRENT_COMMAND = 0x20000000,
MOTOR_ERROR_UNKNOWN_CURRENT_MEASUREMENT = 0x40000000,
MOTOR_ERROR_UNKNOWN_VBUS_VOLTAGE = 0x80000000,
MOTOR_ERROR_UNKNOWN_VOLTAGE_COMMAND = 0x100000000,
MOTOR_ERROR_UNKNOWN_GAINS = 0x200000000,
MOTOR_ERROR_CONTROLLER_INITIALIZING = 0x400000000,
MOTOR_ERROR_UNBALANCED_PHASES = 0x800000000,
};
// ODrive.Controller.Error
enum ControllerError {
CONTROLLER_ERROR_NONE = 0x00000000,
CONTROLLER_ERROR_OVERSPEED = 0x00000001,
CONTROLLER_ERROR_INVALID_INPUT_MODE = 0x00000002,
CONTROLLER_ERROR_UNSTABLE_GAIN = 0x00000004,
CONTROLLER_ERROR_INVALID_MIRROR_AXIS = 0x00000008,
CONTROLLER_ERROR_INVALID_LOAD_ENCODER = 0x00000010,
CONTROLLER_ERROR_INVALID_ESTIMATE = 0x00000020,
CONTROLLER_ERROR_INVALID_CIRCULAR_RANGE = 0x00000040,
CONTROLLER_ERROR_SPINOUT_DETECTED = 0x00000080,
};
// ODrive.Encoder.Error
enum EncoderError {
ENCODER_ERROR_NONE = 0x00000000,
ENCODER_ERROR_UNSTABLE_GAIN = 0x00000001,
ENCODER_ERROR_CPR_POLEPAIRS_MISMATCH = 0x00000002,
ENCODER_ERROR_NO_RESPONSE = 0x00000004,
ENCODER_ERROR_UNSUPPORTED_ENCODER_MODE = 0x00000008,
ENCODER_ERROR_ILLEGAL_HALL_STATE = 0x00000010,
ENCODER_ERROR_INDEX_NOT_FOUND_YET = 0x00000020,
ENCODER_ERROR_ABS_SPI_TIMEOUT = 0x00000040,
ENCODER_ERROR_ABS_SPI_COM_FAIL = 0x00000080,
ENCODER_ERROR_ABS_SPI_NOT_READY = 0x00000100,
ENCODER_ERROR_HALL_NOT_CALIBRATED_YET = 0x00000200,
};
// ODrive.SensorlessEstimator.Error
enum SensorlessEstimatorError {
SENSORLESS_ESTIMATOR_ERROR_NONE = 0x00000000,
SENSORLESS_ESTIMATOR_ERROR_UNSTABLE_GAIN = 0x00000001,
SENSORLESS_ESTIMATOR_ERROR_UNKNOWN_CURRENT_MEASUREMENT = 0x00000002,
};
#endif