Skip to content

Commit

Permalink
Start implementing the California Pricing interfaces (display message…
Browse files Browse the repository at this point in the history
… and session cost)

Signed-off-by: Maaike Zijderveld, iolar <[email protected]>
  • Loading branch information
maaikez committed Jul 12, 2024
1 parent 5a87787 commit 00fd07c
Show file tree
Hide file tree
Showing 8 changed files with 214 additions and 0 deletions.
2 changes: 2 additions & 0 deletions modules/OCPP/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ target_sources(${MODULE_NAME}
"auth_provider/auth_token_providerImpl.cpp"
"data_transfer/ocpp_data_transferImpl.cpp"
"ocpp_generic/ocppImpl.cpp"
"display_message/display_messageImpl.cpp"
"session_cost/session_costImpl.cpp"
"conversions.cpp"
)

Expand Down
22 changes: 22 additions & 0 deletions modules/OCPP/OCPP.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -765,6 +765,28 @@ void OCPP::ready() {
this->p_ocpp_generic->publish_boot_notification_response(everest_boot_notification_response);
});

this->charge_point->register_session_cost_callback(
[this](const ocpp::RunningCost& session_cost) -> ocpp::v16::DataTransferResponse {
const types::session_cost::SessionCost cost = conversions::to_everest_session_cost(session_cost);
// TODO call set session cost function from interface
// TODO finish!!
});

this->charge_point->register_set_display_message_callback(
[this](const std::vector<ocpp::DisplayMessage>& messages) -> ocpp::v16::DataTransferResponse {
std::vector<types::display_message::DisplayMessage> display_messages;
for (const ocpp::DisplayMessage& message : messages) {
const types::display_message::DisplayMessage m = conversions::to_everest_display_message(message);
display_messages.push_back(m);
}

// this->

// TODO call set display messages function from interface
// TODO return values
// TODO finish!!
});

