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