Midnight Sun Firmware
Loading...
Searching...
No Matches
global_enums.h
1#pragma once
2
3/************************************************************************************************
4 * @file global_enums.h
5 *
6 * @brief Header file for global enums which are exported between projects with CAN
7 *
8 * @date 2025-01-12
9 * @author Midnight Sun Team #24 - MSXVI
10 ************************************************************************************************/
11
12/* Standard library Headers */
13#include <stdint.h>
14
15/* Inter-component Headers */
16
17/* Intra-component Headers */
18
25/************************************************************************************************
26 * Shared Global definitions
27 ************************************************************************************************/
28
32typedef enum {
41 VEHICLE_DRIVE_NUM_STATES,
43
47static const char *vehicle_drive_state_strings[VEHICLE_DRIVE_NUM_STATES] = {
50};
51
52#define VEHICLE_DRIVE_STATE_TO_STR(s) (((s) < VEHICLE_DRIVE_NUM_STATES) ? vehicle_drive_state_strings[(s)] : "UNKNOWN")
53
57typedef enum {
63
67#define GLOBAL_SIGNAL_LIGHTS_BLINK_PERIOD_MS 400U
68#define GLOBAL_BPS_LIGHTS_BLINK_PERIOD_MS 200U
69
74typedef enum {
75 ERROR_FLAG_HARDWARE_OVERCURRENT = 0,
76 ERROR_FLAG_SOFTWARE_OVERCURRENT = 1,
77 ERROR_FLAG_DC_BUS_OV = 2,
78 ERROR_FLAG_BAD_HALL_SEQUENCE = 3,
79 ERROR_FLAG_WATCHDOG_CAUSED_RESET = 4,
80 ERROR_FLAG_CFG_READ_ERROR = 6,
81 ERROR_FLAG_UVLO = 6,
82 ERROR_FLAG_DESATURATION_FAULT = 7,
83 ERROR_FLAG_MOTOR_OVER_SPEED = 8,
84 LIMIT_FLAG_OUTPUT_VOLTAGE_PWM = 9,
85 LIMIT_FLAG_MOTOR_CURRENT = 10,
86 LIMIT_FLAG_VELOCITY = 11,
87 LIMIT_FLAG_BUS_CURRENT = 12,
88 LIMIT_FLAG_BUS_VOLTAGE_UPPER = 13,
89 LIMIT_FLAG_BUS_VOLTAGE_LOWER = 14,
90 LIMIT_FLAG_TEMPERATURE = 15,
91 NUM_WS22_MOTOR_FLAGS,
93
95#define ERROR_FLAG_HARDWARE_OVERCURRENT_MASK (1U << ERROR_FLAG_HARDWARE_OVERCURRENT)
97#define ERROR_FLAG_SOFTWARE_OVERCURRENT_MASK (1U << ERROR_FLAG_SOFTWARE_OVERCURRENT)
99#define ERROR_FLAG_DC_BUS_OV_MASK (1U << ERROR_FLAG_DC_BUS_OV)
101#define ERROR_FLAG_BAD_HALL_SEQUENCE_MASK (1U << ERROR_FLAG_BAD_HALL_SEQUENCE)
103#define ERROR_FLAG_WATCHDOG_CAUSED_RESET_MASK (1U << ERROR_FLAG_WATCHDOG_CAUSED_RESET)
105#define ERROR_FLAG_CFG_READ_ERROR_MASK (1U << ERROR_FLAG_CFG_READ_ERROR)
107#define ERROR_FLAG_UVLO_MASK (1U << ERROR_FLAG_UVLO)
109#define ERROR_FLAG_DESATURATION_FAULT_MASK (1U << ERROR_FLAG_DESATURATION_FAULT)
111#define ERROR_FLAG_MOTOR_OVER_SPEED_MASK (1U << ERROR_FLAG_MOTOR_OVER_SPEED)
113#define LIMIT_FLAG_OUTPUT_VOLTAGE_PWM_MASK (1U << LIMIT_FLAG_OUTPUT_VOLTAGE_PWM)
115#define LIMIT_FLAG_MOTOR_CURRENT_MASK (1U << LIMIT_FLAG_MOTOR_CURRENT)
117#define LIMIT_FLAG_VELOCITY_MASK (1U << LIMIT_FLAG_VELOCITY)
119#define LIMIT_FLAG_BUS_CURRENT_MASK (1U << LIMIT_FLAG_BUS_CURRENT)
121#define LIMIT_FLAG_BUS_VOLTAGE_UPPER_MASK (1U << LIMIT_FLAG_BUS_VOLTAGE_UPPER)
123#define LIMIT_FLAG_BUS_VOLTAGE_LOWER_MASK (1U << LIMIT_FLAG_BUS_VOLTAGE_LOWER)
125#define LIMIT_FLAG_TEMPERATURE_MASK (1U << LIMIT_FLAG_TEMPERATURE)
126
128#define IS_EXCLUDED_WS22_CAN_ID(x) ((((x) >= 128U) && ((x) <= 142U)) || ((x) == 151U) || ((x) == 1281U))
129
130/************************************************************************************************
131 * Front Controller Global Definitions
132 ************************************************************************************************/
133
138typedef struct PedalCalibrationData {
139 uint16_t lower_value;
140 uint16_t upper_value;
142
146typedef struct __attribute__((aligned(4))) PedalPersistData {
147 PedalCalibrationData accel_pedal_data_raw;
148 PedalCalibrationData accel_pedal_data_amplified;
149 PedalCalibrationData brake_pedal_data;
150} PedalPersistData;
151
152/************************************************************************************************
153 * Rear Controller Global Definitions
154 ************************************************************************************************/
155
159typedef enum {
171 NUM_BPS_FAULTS
172} BpsFault;
173
175#define BPS_FAULT_OVERVOLTAGE_MASK (1U << BPS_FAULT_OVERVOLTAGE)
177#define BPS_FAULT_UNBALANCE_MASK (1U << BPS_FAULT_UNBALANCE)
179#define BPS_FAULT_OVERTEMP_AMBIENT_MASK (1U << BPS_FAULT_OVERTEMP_AMBIENT)
181#define BPS_FAULT_COMMS_LOSS_AFE_MASK (1U << BPS_FAULT_COMMS_LOSS_AFE)
183#define BPS_FAULT_COMMS_LOSS_CURR_SENSE_MASK (1U << BPS_FAULT_COMMS_LOSS_CURR_SENSE)
185#define BPS_FAULT_OVERTEMP_CELL_MASK (1U << BPS_FAULT_OVERTEMP_CELL)
187#define BPS_FAULT_OVERCURRENT_MASK (1U << BPS_FAULT_OVERCURRENT)
189#define BPS_FAULT_UNDERVOLTAGE_MASK (1U << BPS_FAULT_UNDERVOLTAGE)
191#define BPS_FAULT_KILLSWITCH_MASK (1U << BPS_FAULT_KILLSWITCH)
193#define BPS_FAULT_RELAY_CLOSE_FAILED_MASK (1U << BPS_FAULT_RELAY_CLOSE_FAILED)
195#define BPS_FAULT_DISCONNECTED_MASK (1U << BPS_FAULT_DISCONNECTED)
196
198#define BPS_FAULT_HIGH_PRIORITY_MASK (1U << 15U)
200#define BPS_FAULT_LOW_PRIORITY_MASK (1U << 14U)
201
202/************************************************************************************************
203 * Steering Global Definitions
204 ************************************************************************************************/
205
209typedef enum {
216
220static const char *steering_light_state_strings[STEERING_LIGHTS_NUM_STATES] = { "OFF", "LEFT", "RIGHT", "HAZARD" };
221
222#define STEERING_LIGHT_STATE_TO_STR(s) (((s) < STEERING_LIGHTS_NUM_STATES) ? steering_light_state_strings[(s)] : "UNKNOWN")
223
224typedef enum {
229
233typedef enum {
238
240#define STEERING_CC_INCREASE_MASK (1U << EE_STEERING_CC_INCREASE_BIT)
242#define STEERING_CC_DECREASE_MASK (1U << EE_STEERING_CC_DECREASE_BIT)
244#define STEERING_CC_TOGGLE_MASK (1U << EE_STEERING_CC_TOGGLE_BIT)
245
246/************************************************************************************************
247 * Power Distribution Global Definitions
248 ************************************************************************************************/
249
253typedef enum {
259
Ws22MotorFlags
WS22 motor limit and error flags.
Definition: global_enums.h:74
PDPowerState
Power distribution power state definitions.
Definition: global_enums.h:253
SteeringLightState
Steering lights definitions.
Definition: global_enums.h:209
VehicleDriveState
Vehicle drive states.
Definition: global_enums.h:32
SteeringCruiseControl
Steering cruise control definitions.
Definition: global_enums.h:233
static const char * vehicle_drive_state_strings[VEHICLE_DRIVE_NUM_STATES]
LUT + Macro to help print vehicle drive states.
Definition: global_enums.h:47
BpsLightState
Definition: global_enums.h:224
struct __attribute__((aligned(4))) PedalPersistData
Pedal persist struct.
Definition: global_enums.h:146
static const char * steering_light_state_strings[STEERING_LIGHTS_NUM_STATES]
LUT + Macro to help print steering light states.
Definition: global_enums.h:220
VehiclePowerStates
Vehicle power states.
Definition: global_enums.h:57
BpsFault
Battery fault definitions.
Definition: global_enums.h:159
@ EE_POWER_PRECHARGE_STATE
Definition: global_enums.h:255
@ EE_POWER_OFF_STATE
Definition: global_enums.h:254
@ EE_POWER_DRIVE_STATE
Definition: global_enums.h:256
@ EE_POWER_FAULT_STATE
Definition: global_enums.h:257
@ STEERING_LIGHTS_LEFT_STATE
Definition: global_enums.h:211
@ STEERING_LIGHTS_HAZARD_STATE
Definition: global_enums.h:213
@ STEERING_LIGHTS_NUM_STATES
Definition: global_enums.h:214
@ STEERING_LIGHTS_RIGHT_STATE
Definition: global_enums.h:212
@ STEERING_LIGHTS_OFF_STATE
Definition: global_enums.h:210
@ VEHICLE_DRIVE_STATE_REGEN
Definition: global_enums.h:39
@ VEHICLE_DRIVE_STATE_NEUTRAL
Definition: global_enums.h:34
@ VEHICLE_DRIVE_STATE_DRIVE
Definition: global_enums.h:35
@ VEHICLE_DRIVE_STATE_BRAKE
Definition: global_enums.h:38
@ VEHICLE_DRIVE_STATE_CRUISE
Definition: global_enums.h:37
@ VEHICLE_DRIVE_STATE_INVALID
Definition: global_enums.h:33
@ VEHICLE_DRIVE_STATE_REVERSE
Definition: global_enums.h:36
@ VEHICLE_DRIVE_STATE_FAULT
Definition: global_enums.h:40
@ STEERING_CRUISE_CONTROL_INCREASE_BIT
Definition: global_enums.h:235
@ STEERING_CRUISE_CONTROL_TOGGLE_BIT
Definition: global_enums.h:236
@ STEERING_CRUISE_CONTROL_DECREASE_BIT
Definition: global_enums.h:234
@ NUM_BPS_LIGHT_STATES
Definition: global_enums.h:227
@ BPS_LIGHT_ON_STATE
Definition: global_enums.h:225
@ BPS_LIGHT_OFF_STATE
Definition: global_enums.h:226
@ VEHICLE_POWER_STATE_CHARGE
Definition: global_enums.h:60
@ VEHICLE_POWER_STATE_DRIVE
Definition: global_enums.h:59
@ VEHICLE_POWER_STATE_IDLE
Definition: global_enums.h:58
@ VEHICLE_POWER_STATE_FAULT
Definition: global_enums.h:61
@ BPS_FAULT_UNDERVOLTAGE
Definition: global_enums.h:167
@ BPS_FAULT_UNBALANCE
Definition: global_enums.h:161
@ BPS_FAULT_DISCONNECTED
Definition: global_enums.h:170
@ BPS_FAULT_KILLSWITCH
Definition: global_enums.h:168
@ BPS_FAULT_OVERVOLTAGE
Definition: global_enums.h:160
@ BPS_FAULT_OVERTEMP_AMBIENT
Definition: global_enums.h:162
@ BPS_FAULT_OVERCURRENT
Definition: global_enums.h:166
@ BPS_FAULT_COMMS_LOSS_AFE
Definition: global_enums.h:163
@ BPS_FAULT_OVERTEMP_CELL
Definition: global_enums.h:165
@ BPS_FAULT_COMMS_LOSS_CURR_SENSE
Definition: global_enums.h:164
@ BPS_FAULT_RELAY_CLOSE_FAILED
Definition: global_enums.h:169
Stores data that defines when the pedal is full pressed or unpressed.
Definition: main.c:39
uint16_t upper_value
Definition: global_enums.h:140
uint16_t lower_value
Definition: global_enums.h:139