接入温湿度风扇产品固件(仲裁/条件/定时/显示),并补齐规格书与外设驱动
新增 usr_app 产品逻辑:手动>定时>条件仲裁、条件控温湿、定时任务、数码管显示、 按键/LED、风扇档位、NVM 掉电恢复、配对与开关机,上电按规格恢复上次状态。 新增 usr_periph:AHT20、CT1642、板级引脚与硬件封装;见宝协议 cond_config 改为 7 字节编解码,并接入产品 DP。 补充《温湿度风扇_固件需求规格书》,工程加入对应源文件。 .gitignore 忽略 WorkBuddy/Cursor 本地会话
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
/******************************************************************************
|
||||
* @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, 首次发布,实现配对会话计时与成功/超时判定
|
||||
******************************************************************************/
|
||||
|
||||
#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;
|
||||
}
|
||||
|
||||
/* BLE 侧绑定成功:结束本次配对会话 */
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user