ocpp 0.24.1
A C++ implementation of the Open Charge Point Protocol
reservation.hpp
1// SPDX-License-Identifier: Apache-2.0
2// Copyright Pionix GmbH and Contributors to EVerest
3
4#include <ocpp/v2/message_handler.hpp>
5
6#pragma once
7
8namespace ocpp::v2 {
9struct FunctionalBlockContext;
10class EvseInterface;
11
12struct ReserveNowRequest;
13struct CancelReservationRequest;
14
15typedef std::function<ReserveNowStatusEnum(const ReserveNowRequest& request)> ReserveNowCallback;
16typedef std::function<bool(const int32_t reservationId)> CancelReservationCallback;
17typedef std::function<ocpp::ReservationCheckStatus(const int32_t evse_id, const CiString<36> idToken,
18 const std::optional<CiString<36>> groupIdToken)>
19 IsReservationForTokenCallback;
20
22public:
23 virtual ~ReservationInterface() = default;
24 virtual void on_reservation_status(const int32_t reservation_id, const ReservationUpdateStatusEnum status) = 0;
25 virtual ocpp::ReservationCheckStatus
26 is_evse_reserved_for_other(const EvseInterface& evse, const IdToken& id_token,
27 const std::optional<IdToken>& group_id_token) const = 0;
28 virtual void on_reserved(const int32_t evse_id, const int32_t connector_id) = 0;
29 virtual void on_reservation_cleared(const int32_t evse_id, const int32_t connector_id) = 0;
30};
31
33private: // Members
34 const FunctionalBlockContext& context;
35
37 ReserveNowCallback reserve_now_callback;
39 CancelReservationCallback cancel_reservation_callback;
44 IsReservationForTokenCallback is_reservation_for_token_callback;
45
46public:
47 Reservation(const FunctionalBlockContext& functional_block_context, ReserveNowCallback reserve_now_callback,
48 CancelReservationCallback cancel_reservation_callback,
49 const IsReservationForTokenCallback is_reservation_for_token_callback);
50 virtual void handle_message(const ocpp::EnhancedMessage<MessageType>& message) override;
51
52 virtual void on_reservation_status(const int32_t reservation_id, const ReservationUpdateStatusEnum status) override;
53 virtual ocpp::ReservationCheckStatus
54 is_evse_reserved_for_other(const EvseInterface& evse, const IdToken& id_token,
55 const std::optional<IdToken>& group_id_token) const override;
56 virtual void on_reserved(const int32_t evse_id, const int32_t connector_id) override;
57 virtual void on_reservation_cleared(const int32_t evse_id, const int32_t connector_id) override;
58
59private: // Functions
60 void handle_reserve_now_request(Call<ReserveNowRequest> call);
61 void handle_cancel_reservation_callback(Call<CancelReservationRequest> call);
62 void send_reserve_now_rejected_response(const MessageId& unique_id, const std::string& status_info);
63};
64
65} // namespace ocpp::v2
Contains a MessageId implementation based on a case insensitive string with a maximum length of 36 pr...
Definition: call_types.hpp:34
Definition: evse.hpp:27
Interface for handling OCPP2.0.1 CALL messages from the CSMS. Classes implementing a functional block...
Definition: message_handler.hpp:13
Definition: reservation.hpp:21
Definition: reservation.hpp:32
virtual void handle_message(const ocpp::EnhancedMessage< MessageType > &message) override
Handles the given message from the CSMS. This includes dispatching a CALLRESULT as a response to the ...
Definition: reservation.cpp:26
Contains a OCPP Call message.
Definition: call_types.hpp:60
Contains a OCPP message in json form with additional information.
Definition: message_queue.hpp:54
Context / requirements for the functional blocks.
Definition: functional_block_context.hpp:23
Definition: ocpp_types.hpp:36