feat(led): 添加LED按键淡入淡出效果并重构LED条模块
添加了完整的LED效果系统架构,包括: - 新增主题颜色定义文件theme_color.h - 实现key fade LED效果算法,支持按键触发的渐变效果 - 创建LED效果注册机制和通用接口 - 配置17个LED像素与按键映射关系 - 将原有简单的周期性效果替换为基于按键事件的动态效果 CMakeLists.txt中添加了新的源文件路径和实现文件。 BREAKING CHANGE: LED效果从固定的周期性变化改为响应按键事件的动态效果。
This commit is contained in:
50
src/led_effect/led_effect.h
Normal file
50
src/led_effect/led_effect.h
Normal file
@@ -0,0 +1,50 @@
|
||||
#ifndef BLINKY_LED_EFFECT_H_
|
||||
#define BLINKY_LED_EFFECT_H_
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include <zephyr/drivers/led_strip.h>
|
||||
|
||||
#include "led_effect_types.h"
|
||||
#include "theme_color.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct led_effect;
|
||||
|
||||
struct led_effect_config {
|
||||
const struct led_key_map *key_map;
|
||||
size_t key_map_len;
|
||||
size_t pixel_count;
|
||||
uint8_t default_brightness;
|
||||
};
|
||||
|
||||
struct led_effect_ops {
|
||||
int (*init)(struct led_effect *effect,
|
||||
const struct led_effect_config *cfg);
|
||||
void (*reset)(struct led_effect *effect);
|
||||
void (*set_theme)(struct led_effect *effect,
|
||||
const struct theme_rgb *theme);
|
||||
void (*on_key_press)(struct led_effect *effect, uint16_t key_id);
|
||||
bool (*tick)(struct led_effect *effect, uint32_t dt_ms,
|
||||
struct led_rgb *pixels, size_t pixel_count);
|
||||
bool (*is_active)(const struct led_effect *effect);
|
||||
};
|
||||
|
||||
struct led_effect {
|
||||
const struct led_effect_ops *ops;
|
||||
void *state;
|
||||
};
|
||||
|
||||
const struct led_effect *led_effect_get(enum led_effect_id id);
|
||||
struct led_effect *led_effect_get_mutable(enum led_effect_id id);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* BLINKY_LED_EFFECT_H_ */
|
||||
Reference in New Issue
Block a user