#pragma once #ifdef __cplusplus extern "C" { #endif #include #include #include "esp_err.h" /** * @brief Inicializa o driver do medidor (SPI, mutex, registradores ADE7758). */ esp_err_t meter_init(void); /** * @brief Inicia a tarefa de leitura de dados do medidor. */ esp_err_t meter_start(void); /** * @brief Para a tarefa de leitura e limpa os dados internos. */ void meter_stop(void); /** * @brief Verifica se o medidor está em execução. * * @return true se a tarefa estiver ativa, false caso contrário. */ bool meter_is_running(void); /** * @brief Limpa os dados armazenados no medidor (zera todos os valores). */ void meter_clear_data(void); // ----- Leituras por fase (L1, L2, L3) ----- // Tensão RMS (em volts) float meter_get_vrms_l1(void); float meter_get_vrms_l2(void); float meter_get_vrms_l3(void); // Corrente RMS (em amperes) float meter_get_irms_l1(void); float meter_get_irms_l2(void); float meter_get_irms_l3(void); // Potência ativa (W) int meter_get_watt_l1(void); int meter_get_watt_l2(void); int meter_get_watt_l3(void); // Potência reativa (VAR) int meter_get_var_l1(void); int meter_get_var_l2(void); int meter_get_var_l3(void); // Potência aparente (VA) int meter_get_va_l1(void); int meter_get_va_l2(void); int meter_get_va_l3(void); // (Opcional) contador de watchdog para diagnóstico uint32_t meter_get_watchdog_counter(void); #ifdef __cplusplus } #endif