修复切模式闪完多一闪,以及配对失败灯因休眠又慢又少。

切模式/配对快闪用优先级拦住待机绿,闪完同一拍衔上常亮;短灯效播完前禁睡,避免节拍被拉长。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-10 14:16:42 +08:00
co-authored by Cursor
parent c141c7e0aa
commit c7adda3711
4 changed files with 46 additions and 26 deletions
+11 -8
View File
@@ -2,12 +2,13 @@
* @file led_manager.c
* @brief CBC2 灯事件:充电红与待机绿走不同通道,可同时亮
* @author cyWu <1917507415@qq.com>
* @date 2026.08.27
* @version V1.1.0
* @date 2026.09.10
* @version V1.2.0
* @history
* - V1.0.0, 2026.08.25, cyWu, 首次发布,实现红绿独立通道灯事件表
* - V1.1.0, 2026.08.27, cyWu, 新增 LED_EVENT_BOOT_REJECT:拒绝开机低电闪,
* 供 app_boot 在按键判定阶段直接复用事件库
* - V1.2.0, 2026.09.10, cyWu, 切模式闪时待机绿不写灯,闪完同一拍衔上常亮
******************************************************************************/
#include "led_manager.h"
@@ -67,26 +68,29 @@ static uint8_t led_standby_handler(LED_Config_t *led_config)
/**
* @brief 配对绿快闪(无限)
* @note 返回 1 拦住待机绿,否则待机会把快闪盖成常亮
* @param led_config 配置
* @return 0
* @return 1
*/
static uint8_t led_pairing_handler(LED_Config_t *led_config)
{
(void)LED_Update(led_config);
return 0;
return 1;
}
/**
* @brief 切模式闪完两下后删事件
* @note 还在闪时返回 1,拦住待机绿,避免把闪烁盖成常亮
* @param led_config 配置
* @return 0
* @return 1=还在闪,0=闪完已删
*/
static uint8_t led_mode_handler(LED_Config_t *led_config)
{
if (LED_Update(led_config) == 0) {
LED_EventDelete(LED_EVENT_MODE); /* 闪完两下后删,绿灯还给待机/配对 */
return 0;
}
return 0;
return 1;
}
/**
@@ -248,8 +252,7 @@ void user_led_init(void)
.config.alternatingBlinkParams.Group[0] = LED_CHANNEL(LED_CH_RED),
.config.alternatingBlinkParams.Group[1] = LED_CHANNEL(LED_CH_GREEN),
.config.alternatingBlinkParams.Cycle = (uint32_t)(BOARD_LED_ALT_MS * 2u),
.config.runNum = (uint16_t)((BOARD_LED_PAIR_FAIL_MS + (BOARD_LED_ALT_MS * 2u) - 1u)
/ (BOARD_LED_ALT_MS * 2u)),
.config.runNum = (uint16_t)((BOARD_LED_PAIR_FAIL_MS + (BOARD_LED_ALT_MS * 2u) - 1u)/ (BOARD_LED_ALT_MS * 2u)),
.ledEventHandler = led_pair_fail_handler,
},
[LED_EVENT_OTA] = {