#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