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 "global_enums.h"
18
19/* Intra-component Headers */
20#include "status.h"
21
28/* Forward declarations */
29struct ButtonManager;
30struct ButtonLEDManager;
31
33#define STEERING_BUTTON_DEBOUNCE_PERIOD_MS 5U
34
36#define STEERING_CRUISE_MAX_SPEED_KMH 1000U // 80
37
39#define STEERING_CRUISE_MIN_SPEED_KMH 0U // 40
40
44typedef enum {
45 STEERING_BUTTON_HAZARDS,
46 STEERING_BUTTON_DRIVE,
47 STEERING_BUTTON_NEUTRAL,
48 STEERING_BUTTON_REVERSE,
49
50 STEERING_BUTTON_REGEN,
51
52 STEERING_BUTTON_LEFT_LIGHT,
53 STEERING_BUTTON_RIGHT_LIGHT,
54
55 STEERING_BUTTON_HORN,
56
57 STEERING_BUTTON_CRUISE_CONTROL_UP,
58 STEERING_BUTTON_CRUISE_CONTROL_DOWN,
59
60 NUM_STEERING_BUTTONS,
62
66typedef struct {
70
74typedef struct {
78 int16_t motor_temp;
84 float state_of_charge;
86 int16_t dcdc_voltage;
87 int16_t dcdc_current;
88 int16_t aux_voltage;
89 int16_t aux_current;
91 uint16_t pack_voltage;
92 uint16_t pack_current;
94 VehicleDriveState drive_state;
95 uint8_t brake_enabled;
96 uint8_t regen_enabled;
97 uint8_t precharge_complete;
99
103typedef struct {
108 uint8_t drive_state;
109 uint8_t light_signal;
119
128
VehicleDriveState
Vehicle drive states.
Definition: global_enums.h:32
BpsFault
Battery fault definitions.
Definition: global_enums.h:79
StatusCode
StatusCodes for various errors.
Definition: status.h:27
StatusCode steering_init(SteeringStorage *storage, SteeringConfig *config)
Initialize the steering interface.
Definition: steering.c:55
SteeringButtons
Steering buttons.
Definition: steering.h:44
Definition: button_led_manager.h:57
Button Manager structure.
Definition: button_manager.h:34
Data for the display, CAN RX or internal.
Definition: steering.h:74
int16_t vehicle_velocity
Definition: steering.h:80
int16_t dcdc_current
Definition: steering.h:87
uint8_t pedal_percentage
Definition: steering.h:75
int16_t aux_voltage
Definition: steering.h:88
BpsFault bps_fault
Definition: steering.h:83
int16_t dcdc_voltage
Definition: steering.h:86
uint16_t pack_current
Definition: steering.h:92
int16_t motor_velocity
Definition: steering.h:81
int16_t motor_heatsink_temp
Definition: steering.h:77
int16_t aux_current
Definition: steering.h:89
uint16_t pack_voltage
Definition: steering.h:91
int16_t motor_temp
Definition: steering.h:78
Steering configuration data.
Definition: steering.h:66
uint16_t cruise_min_speed_kmh
Definition: steering.h:67
uint16_t cruise_max_speed_kmh
Definition: steering.h:68
Steering storage.
Definition: steering.h:103
float estimated_km_remaining
Definition: steering.h:115
uint8_t drive_state
Definition: steering.h:108
bool cruise_control_enabled
Definition: steering.h:105
uint16_t cruise_control_target_speed_kmh
Definition: steering.h:107
uint8_t light_signal
Definition: steering.h:109
struct ButtonLEDManager * button_led_manager
Definition: steering.h:112
struct ButtonManager * button_manager
Definition: steering.h:111
DisplayData display_data
Definition: steering.h:113
SteeringConfig * config
Definition: steering.h:117
bool horn_enabled
Definition: steering.h:104