diff --git a/examples/common/DefaultChargePointEventsHandler.cpp b/examples/common/DefaultChargePointEventsHandler.cpp index 5b0fcd2c..7d8c1a1c 100644 --- a/examples/common/DefaultChargePointEventsHandler.cpp +++ b/examples/common/DefaultChargePointEventsHandler.cpp @@ -168,24 +168,16 @@ bool DefaultChargePointEventsHandler::remoteStartTransactionRequested(unsigned i { bool ret = false; cout << "Remote start transaction : " << connector_id << " - " << id_tag << endl; - if (connector_id != 0) + + if(connector_id > m_config.ocppConfig().numberOfConnectors() || connector_id == 0) { - m_remote_start_pending[connector_id - 1u] = true; - m_remote_start_id_tag[connector_id - 1u] = id_tag; - ret = true; + ret=false; } else { - for (size_t i = 1; i <= m_config.ocppConfig().numberOfConnectors(); i++) - { - if (m_chargepoint->getConnectorStatus(i) < ChargePointStatus::Charging) - { - m_remote_start_pending[i - 1u] = true; - m_remote_start_id_tag[i - 1u] = id_tag; - ret = true; - break; - } - } + m_remote_start_pending[connector_id - 1u] = true; + m_remote_start_id_tag[connector_id - 1u] = id_tag; + ret=true; } return ret; } diff --git a/examples/common/config/OcppConfig.cpp b/examples/common/config/OcppConfig.cpp index 6c4db9be..86e16160 100644 --- a/examples/common/config/OcppConfig.cpp +++ b/examples/common/config/OcppConfig.cpp @@ -207,8 +207,8 @@ ocpp::types::ConfigurationStatus OcppConfig::setConfiguration(const std::string& } } - if (ret != ConfigurationStatus::Rejected) - { + if (ret != ConfigurationStatus::Rejected) + { if ((it->second & PARAM_OCPP) != 0) { m_config.set(OCPP_PARAMS, key, value); @@ -225,7 +225,7 @@ ocpp::types::ConfigurationStatus OcppConfig::setConfiguration(const std::string& { ret = ConfigurationStatus::Accepted; } - } + } } else { diff --git a/src/chargepoint/reservation/ReservationManager.cpp b/src/chargepoint/reservation/ReservationManager.cpp index c6108cc4..cf13b2ad 100644 --- a/src/chargepoint/reservation/ReservationManager.cpp +++ b/src/chargepoint/reservation/ReservationManager.cpp @@ -102,7 +102,7 @@ ocpp::types::AuthorizationStatus ReservationManager::isTransactionAllowed(unsign if (connector) { // Check if connector is reserved - if (connector->status == ChargePointStatus::Reserved) + if (!connector->reservation_id_tag.empty()) { // Check if id tag match if (id_tag == connector->reservation_id_tag) @@ -130,7 +130,7 @@ ocpp::types::AuthorizationStatus ReservationManager::isTransactionAllowed(unsign { // Check if connector 0 is reserved Connector& charge_point = m_connectors.getChargePointConnector(); - if (charge_point.status == ChargePointStatus::Reserved) + if (!charge_point.reservation_id_tag.empty()) { // 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) @@ -234,6 +234,7 @@ bool ReservationManager::handleMessage(const ocpp::messages::ReserveNowReq& requ m_status_manager.updateConnectorStatus(connector->id, ChargePointStatus::Reserved); m_events_handler.reservationStarted(connector->id); }); + break; } @@ -293,7 +294,7 @@ bool ReservationManager::handleMessage(const ocpp::messages::CancelReservationRe response.status = CancelReservationStatus::Rejected; for (const Connector* connector : m_connectors.getConnectors()) { - if ((connector->status == ChargePointStatus::Reserved) && (connector->reservation_id == request.reservationId)) + if ((!connector->reservation_id_tag.empty()) && (connector->reservation_id == request.reservationId)) { // Cancel reservation m_worker_pool.run([this, connector_id = connector->id] { endReservation(connector_id, true); }); @@ -316,7 +317,7 @@ void ReservationManager::checkExpiries() // Check reservations for (const Connector* connector : m_connectors.getConnectors()) { - if ((connector->status == ChargePointStatus::Reserved) && (connector->reservation_expiry_date <= now)) + if ((!connector->reservation_id_tag.empty()) && (connector->reservation_expiry_date <= now)) { // End reservation m_worker_pool.run(std::bind(&ReservationManager::endReservation, this, connector->id, false)); diff --git a/src/chargepoint/transaction/TransactionManager.cpp b/src/chargepoint/transaction/TransactionManager.cpp index 7975bea2..f9699158 100644 --- a/src/chargepoint/transaction/TransactionManager.cpp +++ b/src/chargepoint/transaction/TransactionManager.cpp @@ -98,7 +98,7 @@ ocpp::types::AuthorizationStatus TransactionManager::startTransaction(unsigned i start_transaction_req.timestamp = DateTime::now(); // Check reservations - if (connector->status == ChargePointStatus::Reserved) + if (!connector->reservation_id_tag.empty()) { // Fill reservation id start_transaction_req.reservationId = connector->reservation_id; @@ -112,7 +112,7 @@ ocpp::types::AuthorizationStatus TransactionManager::startTransaction(unsigned i if (m_ocpp_config.reserveConnectorZeroSupported()) { Connector& charge_point = m_connectors.getChargePointConnector(); - if (charge_point.status == ChargePointStatus::Reserved) + if (!charge_point.reservation_id_tag.empty()) { // Check if this transaction can be used for the charge point reservation if (m_reservation_manager.isTransactionAllowed(Connectors::CONNECTOR_ID_CHARGE_POINT, id_tag) ==