#ifndef EVSE_HARDWARE_H
#define EVSE_HARDWARE_H

#ifdef __cplusplus
extern "C" {
#endif

#include <stdbool.h>
#include <stdint.h>

/**
 * @brief Inicializa todos os periféricos de hardware do EVSE (pilot, relé, trava, etc.)
 */
void evse_hardware_init(void);

/**
 * @brief Executa atualizações periódicas no hardware (tick)
 */
void evse_hardware_tick(void);

/**
 * @brief Verifica se o sinal piloto está em nível alto (12V)
 */
bool evse_hardware_is_pilot_high(void);

/**
 * @brief Verifica se o veículo está fisicamente conectado via Proximity
 */
bool evse_hardware_is_vehicle_connected(void);

/**
 * @brief Verifica se há consumo de energia (corrente detectada)
 */
bool evse_hardware_is_energy_detected(void);

/**
 * @brief Liga o relé de fornecimento de energia
 */
void evse_hardware_relay_on(void);

/**
 * @brief Desliga o relé de fornecimento de energia
 */
void evse_hardware_relay_off(void);

/**
 * @brief Consulta o estado atual do relé
 * @return true se ligado, false se desligado
 */
bool evse_hardware_relay_status(void);

/**
 * @brief Aciona a trava física do conector
 */
void evse_hardware_lock(void);

/**
 * @brief Libera a trava física do conector
 */
void evse_hardware_unlock(void);

/**
 * @brief Verifica se o conector está travado
 */
bool evse_hardware_is_locked(void);

#ifdef __cplusplus
}
#endif

#endif // EVSE_HARDWARE_H
