6#include <ocpp/v2/message_handler.hpp>
8#include <ocpp/v2/messages/ChangeAvailability.hpp>
11struct FunctionalBlockContext;
13struct HeartbeatResponse;
37 const ConnectorStatusEnum status,
38 const bool initiated_by_trigger_message =
false) = 0;
44 virtual void heartbeat_req(
const bool initiated_by_trigger_message =
false) = 0;
73typedef std::function<void(
const ocpp::DateTime& currentTime)> TimeSyncCallback;
74typedef std::function<void()> AllConnectorsUnavailableCallback;
80 std::optional<TimeSyncCallback> time_sync_callback;
81 std::optional<AllConnectorsUnavailableCallback> all_connectors_unavailable_callback;
83 std::chrono::time_point<std::chrono::steady_clock> heartbeat_request_time;
85 std::map<int32_t, AvailabilityChange> scheduled_change_availability_requests;
86 Everest::SteadyTimer heartbeat_timer;
90 std::optional<TimeSyncCallback> time_sync_callback,
91 std::optional<AllConnectorsUnavailableCallback> all_connectors_unavailable_callback);
96 void status_notification_req(
const int32_t evse_id,
const int32_t connector_id,
const ConnectorStatusEnum status,
97 const bool initiated_by_trigger_message =
false)
override;
98 void heartbeat_req(
const bool initiated_by_trigger_message =
false)
override;
133 void set_cs_operative_status(OperationalStatusEnum new_status,
bool persist);
139 void set_evse_operative_status(int32_t evse_id, OperationalStatusEnum new_status,
bool persist);
146 void set_connector_operative_status(int32_t evse_id, int32_t connector_id, OperationalStatusEnum new_status,
Contains a DateTime implementation that can parse and create RFC 3339 compatible strings.
Definition: types.hpp:109
Definition: availability.hpp:21
virtual void handle_message(const ocpp::EnhancedMessage< MessageType > &message)=0
Handles the given message from the CSMS. This includes dispatching a CALLRESULT as a response to the ...
virtual void set_scheduled_change_availability_requests(const int32_t evse_id, AvailabilityChange availability_change)=0
Set scheduled change availability requests, that should be sent later (for example because of a firmw...
virtual void status_notification_req(const int32_t evse_id, const int32_t connector_id, const ConnectorStatusEnum status, const bool initiated_by_trigger_message=false)=0
Send a StatusNotificationRequest to the CSMS.
virtual void set_heartbeat_timer_interval(const std::chrono::seconds &interval)=0
Set the heartbeat timer interval.
virtual void heartbeat_req(const bool initiated_by_trigger_message=false)=0
Send a HeartbeatRequest to the CSMS.
virtual void handle_scheduled_change_availability_requests(const int32_t evse_id)=0
Handle / send the scheduled change availability requests.
virtual void stop_heartbeat_timer()=0
Stop the heartbeat timer.
Definition: availability.hpp:76
void status_notification_req(const int32_t evse_id, const int32_t connector_id, const ConnectorStatusEnum status, const bool initiated_by_trigger_message=false) override
Send a StatusNotificationRequest to the CSMS.
Definition: availability.cpp:39
void stop_heartbeat_timer() override
Stop the heartbeat timer.
Definition: availability.cpp:88
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: availability.cpp:27
void set_scheduled_change_availability_requests(const int32_t evse_id, AvailabilityChange availability_change) override
Set scheduled change availability requests, that should be sent later (for example because of a firmw...
Definition: availability.cpp:79
void set_heartbeat_timer_interval(const std::chrono::seconds &interval) override
Set the heartbeat timer interval.
Definition: availability.cpp:84
void heartbeat_req(const bool initiated_by_trigger_message=false) override
Send a HeartbeatRequest to the CSMS.
Definition: availability.cpp:51
void handle_scheduled_change_availability_requests(const int32_t evse_id) override
Handle / send the scheduled change availability requests.
Definition: availability.cpp:59
Interface for handling OCPP2.0.1 CALL messages from the CSMS. Classes implementing a functional block...
Definition: message_handler.hpp:13
Contains a OCPP CallResult message.
Definition: call_types.hpp:105
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
Combines ChangeAvailabilityRequest with persist flag for scheduled Availability changes.
Definition: availability.hpp:16
Contains a OCPP ChangeAvailability message.
Definition: ChangeAvailability.hpp:19
Context / requirements for the functional blocks.
Definition: functional_block_context.hpp:23