From 43f60251ef421873ce5670b366ec78aaf0b7cd3f Mon Sep 17 00:00:00 2001 From: Gerhard Hoffmann Date: Thu, 20 Feb 2025 16:02:21 +0100 Subject: [PATCH] finished(): send messages to ISMAS --- UpdatePTUDevCtrl/process/update_command.cpp | 100 ++++++++++++++++++-- 1 file changed, 91 insertions(+), 9 deletions(-) diff --git a/UpdatePTUDevCtrl/process/update_command.cpp b/UpdatePTUDevCtrl/process/update_command.cpp index ee414c0..f70e1e3 100644 --- a/UpdatePTUDevCtrl/process/update_command.cpp +++ b/UpdatePTUDevCtrl/process/update_command.cpp @@ -1,5 +1,6 @@ #include "update_command.h" #include "worker.h" +#include "utils_internal.h" #include #include @@ -19,20 +20,13 @@ bool UpdateCommand::stopUpdateOnFailure() { } void UpdateCommand::finished(int exitCode, QProcess::ExitStatus exitStatus) { - - qCritical() << __func__ << ":" << __LINE__ << m_command - << "exitCode" << exitCode - << "exitStatus" << exitStatus; - QProcess *p = qobject_cast(sender()); if (p) { // read all remaining data sent to the process, just in case QString s = p->readAllStandardOutput().trimmed(); if (!s.isEmpty()) { - qCritical() << __func__ << ":" << __LINE__ << s; m_commandResult += s; } - qCritical() << __func__ << ":" << __LINE__ << "next command" << m_nextCommandIndex; disconnect(p, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(readyReadStandardOutput())); disconnect(p, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(readyReadStandardError())); @@ -40,13 +34,101 @@ void UpdateCommand::finished(int exitCode, QProcess::ExitStatus exitStatus) { } if (!m_worker->workList().empty()) { + + //static constexpr const int PERCENT_CHECK_ISMAS_CONNECIVITY{10}; + //static constexpr const int PERCENT_CHECK_UPDATE_REQUEST{20}; + //static constexpr const int PERCENT_CHECK_CUSTOMER_REPOSITORY{30}; + //static constexpr const int PERCENT_INSTALL_SW_PACKETS_NOACTION{40}; + //static constexpr const int PERCENT_INSTALL_SW_PACKETS{50}; + //static constexpr const int PERCENT_INSTALL_DC_CONFIGURATION{60}; + //static constexpr const int PERCENT_SYNCHRONIZE_REPO_AND_FILESYS{70}; + //static constexpr const int PERCENT_UPDATE_DC{80}; + //static constexpr const int PERCENT_SHOW_FINAL_STATUS{90}; + + qCritical() << __func__ << ":" << __LINE__ << m_command + << "exitCode" << exitCode + << "exitStatus" << exitStatus; + if (exitCode == 0 && exitStatus == QProcess::ExitStatus::NormalExit) { - qCritical() << __func__ << ":" << __LINE__; + if (m_command.contains("ATBUpdateCheck")) { + + // TODO: resultCodes richtig eintragen + + if (m_command.contains("--ismas-connected")) { + ISMAS::EventData e(ISMAS::CONTINUE, + internal::PERCENT_CHECK_ISMAS_CONNECIVITY, + 0, + "ATBUpdateCheck --ismas-connected", + "ISMAS connected"); + + m_worker->clientForUpdate().sendCmdEvent(e); + } else + if (m_command.contains("--update-requested")) { + ISMAS::EventData e(ISMAS::CONTINUE, + internal::PERCENT_CHECK_UPDATE_REQUEST, + 0, + "ATBUpdateCheck --update-requested", + "update not necessary"); + m_worker->clientForUpdate().sendCmdEvent(e); + } + } else + if (m_command.contains("ATBUpdateGit")) { + ISMAS::EventData e(ISMAS::CONTINUE, + internal::PERCENT_CHECK_CUSTOMER_REPOSITORY, + 0, + "ATBUpdateGit", + "customer repository clean and up-to-date"); + m_worker->clientForUpdate().sendCmdEvent(e); + } else + if (m_command.contains("ATBUpdateOpkg")) { + if (m_command.contains("--noaction")) { + ISMAS::EventData e(ISMAS::CONTINUE, + internal::PERCENT_INSTALL_SW_PACKETS_NOACTION, + 0, + "ATBUpdateOpkg --noaction", + "execute opkg-commands (dry-run)"); + m_worker->clientForUpdate().sendCmdEvent(e); + } else { + ISMAS::EventData e(ISMAS::CONTINUE, + internal::PERCENT_INSTALL_SW_PACKETS, + 0, + "ATBUpdateOpkg", + "execute opkg-commands"); + m_worker->clientForUpdate().sendCmdEvent(e); + } + } else + if (m_command.contains("ATBDownloadDCJsonFiles")) { + ISMAS::EventData e(ISMAS::CONTINUE, + internal::PERCENT_INSTALL_DC_CONFIGURATION, + 0, + "ATBDownloadDCJsonFiles", + "download json-files to device controller"); + m_worker->clientForUpdate().sendCmdEvent(e); + } else + if (m_command.contains("ATBUpdateSync")) { + ISMAS::EventData e(ISMAS::CONTINUE, + internal::PERCENT_SYNCHRONIZE_REPO_AND_FILESYS, + 0, + "ATBUpdateSync", + "sync customer repository with /etc"); + m_worker->clientForUpdate().sendCmdEvent(e); + } else + if (m_command.contains("ATBDownloadDCFirmware")) { + ISMAS::EventData e(ISMAS::CONTINUE, + internal::PERCENT_UPDATE_DC, + 0, + "ATBDownloadDCFirmware", + "downloaded new dc-firmware. about to reboot..."); + m_worker->clientForUpdate().sendCmdEvent(e); + } else + if (m_command.contains("ATBUpdateShowPSAInstalled")) { + // TODO + } + if (m_worker->workList().nextExec()) { m_worker->workList().exec(); } } else { - qCritical() << __func__ << ":" << __LINE__; bool execShowStatus = true; m_worker->workList().exec(execShowStatus); }