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 "persist.h"
20#include "ws22_motor_can.h"
21
22/* Intra-component Headers */
23#include "status.h"
24#include "tasks.h"
25
32/* Forward declarations */
33struct ButtonManager;
34struct ButtonLEDManager;
36
38#define STEERING_BUTTON_DEBOUNCE_PERIOD_MS 5U
39
41#define STEERING_CRUISE_MAX_SPEED_KMH 1000U // 80
42
44#define STEERING_CRUISE_MIN_SPEED_KMH 0U // 40
45
49typedef enum {
50 STEERING_BUTTON_HAZARDS,
51 STEERING_BUTTON_DRIVE,
52 STEERING_BUTTON_NEUTRAL,
53 STEERING_BUTTON_REVERSE,
54
55 STEERING_BUTTON_REGEN,
56
57 STEERING_BUTTON_LEFT_LIGHT,
58 STEERING_BUTTON_RIGHT_LIGHT,
59
60 STEERING_BUTTON_HORN,
61
62 STEERING_BUTTON_CRUISE_CONTROL_UP,
63 STEERING_BUTTON_CRUISE_CONTROL_DOWN,
64
65 NUM_STEERING_BUTTONS,
67
71typedef struct {
75
76typedef struct __attribute__((aligned(4))) PersistData {
77 int64_t power_usage_wh;
78} PersistData;
79
83typedef struct {
84 float state_of_charge;
85 uint16_t cell_voltages[36];
89 int16_t dcdc_voltage;
90 int16_t dcdc_current;
91 int16_t aux_voltage;
92 int16_t aux_current;
98 uint16_t max_cell_temp;
100 uint16_t thermistor_temp_c[NUMBER_OF_THERMISTORS];
104 uint16_t bps_fault;
109 VehicleDriveState drive_state;
112 uint8_t brake_enabled;
113 uint8_t regen_enabled;
114 uint8_t precharge_complete;
115
116 TickType_t display_rx_medium_last_start;
118
122typedef struct {
127 uint8_t drive_state;
128 uint8_t light_signal;
134 PersistData persist_data;
135 PersistStorage *persist_storage;
136
142
150StatusCode steering_init(SteeringStorage *storage, SteeringConfig *config, Ws22MotorCanConfig *motor_can_config);
151
160
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:96
StatusCode steering_force_disable_bps(void)
Force BPS protection off (SECURE MODE OFF) regardless of the current state.
Definition: steering.c:76
SteeringButtons
Steering buttons.
Definition: steering.h:49
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:83
int16_t vehicle_velocity
Definition: steering.h:87
int16_t dcdc_current
Definition: steering.h:90
float pack_current
Definition: steering.h:95
uint8_t pedal_percentage
Definition: steering.h:110
int16_t aux_voltage
Definition: steering.h:91
uint16_t max_cell_voltage_mv
Definition: steering.h:97
bool bps_fault_live
Definition: steering.h:106
int16_t dcdc_voltage
Definition: steering.h:89
uint8_t bps_fault_cell
Definition: steering.h:105
BpsFaultData bps_fault_data
Definition: steering.h:107
uint8_t brake_percentage
Definition: steering.h:111
uint16_t bps_fault
Definition: steering.h:104
uint16_t min_cell_voltage_mv
Definition: steering.h:96
float pack_voltage
Definition: steering.h:94
int16_t aux_current
Definition: steering.h:92
uint16_t max_cell_temp
Definition: steering.h:98
float energy_used_wh
Definition: steering.h:102
Definition: persist.h:31
Steering configuration data.
Definition: steering.h:71
uint16_t cruise_min_speed_kmh
Definition: steering.h:72
uint16_t cruise_max_speed_kmh
Definition: steering.h:73
Steering storage.
Definition: steering.h:122
float estimated_km_remaining
Definition: steering.h:137
uint8_t drive_state
Definition: steering.h:127
bool cruise_control_enabled
Definition: steering.h:124
struct Ws22MotorCanStorage * ws22_motor_can_storage
Definition: steering.h:132
uint16_t cruise_control_target_speed_kmh
Definition: steering.h:126
uint8_t light_signal
Definition: steering.h:128
struct ButtonLEDManager * button_led_manager
Definition: steering.h:131
Ws22MotorCanConfig * ws22_motor_can_config
Definition: steering.h:140
struct ButtonManager * button_manager
Definition: steering.h:130
DisplayData display_data
Definition: steering.h:133
SteeringConfig * config
Definition: steering.h:139
bool horn_enabled
Definition: steering.h:123
Definition: ws22_motor_can.h:95
WS22 motor CAN interface storage structure.
Definition: ws22_motor_can.h:111
Per-fault detail snapshot for the BPS fault code.
Definition: global_enums.h:213
Definition: global_enums.h:240