/****************************************************************************** * @file app_boot.h * @brief 深睡唤醒 / 上电按键判定:3s 开机,5s 配对,12s OTA,不足 3s 松手再睡; * 开机前电量低于约 5% 且未充电时拒绝开机 * @author cyWu <1917507415@qq.com> * @date 2026.08.26 * @version V1.1.0 * @history * - V1.0.0, 2026.08.25, cyWu, 首次发布,实现深睡唤醒按键判定(3s 开机 / 5s 配对) * - V1.1.0, 2026.08.26, cyWu, 新增 12s 长按进 OTA;新增开机前低电量 * (BOARD_VBAT_SHUTDOWN_MV)拦截,仅闪 5 下红灯 * 提示后继续深睡,不接受非充电状态下的开机 * * @note 必须在 BLE 协议栈起来、1ms 定时器启动之前调用。杰理 jiffies 此时 * 往往 10ms 才跳一次,所以内部一律用 timer_get_ms 直接量时间, * 不能借用按键库的 1ms 状态机(否则长按时长会被严重低估)。 ******************************************************************************/ #ifndef __APP_BOOT_H__ #define __APP_BOOT_H__ /** * @brief 等待并判定开机按键:不足 3s 松手、或全程未按键,直接原地深睡(不返回); * 满 3s 视为正常开机;松手时已过 5s 视为开机并进入配对(内部会调用 * app_pair_start);持续按满 12s 直接开机并进入 OTA(调用 * usr_app_ota_init)。若未充电且电量低于约 5%,则闪 5 下红灯后 * 继续深睡,拒绝开机。 * @return 无(深睡分支通过 while(1) 喂狗不返回;其余情况正常返回) */ void app_boot_wait_key(void); #endif /* __APP_BOOT_H__ */