if (!this->r_data_transfer.empty()) {
this->charge_point->register_data_transfer_callback([this](const ocpp::v16::DataTransferRequest& request) {
types::ocpp::DataTransferRequest data_transfer_request;
Expand Down
8 changes: 8 additions & 0 deletions modules/OCPP/OCPP.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,11 @@
// headers for provided interface implementations
#include <generated/interfaces/auth_token_provider/Implementation.hpp>
#include <generated/interfaces/auth_token_validator/Implementation.hpp>
#include <generated/interfaces/display_message/Implementation.hpp>
#include <generated/interfaces/ocpp/Implementation.hpp>
#include <generated/interfaces/ocpp_1_6_charge_point/Implementation.hpp>
#include <generated/interfaces/ocpp_data_transfer/Implementation.hpp>
#include <generated/interfaces/session_cost/Implementation.hpp>

// headers for required interface implementations
#include <generated/interfaces/auth/Interface.hpp>
Expand Down Expand Up @@ -66,6 +68,8 @@ class OCPP : public Everest::ModuleBase {
std::unique_ptr<auth_token_validatorImplBase> p_auth_validator,
std::unique_ptr<auth_token_providerImplBase> p_auth_provider,
std::unique_ptr<ocpp_data_transferImplBase> p_data_transfer, std::unique_ptr<ocppImplBase> p_ocpp_generic,
std::unique_ptr<display_messageImplBase> p_display_message,
std::unique_ptr<session_costImplBase> p_session_cost,
std::vector<std::unique_ptr<evse_managerIntf>> r_evse_manager,
std::vector<std::unique_ptr<external_energy_limitsIntf>> r_connector_zero_sink,
std::unique_ptr<reservationIntf> r_reservation, std::unique_ptr<authIntf> r_auth,
Expand All @@ -78,6 +82,8 @@ class OCPP : public Everest::ModuleBase {
p_auth_provider(std::move(p_auth_provider)),
p_data_transfer(std::move(p_data_transfer)),
p_ocpp_generic(std::move(p_ocpp_generic)),
p_display_message(std::move(p_display_message)),
p_session_cost(std::move(p_session_cost)),
r_evse_manager(std::move(r_evse_manager)),
r_connector_zero_sink(std::move(r_connector_zero_sink)),
r_reservation(std::move(r_reservation)),
Expand All @@ -93,6 +99,8 @@ class OCPP : public Everest::ModuleBase {
const std::unique_ptr<auth_token_providerImplBase> p_auth_provider;
const std::unique_ptr<ocpp_data_transferImplBase> p_data_transfer;
const std::unique_ptr<ocppImplBase> p_ocpp_generic;
const std::unique_ptr<display_messageImplBase> p_display_message;
const std::unique_ptr<session_costImplBase> p_session_cost;
const std::vector<std::unique_ptr<evse_managerIntf>> r_evse_manager;
const std::vector<std::unique_ptr<external_energy_limitsIntf>> r_connector_zero_sink;
const std::unique_ptr<reservationIntf> r_reservation;
Expand Down
34 changes: 34 additions & 0 deletions modules/OCPP/display_message/display_messageImpl.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// SPDX-License-Identifier: Apache-2.0
// Copyright Pionix GmbH and Contributors to EVerest

#include "display_messageImpl.hpp"

namespace module {
namespace display_message {

void display_messageImpl::init() {
}

void display_messageImpl::ready() {
}

types::display_message::SetDisplayMessageResponse
display_messageImpl::handle_set_display_message(std::vector<types::display_message::DisplayMessage>& request) {
// your code for cmd set_display_message goes here
return {};
}

types::display_message::GetDisplayMessageResponse
display_messageImpl::handle_get_display_messages(types::display_message::GetDisplayMessageRequest& request) {
// your code for cmd get_display_messages goes here
return {};
}

types::display_message::ClearDisplayMessageResponse
display_messageImpl::handle_clear_display_message(types::display_message::ClearDisplayMessageRequest& request) {
// your code for cmd clear_display_message goes here
return {};
}

} // namespace display_message
} // namespace module
66 changes: 66 additions & 0 deletions modules/OCPP/display_message/display_messageImpl.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
// SPDX-License-Identifier: Apache-2.0
// Copyright Pionix GmbH and Contributors to EVerest
#ifndef DISPLAY_MESSAGE_DISPLAY_MESSAGE_IMPL_HPP
#define DISPLAY_MESSAGE_DISPLAY_MESSAGE_IMPL_HPP

//
// AUTO GENERATED - MARKED REGIONS WILL BE KEPT
// template version 3
//

#include <generated/interfaces/display_message/Implementation.hpp>

#include "../OCPP.hpp"

// ev@75ac1216-19eb-4182-a85c-820f1fc2c091:v1
// insert your custom include headers here
// ev@75ac1216-19eb-4182-a85c-820f1fc2c091:v1

namespace module {
namespace display_message {

struct Conf {};

class display_messageImpl : public display_messageImplBase {
public:
display_messageImpl() = delete;
display_messageImpl(Everest::ModuleAdapter* ev, const Everest::PtrContainer<OCPP>& mod, Conf& config) :
display_messageImplBase(ev, "display_message"), mod(mod), config(config){};

// ev@8ea32d28-373f-4c90-ae5e-b4fcc74e2a61:v1
// insert your public definitions here
// ev@8ea32d28-373f-4c90-ae5e-b4fcc74e2a61:v1

protected:
// command handler functions (virtual)
virtual types::display_message::SetDisplayMessageResponse
handle_set_display_message(std::vector<types::display_message::DisplayMessage>& request) override;
virtual types::display_message::GetDisplayMessageResponse
handle_get_display_messages(types::display_message::GetDisplayMessageRequest& request) override;
virtual types::display_message::ClearDisplayMessageResponse
handle_clear_display_message(types::display_message::ClearDisplayMessageRequest& request) override;

// ev@d2d1847a-7b88-41dd-ad07-92785f06f5c4:v1
// insert your protected definitions here
// ev@d2d1847a-7b88-41dd-ad07-92785f06f5c4:v1

private:
const Everest::PtrContainer<OCPP>& mod;
const Conf& config;

virtual void init() override;
virtual void ready() override;

// ev@3370e4dd-95f4-47a9-aaec-ea76f34a66c9:v1
// insert your private definitions here
// ev@3370e4dd-95f4-47a9-aaec-ea76f34a66c9:v1
};

// ev@3d7da0ad-02c2-493d-9920-0bbbd56b9876:v1
// insert other definitions here
// ev@3d7da0ad-02c2-493d-9920-0bbbd56b9876:v1

} // namespace display_message
} // namespace module

#endif // DISPLAY_MESSAGE_DISPLAY_MESSAGE_IMPL_HPP
6 changes: 6 additions & 0 deletions modules/OCPP/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,12 @@ provides:
ocpp_generic:
description: Generic OCPP interface.
interface: ocpp
display_message:
description: Set display message to some display
interface: display_message
session_cost:
description: Send session cost
interface: session_cost
requires:
evse_manager:
interface: evse_manager
Expand Down
16 changes: 16 additions & 0 deletions modules/OCPP/session_cost/session_costImpl.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// SPDX-License-Identifier: Apache-2.0
// Copyright Pionix GmbH and Contributors to EVerest

#include "session_costImpl.hpp"

namespace module {
namespace session_cost {

void session_costImpl::init() {
}

void session_costImpl::ready() {
}

} // namespace session_cost
} // namespace module
60 changes: 60 additions & 0 deletions modules/OCPP/session_cost/session_costImpl.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// SPDX-License-Identifier: Apache-2.0
// Copyright Pionix GmbH and Contributors to EVerest
#ifndef SESSION_COST_SESSION_COST_IMPL_HPP
#define SESSION_COST_SESSION_COST_IMPL_HPP

//
// AUTO GENERATED - MARKED REGIONS WILL BE KEPT
// template version 3
//

#include <generated/interfaces/session_cost/Implementation.hpp>

#include "../OCPP.hpp"

// ev@75ac1216-19eb-4182-a85c-820f1fc2c091:v1
// insert your custom include headers here
// ev@75ac1216-19eb-4182-a85c-820f1fc2c091:v1

namespace module {
namespace session_cost {

struct Conf {};

class session_costImpl : public session_costImplBase {
public:
session_costImpl() = delete;
session_costImpl(Everest::ModuleAdapter* ev, const Everest::PtrContainer<OCPP>& mod, Conf& config) :
session_costImplBase(ev, "session_cost"), mod(mod), config(config){};

// ev@8ea32d28-373f-4c90-ae5e-b4fcc74e2a61:v1
// insert your public definitions here
// ev@8ea32d28-373f-4c90-ae5e-b4fcc74e2a61:v1

protected:
// no commands defined for this interface

// ev@d2d1847a-7b88-41dd-ad07-92785f06f5c4:v1
// insert your protected definitions here
// ev@d2d1847a-7b88-41dd-ad07-92785f06f5c4:v1

private:
const Everest::PtrContainer<OCPP>& mod;
const Conf& config;

virtual void init() override;
virtual void ready() override;

// ev@3370e4dd-95f4-47a9-aaec-ea76f34a66c9:v1
// insert your private definitions here
// ev@3370e4dd-95f4-47a9-aaec-ea76f34a66c9:v1
};

// ev@3d7da0ad-02c2-493d-9920-0bbbd56b9876:v1
// insert other definitions here
// ev@3d7da0ad-02c2-493d-9920-0bbbd56b9876:v1

} // namespace session_cost
} // namespace module

#endif // SESSION_COST_SESSION_COST_IMPL_HPP

0 comments on commit 00fd07c

Please sign in to comment.