54 lines
1.4 KiB
C
54 lines
1.4 KiB
C
/*
|
|
* 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 <stdint.h>
|
|
#include <stdbool.h>
|
|
#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
|