Files
chargeflow/components/evse/include/evse_session.h
2026-05-15 12:20:47 +01:00

45 lines
1.5 KiB
C

#ifndef EVSE_SESSION_H
#define EVSE_SESSION_H
#include <stdint.h>
#include <stdbool.h>
#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