Midnight Sun Firmware
Loading...
Searching...
No Matches
button_led_manager.h
1#pragma once
2
3/************************************************************************************************
4 * @file button_led_manager.h
5 *
6 * @brief Button LED manager header file - SK6812 RGB LEDs
7 *
8 * @date 2025-09-27
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 "steering.h"
20
27#define BUTTON_LED_MANAGER_BITS_PER_LED (24U)
28#define BUTTON_LED_MANAGER_DMA_BUF_LEN (512U)
29
30#define BUTTON_LED_MANAGER_COLOR_RED \
31 { 255, 0, 0 }
32#define BUTTON_LED_MANAGER_COLOR_GREEN \
33 { 0, 255, 0 }
34#define BUTTON_LED_MANAGER_COLOR_BLUE \
35 { 0, 0, 255 }
36#define BUTTON_LED_MANAGER_COLOR_YELLOW \
37 { 255, 200, 0 }
38#define BUTTON_LED_MANAGER_COLOR_ORANGE \
39 { 255, 100, 0 }
40#define BUTTON_LED_MANAGER_COLOR_PURPLE \
41 { 160, 0, 255 }
42#define BUTTON_LED_MANAGER_COLOR_CYAN \
43 { 0, 255, 255 }
44#define BUTTON_LED_MANAGER_COLOR_WHITE \
45 { 255, 255, 255 }
46#define BUTTON_LED_MANAGER_COLOR_PINK \
47 { 255, 80, 150 }
48#define BUTTON_LED_MANAGER_COLOR_OFF \
49 { 0, 0, 0 }
50
51typedef struct {
52 uint8_t r;
53 uint8_t g;
54 uint8_t b;
55} LEDPixels;
56
57typedef struct ButtonLEDManager {
58 LEDPixels led_pixels[NUM_STEERING_BUTTONS];
59 uint16_t dma_buffer[BUTTON_LED_MANAGER_DMA_BUF_LEN];
63
71
81
89
95
101
StatusCode
StatusCodes for various errors.
Definition: status.h:27
bool button_led_manager_is_busy(void)
Check if the LED manager is currently transmitting data.
Definition: button_led_manager.c:295
StatusCode button_led_manager_update(void)
Force immediate update of all LEDs (call after setting colors)
Definition: button_led_manager.c:269
SteeringButtons
Steering buttons.
Definition: steering.h:43
StatusCode button_led_manager_clear_all(void)
Set all LEDs to off (black)
Definition: button_led_manager.c:303
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)
Definition: button_led_manager.c:254
StatusCode button_led_manager_init(SteeringStorage *storage)
Initialize the button LED manager.
Definition: button_led_manager.c:232
Definition: button_led_manager.h:57
uint16_t dma_buffer[BUTTON_LED_MANAGER_DMA_BUF_LEN]
Definition: button_led_manager.h:59
bool is_transmitting
Definition: button_led_manager.h:61
LEDPixels led_pixels[NUM_STEERING_BUTTONS]
Definition: button_led_manager.h:58
bool needs_update
Definition: button_led_manager.h:60
Definition: button_led_manager.h:51
Steering storage.
Definition: steering.h:73