Files
Smart-granary-code/components/relay_ctrl/include/relay_ctrl.h

42 lines
946 B
C

#pragma once
#include "esp_err.h"
#include "driver/gpio.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
RELAY_CTRL_ID_1 = 0,
RELAY_CTRL_ID_2,
RELAY_CTRL_ID_3,
RELAY_CTRL_ID_4,
RELAY_CTRL_ID_MAX
} relay_ctrl_id_t;
/**
* @brief 继电器配置结构体
*/
typedef struct {
gpio_num_t pin; // GPIO 引脚
bool active_high; // 该继电器是否为高电平触发
} relay_config_t;
/**
* @brief 初始化继电器控制模块
*
* @param config 包含 4 个继电器详细配置的数组
* @return esp_err_t
*/
esp_err_t relay_ctrl_init(const relay_config_t config[RELAY_CTRL_ID_MAX]);
esp_err_t relay_ctrl_set(relay_ctrl_id_t relay_id, bool on);
esp_err_t relay_ctrl_toggle(relay_ctrl_id_t relay_id);
esp_err_t relay_ctrl_get(relay_ctrl_id_t relay_id, bool *on_out);
esp_err_t relay_ctrl_set_all(bool relay1_on, bool relay2_on, bool relay3_on, bool relay4_on);
#ifdef __cplusplus
}
#endif