diff --git a/update.cpp b/update.cpp index 7f87658..7a4749e 100644 --- a/update.cpp +++ b/update.cpp @@ -494,6 +494,88 @@ QStringList Update::getDcSoftAndHardWareVersion() { << "DC SW-version not available"; } +QString Update::getFileVersion(QString const& jsonFileName) { + // "version":"15.10.2023 14:55 02.00.06", + static const QRegularExpression re("^.*(\\\"version\\\":)(.*)$"); + + QString fileVersion; + QFile inputFile(jsonFileName); + if (inputFile.open(QIODevice::ReadOnly)) { + QTextStream in(&inputFile); + while (!in.atEnd()) { + QString line = in.readLine(); + + QRegularExpressionMatch match; + int idx = line.indexOf(re, 0, &match); + if (idx != -1) { + fileVersion = match.captured(match.lastCapturedIndex()); + break; + } + } + inputFile.close(); + } + + return fileVersion; +} + +bool Update::checkDownloadedJsonVersions(QStringList const& jsonFileNames) { + + for (QStringList::size_type i=0; i < jsonFileNames.size(); ++i) { + + uint8_t jsonNr = 0; + QFileInfo fInfo(jsonFileNames[i]); + + if (fInfo.fileName().endsWith("conf.json")) { + jsonNr = 1; + } else + if (fInfo.fileName().endsWith("device.json")) { + jsonNr = 2; + } else + if (fInfo.fileName().endsWith("cash.json")) { + jsonNr = 3; + } else { + QRegularExpressionMatch match; + static const QRegularExpression re("^(.*print)([0-3][0-9])\\.json\\s*$"); + int idx = fInfo.fileName().indexOf(re, 0, &match); + if (idx != -1) { + QString captured = match.captured(match.lastCapturedIndex()); + bool ok = false; + int n = captured.toInt(&ok); + if (ok) { + jsonNr = n + 4; + } + } + } + + qCritical() << __PRETTY_FUNCTION__ << fInfo.fileName() << "jsonNr" << jsonNr; + + if (jsonNr != 0) { + + m_hw->sys_requestJsonVersions(jsonNr); + QThread::msleep(500); + + char buf[64]; + memset(buf, 0x00, sizeof(buf)); + m_hw->sys_getJsonVersions(jsonNr, buf); + buf[sizeof(buf)-1] = '\0'; + + QString const installedVersion(buf); + QString const fileVersion = getFileVersion(jsonFileNames[i]); + + qCritical() << "installed version:" << installedVersion; + qCritical() << " file version:" << fileVersion; + + if (installedVersion == fileVersion) { + + } + } else { + qCritical() << "CANNOT FIND JSON-NR FOR" << jsonFileNames[i]; + } + } + + return false; +} + bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) { if (m_sys_areDCdataValid == false) { qCritical() << "ERROR!!! DC DATA NOT VALID -> CA-MASTER-PLUGIN NOT CONNECTED";