Index: sources/device/DeviceController.cpp =================================================================== diff -u -r170fd9a04fab2e2ba96bdc16ca39f86789895937 -r7b63d133736712e1df8bb7d2f4a996974dc6330e --- sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision 170fd9a04fab2e2ba96bdc16ca39f86789895937) +++ sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision 7b63d133736712e1df8bb7d2f4a996974dc6330e) @@ -1,13 +1,13 @@ /*! * - * Copyright (c) 2021-2024 Diality Inc. - All Rights Reserved. + * Copyright (c) 2021-2026 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file DeviceController.cpp - * \author (last) Behrouz NematiPour - * \date (last) 24-Apr-2024 + * \author (last) Tiffany Mejia + * \date (last) 08-Sep-2025 * \author (original) Behrouz NematiPour * \date (original) 03-Jun-2021 * @@ -122,8 +122,8 @@ connect(&_Logger , SIGNAL(didLogBackup (const QString &)), this , SLOT( onLogBackup (const QString &))); - connect(&_CloudSyncController , SIGNAL(didLogUpload (const QString &)), - this , SLOT( onLogUpload (const QString &))); + connect(&_CloudSyncController , SIGNAL(didLogUpload (const QString &, const quint32 &, const quint32 &)), + this , SLOT( onLogUpload (const QString &, const quint32 &, const quint32 &))); DEVICE_DEV_INIT_CONNECTIONS_LIST @@ -1003,7 +1003,9 @@ if ( gLogCompress ) { ok = FileHandler::backupFile(fileSrc); } + logTally(QString(), fileDest); ok = QFile::rename(fileSrc + gzipSufx, fileDest + gzipSufx); + LOG_DEBUG(QString("Penging Log: %1, %2").arg(fileSrc, fileDest)); // Now the serial received and the system is logging in the log with the serial number, // therefore it is not bootPOST. @@ -1013,7 +1015,9 @@ fileDest.replace( _Logger.logFileNameHDSN(), _Logger.logFileNameHDSN() + _Logger.fileSeparator() + _Logger.logFileNameHDSN_default() ); if ( ! QFile::exists(fileSrc) ) goto lOut; - ok = FileHandler::backupFile(fileSrc); + if ( gLogCompress ) { + ok = FileHandler::backupFile(fileSrc); + } ok = QFile::rename(fileSrc + gzipSufx, fileDest + gzipSufx); } @@ -1038,26 +1042,66 @@ QFileInfo fileInfo(vFileName); QString filePath; QString fileBase(fileInfo.baseName()); - QString ext = _Logger.logFileNamePendingSubExt(); - QString fileSufx(fileInfo.completeSuffix().remove(ext)); - QString fileDest = QString("%1.%2").arg(fileBase, fileSufx); + QString regstr = "u\\d*."; + QRegExp reg(regstr); + QString uploadExt; + QString pendingExt; + QString fileSufx; + QString fileDest; + Logger::LogType logType; - Logger::LogType logType = _Logger.logFileLogType(vFileName, filePath); + if (reg.indexIn(fileInfo.completeSuffix()) != -1) { pendingExt = reg.cap(0);} else {ok = false; goto lOut;} + + uploadExt = _Logger.logFileNameUploadedSubExt(); + fileSufx = fileInfo.completeSuffix().replace(pendingExt, uploadExt); + + fileDest = QString("%1.%2").arg(fileBase, fileSufx); + + logType = _Logger.logFileLogType(vFileName, filePath); ok = logType != Logger::eLogNone; if ( ! ok ) { LOG_APPED_UI(QString("CS Incorrect log upload type [%1]").arg(fileSufx)); goto lOut; } // DEBUG qDebug() << __FUNCTION__ << "\n" << vFileName << "\n" << fileDest; + logTally(filePath, fileDest); + + LOG_DEBUG(QString("Uploaded Log: %1, %2").arg(vFileName, fileDest)); ok = QFile::rename(filePath + vFileName, filePath + fileDest); lOut: return ok; } -void DeviceController::onLogUpload(const QString &vFileName) +quint8 DeviceController::logTally(const QString &vFilePath, QString &vFileDest) { + if ( ! gLogUpload ) return false; // no log Uploaded rename + + QString tFileDest = vFileDest; + quint8 tally = 0; + + do { //do while used incase no c*. exists + tFileDest = (tally == 0) ? vFileDest.arg("") : vFileDest.arg(tally); + ++tally; + } while (QFile::exists(vFilePath + tFileDest)); + + vFileDest = tFileDest; + LOG_DEBUG(QString("Tally: %1, %2, %3, %4").arg(vFilePath).arg(vFileDest).arg(tFileDest).arg(tally)); +// qDebug() << __FUNCTION__ << "\n" << vFilePath << "\n" << vFileDest; + + return tally; +} + +void DeviceController::onLogUpload(const QString &vFileName, const quint32 &vAccepted, const quint32 &vRejectReason) +{ if ( ! gLogUpload ) return; // no log uploaded rename ( slot ) bool ok = true; - ok = logUpload( vFileName); + if (vAccepted) ok = logUpload( vFileName); + else{ + switch (vRejectReason){ + case CloudSyncController::LogUploadRejectReason_Enum::eLogUpload_NoConnectivity : ok = false; break; //Connectivity Error + case CloudSyncController::LogUploadRejectReason_Enum::eLogUpload_NoCredentials : ok = false; _logUpload = false; break; //Credential Error + case CloudSyncController::LogUploadRejectReason_Enum::eLogUpload_Duplicate : logUpload( vFileName); break; //Duplicate Error + } + } emit didLogUpload(ok, vFileName); } @@ -1103,6 +1147,7 @@ */ void DeviceController::findPendingLogs() { + if ( ! _logUpload ) return; if ( ! gLogUpload ) return; // no log upload pending detection static QString pendingLog = ""; @@ -1116,7 +1161,7 @@ QFileInfoList pendingFiles; QString logLoc = Log_Folder_Base; - QString logExt = QString("*.%1*").arg(_Logger.logFileNamePendingSubExt()); // "*.u.*"; + QString logExt = QString("*.%1*").arg(_Logger.logFileNamePendingSubExt("*")); // "*.u*.*"; for( auto logFolder : { Log_Folder_Application, Log_Folder_Service/*, Log_Folder_CloudSync*/ } ) { pendingFiles = Storage::FileHandler::find( logLoc + logFolder, { logExt } ); // look into the list.