refact auth
This commit is contained in:
@@ -1,13 +1,24 @@
|
||||
#include "evse_state.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/portmacro.h"
|
||||
|
||||
static evse_state_t current_state = EVSE_STATE_A;
|
||||
static bool is_authorized = false;
|
||||
|
||||
// Proteção básica para variáveis globais em sistemas concorrentes
|
||||
static portMUX_TYPE state_mux = portMUX_INITIALIZER_UNLOCKED;
|
||||
|
||||
void evse_set_state(evse_state_t state) {
|
||||
portENTER_CRITICAL(&state_mux);
|
||||
current_state = state;
|
||||
portEXIT_CRITICAL(&state_mux);
|
||||
}
|
||||
|
||||
evse_state_t evse_get_state(void) {
|
||||
return current_state;
|
||||
portENTER_CRITICAL(&state_mux);
|
||||
evse_state_t s = current_state;
|
||||
portEXIT_CRITICAL(&state_mux);
|
||||
return s;
|
||||
}
|
||||
|
||||
const char* evse_state_to_str(evse_state_t state) {
|
||||
@@ -26,10 +37,12 @@ const char* evse_state_to_str(evse_state_t state) {
|
||||
}
|
||||
|
||||
void evse_state_init(void) {
|
||||
// Inicialização do estado EVSE
|
||||
portENTER_CRITICAL(&state_mux);
|
||||
current_state = EVSE_STATE_A;
|
||||
is_authorized = false;
|
||||
portEXIT_CRITICAL(&state_mux);
|
||||
}
|
||||
|
||||
|
||||
void evse_state_tick(void) {
|
||||
// Tick do estado (placeholder)
|
||||
}
|
||||
@@ -47,3 +60,16 @@ bool evse_state_is_plugged(evse_state_t state) {
|
||||
bool evse_state_is_session(evse_state_t state) {
|
||||
return state == EVSE_STATE_B2 || state == EVSE_STATE_C1 || state == EVSE_STATE_C2;
|
||||
}
|
||||
|
||||
void evse_state_set_authorized(bool authorized) {
|
||||
portENTER_CRITICAL(&state_mux);
|
||||
is_authorized = authorized;
|
||||
portEXIT_CRITICAL(&state_mux);
|
||||
}
|
||||
|
||||
bool evse_state_get_authorized(void) {
|
||||
portENTER_CRITICAL(&state_mux);
|
||||
bool result = is_authorized;
|
||||
portEXIT_CRITICAL(&state_mux);
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user