From 9e96596547ac1d8d95d09d1d36b957ca3a32cc05 Mon Sep 17 00:00:00 2001 From: Razvan Grigore Date: Mon, 15 Sep 2025 20:12:18 +0300 Subject: [PATCH] Fix DiagnosticsService upload filesystem files bigger than chunk size --- .../Model/Diagnostics/DiagnosticsService.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/MicroOcpp/Model/Diagnostics/DiagnosticsService.cpp b/src/MicroOcpp/Model/Diagnostics/DiagnosticsService.cpp index 6257ad57..94bd9609 100644 --- a/src/MicroOcpp/Model/Diagnostics/DiagnosticsService.cpp +++ b/src/MicroOcpp/Model/Diagnostics/DiagnosticsService.cpp @@ -269,14 +269,17 @@ void DiagnosticsService::setDiagnosticsReader(std::functiongetChargePointCredentials()) { + cpVendor = (*cpCreds)["chargePointVendor"] | "Vendor"; cpModel = (*cpCreds)["chargePointModel"] | "Charger"; fwVersion = (*cpCreds)["firmwareVersion"] | ""; } @@ -288,7 +291,8 @@ void DiagnosticsService::setDiagnosticsReader(std::function= sizeof(fpath)) { MO_DBG_ERR("fn error: %i", ret); diagFileList.pop_back(); + // next file starts from offset 0 + diagFilesBackTransferred = 0; continue; } @@ -429,6 +435,7 @@ void DiagnosticsService::setDiagnosticsReader(std::function= sizeof(fileHeading)) { MO_DBG_ERR("fn error: %i", ret); diagFileList.pop_back(); + diagFilesBackTransferred = 0; continue; } if (writeLen + written > size || //heading doesn't fit anymore, return with a bit unused buffer space and print heading the next time @@ -444,14 +451,19 @@ void DiagnosticsService::setDiagnosticsReader(std::functionseek(diagFilesBackTransferred); size_t writeLen = file->read((char*)buf + written, size - written); - + // advance per-file offset + diagFilesBackTransferred += writeLen; if (writeLen < size - written) { + // EOF for this file; move to next and reset offset + MO_DBG_DEBUG("upload diag chunk %zu (done)", diagFilesBackTransferred); diagFileList.pop_back(); + diagFilesBackTransferred = 0; } written += writeLen; } else { MO_DBG_ERR("could not open file: %s", fpath); diagFileList.pop_back(); + diagFilesBackTransferred = 0; } } @@ -470,6 +482,7 @@ void DiagnosticsService::setDiagnosticsReader(std::function