#ifndef INC_LEDS_H #define INC_LEDS_H #ifdef __cplusplus extern "C" { #endif #include "stm32h7xx_hal.h" #include "tx_port.h" #define N_LEDS 9 #define PWM_CHANNEL_R TIM_CHANNEL_1 #define PWM_CHANNEL_G TIM_CHANNEL_2 #define PWM_CHANNEL_B TIM_CHANNEL_3 void led_init(SPI_HandleTypeDef *spi, TIM_HandleTypeDef *pwmtim); void led_set(size_t idx, uint8_t r, uint8_t g, uint8_t b); void led_all_off(); void led_thread_entry(ULONG child_thread_stack_addr); typedef enum { ANIM_TE_STARTUP, ANIM_FT_STARTUP, ANIM_KNIGHT_RIDER, ANIM_RAINBOW, } LEDAnimation; void led_start_animation(LEDAnimation anim); void led_anim_te_startup(ULONG _); void led_anim_ft_startup(ULONG _); void led_anim_knight_rider(ULONG _); void led_anim_rainbow(ULONG _); void led_anim_blinker(uint8_t r, uint8_t g, uint8_t b, uint32_t brightness_steps, uint32_t next_led_steps, uint32_t delay); void led_hsv_to_rgb(float h, float s, float v, uint8_t *r, uint8_t *g, uint8_t *b); #ifdef __cplusplus } #endif #endif // INC_LEDS_H