Adicionar primeiro
This commit is contained in:
81
components/evse/evse_manager.c
Normal file
81
components/evse/evse_manager.c
Normal file
@@ -0,0 +1,81 @@
|
||||
#include "evse_manager.h"
|
||||
#include "evse_state.h"
|
||||
#include "evse_error.h"
|
||||
#include "evse_hardware.h"
|
||||
#include "evse_config.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "freertos/semphr.h"
|
||||
#include "esp_log.h"
|
||||
|
||||
static const char *TAG = "evse_manager";
|
||||
|
||||
static SemaphoreHandle_t evse_mutex;
|
||||
|
||||
#define EVSE_MANAGER_TICK_PERIOD_MS 1000 // 1 segundo
|
||||
|
||||
|
||||
|
||||
void evse_manager_init(void) {
|
||||
evse_mutex = xSemaphoreCreateMutex();
|
||||
|
||||
evse_config_init();
|
||||
evse_error_init();
|
||||
evse_hardware_init();
|
||||
evse_state_init();
|
||||
ESP_LOGI(TAG, "EVSE Manager initialized");
|
||||
|
||||
xTaskCreate(
|
||||
evse_manager_task,
|
||||
"evse_manager_task",
|
||||
4096, // stack size
|
||||
NULL, // param
|
||||
5, // priority
|
||||
NULL // handle
|
||||
);
|
||||
}
|
||||
|
||||
void evse_manager_task(void *arg) {
|
||||
while (true) {
|
||||
evse_manager_tick();
|
||||
vTaskDelay(pdMS_TO_TICKS(EVSE_MANAGER_TICK_PERIOD_MS));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void evse_manager_tick(void) {
|
||||
xSemaphoreTake(evse_mutex, portMAX_DELAY);
|
||||
|
||||
// Atualizações cíclicas de módulos
|
||||
evse_hardware_tick();
|
||||
evse_error_tick();
|
||||
evse_state_tick();
|
||||
|
||||
evse_temperature_check();
|
||||
|
||||
xSemaphoreGive(evse_mutex);
|
||||
}
|
||||
|
||||
bool evse_manager_is_available(void) {
|
||||
return evse_config_is_available();
|
||||
}
|
||||
|
||||
void evse_manager_set_available(bool available) {
|
||||
evse_config_set_available(available);
|
||||
}
|
||||
|
||||
void evse_manager_set_authorized(bool authorized) {
|
||||
evse_state_set_authorized(authorized);
|
||||
}
|
||||
|
||||
bool evse_manager_is_charging(void) {
|
||||
return evse_state_is_charging(evse_get_state());
|
||||
}
|
||||
|
||||
void evse_manager_set_enabled(bool enabled) {
|
||||
evse_config_set_enabled(enabled);
|
||||
}
|
||||
|
||||
bool evse_manager_is_enabled(void) {
|
||||
return evse_config_is_enabled();
|
||||
}
|
||||
Reference in New Issue
Block a user