#include "evse_hardware.h"
#include "evse_pilot.h"
#include "ac_relay.h"
#include "socket_lock.h"
#include "proximity.h"

static const char *TAG = "evse_hardware";

void evse_hardware_init(void) {
    pilot_init();
    pilot_set_level(true);              // Sinal piloto em 12V (inicial)
    ac_relay_set_state(false);          // Relé desligado
    //socket_lock_set_locked(false);      // Destrava o conector
}

void evse_hardware_tick(void) {
    // Tick para atualizações de hardware com polling, se necessário
}

bool evse_hardware_is_pilot_high(void) {
    return pilot_get_state();  // true se sinal piloto estiver em nível alto
}

bool evse_hardware_is_vehicle_connected(void) {
    // Verifica se o veículo está conectado pelo resistor do pino PP
    return proximity_get_max_current() > 0;
}

bool evse_hardware_is_energy_detected(void) {
    return false;
}

void evse_hardware_relay_on(void) {
    ac_relay_set_state(true);
}

void evse_hardware_relay_off(void) {
    ac_relay_set_state(false);
}

bool evse_hardware_relay_status(void) {
    return ac_relay_get_state();
}

void evse_hardware_lock(void) {
    socket_lock_set_locked(true);
}

void evse_hardware_unlock(void) {
    socket_lock_set_locked(false);
}

bool evse_hardware_is_locked(void) {
    return socket_lock_is_locked_state();
}
