#ifndef EVSE_METER_H
#define EVSE_METER_H

#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

#define EVSE_METER_PHASE_COUNT 3

/// Inicializa o módulo EVSE Meter e registra os tratadores de eventos
void evse_meter_init(void);

/// Retorna a potência instantânea (soma das 3 fases, em watts)
int evse_meter_get_instant_power(void);

/// Retorna a energia total acumulada (em Wh)
int evse_meter_get_total_energy(void);

/// Retorna as potências instantâneas nas fases L1, L2 e L3 (em watts)
void evse_meter_get_power(int power[EVSE_METER_PHASE_COUNT]);

/// Retorna as tensões medidas nas fases L1, L2 e L3 (em volts)
void evse_meter_get_voltage(float voltage[EVSE_METER_PHASE_COUNT]);

/// Retorna as correntes medidas nas fases L1, L2 e L3 (em amperes)
void evse_meter_get_current(float current[EVSE_METER_PHASE_COUNT]);

/// Handler interno para eventos do medidor (não chamar externamente)
void evse_meter_on_meter_event(void* arg, void* event_data);

#ifdef __cplusplus
}
#endif

#endif // EVSE_METER_H
