/****************************************************************************** * @file app_pair.c * @brief 配对会话计时实现 * @author cyWu <1917507415@qq.com> * @date 2026.08.25 * @version V1.0.0 * @history * - V1.0.0, 2026.08.25, cyWu, 从 usr_jb_main 拆出 ******************************************************************************/ #include "app_pair.h" #include "board_pin.h" #include "usr_le_api.h" #include "system/includes.h" #define LOG_TAG_CONST APP #define LOG_TAG "[APP_PAIR]" #define LOG_INFO_ENABLE #include "debug.h" /** 配对会话状态,替代原来散落的 s_pairing / s_pair_ms */ typedef struct { uint8_t active; uint32_t elapsed_ms; } AppPairCtx_t; static AppPairCtx_t s_pair; /** * @brief 开始一次配对会话(计时清零) * @return 无 */ void app_pair_start(void) { s_pair.active = 1; s_pair.elapsed_ms = 0; } /** * @brief 推进配对计时并检查结果,每个业务 tick 调用一次 * @param dt 距上次调用的毫秒数 * @return APP_PAIR_EVT_OK=配对成功,APP_PAIR_EVT_FAIL=超时,否则 NONE */ AppPairEvt_t app_pair_tick_1ms(uint16_t dt) { if (!s_pair.active) { return APP_PAIR_EVT_NONE; } if (usr_get_pair_flag()) { s_pair.active = 0; s_pair.elapsed_ms = 0; log_info("pair ok\n"); return APP_PAIR_EVT_OK; } s_pair.elapsed_ms += dt; if (s_pair.elapsed_ms >= BOARD_PAIR_TIMEOUT_MS) { s_pair.active = 0; s_pair.elapsed_ms = 0; log_info("pair timeout 120s, stay on\n"); return APP_PAIR_EVT_FAIL; } return APP_PAIR_EVT_NONE; } /** * @brief 查询是否仍在配对会话中 * @return 1=进行中,0=未在配对 */ uint8_t app_pair_is_active(void) { return s_pair.active; }