From 1f0d9ee437b5edd08e97c5eb0fc37cece831d2fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=92=A6?= Date: Tue, 19 Sep 2023 13:20:51 +0800 Subject: [PATCH] fix:Improve the reservation logic. --- .../reservation/ReservationManager.cpp | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/chargepoint/reservation/ReservationManager.cpp b/src/chargepoint/reservation/ReservationManager.cpp index ee3d73a8..9d730677 100644 --- a/src/chargepoint/reservation/ReservationManager.cpp +++ b/src/chargepoint/reservation/ReservationManager.cpp @@ -132,18 +132,26 @@ ocpp::types::AuthorizationStatus ReservationManager::isTransactionAllowed(unsign Connector& charge_point = m_connectors.getChargePointConnector(); if (charge_point.status == ChargePointStatus::Reserved) { - // At least 1 connector must stay available - unsigned int available_count = 0; - for (const Connector* c : m_connectors.getConnectors()) + // Ensure that the module functions properly even when the gun is inserted first by the user. + if (m_connectors.getConnector(connector_id)->status == ChargePointStatus::Preparing) { - if (c->status == ChargePointStatus::Available) - { - available_count++; - } + ret = AuthorizationStatus::Accepted; } - if (available_count > 1) + else { - ret = AuthorizationStatus::Accepted; + // At least 1 connector must stay available + unsigned int available_count = 0; + for (const Connector* c : m_connectors.getConnectors()) + { + if (c->status == ChargePointStatus::Available) + { + available_count++; + } + } + if (available_count >= 1) + { + ret = AuthorizationStatus::Accepted; + } } } else