Compare commits

..

8 Commits

Author SHA1 Message Date
1ef9853876 Set version of UpdateTool to 1.3.0.
1.3.0: main change: add fetching info for current apiism-version and send
if to ISMAS.
2023-08-30 11:47:56 +02:00
01d8312aa8 Removed rauc/opkg-members. Added m_apismVersion member. 2023-08-30 11:46:55 +02:00
507586f9dc Added fetching apism-version. Fixed calls to final_result(). 2023-08-30 11:46:00 +02:00
12ffa71455 Removed rauc/opkg-versions. Added fetching of apism-version. 2023-08-30 11:44:20 +02:00
a84f495d43 Removed output of rauc/opkg-versions, and added output of apism-version. 2023-08-30 11:42:05 +02:00
7e4b5006eb Fixed return string of final result(). 2023-08-30 11:41:23 +02:00
0a28f0d82c Add message for current APISM version 2023-08-30 11:39:37 +02:00
5427844977 For each customer repository change the file ChangeLog in branch master
as last step. The git commit for this file will be used as output, so this file
has always be the last to be checked in.
2023-08-30 11:36:28 +02:00
7 changed files with 141 additions and 229 deletions

View File

@ -15,7 +15,7 @@ DEFINES += QT_DEPRECATED_WARNINGS
# In order to do so, uncomment the following line. # In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt. # You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
VERSION=1.2.0 VERSION=1.3.0
INCLUDEPATH += plugins INCLUDEPATH += plugins

View File

