20 Commits

Author SHA1 Message Date
4b3a39b0e6 Set version to 1.3.14.
Add compile flag -C (so it is possible to use /*fall through*/ without
having the proprocessor to remove this comment.
2023-10-30 15:35:38 +01:00
a44b780d93 Minor: Add header for using RAII in sending SEND-LAST-VERSION to ISAMS. 2023-10-30 15:29:23 +01:00
19dfae9b56 Use output functions ISMAS(), GUI() and CONSOLE(), which point to friend
operators<< in Worker-class.
2023-10-30 15:28:25 +01:00
bef0d4fe12 Refactor the update process: streamline code. When WAIT button is not
active, the a clone or a fix of a defunct repository is possible, but
not more.
If WAIT button is active, the at least the opkg_commnds are executed. If
there are chenged files, they are handkled as wll.
2023-10-30 15:25:49 +01:00
72a2fc781c Minor: reove obsolete m_returnCode. 2023-10-30 15:24:33 +01:00
fc264689b1 Use and implement getAPISMYoctoVersion() and
getAPISMYoctoInstallationSTatus().
2023-10-30 15:22:59 +01:00
fc587456d5 Filling the QMap Worker:smap with data. 2023-10-30 15:21:26 +01:00
a2b933ab71 Minor: Added UPDATE_STEP_WRONG. 2023-10-30 15:20:15 +01:00
7d0fdf4d6d Small fixes:
1: fixed wrong parameters of a connect().
2: Minor: improved onQuit().
2023-10-30 15:17:59 +01:00
c2ce44c79b Adding three friend operator<< functions to output status information of
the update process: the first on outputs to CONSOLE(), the second one
outputs to ISMAS() and the last one to GUI(), i.e. the text edit of the
main window.
2023-10-30 15:15:30 +01:00
16a9556863 bool customerEnvironment();
bool filesToUpdate();
bool updateFiles();
bool syncCustomerRepositoryAndFS();
bool saveLogFile(): remove progress parameter.
2023-10-30 15:14:19 +01:00
48896f97ec Adding UPDATE_STEP_WRONG: helper variable to be used in text edit of
main window.
2023-10-30 15:13:04 +01:00
4486317cb2 dd declaration for getAPISMYoctoVersion() and
getAPISMYoctoInstallationStatus(): the first one returning the
yocto-version
of APIS, the second returning the installation status of APIS as display
in 'opkg info'.
2023-10-30 15:11:06 +01:00
6b9b88ea19 Adding member variables to check if customer repository was a fresh
clone, or if it was already existent.
2023-10-30 15:09:33 +01:00
99a99d95a1 Adding UPDATE_STEP enum plus associated interger defines.
Adding QMap: Worker::smap, which contains names of UPDATE_STEP-members.
2023-10-30 15:07:28 +01:00
d4ddbbee21 Add class UpdateProcessRunning: use for sending SEND-LAST-VERSION as
part of its destruktor: RAII-pattern.
2023-10-30 15:05:30 +01:00
34e5189945 comment out some debug output -> too much output. 2023-10-30 15:03:35 +01:00
c44c805238 Use some special output methods using ISMAS(), GUI() nad CONSOLE(). 2023-10-30 15:00:57 +01:00
196f1a730e gitPull(): don't use regex anumore, but just plain
string-matching/searching.
Regex seems to be quite error-prone.
2023-10-30 14:59:58 +01:00
7dc04c4422 Add helper function worker(), returning the worker-object. 2023-10-30 14:56:19 +01:00
7 changed files with 971 additions and 506 deletions

View File

@@ -41,9 +41,36 @@ DEFINES += QT_DEPRECATED_WARNINGS
# up cloning of customer repository. # up cloning of customer repository.
# 1.3.13: Fix: if the customer repository is corrupted, remove it and re-clone # 1.3.13: Fix: if the customer repository is corrupted, remove it and re-clone
# the repository (without checking the ISMAS-trigger (WAIT-)button. # the repository (without checking the ISMAS-trigger (WAIT-)button.
VERSION="1.3.14"
# 1.3.14: Add additional check for sanity of customer repository using # 1.3.14: Add additional check for sanity of customer repository using
# "git fsck". # "git fsck".
# Stream-lined code of update process. # Stream-lined code of update process: massive refactoring.
# Added functionality: If WAIT button is not active, then an existing
# customer repository will be repaired, or a not existing repository
# will be cloned. The process stops then.
# However, if the WAIT button is active, the at least the commands in
# opkg_commands will be executed. Changed files in the customer
# repository will be worked on: tariff-files will be synced with the
# local filesystem, json-files will be downloaded to firmware.
# The device-controller firmware will be handled in a later version.
# PLANNED TODOS:
# 1: Das Repository wird repariert bwz. neu geklont. Unabhaengig vom WAIT.
# 2: Wenn der WAIT-Button aktiv ist, dann wird ein Repository repariert (neu
# geklont), aber zusaetzlich werden alle verfuegbaren Dateien als neu
# angesehen und die entsprechenden Aktionen durchgefuehrt: tariff-files
# spiegeln, json-files laden und dc laden. Also VORSICHT: das repository
# muss in diesem fall wirklich in ordnung sein.
# 3: Wurde keine Datei geaendert, kein initiales Clone und der WAIT-button
# nicht aktiv, so (passiert natuerlich nichts) kann man davon ausgehen,
# dass es sich um ein automatisches Update handelt. Dann koennte man im
# ISMAS eine entsprechende Meldung anzeigen als Teil von SEND-LAST-VERSION.
# Wenn der WAIT-button aktiv ist, dann werden zumindest die opkg-commands
# ausgefuehrt.
# 4: rsync: immer alle Dateien soiegeln (bis auf opkg-commands)
# 5: Falls das Tool mal abstuerzt, dann einen Signal-Handler (fuer TERM)
# installieren, sodass zumnidest SEND-LASt-VERSION mit rausgeht.
# 6: rsync: explizites Binary, nicht das in busybox enthaltene.
win32 { win32 {
BUILD_DATE=$$system("date /t") BUILD_DATE=$$system("date /t")
@@ -55,7 +82,6 @@ win32 {
GIT_COMMIT=$$system("git log -1 --format=oneline | cut -d' ' -f1") GIT_COMMIT=$$system("git log -1 --format=oneline | cut -d' ' -f1")
VERSION="1.3.11"
EXTENDED_VERSION="$${VERSION}-$${GIT_COMMIT}" EXTENDED_VERSION="$${VERSION}-$${GIT_COMMIT}"
INCLUDEPATH += plugins INCLUDEPATH += plugins
@@ -68,6 +94,8 @@ DEFINES+=APP_BUILD_DATE=\\\"$$BUILD_DATE\\\"
DEFINES+=APP_BUILD_TIME=\\\"$$BUILD_TIME\\\" DEFINES+=APP_BUILD_TIME=\\\"$$BUILD_TIME\\\"
DEFINES+=APP_EXTENDED_VERSION=\\\"$$EXTENDED_VERSION\\\" DEFINES+=APP_EXTENDED_VERSION=\\\"$$EXTENDED_VERSION\\\"
# keep comments, as /* fall through */
QMAKE_CXXFLAGS += -C
QMAKE_CXXFLAGS += -g QMAKE_CXXFLAGS += -g
QMAKE_CXXFLAGS += -Wno-deprecated-copy QMAKE_CXXFLAGS += -Wno-deprecated-copy
@@ -76,14 +104,14 @@ contains( CONFIG, PTU5 ) {
CONFIG += link_pkgconfig CONFIG += link_pkgconfig
lessThan(QT_MAJOR_VERSION, 5): PKGCONFIG += qextserialport lessThan(QT_MAJOR_VERSION, 5): PKGCONFIG += qextserialport
QMAKE_CXXFLAGS += -O2 -std=c++17 # for GCC >= 4.7 QMAKE_CXXFLAGS += -O2 -std=c++17 # for GCC >= 4.7
QMAKE_CXXFLAGS += -Wno-deprecated-copy # QMAKE_CXXFLAGS += -Wno-deprecated-copy
ARCH = PTU5 ARCH = PTU5
DEFINES+=PTU5 DEFINES+=PTU5
} }
contains( CONFIG, PTU5_YOCTO ) { contains( CONFIG, PTU5_YOCTO ) {
greaterThan(QT_MAJOR_VERSION, 4): QT += serialport greaterThan(QT_MAJOR_VERSION, 4): QT += serialport
QMAKE_CXXFLAGS += -std=c++17 # for GCC >= 4.7 QMAKE_CXXFLAGS += -std=c++17 # for GCC >= 4.7
QMAKE_CXXFLAGS += -Wno-deprecated-copy # QMAKE_CXXFLAGS += -Wno-deprecated-copy
PTU5BASEPATH = /opt/devel/ptu5 PTU5BASEPATH = /opt/devel/ptu5
ARCH = PTU5 ARCH = PTU5
DEFINES+=PTU5 DEFINES+=PTU5
@@ -97,7 +125,7 @@ contains( CONFIG, DesktopLinux ) {
# QMAKE_CC = ccache $$QMAKE_CC # QMAKE_CC = ccache $$QMAKE_CC
# QMAKE_CXX = ccache $$QMAKE_CXX # QMAKE_CXX = ccache $$QMAKE_CXX
QMAKE_CXXFLAGS += -std=c++17 QMAKE_CXXFLAGS += -std=c++17
QMAKE_CXXFLAGS += -Wno-deprecated-copy # QMAKE_CXXFLAGS += -Wno-deprecated-copy
linux-clang { QMAKE_CXXFLAGS += -Qunused-arguments } linux-clang { QMAKE_CXXFLAGS += -Qunused-arguments }
ARCH = DesktopLinux ARCH = DesktopLinux
DEFINES+=DesktopLinux DEFINES+=DesktopLinux

View File

@@ -302,55 +302,61 @@ std::optional<QString> GitClient::gitPull() {
QString const s = c.getCommandResult().trimmed(); QString const s = c.getCommandResult().trimmed();
if (!s.isEmpty()) { if (!s.isEmpty()) {
QStringList lines = Update::split(s, '\n'); QStringList lines = Update::split(s, '\n');
worker()->CONSOLE(lines) << Worker::UPDATE_STEP::UPDATE_REPOSITORY;
if (!lines.empty()) { if (!lines.empty()) {
int zoneNr = Utils::read1stLineOfFile("/mnt/system_data/zone_nr"); static const QRegularExpression alreadyUpToDate("^\\s*Already\\s+up\\s+to\\s+date.*$");
m_branchName = (zoneNr != 0) ? QString("zg1/zone%1").arg(zoneNr) : "master"; if (std::none_of(lines.cbegin(), lines.cend(),
// lines can look like this: [](QString const &s) { return s.contains(alreadyUpToDate); })) {
// From https://git.mimbach49.de/GerhardHoffmann/customer_281 int zoneNr = Utils::read1stLineOfFile("/mnt/system_data/zone_nr");
// 41ec581..5d25ac3 master -> origin/master m_branchName = (zoneNr != 0) ? QString("zg1/zone%1").arg(zoneNr) : "master";
// ff10f57..43530a1 zg1/zone1 -> origin/zg1/zone1 // lines can look like this:
// 6ed893f..5d9882c zg1/zone2 -> origin/zg1/zone2 // From https://git.mimbach49.de/GerhardHoffmann/customer_281
// 4384d17..77045d8 zg1/zone3 -> origin/zg1/zone3 // 41ec581..5d25ac3 master -> origin/master
// 89d2812..36a0d74 zg1/zone5 -> origin/zg1/zone5 // ff10f57..43530a1 zg1/zone1 -> origin/zg1/zone1
bool found = false; // 6ed893f..5d9882c zg1/zone2 -> origin/zg1/zone2
for (int i=0; i < lines.size(); ++i) { // 4384d17..77045d8 zg1/zone3 -> origin/zg1/zone3
if (lines.at(i).contains(m_branchName)) { // 89d2812..36a0d74 zg1/zone5 -> origin/zg1/zone5
found = true; bool found = false;
// 409f198..6c22726 zg1/zone1 -> origin/zg1/zone1 for (int i=0; i < lines.size(); ++i) {
static QRegularExpression re("(^\\s*)([0-9A-Fa-f]+..[0-9A-Fa-f]+)(.*$)"); if (lines.at(i).contains(m_branchName)) {
QRegularExpressionMatch match = re.match(lines.at(i)); found = true;
if (match.hasMatch()) { // 409f198..6c22726 zg1/zone1 -> origin/zg1/zone1
if (re.captureCount() == 3) { // start with full match (0), then the other 3 matches static QRegularExpression re("(^\\s*)([0-9A-Fa-f]+..[0-9A-Fa-f]+)(.*$)");
return match.captured(2); QRegularExpressionMatch match = re.match(lines.at(i));
if (match.hasMatch()) {
if (re.captureCount() == 3) { // start with full match (0), then the other 3 matches
QString const matchCaptured = match.captured(2);
worker()->CONSOLE(QStringList(matchCaptured)) << Worker::UPDATE_STEP::UPDATE_REPOSITORY;
return matchCaptured;
} else {
QStringList lst(QString("(wrong capture count (%1)").arg(re.captureCount()));
worker()->GUI(lst) << (worker()->CONSOLE(lst) << Worker::UPDATE_STEP::UPDATE_REPOSITORY_FAILURE);
}
} else { } else {
emit m_worker->showErrorMessage("git pull", QStringList lst("no regex-match for commits");
QString("(wrong cap-count (%1)").arg(re.captureCount())); worker()->GUI(lst) << (worker()->CONSOLE(lst) << Worker::UPDATE_STEP::UPDATE_REPOSITORY_FAILURE);
} }
} else {
emit m_worker->showErrorMessage("git pull",
"no regex-match for commits");
Utils::printCriticalErrorMsg("NO REGEX MATCH FOR COMMITS");
} }
} }
} if (!found) {
if (!found) { QStringList lst(QString("unknown branch name ") + m_branchName);
emit m_worker->showErrorMessage("git pull", worker()->GUI(lst) << (worker()->CONSOLE(lst) << Worker::UPDATE_STEP::UPDATE_REPOSITORY_FAILURE);
QString("unkown branch name ") + m_branchName); }
Utils::printCriticalErrorMsg("UNKNOWN BRANCH NAME " + m_branchName); } else {
return "Already up to date";
} }
} else { } else {
emit m_worker->showErrorMessage("git pull", QStringList lst(QString("WRONG FORMAT FOR RESULT OF 'GIT PULL' ") + s);
QString("wrong format for result of 'git pull' ") + s); worker()->GUI(lst) << (worker()->CONSOLE(lst) << Worker::UPDATE_STEP::UPDATE_REPOSITORY_FAILURE);
Utils::printCriticalErrorMsg(QString("WRONG FORMAT FOR RESULT OF 'GIT FETCH' ") + s);
} }
} else { } else {
// emit m_worker->showErrorMessage("git fetch", "empty result for 'git fetch'"); QStringList lst("EMPTY RESULT FOR 'GIT PULL'");
Utils::printInfoMsg("EMPTY RESULT FOR 'GIT PULL'"); worker()->GUI(lst) << (worker()->CONSOLE(lst) << Worker::UPDATE_STEP::UPDATE_REPOSITORY_FAILURE);
} }
} }
} else { } else {
emit m_worker->showErrorMessage("git pull", QString("repository ") + m_customerRepository + " does not exist"); QStringList lst(QString("REPOSITORY ") + m_customerRepository + " DOES NOT EXIST");
Utils::printCriticalErrorMsg(QString("REPOSITORY ") + m_customerRepository + " DOES NOT EXIST"); worker()->GUI(lst) << (worker()->CONSOLE(lst) << Worker::UPDATE_STEP::UPDATE_REPOSITORY_FAILURE);
} }
return std::nullopt; return std::nullopt;
} }

View File

@@ -43,6 +43,9 @@ class GitClient : public QObject {
bool gitCloneAndCheckoutBranch(); bool gitCloneAndCheckoutBranch();
Worker *worker() { return m_worker; }
Worker const *worker() const { return m_worker; }
std::optional<QString> gitPull(); std::optional<QString> gitPull();
std::optional<QStringList> gitDiff(QString const &commit); std::optional<QStringList> gitDiff(QString const &commit);
std::optional<QStringList> gitMerge(); std::optional<QStringList> gitMerge();

View File

@@ -56,7 +56,7 @@ void IsmasClient::printDebugMessage(int port,
QString const &clientIP, QString const &clientIP,
int clientPort, int clientPort,
QString const &message) { QString const &message) {
#if 1 #if 0
Q_UNUSED(port); Q_UNUSED(port);
Q_UNUSED(clientIP); Q_UNUSED(clientIP);
Q_UNUSED(clientPort); Q_UNUSED(clientPort);
@@ -77,7 +77,7 @@ void IsmasClient::printInfoMessage(int port,
QString const &clientIP, QString const &clientIP,
int clientPort, int clientPort,
QString const &message) { QString const &message) {
#if 1 #if 0
Q_UNUSED(port); Q_UNUSED(port);
Q_UNUSED(clientIP); Q_UNUSED(clientIP);
Q_UNUSED(clientPort); Q_UNUSED(clientPort);
@@ -315,7 +315,7 @@ IsmasClient::sendRequestReceiveResponse(int port, QString const &request) {
} }
} }
printInfoMessage(port, clientIP, clientPort, QString("MESSAGE RECEIVED ") + buf); // printInfoMessage(port, clientIP, clientPort, QString("MESSAGE RECEIVED ") + buf);
QString response(buf); QString response(buf);
if (int idx = response.indexOf("{\"error\":\"ISMAS is offline\"}")) { if (int idx = response.indexOf("{\"error\":\"ISMAS is offline\"}")) {

View File

@@ -157,7 +157,7 @@ MainWindow::MainWindow(hwinf *hw, Worker *worker, Update *update, QWidget *paren
connect(m_worker, SIGNAL(showStatusMessage(QString,QString)),this, SLOT(onShowStatusMessage(QString,QString))); connect(m_worker, SIGNAL(showStatusMessage(QString,QString)),this, SLOT(onShowStatusMessage(QString,QString)));
connect(m_worker, SIGNAL(showErrorMessage(QStringList)),this, SLOT(onShowErrorMessage(QStringList))); connect(m_worker, SIGNAL(showErrorMessage(QStringList)),this, SLOT(onShowErrorMessage(QStringList)));
connect(m_worker, SIGNAL(showStatusMessage(QString,QString)),this, SLOT(onShowStatusMessage(QString,QString))); connect(m_worker, SIGNAL(showStatusMessage(QString,QString)),this, SLOT(onShowStatusMessage(QString,QString)));
connect(m_worker, SIGNAL(replaceLast(QStringList)),this,SLOT(onReplaceLast(QStringList))); connect(m_worker, SIGNAL(replaceLast(QString,QString)),this,SLOT(onReplaceLast(QString,QString)));
connect(m_worker, SIGNAL(replaceLast(QStringList,QString)),this, SLOT(onReplaceLast(QStringList,QString))); connect(m_worker, SIGNAL(replaceLast(QStringList,QString)),this, SLOT(onReplaceLast(QStringList,QString)));
} }
@@ -329,8 +329,18 @@ void MainWindow::onRestartExitTimer() {
void MainWindow::onQuit() { void MainWindow::onQuit() {
m_exitTimer->stop(); m_exitTimer->stop();
qCritical() << QString("ON QUIT: EXIT CODE %1").arg(m_worker->returnCode()); int errorCode = 0;
qApp->exit(m_worker->returnCode());
qCritical()
<< QString("ON QUIT: CURRENT STEP %1")
.arg(m_worker->getSmap()[m_worker->currentStep()]);
// TODO: replace SEND_LAST_VERSION with UPDATE_SUCCEEDED
if (m_worker->currentStep() != Worker::UPDATE_STEP::SEND_LAST_VERSION) {
errorCode = -1;
}
qCritical() << QString("ON QUIT: EXIT CODE %1").arg(errorCode);
qApp->exit(errorCode);
} }
void MainWindow::scrollDownTextEdit() { void MainWindow::scrollDownTextEdit() {

File diff suppressed because it is too large Load Diff

678
worker.h
View File

@@ -26,97 +26,87 @@
#define SERIAL_PORT "ttyUSB0" #define SERIAL_PORT "ttyUSB0"
#endif #endif
#define _STARTED (1) #define _ISMAS_DONE "U0001" // 100%
#define _CHECK_SANITY (2) #define _ISMAS_SET_WAIT_OK "U0002" // empty WAIT-button ("")
#define _CHECK_SANITY_SUCCESS (3) #define _ISMAS_FAILURE "U0003" // FAIL
#define _CHECK_SANITY_FAILURE (4) #define _ISMAS_CONTINUE "U0010" // %-values
#define _REPOSITORY_RECOVERED_SUCCESS (5) #define _ISMAS_RESET_WAIT "ISMAS" // reset WAIT-button to "WAIT"
#define _REPOSITORY_RECOVERED_FAILURE (6)
#define _CHECK_REPOSITORY (7)
#define _CHECK_REPOSITORY_SUCCESS (8)
#define _CHECK_REPOSITORY_FAILURE (9)
#define _CLONE_REPOSITORY (10)
#define _CLONE_REPOSITORY_SUCCESS (11)
#define _CLONE_REPOSITORY_FAILURE (12)
#define _CHECKOUT_REPOSITORY (13)
#define _CHECKOUT_REPOSITORY_SUCCESS (14)
#define _CHECKOUT_REPOSITORY_FAILURE (15)
#define _CHECK_ISMAS_TRIGGER (19)
#define _CHECK_ISMAS_TRIGGER_SUCCESS (23)
#define _CHECK_ISMAS_TRIGGER_FAILURE (24)
#define _UPDATE_REPOSITORY (25)
#define _UPDATE_REPOSITORY_SUCCESS (28)
#define _UPDATE_REPOSITORY_FAILURE (29)
#define _CHECK_FOR_REPOSITORY_CHANGES (30)
#define _CHECK_FOR_REPOSITORY_CHANGES_SUCCESS (38)
#define _CHECK_FOR_REPOSITORY_CHANGES_FAILURE (39)
#define _APPLY_REPOSITORY_CHANGES (40)
#define _DOWNLOAD_CONFIG_FILE (41)
#define _DOWNLOAD_CONFIG_FILE_SUCCESS (63)
#define _DOWNLOAD_CONFIG_FILE_FAILURE (64)
#define _DOWNLOAD_DEVICE_CONTROLLER (65)
#define _DOWNLOAD_DEVICE_CONTROLLER_SUCCESS (86)
#define _DOWNLOAD_DEVICE_CONTROLLER_FAILURE (87)
#define _APPLY_REPOSITORY_CHANGES_SUCCESS (88)
#define _APPLY_REPOSITORY_CHANGES_FAILURE (89)
#define _SYNC_CUSTOMER_REPOSITORY (90)
#define _SYNC_CUSTOMER_REPOSITORY_SUCCESS (91)
#define _SYNC_CUSTOMER_REPOSITORY_FAILURE (92)
#define _SAVE_LOGS (94)
#define _SAVE_LOGS_SUCCESS (95)
#define _SAVE_LOGS_FAILURE (96)
#define _SEND_LAST_VERSION (97)
#define _UPDATE_SUCCEEDED (98)
#define _UPDATE_FAILED (99)
#define _FINISHED (100)
#define _DEBUG (1000)
#define _ERROR (1001)
enum class UPDATE_STATUS : quint8 { #define _STARTED (1)
NOT_DEFINED, #define _CHECK_SANITY (2)
ISMAS_WAIT_STATE_CHECK_PENDING, #define _CHECK_SANITY_FAILURE (3)
ISMAS_WAIT_STATE_CHECK_FAILURE, #define _CHECK_SANITY_SUCCESS (4)
ISMAS_RESPONSE_RECEIVED, #define _REPOSITORY_RECOVERED_FAILURE (5)
BACKEND_CHECK, #define _REPOSITORY_RECOVERED_SUCCESS (6)
BACKEND_CHECK_FAILURE, #define _CHECK_REPOSITORY (7)
BACKEND_NOT_CONNECTED, #define _CHECK_REPOSITORY_FAILURE (8)
ISMAS_UPDATE_TRIGGER_SET, #define _CHECK_REPOSITORY_SUCCESS (9)
ISMAS_UPDATE_TRIGGER_NOT_SET_OR_WRONG, #define _CLONE_REPOSITORY (10)
GIT_CLONE_AND_CHECKOUT_SUCCESS, #define _CLONE_REPOSITORY_FAILURE (11)
GIT_CLONE_AND_CHECKOUT_FAILURE, #define _CLONE_REPOSITORY_SUCCESS (12)
GIT_CHECKOUT_BRANCH, #define _CHECKOUT_REPOSITORY (13)
GIT_CHECKOUT_BRANCH_FAILURE, #define _CHECKOUT_REPOSITORY_FAILURE (14)
GIT_FETCH_UPDATES, #define _CHECKOUT_REPOSITORY_SUCCESS (15)
GIT_FETCH_UPDATES_REQUEST_FAILURE, #define _INITIAL_CLONE_WITHOUT_ACTIVE_ISMAS_TRIGGER (16)
EXEC_OPKG_COMMAND, #define _INITIAL_CLONE_WITH_ACTIVE_ISMAS_TRIGGER (17)
EXEC_OPKG_COMMANDS, #define _CHECK_ISMAS_TRIGGER (19)
RSYNC_UPDATES_FAILURE, #define _CHECK_ISMAS_TRIGGER_WRONG_VALUE (20)
RSYNC_UPDATES_SUCCESS, #define _CHECK_ISMAS_TRIGGER_SUCCESS (21)
RSYNC_FILE_SUCCESS, #define _CHECK_ISMAS_TRIGGER_FAILURE (22)
JSON_PARSE_FAILURE, #define _CHECKOUT_BRANCH (23)
UPDATE_PROCESS_SUCCESS, #define _CHECKOUT_BRANCH_FAILURE (24)
UPDATE_PROCESS_FAILURE, #define _CHECKOUT_BRANCH_SUCCESS (25)
ISMAS_SANITY_CHECK_OK, #define _UPDATE_REPOSITORY (26)
ISMAS_UPDATE_TRIGGER_SET_FAILURE, #define _UPDATE_REPOSITORY_FAILURE (28)
PSA_UPDATE_FILES_FAILED, #define _UPDATE_REPOSITORY_SUCCESS (29)
GIT_CHECK_FILES_TO_UPDATE_SUCCESS, #define _CHECK_FOR_REPOSITORY_CHANGES (30)
ISMAS_SEND_LAST_VERSION_FAILED, #define _CHECK_FOR_REPOSITORY_CHANGES_SUCCESS (36)
SAVE_LOG_FILES_FAILED, #define _FILES_TO_UPDATE (37)
REMOVE_GIT_REPOSITORY_FAILED #define _CHECK_FOR_REPOSITORY_CHANGES_FAILURE (38)
}; #define _FILES_TO_DOWNLOAD (39)
#define _APPLY_REPOSITORY_CHANGES (40)
#define _EXEC_OPKG_COMMANDS (41)
#define _EXEC_OPKG_COMMAND_1 (42)
#define _EXEC_OPKG_COMMAND_2 (43)
#define _EXEC_OPKG_COMMAND_3 (44)
#define _EXEC_OPKG_COMMAND_4 (45)
#define _EXEC_OPKG_COMMAND_5 (46)
#define _EXEC_OPKG_COMMAND_6 (47)
#define _EXEC_OPKG_COMMAND_7 (48)
#define _EXEC_OPKG_COMMAND_8 (49)
#define _EXEC_OPKG_COMMAND_9 (50)
#define _EXEC_OPKG_COMMAND_LAST (51)
#define _EXEC_OPKG_COMMAND_FAILURE (52)
#define _EXEC_OPKG_COMMAND_SUCCESS (53)
#define _DOWNLOAD_CONFIG_FILE (54)
#define _DOWNLOAD_CONFIG_FILE_SUCCESS (63)
#define _DOWNLOAD_CONFIG_FILE_FAILURE (64)
#define _DOWNLOAD_DEVICE_CONTROLLER (65)
#define _DOWNLOAD_DEVICE_CONTROLLER_SUCCESS (86)
#define _DOWNLOAD_DEVICE_CONTROLLER_FAILURE (87)
#define _APPLY_REPOSITORY_CHANGES_FAILURE (88)
#define _APPLY_REPOSITORY_CHANGES_SUCCESS (89)
#define _SYNC_CUSTOMER_REPOSITORY (90)
#define _SYNC_CUSTOMER_REPOSITORY_FAILURE (91)
#define _SYNC_CUSTOMER_REPOSITORY_SUCCESS (92)
#define _SAVE_LOGS (93)
#define _SAVE_LOGS_FAILURE (94)
#define _SAVE_LOGS_SUCCESS (95)
#define _SEND_LAST_VERSION (96)
#define _UPDATE_SUCCEEDED (97)
#define _UPDATE_FAILED (98)
#define _UPDATE_ACTIVATED (99)
#define _FINISHED (100)
#define _DEBUG (1000)
#define _ERROR (1001)
struct UpdateStatus { #define _SEND_LAST_VERSION_CORRECTION (4)
UPDATE_STATUS m_updateStatus; #define _UPDATE_SUCCEEDED_CORRECTION (3)
QString m_statusDescription; #define _UPDATE_FAILED_CORRECTION (2)
#define _UPDATE_ACTIVATED_CORRECTION (1)
explicit UpdateStatus(UPDATE_STATUS s = UPDATE_STATUS::NOT_DEFINED, #define ISMAS_UPDATE_REQUESTS (10)
QString const &d = QString("")) #define CHECK_UPDATE_TRIGGER_SET "Check update trigger ..."
: m_updateStatus(s), m_statusDescription(d) {}
};
#define ISMAS_UPDATE_REQUESTS (10)
#define CHECK_UPDATE_TRIGGER_SET "Check update trigger ..."
class MainWindow; class MainWindow;
class hwinf; class hwinf;
@@ -154,13 +144,14 @@ class Worker : public QObject {
int m_ismasUpdateRequests; int m_ismasUpdateRequests;
QTimer m_waitForNewUpdates; QTimer m_waitForNewUpdates;
UpdateStatus m_updateStatus;
QStringList m_filesToUpdate; QStringList m_filesToUpdate;
QStringList m_filesToDownload; QStringList m_filesToDownload;
bool m_updateProcessRunning; bool m_updateProcessRunning;
int m_displayIndex; int m_displayIndex;
int m_returnCode; bool m_clone = false;
bool m_initialClone = false;
bool m_repairClone = false;
bool m_ismasTriggerActive = false;
MainWindow *m_mainWindow; MainWindow *m_mainWindow;
bool m_withoutIsmasDirectPort; bool m_withoutIsmasDirectPort;
@@ -193,17 +184,27 @@ class Worker : public QObject {
int sendUpdateSucceededAndActivated(); int sendUpdateSucceededAndActivated();
int sendFinalResult(); int sendFinalResult();
struct UpdateProcessRunning {
Worker *m_worker;
static constexpr const int UPDATE_SUCCESS_AND_ACTIVATED = 0; explicit UpdateProcessRunning(Worker *worker) : m_worker(worker) {
static constexpr const int CLONE_AND_CHECKOUT_SUCCESS = 0; m_worker->m_updateProcessRunning = true;
static constexpr const int CLONE_AND_CHECKOUT_FAILURE = -3; emit m_worker->disableExit();
static constexpr const int ISMAS_TRIGGER_FAILURE = -5; m_worker->startProgressLoop();
static constexpr const int ENVIRONMENT_CONFIG_FAILURE = -6; }
static constexpr const int GIT_PULL_FAILURE = -7;
static constexpr const int UPDATE_FILES_FAILURE = -8; virtual ~UpdateProcessRunning() {
static constexpr const int RSYNC_FAILURE = -9; m_worker->ISMAS() << (m_worker->GUI() << (m_worker->CONSOLE()
static constexpr const int SEND_LAST_VERSION_FAILURE = -10; << UPDATE_STEP::SEND_LAST_VERSION));
static constexpr const int SAVE_LOG_FILES_FAILURE = -11; m_worker->stopProgressLoop();
m_worker->m_updateProcessRunning = false;
emit m_worker->enableExit();
emit m_worker->restartExitTimer();
}
};
friend struct UpdateProcessRunning;
public: public:
enum class UPDATE_STEP { enum class UPDATE_STEP {
@@ -223,15 +224,36 @@ public:
CHECKOUT_REPOSITORY_SUCCESS = _CHECKOUT_REPOSITORY_SUCCESS, CHECKOUT_REPOSITORY_SUCCESS = _CHECKOUT_REPOSITORY_SUCCESS,
CHECKOUT_REPOSITORY_FAILURE = _CHECKOUT_REPOSITORY_FAILURE, CHECKOUT_REPOSITORY_FAILURE = _CHECKOUT_REPOSITORY_FAILURE,
CHECK_ISMAS_TRIGGER = _CHECK_ISMAS_TRIGGER, CHECK_ISMAS_TRIGGER = _CHECK_ISMAS_TRIGGER,
CHECK_ISMAS_TRIGGER_WRONG_VALUE = _CHECK_ISMAS_TRIGGER_WRONG_VALUE,
CHECK_ISMAS_TRIGGER_SUCCESS = _CHECK_ISMAS_TRIGGER_SUCCESS, CHECK_ISMAS_TRIGGER_SUCCESS = _CHECK_ISMAS_TRIGGER_SUCCESS,
CHECK_ISMAS_TRIGGER_FAILURE = _CHECK_ISMAS_TRIGGER_FAILURE, CHECK_ISMAS_TRIGGER_FAILURE = _CHECK_ISMAS_TRIGGER_FAILURE,
INITIAL_CLONE_WITHOUT_ACTIVE_ISMAS_TRIGGER = _INITIAL_CLONE_WITHOUT_ACTIVE_ISMAS_TRIGGER,
INITIAL_CLONE_WITH_ACTIVE_ISMAS_TRIGGER = _INITIAL_CLONE_WITH_ACTIVE_ISMAS_TRIGGER,
CHECKOUT_BRANCH = _CHECKOUT_BRANCH,
CHECKOUT_BRANCH_SUCCESS = _CHECKOUT_BRANCH_SUCCESS,
CHECKOUT_BRANCH_FAILURE = _CHECKOUT_BRANCH_FAILURE,
UPDATE_REPOSITORY = _UPDATE_REPOSITORY, UPDATE_REPOSITORY = _UPDATE_REPOSITORY,
UPDATE_REPOSITORY_SUCCESS = _UPDATE_REPOSITORY_SUCCESS, UPDATE_REPOSITORY_SUCCESS = _UPDATE_REPOSITORY_SUCCESS,
UPDATE_REPOSITORY_FAILURE = _UPDATE_REPOSITORY_FAILURE, UPDATE_REPOSITORY_FAILURE = _UPDATE_REPOSITORY_FAILURE,
CHECK_FOR_REPOSITORY_CHANGES = _CHECK_FOR_REPOSITORY_CHANGES, CHECK_FOR_REPOSITORY_CHANGES = _CHECK_FOR_REPOSITORY_CHANGES,
CHECK_FOR_REPOSITORY_CHANGES_SUCCESS = _CHECK_FOR_REPOSITORY_CHANGES_SUCCESS, CHECK_FOR_REPOSITORY_CHANGES_SUCCESS = _CHECK_FOR_REPOSITORY_CHANGES_SUCCESS,
CHECK_FOR_REPOSITORY_CHANGES_FAILURE = _CHECK_FOR_REPOSITORY_CHANGES_FAILURE, CHECK_FOR_REPOSITORY_CHANGES_FAILURE = _CHECK_FOR_REPOSITORY_CHANGES_FAILURE,
FILES_TO_UPDATE = _FILES_TO_UPDATE,
APPLY_REPOSITORY_CHANGES = _APPLY_REPOSITORY_CHANGES, APPLY_REPOSITORY_CHANGES = _APPLY_REPOSITORY_CHANGES,
FILES_TO_DOWNLOAD = _FILES_TO_DOWNLOAD,
EXEC_OPKG_COMMANDS = _EXEC_OPKG_COMMANDS,
EXEC_OPKG_COMMAND_1 = _EXEC_OPKG_COMMAND_1,
EXEC_OPKG_COMMAND_2 = _EXEC_OPKG_COMMAND_2,
EXEC_OPKG_COMMAND_3 = _EXEC_OPKG_COMMAND_3,
EXEC_OPKG_COMMAND_4 = _EXEC_OPKG_COMMAND_4,
EXEC_OPKG_COMMAND_5 = _EXEC_OPKG_COMMAND_5,
EXEC_OPKG_COMMAND_6 = _EXEC_OPKG_COMMAND_6,
EXEC_OPKG_COMMAND_7 = _EXEC_OPKG_COMMAND_7,
EXEC_OPKG_COMMAND_8 = _EXEC_OPKG_COMMAND_8,
EXEC_OPKG_COMMAND_9 = _EXEC_OPKG_COMMAND_9,
EXEC_OPKG_COMMAND_LAST = _EXEC_OPKG_COMMAND_LAST,
EXEC_OPKG_COMMAND_SUCCESS = _EXEC_OPKG_COMMAND_SUCCESS,
EXEC_OPKG_COMMAND_FAILURE = _EXEC_OPKG_COMMAND_FAILURE,
DOWNLOAD_CONFIG_FILE = _DOWNLOAD_CONFIG_FILE, DOWNLOAD_CONFIG_FILE = _DOWNLOAD_CONFIG_FILE,
DOWNLOAD_CONFIG_FILE_SUCCESS = _DOWNLOAD_CONFIG_FILE_SUCCESS, DOWNLOAD_CONFIG_FILE_SUCCESS = _DOWNLOAD_CONFIG_FILE_SUCCESS,
DOWNLOAD_CONFIG_FILE_FAILURE = _DOWNLOAD_CONFIG_FILE_FAILURE, DOWNLOAD_CONFIG_FILE_FAILURE = _DOWNLOAD_CONFIG_FILE_FAILURE,
@@ -248,6 +270,7 @@ public:
SAVE_LOGS_FAILURE = _SAVE_LOGS_FAILURE, SAVE_LOGS_FAILURE = _SAVE_LOGS_FAILURE,
SEND_LAST_VERSION = _SEND_LAST_VERSION, SEND_LAST_VERSION = _SEND_LAST_VERSION,
UPDATE_SUCCEEDED = _UPDATE_SUCCEEDED, UPDATE_SUCCEEDED = _UPDATE_SUCCEEDED,
UPDATE_ACTIVATED = _UPDATE_ACTIVATED,
UPDATE_FAILED = _UPDATE_FAILED, UPDATE_FAILED = _UPDATE_FAILED,
FINISHED = _FINISHED, FINISHED = _FINISHED,
DEBUG = _DEBUG, DEBUG = _DEBUG,
@@ -260,7 +283,9 @@ private:
QStringList m_ismasMsg; QStringList m_ismasMsg;
UPDATE_STEP m_currentStep; UPDATE_STEP m_currentStep;
static Worker *instance; static Worker *instance;
QStringList m_opkgCommands;
public:
QDebug CONSOLE(QStringList const &lst = QStringList()) { QDebug CONSOLE(QStringList const &lst = QStringList()) {
m_debugMsg = lst; m_debugMsg = lst;
return qDebug(); return qDebug();
@@ -276,13 +301,19 @@ private:
return this; return this;
} }
public: static QMap<UPDATE_STEP, const char*> const &getSmap() {
return smap;
}
static QString getATBUpdateToolYoctoVersion(); static QString getATBUpdateToolYoctoVersion();
static QString getATBUpdateToolYoctoInstallationStatus(); static QString getATBUpdateToolYoctoInstallationStatus();
static QString getAPISMYoctoVersion();
static QString getAPISMYoctoInstallationStatus();
static const QString UPDATE_STEP_OK; static const QString UPDATE_STEP_OK;
static const QString UPDATE_STEP_DONE; static const QString UPDATE_STEP_DONE;
static const QString UPDATE_STEP_FAIL; static const QString UPDATE_STEP_FAIL;
static const QString UPDATE_STEP_WRONG;
static const QString UPDATE_STEP_SUCCESS; static const QString UPDATE_STEP_SUCCESS;
explicit Worker(int customerNr, // 281 explicit Worker(int customerNr, // 281
@@ -309,7 +340,7 @@ public:
IsmasClient const &getIsmasClient() const { return m_ismasClient; } IsmasClient const &getIsmasClient() const { return m_ismasClient; }
bool updateProcessRunning() const { return m_updateProcessRunning; } bool updateProcessRunning() const { return m_updateProcessRunning; }
int returnCode() const { return m_returnCode; } UPDATE_STEP currentStep() const { return m_currentStep; }
int machineNr() const { return m_machineNr; } int machineNr() const { return m_machineNr; }
int customerNr() const { return m_customerNr; } int customerNr() const { return m_customerNr; }
@@ -338,18 +369,16 @@ public slots:
private slots: private slots:
bool updateTriggerSet(); bool updateTriggerSet();
bool customerEnvironment(int progress); bool customerEnvironment();
bool filesToUpdate(int progress); bool filesToUpdate();
bool updateFiles(int percent); bool updateFiles();
bool syncCustomerRepositoryAndFS(int progress); bool syncCustomerRepositoryAndFS();
bool sendIsmasLastVersionNotification(int progress); // bool sendIsmasLastVersionNotification(int progress);
bool saveLogFile(int progress); bool saveLogFile();
private: private:
PSAInstalled getPSAInstalled(); PSAInstalled getPSAInstalled();
void privateUpdate(); void privateUpdate();
std::optional<QString> getApismVersion();
void printProgress(UPDATE_STEP step);
static const QMap<UPDATE_STEP, const char*> smap; static const QMap<UPDATE_STEP, const char*> smap;
@@ -360,6 +389,7 @@ private:
} }
Worker::instance->m_currentStep = step; Worker::instance->m_currentStep = step;
QStringList lst = QStringList(smap[step]);
switch (step) { switch (step) {
case UPDATE_STEP::STARTED: { case UPDATE_STEP::STARTED: {
@@ -436,14 +466,34 @@ private:
case UPDATE_STEP::CHECKOUT_REPOSITORY_FAILURE: case UPDATE_STEP::CHECKOUT_REPOSITORY_FAILURE:
break; break;
case UPDATE_STEP::CHECK_ISMAS_TRIGGER: case UPDATE_STEP::CHECK_ISMAS_TRIGGER:
Utils::printUpdateStatusMsg( lst << instance->m_debugMsg;
debug, Utils::printUpdateStatusMsg(debug, lst);
QStringList(smap[step])
<< QString("CHECK ISMAS-TRIGGER-STATUS..."));
break; break;
case UPDATE_STEP::CHECK_ISMAS_TRIGGER_SUCCESS: case UPDATE_STEP::CHECK_ISMAS_TRIGGER_SUCCESS:
break; break;
case UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE: case UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE:
lst << instance->m_debugMsg;
Utils::printUpdateStatusMsg(debug, lst);
break;
case UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE: {
lst << instance->m_debugMsg;
Utils::printUpdateStatusMsg(debug, lst);
} break;
case UPDATE_STEP::INITIAL_CLONE_WITHOUT_ACTIVE_ISMAS_TRIGGER:
break;
case UPDATE_STEP::INITIAL_CLONE_WITH_ACTIVE_ISMAS_TRIGGER:
break;
case UPDATE_STEP::CHECKOUT_BRANCH:
lst << instance->m_debugMsg;
Utils::printUpdateStatusMsg(debug, lst);
break;
case UPDATE_STEP::CHECKOUT_BRANCH_SUCCESS:
lst << instance->m_debugMsg;
Utils::printUpdateStatusMsg(debug, lst);
break;
case UPDATE_STEP::CHECKOUT_BRANCH_FAILURE:
lst << instance->m_debugMsg;
Utils::printUpdateStatusMsg(debug, lst);
break; break;
case UPDATE_STEP::UPDATE_REPOSITORY: case UPDATE_STEP::UPDATE_REPOSITORY:
break; break;
@@ -457,7 +507,42 @@ private:
break; break;
case UPDATE_STEP::CHECK_FOR_REPOSITORY_CHANGES_FAILURE: case UPDATE_STEP::CHECK_FOR_REPOSITORY_CHANGES_FAILURE:
break; break;
case UPDATE_STEP::APPLY_REPOSITORY_CHANGES: case UPDATE_STEP::FILES_TO_UPDATE:
break;
case UPDATE_STEP::APPLY_REPOSITORY_CHANGES: {
lst << instance->m_debugMsg;
Utils::printUpdateStatusMsg(debug, lst);
} break;
case UPDATE_STEP::FILES_TO_DOWNLOAD:
break;
case UPDATE_STEP::EXEC_OPKG_COMMANDS:
break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_1:
__attribute__((fallthrough));
// [[fallthrough]] -> c++17 -> unknown for clang
case UPDATE_STEP::EXEC_OPKG_COMMAND_2:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_3:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_4:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_5:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_6:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_7:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_8:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_9:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_LAST:
lst << instance->m_debugMsg;
Utils::printUpdateStatusMsg(debug, lst);
break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_SUCCESS:
break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_FAILURE:
break; break;
case UPDATE_STEP::DOWNLOAD_CONFIG_FILE: case UPDATE_STEP::DOWNLOAD_CONFIG_FILE:
break; break;
@@ -488,32 +573,42 @@ private:
case UPDATE_STEP::SAVE_LOGS_FAILURE: case UPDATE_STEP::SAVE_LOGS_FAILURE:
break; break;
case UPDATE_STEP::SEND_LAST_VERSION: case UPDATE_STEP::SEND_LAST_VERSION:
// SEND_LAST_VERSION_CORRECTION
break; break;
case UPDATE_STEP::UPDATE_SUCCEEDED: case UPDATE_STEP::UPDATE_SUCCEEDED:
break; break;
case UPDATE_STEP::UPDATE_ACTIVATED:
break;
case UPDATE_STEP::UPDATE_FAILED: case UPDATE_STEP::UPDATE_FAILED:
break; break;
case UPDATE_STEP::FINISHED: case UPDATE_STEP::FINISHED:
break; break;
case UPDATE_STEP::DEBUG: case UPDATE_STEP::DEBUG: {
Utils::printUpdateStatusMsg( lst << instance->m_debugMsg;
debug, QStringList(smap[step]) << instance->m_debugMsg); qCritical() << __LINE__ << lst;
break; Utils::printUpdateStatusMsg(debug, lst);
} break;
case UPDATE_STEP::ERROR: case UPDATE_STEP::ERROR:
//Utils::printUpdateStatusMsg( //Utils::printUpdateStatusMsg(
// debug, QStringList(smap[step]) << instance->m_errorMsg); // debug, QStringList(smap[step]) << instance->m_errorMsg);
break; break;
} }
instance->m_debugMsg.clear();
return step; return step;
} }
// ISMAS()
friend UPDATE_STEP operator<<(IsmasClient &ismasClient, UPDATE_STEP step) { friend UPDATE_STEP operator<<(IsmasClient &ismasClient, UPDATE_STEP step) {
if (!Worker::instance) { if (!Worker::instance) {
return step; return step;
} }
Worker::instance->m_currentStep = step;
QStringList lst = QStringList(smap[step]);
switch (step) { switch (step) {
case UPDATE_STEP::STARTED: { case UPDATE_STEP::STARTED: {
ismasClient.setProgressInPercent(_STARTED); ismasClient.setProgressInPercent(_STARTED);
@@ -570,8 +665,8 @@ private:
.arg(instance->m_customerRepository) .arg(instance->m_customerRepository)
.arg(instance->m_gc.branchName()).toStdString().c_str(), .arg(instance->m_gc.branchName()).toStdString().c_str(),
""); "");
ismasClient.sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT, ismasClient.sendRequestReceiveResponse(
ismasUpdateNews); IsmasClient::APISM::DB_PORT, ismasUpdateNews);
} break; } break;
case UPDATE_STEP::CHECKOUT_REPOSITORY: case UPDATE_STEP::CHECKOUT_REPOSITORY:
ismasClient.setProgressInPercent(_CHECKOUT_REPOSITORY); ismasClient.setProgressInPercent(_CHECKOUT_REPOSITORY);
@@ -588,7 +683,6 @@ private:
case UPDATE_STEP::CHECKOUT_REPOSITORY_FAILURE: case UPDATE_STEP::CHECKOUT_REPOSITORY_FAILURE:
ismasClient.setProgressInPercent(_CHECKOUT_REPOSITORY_FAILURE); ismasClient.setProgressInPercent(_CHECKOUT_REPOSITORY_FAILURE);
break; break;
break;
case UPDATE_STEP::CHECK_ISMAS_TRIGGER: case UPDATE_STEP::CHECK_ISMAS_TRIGGER:
ismasClient.setProgressInPercent(_CHECK_ISMAS_TRIGGER); ismasClient.setProgressInPercent(_CHECK_ISMAS_TRIGGER);
break; break;
@@ -598,12 +692,60 @@ private:
QString("#M=APISM#C=CMD_EVENT#J=") + QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateTriggerSet("ISMAS TRIGGER SET", "")); ismasClient.updateTriggerSet("ISMAS TRIGGER SET", ""));
break; break;
case UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE: case UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE:
ismasClient.setProgressInPercent(_CHECK_ISMAS_TRIGGER_FAILURE); ismasClient.setProgressInPercent(_CHECK_ISMAS_TRIGGER_WRONG_VALUE);
ismasClient.sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.errorUpdateTrigger(instance->m_ismasMsg.join(' '), ""));
break; break;
case UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE: {
ismasClient.setProgressInPercent(_CHECK_ISMAS_TRIGGER_FAILURE);
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
"U0003",
_CHECK_ISMAS_TRIGGER_FAILURE,
IsmasClient::RESULT_CODE::INSTALL_ERROR,
smap[step],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
"");
ismasClient.sendRequestReceiveResponse(
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
} break;
case UPDATE_STEP::INITIAL_CLONE_WITHOUT_ACTIVE_ISMAS_TRIGGER:
ismasClient.setProgressInPercent(_INITIAL_CLONE_WITHOUT_ACTIVE_ISMAS_TRIGGER);
break;
case UPDATE_STEP::INITIAL_CLONE_WITH_ACTIVE_ISMAS_TRIGGER:
ismasClient.setProgressInPercent(_INITIAL_CLONE_WITH_ACTIVE_ISMAS_TRIGGER);
break;
case UPDATE_STEP::CHECKOUT_BRANCH:
ismasClient.setProgressInPercent(_CHECKOUT_BRANCH);
break;
case UPDATE_STEP::CHECKOUT_BRANCH_SUCCESS: {
ismasClient.setProgressInPercent(_CHECKOUT_BRANCH_SUCCESS);
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
"U0010",
_CHECKOUT_BRANCH_SUCCESS,
IsmasClient::RESULT_CODE::SUCCESS,
smap[step],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
"");
ismasClient.sendRequestReceiveResponse(
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
} break;
case UPDATE_STEP::CHECKOUT_BRANCH_FAILURE: {
ismasClient.setProgressInPercent(_CHECKOUT_BRANCH_FAILURE);
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
"U0003",
_CHECKOUT_BRANCH_FAILURE,
IsmasClient::RESULT_CODE::INSTALL_ERROR,
smap[step],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
"");
ismasClient.sendRequestReceiveResponse(
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
} break;
case UPDATE_STEP::UPDATE_REPOSITORY: case UPDATE_STEP::UPDATE_REPOSITORY:
ismasClient.setProgressInPercent(_UPDATE_REPOSITORY); ismasClient.setProgressInPercent(_UPDATE_REPOSITORY);
break; break;
@@ -622,9 +764,139 @@ private:
case UPDATE_STEP::CHECK_FOR_REPOSITORY_CHANGES_FAILURE: case UPDATE_STEP::CHECK_FOR_REPOSITORY_CHANGES_FAILURE:
ismasClient.setProgressInPercent(_CHECK_FOR_REPOSITORY_CHANGES_FAILURE); ismasClient.setProgressInPercent(_CHECK_FOR_REPOSITORY_CHANGES_FAILURE);
break; break;
case UPDATE_STEP::FILES_TO_UPDATE:
ismasClient.setProgressInPercent(_FILES_TO_UPDATE);
break;
case UPDATE_STEP::APPLY_REPOSITORY_CHANGES: case UPDATE_STEP::APPLY_REPOSITORY_CHANGES:
ismasClient.setProgressInPercent(_APPLY_REPOSITORY_CHANGES); ismasClient.setProgressInPercent(_APPLY_REPOSITORY_CHANGES);
break; break;
case UPDATE_STEP::FILES_TO_DOWNLOAD:
ismasClient.setProgressInPercent(_FILES_TO_DOWNLOAD);
break;
case UPDATE_STEP::EXEC_OPKG_COMMANDS:
ismasClient.setProgressInPercent(_EXEC_OPKG_COMMANDS);
break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_1:
ismasClient.setProgressInPercent(_EXEC_OPKG_COMMAND_1);
__attribute__((fallthrough)); // [[fallthrough]]; -> c++17, unknown to clang
case UPDATE_STEP::EXEC_OPKG_COMMAND_2: {
switch(step) {
case UPDATE_STEP::EXEC_OPKG_COMMAND_1: break;
default: ismasClient.setProgressInPercent(_EXEC_OPKG_COMMAND_2);
} __attribute__((fallthrough));
}
case UPDATE_STEP::EXEC_OPKG_COMMAND_3: {
switch(step) {
case UPDATE_STEP::EXEC_OPKG_COMMAND_1: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_2: break;
default: ismasClient.setProgressInPercent(_EXEC_OPKG_COMMAND_3);
} __attribute__((fallthrough));
}
case UPDATE_STEP::EXEC_OPKG_COMMAND_4: {
switch(step) {
case UPDATE_STEP::EXEC_OPKG_COMMAND_1: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_2: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_3: break;
default: ismasClient.setProgressInPercent(_EXEC_OPKG_COMMAND_4);
} __attribute__((fallthrough));
}
case UPDATE_STEP::EXEC_OPKG_COMMAND_5: {
switch(step) {
case UPDATE_STEP::EXEC_OPKG_COMMAND_1: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_2: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_3: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_4: break;
default: ismasClient.setProgressInPercent(_EXEC_OPKG_COMMAND_5);
} __attribute__((fallthrough));
}
case UPDATE_STEP::EXEC_OPKG_COMMAND_6: {
switch(step) {
case UPDATE_STEP::EXEC_OPKG_COMMAND_1: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_2: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_3: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_4: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_5: break;
default: ismasClient.setProgressInPercent(_EXEC_OPKG_COMMAND_6);
} __attribute__((fallthrough));
}
case UPDATE_STEP::EXEC_OPKG_COMMAND_7: {
switch(step) {
case UPDATE_STEP::EXEC_OPKG_COMMAND_1: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_2: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_3: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_4: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_5: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_6: break;
default: ismasClient.setProgressInPercent(_EXEC_OPKG_COMMAND_7);
} __attribute__((fallthrough));
}
case UPDATE_STEP::EXEC_OPKG_COMMAND_8: {
switch(step) {
case UPDATE_STEP::EXEC_OPKG_COMMAND_1: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_2: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_3: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_4: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_5: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_6: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_7: break;
default: ismasClient.setProgressInPercent(_EXEC_OPKG_COMMAND_8);
} __attribute__((fallthrough));
}
case UPDATE_STEP::EXEC_OPKG_COMMAND_9: {
switch(step) {
case UPDATE_STEP::EXEC_OPKG_COMMAND_1: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_2: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_3: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_4: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_5: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_6: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_7: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_8: break;
default: ismasClient.setProgressInPercent(_EXEC_OPKG_COMMAND_9);
} __attribute__((fallthrough));
}
case UPDATE_STEP::EXEC_OPKG_COMMAND_LAST: {
switch(step) {
case UPDATE_STEP::EXEC_OPKG_COMMAND_1: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_2: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_3: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_4: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_5: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_6: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_7: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_8: break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_9: break;
default: ismasClient.setProgressInPercent(_EXEC_OPKG_COMMAND_LAST);
}
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
_ISMAS_CONTINUE,
ismasClient.getProgressInPercent(),
IsmasClient::RESULT_CODE::SUCCESS,
smap[step],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
"");
ismasClient.sendRequestReceiveResponse(
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
} break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_SUCCESS: {
ismasClient.setProgressInPercent(_EXEC_OPKG_COMMAND_SUCCESS);
} break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_FAILURE: {
ismasClient.setProgressInPercent(_EXEC_OPKG_COMMAND_FAILURE);
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
_ISMAS_FAILURE,
ismasClient.getProgressInPercent(),
IsmasClient::RESULT_CODE::INSTALL_ERROR,
smap[step],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
"");
ismasClient.sendRequestReceiveResponse(
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
} break;
case UPDATE_STEP::DOWNLOAD_CONFIG_FILE: case UPDATE_STEP::DOWNLOAD_CONFIG_FILE:
ismasClient.setProgressInPercent(_DOWNLOAD_CONFIG_FILE); ismasClient.setProgressInPercent(_DOWNLOAD_CONFIG_FILE);
break; break;
@@ -667,15 +939,54 @@ private:
case UPDATE_STEP::SAVE_LOGS_FAILURE: case UPDATE_STEP::SAVE_LOGS_FAILURE:
ismasClient.setProgressInPercent(_SAVE_LOGS_FAILURE); ismasClient.setProgressInPercent(_SAVE_LOGS_FAILURE);
break; break;
case UPDATE_STEP::SEND_LAST_VERSION: case UPDATE_STEP::SEND_LAST_VERSION: {
ismasClient.setProgressInPercent(_SEND_LAST_VERSION); ismasClient.setProgressInPercent(_SEND_LAST_VERSION + _SEND_LAST_VERSION_CORRECTION);
break; ismasClient.sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
case UPDATE_STEP::UPDATE_SUCCEEDED: QString("#M=APISM#C=CMD_SENDVERSION#J=") +
ismasClient.setProgressInPercent(_UPDATE_SUCCEEDED); ismasClient.updateOfPSASendVersion(instance->getPSAInstalled()));
break; } break;
case UPDATE_STEP::UPDATE_FAILED: case UPDATE_STEP::UPDATE_SUCCEEDED: {
ismasClient.setProgressInPercent(_UPDATE_SUCCEEDED + _UPDATE_SUCCEEDED_CORRECTION);
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
"U0001", // WAIT-button set to 100%
ismasClient.getProgressInPercent(),
IsmasClient::RESULT_CODE::SUCCESS,
smap[step],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
"");
ismasClient.sendRequestReceiveResponse(
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
} break;
case UPDATE_STEP::UPDATE_ACTIVATED: {
ismasClient.setProgressInPercent(_UPDATE_ACTIVATED + _UPDATE_ACTIVATED_CORRECTION);
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
"U0002", // reset WAIT-button to "" (empty string)
ismasClient.getProgressInPercent(),
IsmasClient::RESULT_CODE::SUCCESS,
smap[step],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
"");
ismasClient.sendRequestReceiveResponse(
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
} break;
case UPDATE_STEP::UPDATE_FAILED: {
ismasClient.setProgressInPercent(_UPDATE_FAILED); ismasClient.setProgressInPercent(_UPDATE_FAILED);
break; QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
"U0003",
ismasClient.getProgressInPercent(),
IsmasClient::RESULT_CODE::INSTALL_ERROR,
smap[step],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
"");
ismasClient.sendRequestReceiveResponse(
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
} break;
case UPDATE_STEP::FINISHED: case UPDATE_STEP::FINISHED:
ismasClient.setProgressInPercent(_FINISHED); ismasClient.setProgressInPercent(_FINISHED);
break; break;
@@ -685,10 +996,19 @@ private:
break; break;
} }
instance->m_ismasMsg.clear();
return step; return step;
} }
// GUI()
friend UPDATE_STEP operator<<(Worker *worker, UPDATE_STEP step) { friend UPDATE_STEP operator<<(Worker *worker, UPDATE_STEP step) {
if (!Worker::instance) {
return step;
}
Worker::instance->m_currentStep = step;
switch (step) { switch (step) {
case UPDATE_STEP::STARTED: case UPDATE_STEP::STARTED:
break; break;
@@ -731,15 +1051,36 @@ private:
break; break;
case UPDATE_STEP::CHECK_ISMAS_TRIGGER_SUCCESS: case UPDATE_STEP::CHECK_ISMAS_TRIGGER_SUCCESS:
break; break;
case UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE: case UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE:
emit worker->replaceLast(CHECK_UPDATE_TRIGGER_SET, UPDATE_STEP_WRONG);
emit worker->showErrorMessage(worker->m_guiMsg); emit worker->showErrorMessage(worker->m_guiMsg);
break;
case UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE:
emit worker->replaceLast(CHECK_UPDATE_TRIGGER_SET, UPDATE_STEP_FAIL); emit worker->replaceLast(CHECK_UPDATE_TRIGGER_SET, UPDATE_STEP_FAIL);
emit worker->showErrorMessage(worker->m_guiMsg);
break;
case UPDATE_STEP::INITIAL_CLONE_WITHOUT_ACTIVE_ISMAS_TRIGGER:
break;
case UPDATE_STEP::INITIAL_CLONE_WITH_ACTIVE_ISMAS_TRIGGER:
break;
case UPDATE_STEP::CHECKOUT_BRANCH:
emit worker->appendText("\nPrepare customer environment ...");
break;
case UPDATE_STEP::CHECKOUT_BRANCH_SUCCESS:
emit worker->replaceLast("Prepare customer environment ...", UPDATE_STEP_DONE);
break;
case UPDATE_STEP::CHECKOUT_BRANCH_FAILURE:
emit worker->replaceLast("Prepare customer environment ...", UPDATE_STEP_FAIL);
emit worker->showErrorMessage(worker->m_guiMsg);
break; break;
case UPDATE_STEP::UPDATE_REPOSITORY: case UPDATE_STEP::UPDATE_REPOSITORY:
emit worker->appendText("\nUpdate repository...");
break; break;
case UPDATE_STEP::UPDATE_REPOSITORY_SUCCESS: case UPDATE_STEP::UPDATE_REPOSITORY_SUCCESS:
emit worker->replaceLast(QString("Update repository ..."), UPDATE_STEP_DONE);
break; break;
case UPDATE_STEP::UPDATE_REPOSITORY_FAILURE: case UPDATE_STEP::UPDATE_REPOSITORY_FAILURE:
emit worker->replaceLast(QString("Update repository ..."), UPDATE_STEP_FAIL);
break; break;
case UPDATE_STEP::CHECK_FOR_REPOSITORY_CHANGES: case UPDATE_STEP::CHECK_FOR_REPOSITORY_CHANGES:
break; break;
@@ -747,8 +1088,59 @@ private:
break; break;
case UPDATE_STEP::CHECK_FOR_REPOSITORY_CHANGES_FAILURE: case UPDATE_STEP::CHECK_FOR_REPOSITORY_CHANGES_FAILURE:
break; break;
case UPDATE_STEP::FILES_TO_UPDATE: {
qCritical() << "FILES_TO_UPDATE" << worker->m_filesToUpdate;
int const size = worker->m_filesToUpdate.size();
if (size > 1) {
emit worker->appendText(QString("Found %1 files to update :").arg(size), UPDATE_STEP_DONE);
for (int i = 0; i < size; ++i) {
emit worker->appendText(QString("\n ") + worker->m_filesToUpdate.at(i));
}
} else {
emit worker->appendText("Found 1 file to update :", UPDATE_STEP_DONE);
emit worker->appendText(QString("\n ") + worker->m_filesToUpdate.at(0));
}
} break;
case UPDATE_STEP::APPLY_REPOSITORY_CHANGES: case UPDATE_STEP::APPLY_REPOSITORY_CHANGES:
break; break;
case UPDATE_STEP::FILES_TO_DOWNLOAD:
break;
case UPDATE_STEP::EXEC_OPKG_COMMANDS:
emit worker->appendText("\n( ) Update opkg pakets ...");
break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_1:
__attribute__((fallthrough));
// [[fallthrough]] -> c++17 -> unknown for clang
case UPDATE_STEP::EXEC_OPKG_COMMAND_2:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_3:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_4:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_5:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_6:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_7:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_8:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_9:
__attribute__((fallthrough));
case UPDATE_STEP::EXEC_OPKG_COMMAND_LAST:
break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_SUCCESS: {
QString prepend = QString("(") + QString("%1").arg(worker->m_displayIndex).rightJustified(3, ' ') + QString(")")
+ QString(" Update opkg pakets ... ");
worker->m_opkgCommands.prepend(prepend);
emit worker->replaceLast(worker->m_opkgCommands, UPDATE_STEP_DONE);
} break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_FAILURE: {
emit worker->replaceLast(QString("(") + QString("%1").arg(worker->m_displayIndex).rightJustified(3, ' ') + QString(")")
+ QString(" Update opkg pakets ... "), UPDATE_STEP_FAIL);
} break;
case UPDATE_STEP::DOWNLOAD_CONFIG_FILE: case UPDATE_STEP::DOWNLOAD_CONFIG_FILE:
break; break;
case UPDATE_STEP::DOWNLOAD_CONFIG_FILE_SUCCESS: case UPDATE_STEP::DOWNLOAD_CONFIG_FILE_SUCCESS:
@@ -766,10 +1158,13 @@ private:
case UPDATE_STEP::APPLY_REPOSITORY_CHANGES_FAILURE: case UPDATE_STEP::APPLY_REPOSITORY_CHANGES_FAILURE:
break; break;
case UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY: case UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY:
emit worker->appendText("\nSync customer environment with filesystem ...");
break; break;
case UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY_SUCCESS: case UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY_SUCCESS:
emit worker->replaceLast(QString("Sync customer environment with filesystem ..."), UPDATE_STEP_DONE);
break; break;
case UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY_FAILURE: case UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY_FAILURE:
emit worker->replaceLast(QString("Sync customer environment with filesystem ..."), UPDATE_STEP_FAIL);
break; break;
case UPDATE_STEP::SAVE_LOGS: case UPDATE_STEP::SAVE_LOGS:
break; break;
@@ -778,10 +1173,15 @@ private:
case UPDATE_STEP::SAVE_LOGS_FAILURE: case UPDATE_STEP::SAVE_LOGS_FAILURE:
break; break;
case UPDATE_STEP::SEND_LAST_VERSION: case UPDATE_STEP::SEND_LAST_VERSION:
emit worker->appendText(QString("Send last version info "), UPDATE_STEP_DONE);
break; break;
case UPDATE_STEP::UPDATE_SUCCEEDED: case UPDATE_STEP::UPDATE_SUCCEEDED:
emit worker->appendText(QString("UPDATE "), UPDATE_STEP_SUCCESS);
break;
case UPDATE_STEP::UPDATE_ACTIVATED:
break; break;
case UPDATE_STEP::UPDATE_FAILED: case UPDATE_STEP::UPDATE_FAILED:
emit worker->appendText(QString("UPDATE "), UPDATE_STEP_FAIL);
break; break;
case UPDATE_STEP::FINISHED: case UPDATE_STEP::FINISHED:
break; break;
@@ -793,6 +1193,8 @@ private:
break; break;
} }
worker->m_guiMsg.clear();
return step; return step;
} }
}; };