/** * @file outputs.h * @brief Output control for circulation pump, burner, and safety contact. * * This module controls the relay outputs via GPIO pins. All outputs * are active-low (relay energized when GPIO is low). */ #pragma once #include "esp_err.h" /** * @brief Output state enumeration. */ typedef enum _Output { ENABLED, /**< Output active (relay energized, GPIO low). */ DISABLED /**< Output inactive (relay de-energized, GPIO high). */ } eOutput; /** * @brief Initialize the outputs module. * * Configures GPIO pins for circulation pump, burner, and safety contact * as outputs. All outputs are initialized to DISABLED (safe state). * * @return ESP_OK on success, ESP_FAIL on error. */ esp_err_t initOutputs(void); /** * @brief Get the current circulation pump state. * @return eOutput state (ENABLED or DISABLED). */ eOutput getCirculationPumpState(void); /** * @brief Set the circulation pump state. * @param in Desired state (ENABLED or DISABLED). */ void setCirculationPumpState(eOutput in); /** * @brief Get the current burner state. * @return eOutput state (ENABLED or DISABLED). */ eOutput getBurnerState(void); /** * @brief Set the burner state. * @param in Desired state (ENABLED or DISABLED). */ void setBurnerState(eOutput in); /** * @brief Get the current safety contact state. * @return eOutput state (ENABLED or DISABLED). */ eOutput getSafetyControlState(void); /** * @brief Set the safety contact state. * * The safety contact controls power to the burner. When DISABLED, * the burner cannot operate regardless of the burner signal. * * @param in Desired state (ENABLED or DISABLED). */ void setSafetyControlState(eOutput in);