Files
JBao_Sprayer_FW/apps/usr_app/app_spray.h
T
2026-09-09 15:03:50 +08:00

58 lines
1.6 KiB
C

/******************************************************************************
* @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 <stdint.h>
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__ */