Midnight Sun Firmware
Loading...
Searching...
No Matches
steering.h
1#pragma once
2
3/************************************************************************************************
4 * @file steering.h
5 *
6 * @brief Header file for steering
7 *
8 * @date 2025-07-09
9 * @author Midnight Sun Team #24 - MSXVI
10 ************************************************************************************************/
11
12/* Standard library Headers */
13#include <stdbool.h>
14#include <stdint.h>
15
16/* Inter-component Headers */
17#include "display_defs.h"
18#include "global_enums.h"
19#include "ws22_motor_can.h"
20
21/* Intra-component Headers */
22#include "status.h"
23#include "tasks.h"
24
31/* Forward declarations */
32struct ButtonManager;
33struct ButtonLEDManager;
35
37#define STEERING_BUTTON_DEBOUNCE_PERIOD_MS 5U
38
40#define STEERING_CRUISE_MAX_SPEED_KMH 1000U // 80
41
43#define STEERING_CRUISE_MIN_SPEED_KMH 0U // 40
44
48typedef enum {
49 STEERING_BUTTON_HAZARDS,
50 STEERING_BUTTON_DRIVE,
51 STEERING_BUTTON_NEUTRAL,
52 STEERING_BUTTON_REVERSE,
53
54 STEERING_BUTTON_REGEN,
55
56 STEERING_BUTTON_LEFT_LIGHT,
57 STEERING_BUTTON_RIGHT_LIGHT,
58
59 STEERING_BUTTON_HORN,
60
61 STEERING_BUTTON_CRUISE_CONTROL_UP,
62 STEERING_BUTTON_CRUISE_CONTROL_DOWN,
63
64 NUM_STEERING_BUTTONS,
66
70typedef struct {
74
78typedef struct {
79 float state_of_charge;
80 uint16_t cell_voltages[36];
84 int16_t dcdc_voltage;
85 int16_t dcdc_current;
86 int16_t aux_voltage;
87 int16_t aux_current;
93 uint16_t max_cell_temp;
95 uint16_t thermistor_temp_c[NUMBER_OF_THERMISTORS];
99 uint16_t bps_fault;
104 VehicleDriveState drive_state;
107 uint8_t brake_enabled;
108 uint8_t regen_enabled;
109 uint8_t precharge_complete;
110
111 TickType_t display_rx_medium_last_start;
112 int64_t power_usage;
114
136
144StatusCode steering_init(SteeringStorage *storage, SteeringConfig *config, Ws22MotorCanConfig *motor_can_config);
145
146// /**
147// * @brief Force BPS protection off (SECURE MODE OFF) regardless of the current state
148// * @details Broadcasts the disabled BPS-enable state to the rear controller and syncs the menu's
149// * mirrored SECURE MODE label. Used when the driver acknowledges a BPS fault by leaving the
150// * fault takeover screen.
151// * @return STATUS_CODE_OK on success, error otherwise
152// */
153// StatusCode steering_force_disable_bps(void);
154
VehicleDriveState
Vehicle drive states.
Definition global_enums.h:33
StatusCode
StatusCodes for various errors.
Definition status.h:27
StatusCode steering_init(SteeringStorage *storage, SteeringConfig *config, Ws22MotorCanConfig *motor_can_config)
Initialize the steering interface.
Definition steering.c:92
SteeringButtons
Steering buttons.
Definition steering.h:48
Definition button_led_manager.h:57
Button Manager structure.
Definition button_manager.h:32
Data for the display, CAN RX or internal.
Definition steering.h:78
int16_t vehicle_velocity
Definition steering.h:82
int16_t dcdc_current
Definition steering.h:85
float pack_current
Definition steering.h:90
uint8_t pedal_percentage
Definition steering.h:105
int16_t aux_voltage
Definition steering.h:86
uint16_t max_cell_voltage_mv
Definition steering.h:92
bool bps_fault_live
Definition steering.h:101
int16_t dcdc_voltage
Definition steering.h:84
uint8_t bps_fault_cell
Definition steering.h:100
BpsFaultData bps_fault_data
Definition steering.h:102
uint8_t brake_percentage
Definition steering.h:106
uint16_t bps_fault
Definition steering.h:99
uint16_t min_cell_voltage_mv
Definition steering.h:91
float pack_voltage
Definition steering.h:89
int16_t aux_current
Definition steering.h:87
uint16_t max_cell_temp
Definition steering.h:93
float energy_used_wh
Definition steering.h:97
Steering configuration data.
Definition steering.h:70
uint16_t cruise_min_speed_kmh
Definition steering.h:71
uint16_t cruise_max_speed_kmh
Definition steering.h:72
Steering storage.
Definition steering.h:118
float estimated_km_remaining
Definition steering.h:131
uint8_t drive_state
Definition steering.h:123
bool cruise_control_enabled
Definition steering.h:120
struct Ws22MotorCanStorage * ws22_motor_can_storage
Definition steering.h:128
uint16_t cruise_control_target_speed_kmh
Definition steering.h:122
uint8_t light_signal
Definition steering.h:124
struct ButtonLEDManager * button_led_manager
Definition steering.h:127
Ws22MotorCanConfig * ws22_motor_can_config
Definition steering.h:134
struct ButtonManager * button_manager
Definition steering.h:126
DisplayData display_data
Definition steering.h:129
SteeringConfig * config
Definition steering.h:133
bool horn_enabled
Definition steering.h:119
Definition ws22_motor_can.h:95
WS22 motor CAN interface storage structure.
Definition ws22_motor_can.h:111
Definition global_enums.h:240