/****************************************************************************** * @file app_spray.h * @brief 喷淋作业引擎:一轮 = 单次时长 × 次数 + 间隔(规格书第 10 章) * @author cyWu <1917507415@qq.com> * @date 2026.09.09 * @version V1.0.0 ******************************************************************************/ #ifndef __APP_SPRAY_H__ #define __APP_SPRAY_H__ #include typedef enum { APP_SPRAY_OK = 0, APP_SPRAY_ERR_NOT_INIT } AppSpray_Ret_t; /** * @brief 初始化作业引擎(读 DP7 有效配置,泵保持关) * @return APP_SPRAY_OK=成功 */ AppSpray_Ret_t app_spray_init(void); /** * @brief 开一轮:用 RAM 里最近有效 DP7 配置(非法回退 10s×3 次+3s) * @note 幂等:已在作业中则保持当前轮不重开(规格书 10.5,PB1/DP1 语义)。 * @return 无 */ void app_spray_start(void); /** * @brief 停:立刻两脚拉低、结束作业(间隔等待中也立即停) * @return 无 */ void app_spray_stop(void); /** * @brief 作业节拍:时长/间隔倒数,到点切泵(每 20ms 调用,可中断上下文) * @param dt 距上次调用的毫秒数 * @return 无 */ void app_spray_poll(uint16_t dt); /** * @brief 查询是否处于作业态(含间隔等待,整轮期间为 1) * @return 1=作业中,0=空闲 */ uint8_t app_spray_is_running(void); /** * @brief 查询模块是否已初始化 * @return APP_SPRAY_OK=已初始化,APP_SPRAY_ERR_NOT_INIT=未初始化 */ AppSpray_Ret_t app_spray_get_status(void); #endif /* __APP_SPRAY_H__ */