P0/P1/P2功能实现:接入业务组合根(按键/LED/过零/配网/OTA),联动、11B定时、运行记录、灯泡寿命(DP3/DP4/DP25)、CBR0 VM、512分包
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
/******************************************************************************
|
||||
* @file app_linkage.h
|
||||
* @brief CBR0 联动引擎(第 10 章:1 条 20B DP11 配置,温度回差开/关)
|
||||
* @author cyWu <1917507415@qq.com>
|
||||
* @date 2026.09.04
|
||||
* @version V1.0.0,P0 = 骨架(BOARD_LINKAGE_ENABLE=0;P2 填充)
|
||||
*
|
||||
* @note 开停只看温度(temp_x10,0.1℃ 有符号):
|
||||
* T < Tmin → 请求开加热
|
||||
* T > Tmax → 请求关加热
|
||||
* [Tmin,Tmax] → 保持上一态
|
||||
* 温度源:已连接=DP9(float×10);断连=扫描风扇 JBao-{tank} 广播。
|
||||
* 丢广播/无效包 → 当没收到,保持上一态(禁止丢包关加热)。
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __APP_LINKAGE_H__
|
||||
#define __APP_LINKAGE_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @brief 初始化联动(配置有效性由 is_valid 判;作废标志清 0)
|
||||
* @return 无
|
||||
*/
|
||||
void app_linkage_init(void);
|
||||
|
||||
/**
|
||||
* @brief 500ms 任务上下文跑联动:有效配置 + 未被手动作废 + 有有效温度才判
|
||||
* @param dt 距上次调用的毫秒数(=500)
|
||||
* @return 无
|
||||
*/
|
||||
void app_linkage_run(uint16_t dt);
|
||||
|
||||
/**
|
||||
* @brief 立刻按当前温度重判一次(APP 重写 DP11 / 定时窗收口后调用)
|
||||
* @return 无
|
||||
*/
|
||||
void app_linkage_reeval(void);
|
||||
|
||||
/**
|
||||
* @brief DP7 联动删除(脉冲):清 RAM+VM 20B;联动占着则关;delete 清 0
|
||||
* @return 无
|
||||
*/
|
||||
void app_linkage_delete(void);
|
||||
|
||||
/**
|
||||
* @brief APP 重写 DP11(memcpy 已完成):存 VM、清手动作废、立刻重判
|
||||
* @return 无
|
||||
*/
|
||||
void app_linkage_set_config(void);
|
||||
|
||||
/**
|
||||
* @brief 手动作废本轮联动(RAM,不写 VM;仲裁器唯一转调点)
|
||||
* @return 无
|
||||
*/
|
||||
void app_linkage_void(void);
|
||||
|
||||
/**
|
||||
* @brief 配置是否有效(缸体号≠0 且 Tmin≤Tmax)
|
||||
* @return 1=有效
|
||||
*/
|
||||
uint8_t app_linkage_is_valid(void);
|
||||
|
||||
/**
|
||||
* @brief 缸体编号(DP11 Byte0-1,uint16 大端)
|
||||
* @return tank_id
|
||||
*/
|
||||
uint16_t app_linkage_get_tank_id(void);
|
||||
|
||||
/**
|
||||
* @brief 配置版本(DP11 Byte6,扫描匹配用)
|
||||
* @return 版本号
|
||||
*/
|
||||
uint8_t app_linkage_get_cfg_ver(void);
|
||||
|
||||
/**
|
||||
* @brief BLE 已连接:服务器下发 DP6 温度(℃ float)→ 联动温度
|
||||
* @param degc 服务器下发物理量(如 28.5)
|
||||
* @return 无
|
||||
*/
|
||||
void app_linkage_set_connected_temp(float degc);
|
||||
|
||||
/**
|
||||
* @brief 断连扫描:匹配到 JBao-{tank} 广播 → 联动温度(℃ int8)
|
||||
* @param degc 风扇广播温度 int8(单位 ℃)
|
||||
* @return 无
|
||||
*/
|
||||
void app_linkage_set_scan_temp(int8_t degc);
|
||||
|
||||
/**
|
||||
* @brief 是否已有任何有效温度(连接 DP6 或扫描匹配到过)
|
||||
* @return 1=有;0=尚无温度(联动不动作)
|
||||
*/
|
||||
uint8_t app_linkage_has_temp(void);
|
||||
|
||||
#endif /* __APP_LINKAGE_H__ */
|
||||
Reference in New Issue
Block a user