42 VEHICLE_DRIVE_NUM_STATES,
53#define VEHICLE_DRIVE_STATE_TO_STR(s) (((s) < VEHICLE_DRIVE_NUM_STATES) ? vehicle_drive_state_strings[(s)] : "UNKNOWN")
71#define GLOBAL_LIGHTS_BLINK_FREQUENCY_HZ 1.5f
72#define GLOBAL_LIGHTS_BLINK_PERIOD_MS ((uint32_t)(1000.0f / (2.0f * GLOBAL_LIGHTS_BLINK_FREQUENCY_HZ)))
75#define GLOBAL_SIGNAL_LIGHTS_BLINK_PERIOD_MS GLOBAL_LIGHTS_BLINK_PERIOD_MS
76#define GLOBAL_BPS_LIGHTS_BLINK_PERIOD_MS GLOBAL_LIGHTS_BLINK_PERIOD_MS
83 ERROR_FLAG_HARDWARE_OVERCURRENT = 0,
84 ERROR_FLAG_SOFTWARE_OVERCURRENT = 1,
85 ERROR_FLAG_DC_BUS_OV = 2,
86 ERROR_FLAG_BAD_HALL_SEQUENCE = 3,
87 ERROR_FLAG_WATCHDOG_CAUSED_RESET = 4,
88 ERROR_FLAG_CFG_READ_ERROR = 6,
90 ERROR_FLAG_DESATURATION_FAULT = 7,
91 ERROR_FLAG_MOTOR_OVER_SPEED = 8,
92 LIMIT_FLAG_OUTPUT_VOLTAGE_PWM = 9,
93 LIMIT_FLAG_MOTOR_CURRENT = 10,
94 LIMIT_FLAG_VELOCITY = 11,
95 LIMIT_FLAG_BUS_CURRENT = 12,
96 LIMIT_FLAG_BUS_VOLTAGE_UPPER = 13,
97 LIMIT_FLAG_BUS_VOLTAGE_LOWER = 14,
98 LIMIT_FLAG_TEMPERATURE = 15,
103#define ERROR_FLAG_HARDWARE_OVERCURRENT_MASK (1U << ERROR_FLAG_HARDWARE_OVERCURRENT)
105#define ERROR_FLAG_SOFTWARE_OVERCURRENT_MASK (1U << ERROR_FLAG_SOFTWARE_OVERCURRENT)
107#define ERROR_FLAG_DC_BUS_OV_MASK (1U << ERROR_FLAG_DC_BUS_OV)
109#define ERROR_FLAG_BAD_HALL_SEQUENCE_MASK (1U << ERROR_FLAG_BAD_HALL_SEQUENCE)
111#define ERROR_FLAG_WATCHDOG_CAUSED_RESET_MASK (1U << ERROR_FLAG_WATCHDOG_CAUSED_RESET)
113#define ERROR_FLAG_CFG_READ_ERROR_MASK (1U << ERROR_FLAG_CFG_READ_ERROR)
115#define ERROR_FLAG_UVLO_MASK (1U << ERROR_FLAG_UVLO)
117#define ERROR_FLAG_DESATURATION_FAULT_MASK (1U << ERROR_FLAG_DESATURATION_FAULT)
119#define ERROR_FLAG_MOTOR_OVER_SPEED_MASK (1U << ERROR_FLAG_MOTOR_OVER_SPEED)
121#define LIMIT_FLAG_OUTPUT_VOLTAGE_PWM_MASK (1U << LIMIT_FLAG_OUTPUT_VOLTAGE_PWM)
123#define LIMIT_FLAG_MOTOR_CURRENT_MASK (1U << LIMIT_FLAG_MOTOR_CURRENT)
125#define LIMIT_FLAG_VELOCITY_MASK (1U << LIMIT_FLAG_VELOCITY)
127#define LIMIT_FLAG_BUS_CURRENT_MASK (1U << LIMIT_FLAG_BUS_CURRENT)
129#define LIMIT_FLAG_BUS_VOLTAGE_UPPER_MASK (1U << LIMIT_FLAG_BUS_VOLTAGE_UPPER)
131#define LIMIT_FLAG_BUS_VOLTAGE_LOWER_MASK (1U << LIMIT_FLAG_BUS_VOLTAGE_LOWER)
133#define LIMIT_FLAG_TEMPERATURE_MASK (1U << LIMIT_FLAG_TEMPERATURE)
180#define BPS_FAULT_OVERVOLTAGE_MASK (1U << BPS_FAULT_OVERVOLTAGE)
182#define BPS_FAULT_UNBALANCE_MASK (1U << BPS_FAULT_UNBALANCE)
184#define BPS_FAULT_OVERTEMP_AMBIENT_MASK (1U << BPS_FAULT_OVERTEMP_AMBIENT)
186#define BPS_FAULT_COMMS_LOSS_AFE_MASK (1U << BPS_FAULT_COMMS_LOSS_AFE)
188#define BPS_FAULT_COMMS_LOSS_CURR_SENSE_MASK (1U << BPS_FAULT_COMMS_LOSS_CURR_SENSE)
190#define BPS_FAULT_OVERTEMP_CELL_MASK (1U << BPS_FAULT_OVERTEMP_CELL)
192#define BPS_FAULT_OVERCURRENT_MASK (1U << BPS_FAULT_OVERCURRENT)
194#define BPS_FAULT_UNDERVOLTAGE_MASK (1U << BPS_FAULT_UNDERVOLTAGE)
196#define BPS_FAULT_KILLSWITCH_MASK (1U << BPS_FAULT_KILLSWITCH)
198#define BPS_FAULT_RELAY_CLOSE_FAILED_MASK (1U << BPS_FAULT_RELAY_CLOSE_FAILED)
200#define BPS_FAULT_DISCONNECTED_MASK (1U << BPS_FAULT_DISCONNECTED)
203#define BPS_FAULT_HIGH_PRIORITY_MASK (1U << 15U)
205#define BPS_FAULT_LOW_PRIORITY_MASK (1U << 14U)
247static_assert(
sizeof(
BpsFaultData) == 8,
"BpsFaultData must be 8 bytes");
256static_assert(
sizeof(
BpsFaultRecord) == 16,
"BpsFaultRecord must be 16 bytes");
278#define STEERING_LIGHT_STATE_TO_STR(s) (((s) < STEERING_LIGHTS_NUM_STATES) ? steering_light_state_strings[(s)] : "UNKNOWN")
296#define STEERING_CC_INCREASE_MASK (1U << EE_STEERING_CC_INCREASE_BIT)
298#define STEERING_CC_DECREASE_MASK (1U << EE_STEERING_CC_DECREASE_BIT)
300#define STEERING_CC_TOGGLE_MASK (1U << EE_STEERING_CC_TOGGLE_BIT)
307#define IS_WS22_CAN_ID(x) (((x) >= 0x80U && (x) <= 0x8BU) || (x) == 0x501U)
Ws22MotorFlags
WS22 motor limit and error flags.
Definition: global_enums.h:82
PDPowerState
Power distribution power state definitions.
Definition: global_enums.h:316
SteeringLightState
Steering lights definitions.
Definition: global_enums.h:265
VehicleDriveState
Vehicle drive states.
Definition: global_enums.h:33
SteeringCruiseControl
Steering cruise control definitions.
Definition: global_enums.h:289
static const char * vehicle_drive_state_strings[VEHICLE_DRIVE_NUM_STATES]
LUT + Macro to help print vehicle drive states.
Definition: global_enums.h:48
BpsLightState
Definition: global_enums.h:280
static const char * steering_light_state_strings[STEERING_LIGHTS_NUM_STATES]
LUT + Macro to help print steering light states.
Definition: global_enums.h:276
VehiclePowerStates
Vehicle power states.
Definition: global_enums.h:58
BpsFault
Battery fault definitions.
Definition: global_enums.h:164
@ EE_POWER_PRECHARGE_STATE
Definition: global_enums.h:318
@ EE_POWER_OFF_STATE
Definition: global_enums.h:317
@ EE_POWER_DRIVE_STATE
Definition: global_enums.h:319
@ EE_POWER_FAULT_STATE
Definition: global_enums.h:320
@ STEERING_LIGHTS_LEFT_STATE
Definition: global_enums.h:267
@ STEERING_LIGHTS_HAZARD_STATE
Definition: global_enums.h:269
@ STEERING_LIGHTS_NUM_STATES
Definition: global_enums.h:270
@ STEERING_LIGHTS_RIGHT_STATE
Definition: global_enums.h:268
@ STEERING_LIGHTS_OFF_STATE
Definition: global_enums.h:266
@ VEHICLE_DRIVE_STATE_REGEN
Definition: global_enums.h:40
@ VEHICLE_DRIVE_STATE_NEUTRAL
Definition: global_enums.h:35
@ VEHICLE_DRIVE_STATE_DRIVE
Definition: global_enums.h:36
@ VEHICLE_DRIVE_STATE_BRAKE
Definition: global_enums.h:39
@ VEHICLE_DRIVE_STATE_CRUISE
Definition: global_enums.h:38
@ VEHICLE_DRIVE_STATE_INVALID
Definition: global_enums.h:34
@ VEHICLE_DRIVE_STATE_REVERSE
Definition: global_enums.h:37
@ VEHICLE_DRIVE_STATE_FAULT
Definition: global_enums.h:41
@ STEERING_CRUISE_CONTROL_INCREASE_BIT
Definition: global_enums.h:291
@ STEERING_CRUISE_CONTROL_TOGGLE_BIT
Definition: global_enums.h:292
@ STEERING_CRUISE_CONTROL_DECREASE_BIT
Definition: global_enums.h:290
@ NUM_BPS_LIGHT_STATES
Definition: global_enums.h:283
@ BPS_LIGHT_ON_STATE
Definition: global_enums.h:281
@ BPS_LIGHT_OFF_STATE
Definition: global_enums.h:282
@ VEHICLE_POWER_STATE_CHARGE
Definition: global_enums.h:61
@ VEHICLE_POWER_STATE_DRIVE
Definition: global_enums.h:60
@ VEHICLE_POWER_STATE_IDLE
Definition: global_enums.h:59
@ VEHICLE_POWER_STATE_FAULT
Definition: global_enums.h:62
@ BPS_FAULT_UNDERVOLTAGE
Definition: global_enums.h:172
@ BPS_FAULT_UNBALANCE
Definition: global_enums.h:166
@ BPS_FAULT_DISCONNECTED
Definition: global_enums.h:175
@ BPS_FAULT_KILLSWITCH
Definition: global_enums.h:173
@ BPS_FAULT_OVERVOLTAGE
Definition: global_enums.h:165
@ BPS_FAULT_OVERTEMP_AMBIENT
Definition: global_enums.h:167
@ BPS_FAULT_OVERCURRENT
Definition: global_enums.h:171
@ BPS_FAULT_COMMS_LOSS_AFE
Definition: global_enums.h:168
@ BPS_FAULT_OVERTEMP_CELL
Definition: global_enums.h:170
@ BPS_FAULT_COMMS_LOSS_CURR_SENSE
Definition: global_enums.h:169
@ BPS_FAULT_RELAY_CLOSE_FAILED
Definition: global_enums.h:174
Latched BPS fault state, persisted on the rear controller.
Definition: global_enums.h:252
BpsFaultData extra_info
Definition: global_enums.h:254
uint32_t fault_code
Definition: global_enums.h:253
Stores data that defines when the pedal is full pressed or unpressed.
Definition: main.c:39
uint16_t upper_value
Definition: global_enums.h:145
uint16_t lower_value
Definition: global_enums.h:144
Per-fault detail snapshot for the BPS fault code.
Definition: global_enums.h:213
uint8_t min_cell_index
Definition: global_enums.h:222
uint8_t max_cell_index
Definition: global_enums.h:221
int16_t temperature_c
Definition: global_enums.h:231
uint16_t min_cell_voltage
Definition: global_enums.h:224
uint16_t max_cell_voltage
Definition: global_enums.h:223
float current_a
Definition: global_enums.h:236
uint16_t cell_voltage
Definition: global_enums.h:216
uint8_t cell_index
Definition: global_enums.h:214
Definition: global_enums.h:240
BpsCellFaultData cell
Definition: global_enums.h:242
uint64_t raw
Definition: global_enums.h:241
BpsCurrentFaultData current
Definition: global_enums.h:245
BpsUnbalanceFaultData unbalance
Definition: global_enums.h:243
BpsTempFaultData temp
Definition: global_enums.h:244