diff --git a/src/chargepoint/authent/AuthentLocalList.cpp b/src/chargepoint/authent/AuthentLocalList.cpp index 0e8769e7..fd19b740 100644 --- a/src/chargepoint/authent/AuthentLocalList.cpp +++ b/src/chargepoint/authent/AuthentLocalList.cpp @@ -124,7 +124,7 @@ bool AuthentLocalList::handleMessage(const ocpp::messages::SendLocalListReq& req // Check local list activation if (m_ocpp_config.localAuthListEnabled()) { - if (request.listVersion > 0) + if (request.listVersion >= 0) { // Check update list size if (request.localAuthorizationList.size() <= m_ocpp_config.sendLocalListMaxLength()) diff --git a/src/chargepoint/maintenance/MaintenanceManager.cpp b/src/chargepoint/maintenance/MaintenanceManager.cpp index bde7442f..6f2e385d 100644 --- a/src/chargepoint/maintenance/MaintenanceManager.cpp +++ b/src/chargepoint/maintenance/MaintenanceManager.cpp @@ -586,9 +586,9 @@ void MaintenanceManager::processGetDiagnostics(std::string if (!success) { // Next retry - nb_retries--; - if (nb_retries != 0) + if (nb_retries > 0) { + nb_retries--; LOG_WARNING << "GetDiagnostics : upload failed (" << nb_retries << " retrie(s) left - next retry in " << retry_interval_s.count() << "s)"; std::this_thread::sleep_for(retry_interval_s); @@ -635,10 +635,12 @@ void MaintenanceManager::processUpdateFirmware(std::string ocpp::types::Optional retry_interval, ocpp::types::DateTime retrieve_date) { + + LOG_INFO << "UpdateFirmware : Waiting until retrieve date:"< DateTime::now()) { - LOG_INFO << "UpdateFirmware : Waiting until retrieve date"; std::this_thread::sleep_until(std::chrono::system_clock::from_time_t(retrieve_date.timestamp())); } @@ -667,9 +669,10 @@ void MaintenanceManager::processUpdateFirmware(std::string if (!success) { // Next retry - nb_retries--; - if (nb_retries != 0) + + if (nb_retries > 0) { + nb_retries--; LOG_WARNING << "FirmwareUpdate : download failed (" << nb_retries << " retrie(s) left - next retry in " << retry_interval_s.count() << "s)"; std::this_thread::sleep_for(retry_interval_s); @@ -766,10 +769,10 @@ void MaintenanceManager::processGetLog(ocpp::types::LogEnumType type, success = m_events_handler.uploadFile(local_log_file, url); if (!success) { - // Next retry - nb_retries--; - if (nb_retries != 0) + // Next retry + if (nb_retries > 0) { + nb_retries--; LOG_WARNING << "GetLog : upload failed (" << nb_retries << " retrie(s) left - next retry in " << retry_interval_s.count() << "s)"; std::this_thread::sleep_for(retry_interval_s); @@ -854,10 +857,10 @@ void MaintenanceManager::processSignedUpdateFirmware(std::string success = m_events_handler.downloadFile(location, local_firmware_file); if (!success) { - // Next retry - nb_retries--; - if (nb_retries != 0) + // Next retry + if (nb_retries > 0) { + nb_retries--; LOG_WARNING << "SignedUpdateFirmware : download failed (" << nb_retries << " retrie(s) left - next retry in " << retry_interval_s.count() << "s)"; std::this_thread::sleep_for(retry_interval_s); diff --git a/src/chargepoint/metervalues/MeterValuesManager.cpp b/src/chargepoint/metervalues/MeterValuesManager.cpp index 8eea0996..29668505 100644 --- a/src/chargepoint/metervalues/MeterValuesManager.cpp +++ b/src/chargepoint/metervalues/MeterValuesManager.cpp @@ -188,10 +188,23 @@ void MeterValuesManager::getTxStopMeterValues(unsigned int connector_id, std::ve bool MeterValuesManager::onTriggerMessage(ocpp::types::MessageTrigger message, const ocpp::types::Optional& connector_id) { bool ret = false; - if (connector_id.isSet() && (message == MessageTrigger::MeterValues)) + + if (message == MessageTrigger::MeterValues) { - processTriggered(connector_id); - ret = true; + if (connector_id.isSet()) + { + processTriggered(connector_id); + ret = true; + } + else + { + for (const Connector* connector : m_connectors.getConnectors()) + { + unsigned int id = connector->id; + processTriggered(id); + } + ret = true; + } } return ret; } @@ -201,12 +214,25 @@ bool MeterValuesManager::onTriggerMessage(ocpp::types::MessageTriggerEnumType const ocpp::types::Optional& connector_id) { bool ret = false; - if (connector_id.isSet() && (message == MessageTriggerEnumType::MeterValues)) + if (message == MessageTriggerEnumType::MeterValues) { - processTriggered(connector_id); - ret = true; + if (connector_id.isSet()) + { + processTriggered(connector_id); + ret = true; + } + else + { + for (const Connector* connector : m_connectors.getConnectors()) + { + unsigned int id = connector->id; + processTriggered(id); + } + ret = true; + } } return ret; + } /** @copydoc void IConfigChangedListener::configurationValueChanged(const std::string&) */ diff --git a/src/chargepoint/trigger/TriggerMessageManager.cpp b/src/chargepoint/trigger/TriggerMessageManager.cpp index e97b7c1b..7b80fe5c 100644 --- a/src/chargepoint/trigger/TriggerMessageManager.cpp +++ b/src/chargepoint/trigger/TriggerMessageManager.cpp @@ -85,8 +85,14 @@ bool TriggerMessageManager::handleMessage(const ocpp::messages::TriggerMessageRe } else { - // Check connector id - if (!request.connectorId.isSet() || m_connectors.isValid(request.connectorId)) + // Check invalid connector id + if (request.connectorId.isSet() && !m_connectors.isValid(request.connectorId)) + { + error_code = ocpp::rpc::IRpc::RPC_ERROR_PROPERTY_CONSTRAINT_VIOLATION; + error_message = "Invalid connector id"; + response.status = TriggerMessageStatus::Rejected; + } + else { // Call handler if (it->second->onTriggerMessage(request.requestedMessage, request.connectorId)) @@ -100,11 +106,6 @@ bool TriggerMessageManager::handleMessage(const ocpp::messages::TriggerMessageRe LOG_WARNING << "Trigger message rejected : " << trigger_message; } } - else - { - error_code = ocpp::rpc::IRpc::RPC_ERROR_PROPERTY_CONSTRAINT_VIOLATION; - error_message = "Invalid connector id"; - } } return ret; @@ -136,26 +137,27 @@ bool TriggerMessageManager::handleMessage(const ocpp::messages::ExtendedTriggerM } else { - // Check connector id - if (!request.connectorId.isSet() || m_connectors.isValid(request.connectorId)) + // Check invalid connector id + if (request.connectorId.isSet() && !m_connectors.isValid(request.connectorId)) + { + error_code = ocpp::rpc::IRpc::RPC_ERROR_PROPERTY_CONSTRAINT_VIOLATION; + error_message = "Invalid connector id"; + response.status = TriggerMessageStatusEnumType::Rejected; + } + else { // Call handler if (it->second->onTriggerMessage(request.requestedMessage, request.connectorId)) { response.status = TriggerMessageStatusEnumType::Accepted; - LOG_INFO << "Extended trigger message accepted : " << trigger_message; + LOG_INFO << "Trigger message accepted : " << trigger_message; } else { response.status = TriggerMessageStatusEnumType::Rejected; - LOG_WARNING << "Extended trigger message rejected : " << trigger_message; + LOG_WARNING << "Trigger message rejected : " << trigger_message; } } - else - { - error_code = ocpp::rpc::IRpc::RPC_ERROR_PROPERTY_CONSTRAINT_VIOLATION; - error_message = "Invalid connector id"; - } } return ret; diff --git a/tests/stubs/ChargePointEventsHandlerStub.cpp b/tests/stubs/ChargePointEventsHandlerStub.cpp index 806ba68f..ce30bedf 100755 --- a/tests/stubs/ChargePointEventsHandlerStub.cpp +++ b/tests/stubs/ChargePointEventsHandlerStub.cpp @@ -170,7 +170,7 @@ bool ChargePointEventsHandlerStub::getLocalLimitationsSchedule(unsigned int /** @copydoc bool IChargePointEventsHandler::resetRequested(ocpp::types::ResetType) */ bool ChargePointEventsHandlerStub::resetRequested(ocpp::types::ResetType reset_type) { - m_calls["transactionDeAuthorized"] = {{"reset_type", ResetTypeHelper.toString(reset_type)}}; + m_calls["resetRequested"] = {{"reset_type", ResetTypeHelper.toString(reset_type)}}; return callResult("resetRequested"); }