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
18/* Intra-component Headers */
19#include "status.h"
20
27/* Forward declarations */
28struct ButtonManager;
29struct ButtonLEDManager;
30
32#define STEERING_BUTTON_DEBOUNCE_PERIOD_MS 5U
33
35#define STEERING_CRUISE_MAX_SPEED_KMH 80U
36
38#define STEERING_CRUISE_MIN_SPEED_KMH 40U
39
43typedef enum {
44 STEERING_BUTTON_HAZARDS,
45 STEERING_BUTTON_DRIVE,
46 STEERING_BUTTON_NEUTRAL,
47 STEERING_BUTTON_REVERSE,
48
49 STEERING_BUTTON_REGEN,
50
51 STEERING_BUTTON_LEFT_LIGHT,
52 STEERING_BUTTON_RIGHT_LIGHT,
53
54 STEERING_BUTTON_HORN,
55
56 STEERING_BUTTON_CRUISE_CONTROL_UP,
57 STEERING_BUTTON_CRUISE_CONTROL_DOWN,
58
59 NUM_STEERING_BUTTONS,
61
65typedef struct {
69
73typedef struct {
79 uint8_t drive_state;
80 uint8_t light_signal;
86
95
StatusCode
StatusCodes for various errors.
Definition: status.h:27
StatusCode steering_init(SteeringStorage *storage, SteeringConfig *config)
Initialize the steering interface.
Definition: steering.c:53
SteeringButtons
Steering buttons.
Definition: steering.h:43
Definition: button_led_manager.h:57
Button Manager structure.
Definition: button_manager.h:34
Steering configuration data.
Definition: steering.h:65
uint16_t cruise_min_speed_kmh
Definition: steering.h:66
uint16_t cruise_max_speed_kmh
Definition: steering.h:67
Steering storage.
Definition: steering.h:73
uint8_t drive_state
Definition: steering.h:79
bool regen_enabled
Definition: steering.h:75
uint16_t cruise_control_target_speed_kmh
Definition: steering.h:78
uint8_t light_signal
Definition: steering.h:80
struct ButtonLEDManager * button_led_manager
Definition: steering.h:83
bool cruse_control_enabled
Definition: steering.h:76
struct ButtonManager * button_manager
Definition: steering.h:82
SteeringConfig * config
Definition: steering.h:84
bool horn_enabled
Definition: steering.h:74