diff --git a/UpdatePTUDevCtrl/mainwindow.cpp b/UpdatePTUDevCtrl/mainwindow.cpp
index 4ddd0c6..fb2323e 100644
--- a/UpdatePTUDevCtrl/mainwindow.cpp
+++ b/UpdatePTUDevCtrl/mainwindow.cpp
@@ -3,6 +3,7 @@
#include "worker.h"
#include "utils.h"
#include "utils_internal.h"
+#include "log_line_entry.h"
#include "progress_event.h"
#include "update_dc_event.h"
#include "process/update_command.h"
@@ -25,6 +26,42 @@
#define SYNCHRONIZE_REPOSITORY 6
#define UPDATE_DC 7
+#define CHECK_ISMAS_CONNECT_PERCENT_START ( 1)
+#define CHECK_ISMAS_CONNECT_PERCENT_END (10)
+
+#define CHECK_UPDATE_REQUEST_PERCENT_START (10)
+#define CHECK_UPDATE_REQUEST_PERCENT_END (20)
+
+#define UPDATE_GIT_PERCENT_START (20)
+#define UPDATE_GIT_PERCENT_END (21)
+
+#define UPDATE_OPKG_NOACTION_PERCENT_START (21)
+#define UPDATE_OPKG_NOACTION_PERCENT_END (25)
+
+#define UPDATE_OPKG_PERCENT_START (25)
+#define UPDATE_OPKG_PERCENT_END (40)
+
+#define UPDATE_DOWNLOAD_JSON_START (40)
+#define UPDATE_DOWNLOAD_JSON_END (49)
+
+#define UPDATE_SYNC_START (49)
+#define UPDATE_SYNC_END (50)
+
+#define UPDATE_DOWNLOAD_DC_START (50)
+#define UPDATE_DOWNLOAD_DC_END (100)
+
+void MainWindow::onFileChanged(QString const& /*f*/) {
+ static int i = 30;
+ ui->updateProgress->setValue(++i);
+
+ qCritical() << QDateTime::currentDateTime().toString(Qt::ISODate) << "YYYYYYYYYYYYYYYYYY file changed" << i;
+
+ // TODO: daten an ISMAS senden
+}
+
+QProgressBar *MainWindow::progressBar() {
+ return ui ? ui->updateProgress : nullptr;
+}
MainWindow::MainWindow(Worker *worker, QWidget *parent)
: QMainWindow(parent)
@@ -32,10 +69,15 @@ MainWindow::MainWindow(Worker *worker, QWidget *parent)
, m_worker(worker)
, m_width(60)
, m_progressRunning(false)
- , m_updateStep(UpdateDcEvent::UpdateStep::NONE) {
+ , m_updateStep(UpdateDcEvent::UpdateStep::NONE)
+ , m_updateLog("/opt/app/tools/atbupdate/update.log") { // TODO: in ini-file eintragen
ui->setupUi(this);
+ if (!m_updateLog.open(QIODevice::ReadWrite | QIODevice::Unbuffered)) {
+ qCritical() << "ERROR can not open" << m_updateLog.fileName();
+ }
+
m_updateSteps.resize(8);
m_updateSteps[CHECK_BACKEND_CONNECTION] = "Check backend connection (ISMAS) ";
m_updateSteps[CHECK_UPDATE_REQUEST] = "Check update request ";
@@ -274,6 +316,7 @@ void MainWindow::onShowTariffUpdate(QString) {
void MainWindow::onShowISMASConnectivity(QString status) {
// qCritical() << __func__ << ":" << __LINE__ << "status" << status;
+ QString stepResult;
QString s = m_updateSteps[CHECK_BACKEND_CONNECTION].trimmed();
bool const custRepoExists = internal::customerRepoExists();
@@ -281,24 +324,46 @@ void MainWindow::onShowISMASConnectivity(QString status) {
if (status.contains(UpdateCommand::ISMAS_CONNECTED, Qt::CaseInsensitive)) {
if (custRepoExists) {
s += " connected";
+ stepResult = "ISMAS connected";
} else {
s += " connected (initial configuration)";
+ stepResult = "ISMAS connected (initial configuration)";
}
} else
if (status.contains(UpdateCommand::NO_CUSTOMER_REPOSITORY, Qt::CaseInsensitive)) {
s += " NOT CONNECTED";
+ stepResult = "ISMAS not connected";
} else
if (status.contains(UpdateCommand::ISMAS_CONNECTION_IN_PROGRESS, Qt::CaseInsensitive)) {
s += " connecting";
+ stepResult = "connecting ISMAS";
} else
if (status.contains(UpdateCommand::ISMAS_NOT_CONNECTED, Qt::CaseInsensitive)) {
if (custRepoExists) {
s += " NOT CONNECTED. STOP";
+ stepResult = "ISMAS not connected";
} else {
s += " not connected. (initial configuration)";
+ stepResult = "ISMAS not connected (initial configuration)";
}
} else {
s += " UNKNOWN STATUS";
+ stepResult = "unknown status";
+ }
+
+ struct LogLineEntry logLine =
+ initLogLineEntry(1, // receiver
+ QDateTime::currentDateTime().toString(Qt::ISODate).toUtf8().constData(),
+ _ISMAS_CONTINUE,
+ 0, // eventState
+ CHECK_ISMAS_CONNECT_PERCENT_START,
+ ISMAS::RESULT_CODE::E_SUCCESS,
+ "show ISMAS connectivity", // step
+ stepResult.toUtf8().constData()); // stepResult
+
+ int w = 0;
+ if ((w = m_updateLog.write((char *)(&logLine), sizeof(logLine))) != sizeof(logLine)) {
+ qCritical() << __func__ << ":" << __LINE__ << "ERROR only" << w << "bytes written";
}
m_updateSteps[CHECK_BACKEND_CONNECTION] = s;
@@ -307,6 +372,20 @@ void MainWindow::onShowISMASConnectivity(QString status) {
s += m_updateSteps[i] + "
";
}
ui->stepLabel->setText(s);
+
+ logLine =
+ initLogLineEntry(1, // receiver
+ QDateTime::currentDateTime().toString(Qt::ISODate).toUtf8().constData(),
+ _ISMAS_CONTINUE,
+ 0, // eventState
+ CHECK_ISMAS_CONNECT_PERCENT_END,
+ ISMAS::RESULT_CODE::E_SUCCESS,
+ "show ISMAS connectivity", // step
+ stepResult.toUtf8().constData()); // stepResult
+
+ if ((w = m_updateLog.write((char *)(&logLine), sizeof(logLine))) != sizeof(logLine)) {
+ qCritical() << __func__ << ":" << __LINE__ << "ERROR only" << w << "bytes written";
+ }
}
void MainWindow::onShowCustRepoStatus(QString status) {
@@ -458,6 +537,7 @@ void MainWindow::onShowUpdateDCFirmware(QString status) {
void MainWindow::onShowUpdateRequest(QString status) {
// qCritical() << __func__ << ":" << __LINE__ << "status" << status;
+ //ui->updateProgress->setValue(CHECK_UPDATE_REQUEST_PERCENT_START);
QString s = m_updateSteps[CHECK_UPDATE_REQUEST].trimmed();
bool const custRepoExists = internal::customerRepoExists();
@@ -469,17 +549,20 @@ void MainWindow::onShowUpdateRequest(QString status) {
s += " not requested (initial configuration)";
}
} else
- if (status.contains(UpdateCommand::UPDATE_REQUESTED, Qt::CaseInsensitive)) {
+ if (status.contains(internal::UPDATE_REQUESTED, Qt::CaseInsensitive)) {
if (custRepoExists) {
s += " requested";
} else {
s += " requested (initial configuration)";
}
} else
- if (status.contains(UpdateCommand::UPDATE_NOT_NECESSARY, Qt::CaseInsensitive)) {
+ if (status.contains(internal::UPDATE_INITIAL, Qt::CaseInsensitive)) {
+ s += " requested (initial configuration)";
+ } else
+ if (status.contains(internal::UPDATE_NOT_NECESSARY, Qt::CaseInsensitive)) {
s += " not necessary";
} else
- if (status.contains(UpdateCommand::NO_CUSTOMER_REPOSITORY, Qt::CaseInsensitive)) {
+ if (status.contains(internal::NO_CUSTOMER_REPOSITORY, Qt::CaseInsensitive)) {
s += " UNKNOWN (ISMAS not connected)";
} else {
s += " UNKNOWN";
@@ -491,6 +574,7 @@ void MainWindow::onShowUpdateRequest(QString status) {
s += m_updateSteps[i] + "
";
}
ui->stepLabel->setText(s);
+ //ui->updateProgress->setValue(CHECK_UPDATE_REQUEST_PERCENT_END);
}
void MainWindow::onShowISMASChecks(QString) {