Files
JBao_Temp_Humi_Fan_FW/apps/usr_app/app_th.h
T

83 lines
2.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/******************************************************************************
* @file app_th.h
* @brief CBR3 温湿度采集:2s 周期、失败计数、最近有效值
* @author cyWu <1917507415@qq.com>
* @date 2026.08.31
* @version V1.1.0,发令阶段 nack 也计入连续失败
*
* @note 规格书 8.4:联动只在本次采样成功时用新值比较;采样失败保持
* 上一有效值继续判(与显示一致),直到连续 3 次失败显示 "--"
* DP24 fault_code=1)。fault_code=2 预留,本模块只给出
* is_fault,由 app_function 映射。
******************************************************************************/
#ifndef __APP_TH_H__
#define __APP_TH_H__
#include <stdint.h>
/**
* @brief 初始化温湿度模块
* @return 无
*/
void app_th_init(void);
/**
* @brief 业务节拍:内部 2s 才真正采一次;采的时候走总线互斥
* @param dt 距上次调用的毫秒数
* @return 无
*/
void app_th_poll(uint16_t dt);
/**
* @brief 是否已有有效采样
* @return 1=有效,0=从未成功
*/
uint8_t app_th_get_valid(void);
/**
* @brief 最近一次有效温度
* @return 温度 ×10(如 25.3℃ → 253
*/
int16_t app_th_get_temp_x10(void);
/**
* @brief 最近一次有效湿度
* @return 湿度 0~100 整数 %
*/
uint8_t app_th_get_humi(void);
/**
* @brief 连续失败次数
* @return 连续失败次数
*/
uint8_t app_th_get_fail_cnt(void);
/**
* @brief 传感器故障(连续失败 ≥ BOARD_TH_FAIL_MAX
* @return 1=故障(显示 --、fault_code=1),0=正常
*/
uint8_t app_th_is_fault(void);
/**
* @brief 最近一次采样是否成功(app_linkage / app_disp 用,规格书 8.4
* @return 1=成功,0=失败/未采样过
*/
uint8_t app_th_last_sample_ok(void);
/**
* @brief 取走一次「本周期采样成功」事件(供 usr_le_adv 的 500ms 任务上下文)
* @note ⚠ 生产者是 app_th_poll(20ms 硬件定时器中断上下文),那里只置
* volatile pending,不开关广播、不打日志、不写 flash。
* 消费者(usr_ble_adv_updataBLE 线程任务上下文)调本函数取走,
* 内部 local_irq_disable 保护,取到即清。
* 只在真正采样成功(last_ok 那次)时产生,失败/fault 不产生,
* 取到的就是本次新值而不是历史有效值。
* @param t_x10 出参:温度 ×10(可为 NULL)
* @param h 出参:湿度 %(可为 NULL)
* @return 1=取到一次新采样,0=无新采样
*/
uint8_t app_th_take_sample(int16_t *t_x10, uint8_t *h);
#endif /* __APP_TH_H__ */