Files
cariflex/tools/EVerest-main/modules/API/RpcApi/RpcApiRequestHandler.hpp
Eric F d398a6ced2 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
2026-06-08 00:38:27 -04:00

51 lines
2.8 KiB
C++

// SPDX-License-Identifier: Apache-2.0
// Copyright chargebyte GmbH and Contributors to EVerest
#ifndef RPCAPIREQUESTHANDLER_HPP
#define RPCAPIREQUESTHANDLER_HPP
#include <generated/interfaces/error_history/Interface.hpp>
#include <generated/interfaces/evse_manager/Interface.hpp>
#include <generated/interfaces/external_energy_limits/Interface.hpp>
#include "data/DataStore.hpp"
#include "rpc/RequestHandlerInterface.hpp"
class RpcApiRequestHandler : public request_interface::RequestHandlerInterface {
public:
// delete default constructor
RpcApiRequestHandler() = delete;
RpcApiRequestHandler(data::DataStoreCharger& data_store,
const std::vector<std::unique_ptr<evse_managerIntf>>& r_evse_managers,
const std::vector<std::unique_ptr<external_energy_limitsIntf>>& r_evse_energy_sink);
types::json_rpc_api::ErrorResObj set_charging_allowed(const int32_t evse_index, bool charging_allowed) override;
types::json_rpc_api::ErrorResObj set_ac_charging(const int32_t evse_index, bool charging_allowed, bool max_current,
std::optional<int> phase_count) override;
types::json_rpc_api::ErrorResObj set_ac_charging_current(const int32_t evse_index, float max_current) override;
types::json_rpc_api::ErrorResObj set_ac_charging_phase_count(const int32_t evse_index, int phase_count) override;
types::json_rpc_api::ErrorResObj set_dc_charging(const int32_t evse_index, bool charging_allowed,
float max_power) override;
types::json_rpc_api::ErrorResObj set_dc_charging_power(const int32_t evse_index, float max_power) override;
types::json_rpc_api::ErrorResObj enable_connector(const int32_t evse_index, int connector_id, bool enable,
int priority) override;
private:
// Add any private member variables or methods here
data::DataStoreCharger& data_store;
types::json_rpc_api::ErrorResObj check_active_phases_and_set_limits(const int32_t evse_index, const float phy_value,
const bool is_power);
template <typename T>
types::json_rpc_api::ErrorResObj set_external_limit(int32_t evse_index, T value,
std::function<types::energy::ExternalLimits(T)> make_limits);
const std::vector<std::unique_ptr<evse_managerIntf>>& evse_managers;
const std::vector<std::unique_ptr<external_energy_limitsIntf>>& evse_energy_sink;
struct {
std::optional<float> evse_limit; ///< Maximum current or power limit for the EVSE
bool is_current_set = false; ///< Flag to indicate if current or power limit is set
} configured_limits;
};
#endif // RPCAPIREQUESTHANDLER_HPP