@ -120,7 +120,10 @@ QStringList GitClient::gitShowReason() {
// %h: commit (short form) // %h: commit (short form)
// %s: commit message // %s: commit message
// %cI: commit date, strict ISO 8601 format // %cI: commit date, strict ISO 8601 format
Command c("git show -s --format=\"c=%h m=%s d=%cI\""); // Note: use master branch. By convention, there is a ChangeLog file
// in the root of the repository, which has to be always the last file
// to be checked in when the customer repository somehow changed.
Command c("git show origin/master -s --format=\"c=%h m=%s d=%cI\"");
if (c.execute(m_customerRepository)) { if (c.execute(m_customerRepository)) {
QString const s = c.getCommandResult().trimmed(); QString const s = c.getCommandResult().trimmed();
int const c = s.indexOf("c="); int const c = s.indexOf("c=");

View File

@ -616,8 +616,9 @@ QString IsmasClient::updateOfPSASendVersion(PSAInstalled const &psa) {
"}" "}"
"}," "},"
"\"SOFTWARE\": {" "\"SOFTWARE\": {"
"\"RAUC\" : \"%s\"," "\"APISM\" : {"
"\"OPKG\" : \"%s\"," "\"VERSION\" : \"%s\""
"},"
"\"ATBQT\" : {" "\"ATBQT\" : {"
"\"VERSION\" : \"%s\"" "\"VERSION\" : \"%s\""
"}" "}"
@ -745,8 +746,7 @@ QString IsmasClient::updateOfPSASendVersion(PSAInstalled const &psa) {
psa.dc.gitBlob.toStdString().c_str(), psa.dc.gitBlob.toStdString().c_str(),
psa.dc.gitLastCommit.toStdString().c_str(), psa.dc.gitLastCommit.toStdString().c_str(),
psa.sw.raucVersion.toStdString().c_str(), psa.sw.apismVersion.toStdString().c_str(),
psa.sw.opkgVersion.toStdString().c_str(),
psa.sw.atbQTVersion.toStdString().c_str(), psa.sw.atbQTVersion.toStdString().c_str(),
psa.pluginVersion.deviceController.toStdString().c_str(), psa.pluginVersion.deviceController.toStdString().c_str(),
@ -829,7 +829,7 @@ QString IsmasClient::updateOfPSAActivated(QString const &version) { // sent ev
} }
QString IsmasClient::updateOfPSASucceeded(QString const &version) { QString IsmasClient::updateOfPSASucceeded(QString const &version) {
m_progressInPercent = 0; m_progressInPercent = 100;
return updateNewsToIsmas("U0001", return updateNewsToIsmas("U0001",
m_progressInPercent, m_progressInPercent,
RESULT_CODE::SUCCESS, RESULT_CODE::SUCCESS,
@ -857,13 +857,13 @@ QString IsmasClient::jsonParseFailed(int resultCode, QString reason, QString con
} }
std::optional<QString> IsmasClient::finalResult(int resultCode, QString reason, QString const &version) { std::optional<QString> IsmasClient::finalResult(int resultCode, QString reason, QString const &version) {
m_progressInPercent = 0; m_progressInPercent = 100;
if (resultCode == RESULT_CODE::SUCCESS) { if (resultCode == RESULT_CODE::SUCCESS) {
return updateNewsToIsmas("U0002", return updateNewsToIsmas("U0002",
m_progressInPercent, m_progressInPercent,
RESULT_CODE::SUCCESS, resultCode,
"FINAL-UPDATE-RESULT", "FINAL-UPDATE-RESULT",
"(re-)set WAIT state", reason.toStdString().c_str(),
version.toStdString().c_str()); version.toStdString().c_str());
} }
if (resultCode == RESULT_CODE::INSTALL_ERROR) { if (resultCode == RESULT_CODE::INSTALL_ERROR) {

View File

@ -46,8 +46,7 @@ struct PSAInstalled {
} dc; } dc;
struct SoftWare { struct SoftWare {
QString raucVersion; QString apismVersion;
QString opkgVersion;
QString atbQTVersion; QString atbQTVersion;
} sw; } sw;
@ -97,8 +96,7 @@ struct PSAInstalled {
dc.gitLastCommit = "N/A"; dc.gitLastCommit = "N/A";
dc.size = -1; dc.size = -1;
sw.raucVersion = "N/A"; sw.apismVersion = "N/A";
sw.opkgVersion = "N/A";
sw.atbQTVersion = "N/A"; sw.atbQTVersion = "N/A";
pluginVersion.deviceController = "N/A"; pluginVersion.deviceController = "N/A";

View File

@ -38,8 +38,10 @@ MainWindow::MainWindow(Worker *worker, QWidget *parent)
lst << QString("Machine number : %1 ").arg(m_worker->machineNr()).leftJustified(m_width-3); lst << QString("Machine number : %1 ").arg(m_worker->machineNr()).leftJustified(m_width-3);
lst << QString("Customer number : %1 ").arg(m_worker->customerNr()).leftJustified(m_width-3); lst << QString("Customer number : %1 ").arg(m_worker->customerNr()).leftJustified(m_width-3);
lst << QString("Zone number : %1 (%2)").arg(m_worker->zoneNr()).arg(Utils::zoneName(m_worker->zoneNr())).leftJustified(m_width-3); lst << QString("Zone number : %1 (%2)").arg(m_worker->zoneNr()).arg(Utils::zoneName(m_worker->zoneNr())).leftJustified(m_width-3);
lst << QString("APISM version : %1").arg(m_worker->apismVersion()).leftJustified(m_width-3);
lst << QString("").leftJustified(m_width-3, '='); lst << QString("").leftJustified(m_width-3, '=');
ui->updateStatus->setText(lst.join('\n')); ui->updateStatus->setText(lst.join('\n'));
ui->updateStatus->setEnabled(true); ui->updateStatus->setEnabled(true);

View File

@ -57,8 +57,6 @@ Worker::Worker(hwinf *hw,
, m_osVersion(getOsVersion()) , m_osVersion(getOsVersion())
, m_atbqtVersion(getATBQTVersion()) , m_atbqtVersion(getATBQTVersion())
, m_cpuSerial(getCPUSerial()) , m_cpuSerial(getCPUSerial())
, m_raucVersion(getRaucVersion())
, m_opkgVersion(getOpkgVersion())
, m_pluginVersionATBDeciceController(getPluginVersion("/opt/app/ATBAPP/plugins/libATBDeviceControllerPlugin.so")) , m_pluginVersionATBDeciceController(getPluginVersion("/opt/app/ATBAPP/plugins/libATBDeviceControllerPlugin.so"))
, m_pluginVersionIngenicoISelf(getPluginVersion("/opt/app/ATBAPP/plugins/libIngenicoISelf_CCPlugin.so")) , m_pluginVersionIngenicoISelf(getPluginVersion("/opt/app/ATBAPP/plugins/libIngenicoISelf_CCPlugin.so"))
, m_pluginVersionMobilisisCalc(getPluginVersion("/opt/app/ATBAPP/plugins/libMOBILISIS_CalculatePricePlugin.so")) , m_pluginVersionMobilisisCalc(getPluginVersion("/opt/app/ATBAPP/plugins/libMOBILISIS_CalculatePricePlugin.so"))
@ -76,6 +74,16 @@ Worker::Worker(hwinf *hw,
QDir::setCurrent(m_workingDirectory); QDir::setCurrent(m_workingDirectory);
// restart apism to make sure it is running ?
// Command c("systemctl restart apism");
// if (c.execute("/tmp")) {
// QThread::sleep(10); // give APISM some time to reconnect
// }
if (std::optional<QString> v = getApismVersion()) {
m_apismVersion = v.value();
}
qInfo() << "CURRENT TIME ..............." << QDateTime::currentDateTime().toString(Qt::ISODate); qInfo() << "CURRENT TIME ..............." << QDateTime::currentDateTime().toString(Qt::ISODate);
qInfo() << "OS VERSION ................." << m_osVersion; qInfo() << "OS VERSION ................." << m_osVersion;
qInfo() << "ATBQT VERSION .............." << m_atbqtVersion; qInfo() << "ATBQT VERSION .............." << m_atbqtVersion;
@ -88,6 +96,7 @@ Worker::Worker(hwinf *hw,
qInfo() << "ZONE_NR ...................." << m_zoneNr; qInfo() << "ZONE_NR ...................." << m_zoneNr;
qInfo() << "BRANCH_NAME ................" << m_branchName; qInfo() << "BRANCH_NAME ................" << m_branchName;
qInfo() << "WORKING_DIRECTORY .........." << m_workingDirectory; qInfo() << "WORKING_DIRECTORY .........." << m_workingDirectory;
qInfo() << "APISM VERSION .............." << m_apismVersion;
this->moveToThread(&m_workerThread); this->moveToThread(&m_workerThread);
m_workerThread.start(); m_workerThread.start();
@ -141,20 +150,8 @@ void Worker::update() {
void Worker::privateUpdate() { void Worker::privateUpdate() {
m_updateProcessRunning = true; m_updateProcessRunning = true;
bool sentIsmasLastVersionNotification = false; bool sentIsmasLastVersionNotification = false;
//emit appendText("\nRestart APISM ...");
//startProgressLoop();
//Command c("systemctl restart apism");
//if (c.execute("/tmp")) {
// QThread::sleep(10); // give APISM some time to reconnect
// stopProgressLoop();
// emit replaceLast("Restart APISM ...", UPDATE_STEP_DONE);
//} else {
// stopProgressLoop();
// emit replaceLast("Restart APISM ...", UPDATE_STEP_FAIL);
//}
emit disableExit(); emit disableExit();
@ -208,12 +205,10 @@ void Worker::privateUpdate() {
} }
} else { } else {
m_ismasClient.setProgressInPercent(10); m_ismasClient.setProgressInPercent(10);
if (backendConnected()) {
m_ismasClient.setProgressInPercent(20);
if (updateTriggerSet()) { if (updateTriggerSet()) {
m_ismasClient.setProgressInPercent(30); m_ismasClient.setProgressInPercent(20);
if (customerEnvironment()) { if (customerEnvironment()) {
m_ismasClient.setProgressInPercent(40); m_ismasClient.setProgressInPercent(30);
if (filesToUpdate()) { if (filesToUpdate()) {
// send message to ISMAS about files which have been // send message to ISMAS about files which have been
// checked in into git repository // checked in into git repository
@ -223,16 +218,16 @@ void Worker::privateUpdate() {
QString("#M=APISM#C=CMD_EVENT#J=") + QString("#M=APISM#C=CMD_EVENT#J=") +
m_ismasClient.updateOfPSAContinues("CHECK-FILES-TO-UPDATE", m_ismasClient.updateOfPSAContinues("CHECK-FILES-TO-UPDATE",
m_updateStatus.m_statusDescription)); m_updateStatus.m_statusDescription));
m_ismasClient.setProgressInPercent(50); m_ismasClient.setProgressInPercent(40);
if (updateFiles(50)) { if (updateFiles(50)) {
m_ismasClient.setProgressInPercent(60); m_ismasClient.setProgressInPercent(50);
if (syncCustomerRepositoryAndFS()) { if (syncCustomerRepositoryAndFS()) {
m_ismasClient.setProgressInPercent(70); m_ismasClient.setProgressInPercent(60);
if (sendIsmasLastVersionNotification()) { if (sendIsmasLastVersionNotification()) {
m_ismasClient.setProgressInPercent(80); m_ismasClient.setProgressInPercent(70);
sentIsmasLastVersionNotification = true; sentIsmasLastVersionNotification = true;
if (saveLogFile()) { if (saveLogFile()) {
m_ismasClient.setProgressInPercent(90); m_ismasClient.setProgressInPercent(80);
IsmasClient::sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT, IsmasClient::sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
QString("#M=APISM#C=CMD_EVENT#J=") + QString("#M=APISM#C=CMD_EVENT#J=") +
@ -315,16 +310,6 @@ void Worker::privateUpdate() {
m_updateStatus.m_statusDescription)); m_updateStatus.m_statusDescription));
m_returnCode = -5; m_returnCode = -5;
} }
} else {
m_updateStatus = UpdateStatus(UPDATE_STATUS::BACKEND_CHECK_FAILURE,
QString("ISMAS backend not available"));
IsmasClient::sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
QString("#M=APISM#C=CMD_EVENT#J=") +
m_ismasClient.updateOfPSAFailed(IsmasClient::RESULT_CODE::INSTALL_ERROR,
"ISMAS-BACKEND-CHECK",
m_updateStatus.m_statusDescription));
m_returnCode = -4;
}
} }
m_ismasClient.setProgressInPercent(100); m_ismasClient.setProgressInPercent(100);
@ -337,7 +322,6 @@ void Worker::privateUpdate() {
m_updateStatus = UpdateStatus(UPDATE_STATUS::UPDATE_PROCESS_FAILURE, m_updateStatus = UpdateStatus(UPDATE_STATUS::UPDATE_PROCESS_FAILURE,
QString("Update process failed")); QString("Update process failed"));
if (std::optional<QString> s = m_ismasClient.finalResult(IsmasClient::RESULT_CODE::INSTALL_ERROR, if (std::optional<QString> s = m_ismasClient.finalResult(IsmasClient::RESULT_CODE::INSTALL_ERROR,
"FINAL-UPDATE-RESULT",
m_updateStatus.m_statusDescription)) { m_updateStatus.m_statusDescription)) {
IsmasClient::sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT, IsmasClient::sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
QString("#M=APISM#C=CMD_EVENT#J=") + s.value()); QString("#M=APISM#C=CMD_EVENT#J=") + s.value());
@ -346,9 +330,8 @@ void Worker::privateUpdate() {
emit appendText(QString("UPDATE "), UPDATE_STEP_SUCCESS); emit appendText(QString("UPDATE "), UPDATE_STEP_SUCCESS);
m_updateStatus = UpdateStatus(UPDATE_STATUS::UPDATE_PROCESS_SUCCESS, m_updateStatus = UpdateStatus(UPDATE_STATUS::UPDATE_PROCESS_SUCCESS,
QString("Update process succeeded")); QString("Update process succeeded. Reset WAIT."));
if (std::optional<QString> s = m_ismasClient.finalResult(IsmasClient::RESULT_CODE::SUCCESS, if (std::optional<QString> s = m_ismasClient.finalResult(IsmasClient::RESULT_CODE::SUCCESS,
"FINAL-UPDATE-RESULT",
m_updateStatus.m_statusDescription)) { m_updateStatus.m_statusDescription)) {
IsmasClient::sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT, IsmasClient::sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
QString("#M=APISM#C=CMD_EVENT#J=") + s.value()); QString("#M=APISM#C=CMD_EVENT#J=") + s.value());
@ -365,34 +348,20 @@ void Worker::privateUpdate() {
emit restartExitTimer(); emit restartExitTimer();
} }
bool Worker::backendConnected() { std::optional<QString> Worker::getApismVersion() {
// deactivated: REQ_SELF does not really help. Observation was that even for (int repeat = 0; repeat < 10; ++repeat) {
// id ISMAS is reported as 'true', a following check of the update-trigger qInfo() << "REPEAT" << repeat << "In getApismVersion() -> #M=APISM#C=REQ_SELF#J={}";
// button has no access to ISMAS.
return true;
emit appendText("\nConnecting backend ...");
if (false) { // so linker removes dead code
for (int repeat = 0; repeat < 100; ++repeat) {
qInfo() << "REPEAT" << repeat << "In backendConnected() -> #M=APISM#C=REQ_SELF#J={}";
startProgressLoop();
std::optional<QString> result std::optional<QString> result
= IsmasClient::sendRequestReceiveResponse( = IsmasClient::sendRequestReceiveResponse(
IsmasClient::APISM::DIRECT_PORT, "#M=APISM#C=REQ_SELF#J={}"); IsmasClient::APISM::DIRECT_PORT, "#M=APISM#C=REQ_SELF#J={}");
if (result) { if (result) {
stopProgressLoop();
int progress = (m_mainWindow->progressValue()/10) + 10;
setProgress(progress);
QString msg = result.value(); QString msg = result.value();
qInfo() << "In backendConnected() -> APISM response" << msg; qInfo() << "In getApismVersion() -> APISM response" << msg;
QJsonParseError parseError; QJsonParseError parseError;
QJsonDocument document(QJsonDocument::fromJson(msg.toUtf8(), &parseError)); QJsonDocument document(QJsonDocument::fromJson(msg.toUtf8(), &parseError));
if (parseError.error != QJsonParseError::NoError) { if (parseError.error != QJsonParseError::NoError) {
qCritical() << "(1) INVALID JSON MSG: PARSING FAILED (msg=" << msg << "):" qCritical() << "(1) INVALID JSON MSG: PARSING FAILED (msg=" << msg << "):"
<< parseError.error << parseError.errorString(); << parseError.error << parseError.errorString();
setProgress(100);
m_updateStatus = UpdateStatus(UPDATE_STATUS::JSON_PARSE_FAILURE, m_updateStatus = UpdateStatus(UPDATE_STATUS::JSON_PARSE_FAILURE,
QString("(2) INVALID JSON %1 %2 %3") QString("(2) INVALID JSON %1 %2 %3")
.arg(msg) .arg(msg)
@ -402,100 +371,39 @@ bool Worker::backendConnected() {
QString("#M=APISM#C=CMD_EVENT#J=") + QString("#M=APISM#C=CMD_EVENT#J=") +
m_ismasClient.jsonParseFailed(IsmasClient::RESULT_CODE::INSTALL_ERROR, m_ismasClient.jsonParseFailed(IsmasClient::RESULT_CODE::INSTALL_ERROR,
m_updateStatus.m_statusDescription)); m_updateStatus.m_statusDescription));
emit replaceLast("Connecting backend ...", UPDATE_STEP_FAIL); return std::nullopt;
return false;
} }
if (!document.isObject()) { if (!document.isObject()) {
qCritical() << "FILE IS NOT A JSON OBJECT!"; qCritical() << "FILE IS NOT A JSON OBJECT!";
setProgress(100);
m_updateStatus = UpdateStatus(UPDATE_STATUS::JSON_PARSE_FAILURE, m_updateStatus = UpdateStatus(UPDATE_STATUS::JSON_PARSE_FAILURE,
QString("NOT A JSON-OBJECT %1").arg(msg)); QString("NOT A JSON-OBJECT %1").arg(msg));
IsmasClient::sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT, IsmasClient::sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
QString("#M=APISM#C=CMD_EVENT#J=") + QString("#M=APISM#C=CMD_EVENT#J=") +
m_ismasClient.jsonParseFailed(IsmasClient::RESULT_CODE::INSTALL_ERROR, m_ismasClient.jsonParseFailed(IsmasClient::RESULT_CODE::INSTALL_ERROR,
m_updateStatus.m_statusDescription)); m_updateStatus.m_statusDescription));
emit replaceLast("Connecting backend ...", UPDATE_STEP_FAIL); return std::nullopt;
return false;
} }
setProgress(progress + 1);
QJsonObject obj = document.object(); QJsonObject obj = document.object();
QStringList keys = obj.keys().filter("CMD_GET_APISMSTATUS_RESPONSE"); QStringList keys = obj.keys().filter("CMD_GET_APISMSTATUS_RESPONSE");
if (keys.size() == 1) { if (keys.size() != 1) {
QString const key = keys.at(0);
QJsonValue v = obj.value(key);
if (v.isObject()) {
obj = v.toObject();
bool ismas = obj.value("ISMAS").toBool();
QString status = obj.value("Broker").toString();
qInfo() << "REPEAT" << repeat << "In backendConnected() Broker=<"
<< status << ">, ISMAS=<" << (ismas ? "true>" : "false>");
if (ismas) {
if (status == "Connected") {
// do not send, as this would result in a corrupted wait button
// but update the user-interface
setProgress(100);
emit replaceLast("Connecting backend ...", UPDATE_STEP_OK);
return true;
}
}
m_updateStatus = UpdateStatus(UPDATE_STATUS::BACKEND_CHECK,
QString ("REPEAT %1 Broker=<").arg(repeat)
+ status + ">, ISMAS=<" + (ismas ? "true>" : "false>"));
//IsmasClient::sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
// QString("#M=APISM#C=CMD_EVENT#J=") +
// m_ismasClient.updateOfPSAContinues("BACKEND-CHECK", m_updateStatus.m_statusDescription));
qInfo() << "BACKEND-CHECK" << m_updateStatus.m_statusDescription;
emit showErrorMessage("Check backend connection", m_updateStatus.m_statusDescription);
QThread::sleep(6);
continue;
} else {
setProgress(100);
m_updateStatus = UpdateStatus(UPDATE_STATUS::BACKEND_CHECK_FAILURE,
"CMD_GET_APISM_STATUS_RESPONSE KEY NOT A JSON-OBJECT");
IsmasClient::sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
QString("#M=APISM#C=CMD_EVENT#J=") +
m_ismasClient.sanityCheckFailed(IsmasClient::RESULT_CODE::INSTALL_ERROR,
m_updateStatus.m_statusDescription));
emit showErrorMessage("check backend connection", m_updateStatus.m_statusDescription);
emit replaceLast("Connecting backend ...", UPDATE_STEP_FAIL);
return false;
}
} else {
setProgress(100);
m_updateStatus = UpdateStatus(UPDATE_STATUS::BACKEND_CHECK_FAILURE, m_updateStatus = UpdateStatus(UPDATE_STATUS::BACKEND_CHECK_FAILURE,
"CMD_GET_APISMSTATUS_RESPONSE KEY NOT AVAILABLE"); "CMD_GET_APISMSTATUS_RESPONSE KEY NOT AVAILABLE");
IsmasClient::sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT, IsmasClient::sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
QString("#M=APISM#C=CMD_EVENT#J=") + QString("#M=APISM#C=CMD_EVENT#J=") +
m_ismasClient.sanityCheckFailed(IsmasClient::RESULT_CODE::INSTALL_ERROR, m_ismasClient.sanityCheckFailed(IsmasClient::RESULT_CODE::INSTALL_ERROR,
m_updateStatus.m_statusDescription)); m_updateStatus.m_statusDescription));
emit showErrorMessage("check backend connection", m_updateStatus.m_statusDescription); emit showErrorMessage("apism response", m_updateStatus.m_statusDescription);
emit replaceLast("Connecting backend ...", UPDATE_STEP_FAIL); return std::nullopt;
return false;
}
} else { } else {
stopProgressLoop(); QString const key = keys.at(0);
int progress = (m_mainWindow->progressValue()/10) + 10; QJsonValue v = obj.value(key);
setProgress(progress); return v.toObject().value("Version").toString();
}
} else {
QThread::sleep(1);
} }
} }
return std::nullopt;
setProgress(100);
emit replaceLast("Connecting backend", UPDATE_STEP_FAIL);
emit showErrorMessage("Error", "Backend not available");
m_updateStatus = UpdateStatus(UPDATE_STATUS::BACKEND_NOT_CONNECTED,
QString("NO BACKEND CONNECTION"));
IsmasClient::sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
QString("#M=APISM#C=CMD_EVENT#J=") +
m_ismasClient.errorBackendNotConnected(m_updateStatus.m_statusDescription, ""));
}
return false;
} }
#define CHECK_UPDATE_TRIGGER_SET "Check update trigger ..." #define CHECK_UPDATE_TRIGGER_SET "Check update trigger ..."
@ -1212,8 +1120,7 @@ PSAInstalled Worker::getPSAInstalled() {
psaInstalled.dc.gitLastCommit = "N/A"; psaInstalled.dc.gitLastCommit = "N/A";
psaInstalled.dc.size = -1; psaInstalled.dc.size = -1;
psaInstalled.sw.raucVersion = m_raucVersion; psaInstalled.sw.apismVersion = m_apismVersion;
psaInstalled.sw.opkgVersion = m_opkgVersion;
psaInstalled.sw.atbQTVersion = m_atbqtVersion; psaInstalled.sw.atbQTVersion = m_atbqtVersion;
psaInstalled.pluginVersion.deviceController = m_pluginVersionATBDeciceController; psaInstalled.pluginVersion.deviceController = m_pluginVersionATBDeciceController;

View File

@ -9,6 +9,8 @@
#include <QJsonObject> #include <QJsonObject>
#include <QHash> #include <QHash>
#include <optional>
#include "worker_thread.h" #include "worker_thread.h"
#include "update.h" #include "update.h"
#include "git/git_client.h" #include "git/git_client.h"
@ -88,8 +90,6 @@ class Worker : public QObject {
QString const m_osVersion; QString const m_osVersion;
QString const m_atbqtVersion; QString const m_atbqtVersion;
QString const m_cpuSerial; QString const m_cpuSerial;
QString const m_raucVersion;
QString const m_opkgVersion;
QString const m_pluginVersionATBDeciceController; QString const m_pluginVersionATBDeciceController;
QString const m_pluginVersionIngenicoISelf; QString const m_pluginVersionIngenicoISelf;
QString const m_pluginVersionMobilisisCalc; QString const m_pluginVersionMobilisisCalc;
@ -111,6 +111,7 @@ class Worker : public QObject {
MainWindow *m_mainWindow; MainWindow *m_mainWindow;
int m_progressValue; int m_progressValue;
bool m_withoutIsmasDirectPort; bool m_withoutIsmasDirectPort;
QString m_apismVersion;
bool executeOpkgCommand(QString opkgCommand); bool executeOpkgCommand(QString opkgCommand);
QString getOsVersion() const; QString getOsVersion() const;
@ -155,6 +156,7 @@ public:
int machineNr() const { return m_machineNr; } int machineNr() const { return m_machineNr; }
int customerNr() const { return m_customerNr; } int customerNr() const { return m_customerNr; }
int zoneNr() const { return m_zoneNr; } int zoneNr() const { return m_zoneNr; }
QString apismVersion() const { return m_apismVersion; }
//friend QDebug operator<<(QDebug debug, Worker const &w) { //friend QDebug operator<<(QDebug debug, Worker const &w) {
// Q_UNUSED(w); // Q_UNUSED(w);
@ -179,7 +181,6 @@ public slots:
void update(); void update();
private slots: private slots:
bool backendConnected();
bool updateTriggerSet(); bool updateTriggerSet();
bool customerEnvironment(); bool customerEnvironment();
bool filesToUpdate(); bool filesToUpdate();
@ -191,6 +192,7 @@ private slots:
private: private:
PSAInstalled getPSAInstalled(); PSAInstalled getPSAInstalled();
void privateUpdate(); void privateUpdate();
std::optional<QString> getApismVersion();
}; };
#endif // WORKER_H_INCLUDED #endif // WORKER_H_INCLUDED