修复了配网时进入休眠导致配网时间变成的问题,同时增加配网时间到了之后停止广播
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
* @file usr_jb_main.c
|
||||
* @brief CBC2 业务组合根:只做“先后调用谁、谁通知谁”,不含具体业务算法
|
||||
* @author cyWu <1917507415@qq.com>
|
||||
* @date 2026.08.27
|
||||
* @version V2.2.0
|
||||
* @date 2026.09.10
|
||||
* @version V2.3.0
|
||||
* @history
|
||||
* - V1.0.0, 2026.08.21, cyWu, 首次发布
|
||||
* - V1.1.0, 2026.08.24, cyWu, 收口未接线模块;DP2 仅第 1 字节点动 1s
|
||||
@@ -21,6 +21,9 @@
|
||||
* - V2.2.0, 2026.08.27, cyWu, app_led_init() 提前到 app_boot_wait_key() 之前,
|
||||
* 开机 3s/5s/拒绝开机低电闪直接用灯效事件表,
|
||||
* 不用再各自摸裸 GPIO 手搓一份闪烁定时
|
||||
* - V2.3.0, 2026.09.10, cyWu, 配网期间禁睡:priority=0 时低功耗会把 20ms
|
||||
* 节拍拉长,绑定广播和 AUTHSETUP 握手变慢,
|
||||
* 实测配网可拖到数分钟
|
||||
*
|
||||
* @note 协议生成文件 jb_product.c 不要填业务。APP 下行写 gDevData。
|
||||
* usr_timer_loop 由 BLE 回调,勿再注册第二份。
|
||||
@@ -84,7 +87,7 @@ const uint8_t g_usr_le_pcode[USR_LE_PCODE_LEN] = {
|
||||
*/
|
||||
typedef enum {
|
||||
USR_TICK_IDLE = 0, /**< 可休眠 */
|
||||
USR_TICK_BLOCK_SLEEP /**< 禁止休眠(按键按住/玩法中/关机等待/电机运转,含换向死区)*/
|
||||
USR_TICK_BLOCK_SLEEP /**< 禁止休眠(按键按住/玩法中/关机等待/电机运转/配网,含换向死区)*/
|
||||
} UsrTickMode_t;
|
||||
|
||||
/** 调度器状态,替代原来 2 个散落的 static */
|
||||
@@ -155,15 +158,17 @@ static void usr_poweroff_finalize_hook(void)
|
||||
/**
|
||||
* @brief 按当前业务状态判断能不能休眠
|
||||
* @note 换向死区(bsp_motor_is_busy 已把它算进"忙")、点动、玩法、按键按住、
|
||||
* 关机等待,统一都是"不能睡",节拍周期都一样用 USR_TIMER_IDLE_MS,
|
||||
* 不再区分要不要 1ms
|
||||
* 关机等待、配网窗口,统一都是"不能睡",节拍周期都一样用 USR_TIMER_IDLE_MS。
|
||||
* 配网只跟 120s 配对窗口(app_pair_is_active):窗口内禁睡,保证广播
|
||||
* 节拍不被低功耗拉长;成功或超时后恢复可休眠。
|
||||
* @return 本次应使用的档位
|
||||
*/
|
||||
static UsrTickMode_t usr_timer_pick_mode(void)
|
||||
{
|
||||
if (bsp_key_is_pressed() || app_power_poweroff_pending()
|
||||
|| app_mode_get_active() || bsp_motor_is_busy()
|
||||
|| app_function_is_hand_busy()) {
|
||||
|| app_function_is_hand_busy()
|
||||
|| app_pair_is_active()) {
|
||||
return USR_TICK_BLOCK_SLEEP;
|
||||
}
|
||||
return USR_TICK_IDLE;
|
||||
@@ -292,8 +297,10 @@ void usr_jb_init(void)
|
||||
user_key_lock_if_held();
|
||||
app_function_power_on_silent();
|
||||
|
||||
usr_timer_rearm(USR_TICK_IDLE);
|
||||
log_info("timer idle %ums, sleep ok\n", (unsigned)USR_TIMER_IDLE_MS);
|
||||
/* 开机若已进配对,第一拍就禁睡,不要先挂可休眠档再等 20ms 才切 */
|
||||
usr_timer_rearm(usr_timer_pick_mode());
|
||||
log_info("timer %ums, mode=%d\n", (unsigned)USR_TIMER_IDLE_MS,
|
||||
(int)s_sched.mode);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user