/* * evse_session.h * Module to track and retrieve charging session data (current or last completed), * accumulating energy via periodic tick of instantaneous power. */ #ifndef EVSE_SESSION_H #define EVSE_SESSION_H #include #include #include "freertos/FreeRTOS.h" /** * @brief Charging session statistics */ typedef struct { TickType_t start_tick; ///< tick when session began uint32_t duration_s; ///< total duration in seconds uint32_t energy_wh; ///< total energy consumed in Wh uint32_t avg_power_w; ///< average power in W bool is_current; ///< true if session still in progress } evse_session_t; /** * @brief Initialize the session module */ void evse_session_init(void); /** * @brief Mark the beginning of a charging session */ void evse_session_start(void); /** * @brief Mark the end of the charging session and store it as "last session" */ void evse_session_end(void); /** * @brief Periodic tick: must be called (e.g., each 1s) to accumulate energy from instant power */ void evse_session_tick(void); /** * @brief Retrieve statistics of either the current ongoing session (if any) or * the last completed session. * @param out pointer to evse_session_t to be filled * @return true if there is a current or last session available, false otherwise */ bool evse_session_get(evse_session_t *out); #endif // EVSE_SESSION_H