/****************************************************************************** * @file app_spray.h * @brief 喷淋作业引擎:一轮 = 单次时长 × 次数 + 间隔(规格书第 10 章) * @author cyWu <1917507415@qq.com> * @date 2026.09.09 * @version V1.3.0 * @history * - V1.3.0, 2026.09.09, cyWu, P2 轮来源 owner + 计划参数通道 + 轮结束事件 *******************************************************************************/ #ifndef __APP_SPRAY_H__ #define __APP_SPRAY_H__ #include /** 轮来源(规格书 13 章仲裁:手动 > 计划 > 联动) */ typedef enum { APP_SPRAY_OWNER_NONE = 0, /**< 空闲 */ APP_SPRAY_OWNER_MANUAL, /**< PB1 / DP1 / DP7 */ APP_SPRAY_OWNER_PLAN, /**< 计划到点 */ APP_SPRAY_OWNER_LINKAGE /**< 湿度联动循环 */ } AppSprayOwner_t; typedef enum { APP_SPRAY_OK = 0, APP_SPRAY_ERR_NOT_INIT } AppSpray_Ret_t; /** * @brief 初始化作业引擎(泵保持关,参数待起轮时解析) * @return APP_SPRAY_OK=成功 */ AppSpray_Ret_t app_spray_init(void); /** * @brief 请求开一轮:空闲才执行,用 RAM 里最近有效 DP7 配置(手动来源) * @note 请求在 20ms tick 消费;幂等:消费时已在作业中则保持当前轮 * (规格书 10.5,PB1/DP1 语义)。 * @return 无 */ void app_spray_req_start(void); /** * @brief 请求停:消费时立刻两脚拉低、结束作业(间隔等待中也立即停) * @return 无 */ void app_spray_req_stop(void); /** * @brief 请求重开一轮:中止当前轮(若有)并按 RAM 里最新 DP7 参数立刻开新轮 * @note APP 写合法 DP7 的专用入口(规格书 10.2:中止旧轮再开新轮)。 * @return 无 */ void app_spray_req_restart(void); /** * @brief 请求开一轮(联动循环来源,DP7 参数) * @note 规格书 11.3:H