2、自动/手动互相切换都闪 2 下灯;APP 发停止后再发自动模式可正常启动,手动残留停止不再挡住自动 3、自动模式 1~6 单次最长跑 10 分钟后回待机;关机时长按 12 秒进 OTA,OTA 期间红绿交替闪
33 lines
1.7 KiB
C
33 lines
1.7 KiB
C
/******************************************************************************
|
||
* @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__ */
|