1、开机按满 5s 绿灯先切配对快闪提示,松手才清绑定并进配网,继续按到 12s 仍可改道 OTA

2、app_led_init 提前到按键判定前,3s 常亮 / 5s 快闪 / 拒绝开机低电闪统一走灯效事件表,去掉开机阶段手搓 GPIO 闪烁
This commit is contained in:
2026-08-27 20:19:57 +08:00
parent 215e1be6bb
commit 026d6d5da7
5 changed files with 89 additions and 37 deletions
+13 -7
View File
@@ -2,8 +2,8 @@
* @file usr_jb_main.c
* @brief CBC2 业务组合根:只做“先后调用谁、谁通知谁”,不含具体业务算法
* @author cyWu <1917507415@qq.com>
* @date 2026.08.25
* @version V2.1.0
* @date 2026.08.27
* @version V2.2.0
* @history
* - V1.0.0, 2026.08.21, cyWu, 首次发布
* - V1.1.0, 2026.08.24, cyWu, 收口未接线模块;DP2 仅第 1 字节点动 1s
@@ -18,6 +18,9 @@
* 换向死区判定改用阈值检查而非精确计时,
* 取消专门的 1ms 高频档,全系统统一 20ms 节拍,
* 只保留"能不能休眠"这一个维度
* - V2.2.0, 2026.08.27, cyWu, app_led_init() 提前到 app_boot_wait_key() 之前,
* 开机 3s/5s/拒绝开机低电闪直接用灯效事件表,
* 不用再各自摸裸 GPIO 手搓一份闪烁定时
*
* @note 协议生成文件 jb_product.c 不要填业务。APP 下行写 gDevData。
* usr_timer_loop 由 BLE 回调,勿再注册第二份。
@@ -256,9 +259,12 @@ static void usr_log_boot_version(void)
/**
* @brief 业务初始化(在 BLE 栈起来之前由 app_main 调用)
* @note 内部会等按键 3s/5s;不足 3s 直接深睡,不会启动业务定时器。
* 按键判定只摸 bsp_hw 的裸 GPIO,不经过协议栈/灯效表/电机状态机,
* 所以只有 bsp_hw_init() 需要排在它前面——一旦判定要睡回去
* boot_sleep() 原地喂狗不再返回,后面这些初始化不会被浪费。
* 按键判定只摸 bsp_hw 的裸 GPIO 和 led_manager 的事件表(3s 常亮 /
* 5s 配对快闪 / 拒绝开机低电闪都要用灯),不经过协议栈/电机状态机
* 所以 app_led_init() 要排在它前面(跟 bsp_hw_init() 一样)——一旦
* 判定要睡回去,boot_sleep() 原地喂狗不再返回,后面这些初始化不会
* 被浪费。app_led_init() 内部有已初始化判断,这里提前调不会导致
* 后面重复初始化出问题。
* @return 无
*/
void usr_jb_init(void)
@@ -266,14 +272,14 @@ void usr_jb_init(void)
usr_log_boot_version(); /* UART 已在 app_main 起来,按键判定前就能看到版本 */
bsp_hw_init();
app_led_init(); /* 提前到按键判定之前:3s/5s/拒绝开机低电闪都要直接用灯效事件表 */
app_boot_wait_key(); /* 深睡分支不会返回;返回即代表确定要开机 */
jbInit();
userInit();
app_led_init();
if (usr_var.usr_goto_updata) {
/* 开机 12s 已进 OTA灯表刚起来,立刻挂红绿交替 */
/* 开机 12s 已进 OTA:立刻挂红绿交替 */
app_led_request_ota();
}
app_mode_init();