#ifndef EVSE_SESSION_H #define EVSE_SESSION_H #include #include #include "freertos/FreeRTOS.h" #include "auth_types.h" /** * @brief Charging session statistics */ typedef struct { TickType_t start_tick; ///< tick when session began (debug/trace) uint32_t session_id; ///< monotonically increasing session identifier char tag[AUTH_TAG_MAX_LEN]; ///< RFID/auth tag associated with this session, empty if none uint32_t duration_s; ///< total duration in seconds (tempo real) uint32_t energy_wh; ///< total energy consumed in Wh (tempo real) uint32_t avg_power_w; ///< average power in W bool is_current; ///< true if session still in progress } evse_session_t; void evse_session_init(void); /** * @brief Stores the tag that authorized the next charging session. * * The tag is copied into the session when evse_session_start() is called. * Passing NULL or an empty string clears the pending tag. */ void evse_session_set_authorized_tag(const char *tag); void evse_session_clear_authorized_tag(void); void evse_session_start(void); void evse_session_end(void); /** * @brief Periodic tick: called (e.g., each 1s) to accumulate energy from instant power. * Implementação usa esp_timer (não assume 1s exato). */ void evse_session_tick(void); bool evse_session_get(evse_session_t *out); #endif // EVSE_SESSION_H