Improve EVSE hardware module
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include "ac_relay.h"
|
||||
#include "socket_lock.h"
|
||||
#include "proximity.h"
|
||||
#include "meter.h"
|
||||
|
||||
static const char *TAG = "evse_hardware";
|
||||
|
||||
@@ -26,8 +27,14 @@ bool evse_hardware_is_vehicle_connected(void) {
|
||||
}
|
||||
|
||||
bool evse_hardware_is_energy_detected(void) {
|
||||
// TODO: Substituir com medição real de corrente ou consumo
|
||||
return true;
|
||||
if (!meter_is_running()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
MeterData data = meter_getData();
|
||||
const float THRESHOLD = 0.1f; // Corrente mínima para considerar consumo
|
||||
return (data.irmsA > THRESHOLD) || (data.irmsB > THRESHOLD) ||
|
||||
(data.irmsC > THRESHOLD);
|
||||
}
|
||||
|
||||
void evse_hardware_relay_on(void) {
|
||||
@@ -51,5 +58,5 @@ void evse_hardware_unlock(void) {
|
||||
}
|
||||
|
||||
bool evse_hardware_is_locked(void) {
|
||||
return socket_lock_get_status() == SOCKED_LOCK_STATUS_IDLE;
|
||||
return socket_lock_is_locked_state();
|
||||
}
|
||||
|
||||
@@ -90,5 +90,10 @@ void socket_lock_set_locked(bool locked);
|
||||
*/
|
||||
socket_lock_status_t socket_lock_get_status(void);
|
||||
|
||||
/**
|
||||
* @brief Read the current physical lock state using the detection pin.
|
||||
*/
|
||||
bool socket_lock_is_locked_state(void);
|
||||
|
||||
|
||||
#endif /* SOCKED_LOCK_H_ */
|
||||
|
||||
@@ -51,6 +51,11 @@ static bool is_locked(void)
|
||||
return gpio_get_level(board_config.socket_lock_detection_gpio) == detection_high;
|
||||
}
|
||||
|
||||
bool socket_lock_is_locked_state(void)
|
||||
{
|
||||
return is_locked();
|
||||
}
|
||||
|
||||
static void socket_lock_task_func(void* param)
|
||||
{
|
||||
uint32_t notification;
|
||||
|
||||
Reference in New Issue
Block a user