diff --git a/include/ocpp/v201/charge_point.hpp b/include/ocpp/v201/charge_point.hpp index 0a91d410a..f8d2ddd9c 100644 --- a/include/ocpp/v201/charge_point.hpp +++ b/include/ocpp/v201/charge_point.hpp @@ -125,7 +125,7 @@ class ChargePoint : ocpp::ChargingStationBase { Everest::SteadyTimer aligned_meter_values_timer; // time keeping - ocpp::DateTime heartbeat_request_time; + std::chrono::time_point heartbeat_request_time; // states RegistrationStatusEnum registration_status; @@ -305,7 +305,7 @@ class ChargePoint : ocpp::ChargingStationBase { // Functional Block G: Availability void handle_change_availability_req(Call call); - void handle_heartbeat_response(Call call); + void handle_heartbeat_response(CallResult call); // Functional Block L: Firmware management void handle_firmware_update_req(Call call); diff --git a/lib/ocpp/v201/charge_point.cpp b/lib/ocpp/v201/charge_point.cpp index 0f1ec1f31..2710a6bae 100644 --- a/lib/ocpp/v201/charge_point.cpp +++ b/lib/ocpp/v201/charge_point.cpp @@ -1158,7 +1158,7 @@ void ChargePoint::status_notification_req(const int32_t evse_id, const int32_t c void ChargePoint::heartbeat_req() { HeartbeatRequest req; - heartbeat_request_time = ocpp::DateTime(); + heartbeat_request_time = std::chrono::steady_clock::now(); ocpp::Call call(req, this->message_queue->createMessageId()); this->send(call); } @@ -1933,11 +1933,11 @@ void ChargePoint::handle_change_availability_req(Call } } -void ChargePoint::handle_heartbeat_response(Call call) { +void ChargePoint::handle_heartbeat_response(CallResult call) { if (this->callbacks.time_sync_callback.has_value()) { // the received currentTime was the time the CSMS received the heartbeat request // to get a system time as accurate as possible keep the time-of-flight into account - auto timeOfFlight = (DateTime().to_time_point() - this->heartbeat_request_time.to_time_point()) / 2; + auto timeOfFlight = (std::chrono::steady_clock::now() - this->heartbeat_request_time) / 2; ocpp::DateTime currentTimeCompensated(call.msg.currentTime.to_time_point() + timeOfFlight); this->callbacks.time_sync_callback.value()(currentTimeCompensated); }