/****************************************************************************** * @file app_linkage.h * @brief CBR2 联动引擎(规格书第 11 章:1 条 20B DP9 配置,湿度回差开/关) * @author cyWu <1917507415@qq.com> * @date 2026.09.09 * @version V1.0.0,首次发布 * * @note 开停只看湿度(11.3,uint8 %): * H < Hmin → 循环喷(一轮正常结束后立刻再开,DP7 参数) * H > Hmax → 立刻停泵、结束作业 * [Hmin,Hmax] → 保持上一态(含等于不算越界) * 湿度源(8 章):已连接=DP6(set_connected_humi);断连=扫描 * JBao-{tank}(set_scan_humi)。丢广播/无效包 → 当没收到,保持 * 上一态(禁止丢包停喷)。 ******************************************************************************/ #ifndef __APP_LINKAGE_H__ #define __APP_LINKAGE_H__ #include /** * @brief 初始化联动(配置有效性由 is_valid 判;作废标志清 0) * @return 无 */ void app_linkage_init(void); /** * @brief 500ms 任务上下文跑联动:有效配置 + 未被手动作废 + 有有效湿度才判 * @param dt 距上次调用的毫秒数(=500) * @return 无 */ void app_linkage_run(uint16_t dt); /** * @brief 立刻按当前湿度重判一次(DP9 重写 / 计划轮收口 / 联动轮结束后调用) * @return 无 */ void app_linkage_reeval(void); /** * @brief DP8 联动删除(脉冲):清 RAM+VM 20B;联动占着则停;delete 清 0 * @return 无 */ void app_linkage_delete(void); /** * @brief APP 重写 DP9(memcpy 已完成):存 VM、清手动作废、立刻重判 * @return 无 */ void app_linkage_set_config(void); /** * @brief 手动作废联动轮(PB1 开/停、DP1、DP7 抢权触发,RAM 不写 VM) * @return 无 */ void app_linkage_void(void); /** * @brief 配置是否有效(缸体号≠0 且 Hmin≤Hmax) * @return 1=有效 */ uint8_t app_linkage_is_valid(void); /** * @brief 缸体编号(DP9 Byte0-1,uint16 大端) * @return tank_id */ uint16_t app_linkage_get_tank_id(void); /** * @brief 配置版本(DP9 Byte6,扫描匹配用) * @return 版本号 */ uint8_t app_linkage_get_cfg_ver(void); /** * @brief BLE 已连接:服务器下发 DP6 湿度(uint8 %)→ 联动湿度 * @param humi 服务器下发湿度 % * @return 无 */ void app_linkage_set_connected_humi(uint8_t humi); /** * @brief 断连扫描:匹配到 JBao-{tank} 广播 → 联动湿度(uint8 %) * @param humi 风扇广播湿度 % * @return 无 */ void app_linkage_set_scan_humi(uint8_t humi); /** * @brief 是否已有任何有效湿度(连接 DP6 或扫描匹配到过) * @return 1=有;0=尚无湿度(联动不动作) */ uint8_t app_linkage_has_humi(void); #endif /* __APP_LINKAGE_H__ */