![]() |
Midnight Sun Firmware
|
steering Firmware More...
Classes | |
| struct | ButtonCallbacks |
| Button Callbacks. More... | |
| struct | ButtonConfig |
| Button configuration structure. More... | |
| struct | Button |
| Button instance structure. More... | |
| struct | LEDPixels |
| struct | ButtonLEDManager |
| struct | ButtonManager |
| Button Manager structure. More... | |
| struct | SteeringConfig |
| Steering configuration data. More... | |
| struct | SteeringStorage |
| Steering storage. More... | |
Macros | |
| #define | BUTTON_LED_MANAGER_BITS_PER_LED (24U) |
| #define | BUTTON_LED_MANAGER_DMA_BUF_LEN (512U) |
| #define | BUTTON_MANAGER_DEBUG 0 |
| #define | STEERING_BUTTON_DEBOUNCE_PERIOD_MS 5U |
| #define | STEERING_CAN_RX { .port = GPIO_PORT_B, .pin = 8 } |
| Steering CAN RX Port. | |
| #define | STEERING_CAN_TX { .port = GPIO_PORT_B, .pin = 9 } |
| Steering CAN TX Port. | |
| #define | STEERING_LEFT_TURN_BUTTON { .port = GPIO_PORT_B, .pin = 3 } |
| Steering left turn button. | |
| #define | STEERING_RIGHT_TURN_BUTTON { .port = GPIO_PORT_B, .pin = 4 } |
| Steering right turn button. | |
| #define | STEERING_HAZARDS_BUTTON { .port = GPIO_PORT_B, .pin = 5 } |
| Steering hazards button. | |
| #define | STEERING_NEUTRAL_BUTTON { .port = GPIO_PORT_A, .pin = 5 } |
| Steering neutral button. | |
| #define | STEERING_DRIVE_BUTTON { .port = GPIO_PORT_A, .pin = 6 } |
| Steering drive button. | |
| #define | STEERING_REVERSE_BUTTON { .port = GPIO_PORT_A, .pin = 7 } |
| Steering reverse button. | |
| #define | STEERING_HORN_BUTTON { .port = GPIO_PORT_B, .pin = 6 } |
| Steering horn button. | |
| #define | STEERING_DISPLAY_CTRL { .port = GPIO_PORT_A, .pin = 0 } |
| Display control (Push-pull to control display state) | |
| #define | STEERING_DISPLAY_CURRENT_CTRL { .port = GPIO_PORT_A, .pin = 1 } |
| Display current control (PWM to control % of current) | |
| #define | STEERING_RGB_LIGHTS_PWM_PIN { .port = GPIO_PORT_A, .pin = 2 } |
| PWM pin for RGB LED control. | |
Typedefs | |
| typedef struct Button | Button |
| Button instance structure. | |
| typedef struct ButtonLEDManager | ButtonLEDManager |
| typedef struct ButtonManager | ButtonManager |
| Button Manager structure. | |
Enumerations | |
| enum | ButtonState { BUTTON_IDLE , BUTTON_PRESSED } |
| Button states representing current input. More... | |
| enum | DriveState { DRIVE_STATE_INVALID = 0 , DRIVE_STATE_NEUTRAL , DRIVE_STATE_DRIVE , DRIVE_STATE_REVERSE } |
| Drive states representing the current output. More... | |
| enum | DriveStateRequest { DRIVE_STATE_REQUEST_NONE = 0 , DRIVE_STATE_REQUEST_D , DRIVE_STATE_REQUEST_N , DRIVE_STATE_REQUEST_R } |
| Requests made to control the drive state. More... | |
| enum | LightsSignalState { LIGHTS_SIGNAL_STATE_OFF = 0 , LIGHTS_SIGNAL_STATE_LEFT , LIGHTS_SIGNAL_STATE_RIGHT , LIGHTS_SIGNAL_STATE_HAZARD } |
| Light signal states representing the current output. More... | |
| enum | LightsSignalRequest { LIGHTS_SIGNAL_REQUEST_OFF = 0 , LIGHTS_SIGNAL_REQUEST_LEFT , LIGHTS_SIGNAL_REQUEST_RIGHT , LIGHTS_SIGNAL_REQUEST_HAZARD } |
| Requests made to control the light signals. More... | |
| enum | SteeringButtons { STEERING_BUTTON_LEFT_LIGHT , STEERING_BUTTON_RIGHT_LIGHT , STEERING_BUTTON_HAZARDS , STEERING_BUTTON_DRIVE , STEERING_BUTTON_REVERSE , STEERING_BUTTON_NEUTRAL , STEERING_BUTTON_HORN , STEERING_BUTTON_REGEN , STEERING_BUTTON_PUSH_TO_TALK , STEERING_BUTTON_CRUISE_CONTROL_UP , STEERING_BUTTON_CRUISE_CONTROL_DOWN , NUM_STEERING_BUTTONS } |
| Steering buttons. | |
Functions | |
| StatusCode | button_init (Button *button, ButtonConfig *config) |
| Initialize a button instance. More... | |
| StatusCode | button_update (Button *button) |
| Update the Button state based on the given GPIO state. More... | |
| StatusCode | button_led_manager_init (SteeringStorage *storage) |
| Initialize the button LED manager. More... | |
| StatusCode | button_led_manager_set_color (SteeringButtons button, LEDPixels color_code) |
| Update a button's LED color (marks for update but doesn't transmit immediately) More... | |
| StatusCode | button_led_manager_update (void) |
| Force immediate update of all LEDs (call after setting colors) More... | |
| bool | button_led_manager_is_busy (void) |
| Check if the LED manager is currently transmitting data. More... | |
| StatusCode | button_led_manager_clear_all (void) |
| Set all LEDs to off (black) More... | |
| StatusCode | button_manager_init (SteeringStorage *storage) |
| Initialize the button manager. More... | |
| StatusCode | button_manager_update (void) |
| Update the button manager. More... | |
| void | drive_state_manager_init (void) |
| Initialize the drive state manager. | |
| void | drive_state_manager_request (DriveStateRequest req) |
| Make a request to change the drive state. More... | |
| void | drive_state_manager_update (void) |
| Update the drive state based on the current request. | |
| DriveState | drive_state_manager_get_state (void) |
| Get the current state of the drive controller. More... | |
| void | lights_signal_manager_init (void) |
| Initialize the light signal manager. | |
| void | lights_signal_manager_request (LightsSignalRequest req) |
| Make a request to change the signal state. More... | |
| void | lights_signal_manager_update (void) |
| Update the signal state based on the current request. | |
| LightsSignalState | lights_signal_manager_get_state (void) |
| Get the current state of the signal lights. More... | |
| StatusCode | steering_init (SteeringStorage *storage, SteeringConfig *config) |
| Initialize the steering interface. More... | |
steering Firmware
| #define BUTTON_MANAGER_DEBUG 0 |
Set to 1 to enable debug prints
| enum ButtonState |
| enum DriveState |
| enum DriveStateRequest |
| enum LightsSignalRequest |
| enum LightsSignalState |
| StatusCode button_init | ( | Button * | button, |
| ButtonConfig * | config | ||
| ) |
Initialize a button instance.
| button | Pointer to the Button instance to initialize |
| config | Pointer to the ButtonConfig structure |
| StatusCode button_led_manager_clear_all | ( | void | ) |
Set all LEDs to off (black)
| StatusCode button_led_manager_init | ( | SteeringStorage * | storage | ) |
Initialize the button LED manager.
| storage | Pointer to the SteeringStorage instance |
| bool button_led_manager_is_busy | ( | void | ) |
Check if the LED manager is currently transmitting data.
| StatusCode button_led_manager_set_color | ( | SteeringButtons | button, |
| LEDPixels | color_code | ||
| ) |
Update a button's LED color (marks for update but doesn't transmit immediately)
| button | Button selector for modification |
| color_code | RGB color code for the button LED |
| StatusCode button_led_manager_update | ( | void | ) |
Force immediate update of all LEDs (call after setting colors)
| StatusCode button_manager_init | ( | SteeringStorage * | storage | ) |
Initialize the button manager.
| storage | Pointer to the SteeringStorage instance |
| StatusCode button_manager_update | ( | void | ) |
Update the button manager.
| manager | Pointer to the ButtonManager instance |
| StatusCode button_update | ( | Button * | button | ) |
| DriveState drive_state_manager_get_state | ( | void | ) |
Get the current state of the drive controller.
| void drive_state_manager_request | ( | DriveStateRequest | req | ) |
Make a request to change the drive state.
| req | The requested drive state |
| LightsSignalState lights_signal_manager_get_state | ( | void | ) |
Get the current state of the signal lights.
| void lights_signal_manager_request | ( | LightsSignalRequest | req | ) |
Make a request to change the signal state.
| req | The requested light signal state |
| StatusCode steering_init | ( | SteeringStorage * | storage, |
| SteeringConfig * | config | ||
| ) |
Initialize the steering interface.
| storage | Pointer to the steering storage |
| config | Pointer to the steering config |