Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter

- CitrineOS core extracted (CSMS OCPP 2.0.1)
- OpenOCPP extracted (firmware OCPP 1.6J/2.0.1)
- ShapeShifter library installed (pip install -e)
- ShapeShifter specification extracted
- EVerest extracted

TODO updated with progress
This commit is contained in:
Eric F
2026-06-08 00:38:27 -04:00
parent 468cfeaa50
commit d398a6ced2
7326 changed files with 1177561 additions and 7 deletions

View File

@@ -0,0 +1,97 @@
// SPDX-License-Identifier: Apache-2.0
// Copyright Pionix GmbH and Contributors to EVerest
// Description: This file defines the SessionInfoStore class, which is used to manage session information for EV
// charging sessions. It includes methods to update session state, set energy readings, and calculate charged and
// discharged energy. The code of SessionInfoStore class is mostly a copy of the EVerest API module.
#ifndef SESSIONINFO_HPP
#define SESSIONINFO_HPP
// headers for required interface implementations
#include <generated/types/evse_manager.hpp>
#include <generated/types/uk_random_delay.hpp>
// insert your custom include headers here
#include <date/date.h>
#include <date/tz.h>
#include <mutex>
namespace data {
class SessionInfoStore {
public:
SessionInfoStore();
struct Error {
std::string type;
std::string description;
std::string severity;
};
bool start_energy_export_wh_was_set{
false}; ///< Indicate if start export energy value (optional) has been received or not
bool end_energy_export_wh_was_set{
false}; ///< Indicate if end export energy value (optional) has been received or not
void reset();
void update_state(const types::evse_manager::SessionEvent event);
void set_start_energy_import_wh(int32_t start_energy_import_wh);
void set_end_energy_import_wh(int32_t end_energy_import_wh);
void set_latest_energy_import_wh(int32_t latest_energy_wh);
void set_start_energy_export_wh(int32_t start_energy_export_wh);
void set_end_energy_export_wh(int32_t end_energy_export_wh);
void set_latest_energy_export_wh(int32_t latest_export_energy_wh);
void set_latest_total_w(double latest_total_w);
void set_uk_random_delay_remaining(const types::uk_random_delay::CountDown& c);
void set_enable_disable_source(const std::string& active_source, const std::string& active_state,
const int active_priority);
void set_permanent_fault(bool f) {
permanent_fault = f;
}
float get_charged_energy_wh() const;
float get_discharged_energy_wh() const;
std::chrono::seconds get_charging_duration_s() const;
/// \brief Converts this struct into a serialized json object
operator std::string();
private:
mutable std::mutex session_info_mutex;
int32_t start_energy_import_wh; ///< Energy reading (import) at the beginning of this charging session in Wh
int32_t end_energy_import_wh; ///< Energy reading (import) at the end of this charging session in Wh
int32_t start_energy_export_wh; ///< Energy reading (export) at the beginning of this charging session in Wh
int32_t end_energy_export_wh; ///< Energy reading (export) at the end of this charging session in Wh
types::uk_random_delay::CountDown uk_random_delay_remaining; ///< Remaining time of a UK smart charging regs
///< delay. Set to 0 if no delay is active
std::chrono::time_point<date::utc_clock> start_time_point; ///< Start of the charging session
std::chrono::time_point<date::utc_clock> end_time_point; ///< End of the charging session
double latest_total_w; ///< Latest total power reading in W
enum class State {
Unknown,
Unplugged,
Disabled,
Preparing,
Reserved,
AuthRequired,
ChargingPausedEV,
ChargingPausedEVSE,
Charging,
AuthTimeout,
Finished,
FinishedEVSE,
FinishedEV
} state;
bool is_state_charging(const SessionInfoStore::State current_state);
std::string active_enable_disable_source{"Unspecified"};
std::string active_enable_disable_state{"Enabled"};
int active_enable_disable_priority{0};
bool permanent_fault{false};
};
} // namespace data
#endif // SESSIONINFO_HPP