ocpp 0.24.1
A C++ implementation of the Open Charge Point Protocol
data_transfer.hpp
1// SPDX-License-Identifier: Apache-2.0
2// Copyright Pionix GmbH and Contributors to EVerest
3
4#pragma once
5
6#include <ocpp/v2/message_handler.hpp>
7
8namespace ocpp {
9namespace v2 {
10struct FunctionalBlockContext;
11struct DataTransferRequest;
12struct DataTransferResponse;
13
15
16public:
17 virtual ~DataTransferInterface() = default;
18
24 virtual std::optional<DataTransferResponse> data_transfer_req(const CiString<255>& vendorId,
25 const std::optional<CiString<50>>& messageId,
26 const std::optional<json>& data) = 0;
27
32 virtual std::optional<DataTransferResponse> data_transfer_req(const DataTransferRequest& request) = 0;
33};
34
36
37private:
38 const FunctionalBlockContext& context;
39 std::optional<std::function<DataTransferResponse(const DataTransferRequest& request)>> data_transfer_callback;
40 std::chrono::seconds response_timeout;
41
42public:
43 DataTransfer(const FunctionalBlockContext& functional_block_context,
44 const std::optional<std::function<DataTransferResponse(const DataTransferRequest& request)>>&
45 data_transfer_callback,
46 const std::chrono::seconds response_timeout) :
47 context(functional_block_context),
48 data_transfer_callback(data_transfer_callback),
49 response_timeout(response_timeout){};
50
51 void handle_message(const EnhancedMessage<MessageType>& message) override;
52
53 std::optional<DataTransferResponse> data_transfer_req(const CiString<255>& vendorId,
54 const std::optional<CiString<50>>& messageId,
55 const std::optional<json>& data) override;
56
57 std::optional<DataTransferResponse> data_transfer_req(const DataTransferRequest& request) override;
58};
59
60} // namespace v2
61} // namespace ocpp
Definition: data_transfer.hpp:14
virtual std::optional< DataTransferResponse > data_transfer_req(const DataTransferRequest &request)=0
Sends a DataTransfer.req message to the CSMS using the given request.
virtual std::optional< DataTransferResponse > data_transfer_req(const CiString< 255 > &vendorId, const std::optional< CiString< 50 > > &messageId, const std::optional< json > &data)=0
Sends a DataTransfer.req message to the CSMS using the given parameters.
Definition: data_transfer.hpp:35
std::optional< DataTransferResponse > data_transfer_req(const CiString< 255 > &vendorId, const std::optional< CiString< 50 > > &messageId, const std::optional< json > &data) override
Sends a DataTransfer.req message to the CSMS using the given parameters.
Definition: data_transfer.cpp:34
void handle_message(const EnhancedMessage< MessageType > &message) override
Handles the given message from the CSMS. This includes dispatching a CALLRESULT as a response to the ...
Definition: data_transfer.cpp:13
Interface for handling OCPP2.0.1 CALL messages from the CSMS. Classes implementing a functional block...
Definition: message_handler.hpp:13
Contains a OCPP message in json form with additional information.
Definition: message_queue.hpp:54
Contains a OCPP DataTransfer message.
Definition: DataTransfer.hpp:19
Contains a OCPP DataTransferResponse message.
Definition: DataTransfer.hpp:41
Context / requirements for the functional blocks.
Definition: functional_block_context.hpp:23