Compare commits

..

No commits in common. "074e60d8dcae83aa15e6bdd90ae95e3742d487ec" and "8eff6e5d10fcf7da4826300bb28a6e6141bad93c" have entirely different histories.

4 changed files with 95 additions and 217 deletions

View File

@ -98,7 +98,6 @@ bool Update::unloadDCPlugin() {
return false; return false;
} }
class hwapi;
Update::Update(Worker *worker, Update::Update(Worker *worker,
QString customerRepository, QString customerRepository,
QString customerNrStr, QString customerNrStr,
@ -123,9 +122,6 @@ Update::Update(Worker *worker,
, m_dryRun(dryRun) , m_dryRun(dryRun)
, m_sys_areDCdataValid(false) { , m_sys_areDCdataValid(false) {
if (!m_hw) {
qCritical() << "(" << __func__ << ":" << __LINE__ << ") m_hw == nullptr -> ca-slave plugin loaded ???";
} else {
int tries = 20; int tries = 20;
while ((m_sys_areDCdataValid = m_hw->sys_areDCdataValid()) == false) { while ((m_sys_areDCdataValid = m_hw->sys_areDCdataValid()) == false) {
// must deliver 'true', only then are all data from hwapi valid // must deliver 'true', only then are all data from hwapi valid
@ -137,56 +133,20 @@ Update::Update(Worker *worker,
QThread::msleep(500); QThread::msleep(500);
} }
qCritical() << "(" << __func__ << ":" << __LINE__ << ") m_sys_areDCDataValid ..." qCritical() << __PRETTY_FUNCTION__ << "m_sys_areDCDataValid ..." << m_sys_areDCdataValid;
<< m_sys_areDCdataValid;
QObject const *obj = m_hw->getAPI(); //qInfo() << "UPDATE: m_serialInterface ..." << m_serialInterface;
Q_ASSERT(obj != nullptr); //qInfo() << "UPDATE: m_baudrate ..." << m_baudrate;
//qInfo() << "UPDATE: m_customerRepository ..." << m_customerRepository;
QDebug critical = qCritical(); //qInfo() << "UPDATE: m_customerNr ..........." << m_customerNrStr;
critical << "connect() to onReportDCDownloadStatus() ..."; //qInfo() << "UPDATE: m_branchName ..........." << m_branchName;
if (!connect(obj, //qInfo() << "UPDATE: m_pluginName ..........." << m_pluginName;
SIGNAL(hwapi_reportDCDownloadStatus(QString const&)), //qInfo() << "UPDATE: m_workingDirectory ....." << m_workingDir;
this,
SLOT(onReportDCDownloadStatus(QString const &)))) {
critical << "FAILED";
} else critical << "DONE";
critical = qCritical();
critical << "connect() to onReportDCDownloadSuccess() ...";
if (!connect(obj,
SIGNAL(hwapi_reportDCDownloadSuccess(QString const&)), this,
SLOT(onReportDCDownloadSuccess(QString const &)))) {
critical << "FAILED";
} else critical << "DONE";
critical = qCritical();
critical << "connect() to onReportDCDownloadFailure() ...";
if (!connect(obj,
SIGNAL(hwapi_reportDCDownloadFailure(QString const &)), this,
SLOT(onReportDCDownloadFailure(QString const &)))) {
critical << "FAILED";
} else critical << "DONE";
}
} }
Update::~Update() { Update::~Update() {
} }
void Update::onReportDCDownloadStatus(QString const &status) {
emit m_worker->showStatusMessage("DL", status);
}
void Update::onReportDCDownloadSuccess(QString const &msg) {
qCritical() << "msg" << msg;
}
void Update::onReportDCDownloadFailure(QString const &errorMsg) {
qCritical() << "msg" << errorMsg;
}
// br is a index into a table, used for historical reasons. // br is a index into a table, used for historical reasons.
bool Update::openSerial(int br, QString baudrate, QString comPort) const { bool Update::openSerial(int br, QString baudrate, QString comPort) const {
qDebug() << "opening serial" << br << baudrate << comPort << "..."; qDebug() << "opening serial" << br << baudrate << comPort << "...";
@ -414,7 +374,7 @@ bool Update::downloadJson(enum FileTypeJson type,
QFileInfo fi(jsFileToSendToDC); // max. size of template file is 800 bytes QFileInfo fi(jsFileToSendToDC); // max. size of template file is 800 bytes
if (file.exists()) { if (file.exists()) {
if (file.open(QIODevice::ReadOnly)) { if (file.open(QIODevice::ReadOnly)) {
if (fi.size() > 0 && fi.size() <= 800) { if (fi.size() <= 800) {
QByteArray ba = file.readAll(); QByteArray ba = file.readAll();
// kindOfFile: 1=config, 2=device, 3=cash, 4=serial, 5=time, 6=printer // kindOfFile: 1=config, 2=device, 3=cash, 4=serial, 5=time, 6=printer
// nrOfTemplate=1...32 if kindOfFile==6 // nrOfTemplate=1...32 if kindOfFile==6
@ -630,6 +590,7 @@ bool Update::checkDownloadedJsonVersions(QStringList const& jsonFileNames) {
return false; return false;
} }
bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) { bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) {
if (m_sys_areDCdataValid == false) { if (m_sys_areDCdataValid == false) {
qCritical() << "ERROR!!! DC DATA NOT VALID -> CA-MASTER-PLUGIN NOT CONNECTED"; qCritical() << "ERROR!!! DC DATA NOT VALID -> CA-MASTER-PLUGIN NOT CONNECTED";
@ -637,96 +598,30 @@ bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) {
} }
bool res = false; bool res = false;
bool dcDownloadPossible = true;
QList<QString>::const_iterator it; QList<QString>::const_iterator it;
for (it = filesToWorkOn.cbegin(); it != filesToWorkOn.cend(); ++it) { for (it = filesToWorkOn.cbegin(); it != filesToWorkOn.cend(); ++it) {
m_worker->startProgressLoop(); m_worker->startProgressLoop();
QString const &fToWorkOn = QDir::cleanPath(m_customerRepository + QDir::separator() + it->trimmed()); QString const &fToWorkOn = QDir::cleanPath(m_customerRepository + QDir::separator() + it->trimmed());
if (fToWorkOn.endsWith("/dc2c.bin") && dcDownloadPossible) {
// download for dc possible only once
// download of device-controller should always be the last step
dcDownloadPossible = false;
if (!m_hw->dcDownloadRequest(fToWorkOn)) { // initiate download process
qCritical() << "DOWNLOAD-REQUEST-ERROR FOR" << fToWorkOn;
continue;
}
QThread::sleep(2);
int tries = 5;
while (!m_hw->dcDownloadRunning()) { // may take some time
if (--tries < 0) {
qCritical() << QDateTime::currentDateTime().toString(Qt::ISODate)
<< "(" << __func__ << ":" << __LINE__ << ") DOWNLOAD NOT RUNNING";
break;
}
QThread::sleep(1);
continue;
}
qCritical() << QDateTime::currentDateTime().toString(Qt::ISODate)
<< "(" << __func__ << ":" << __LINE__ << ") DOWNLOAD RUNNING";
QThread::sleep(2);
tries = 5;
while (!m_hw->dcDownloadReportThreadStart()) { // may take some time
if (--tries < 0) {
qCritical() << QDateTime::currentDateTime().toString(Qt::ISODate)
<< "(" << __func__ << ":" << __LINE__ << ") REPORT THREAD NOT STARTED";
break;
}
continue;
}
qCritical() << QDateTime::currentDateTime().toString(Qt::ISODate)
<< "(" << __func__ << ":" << __LINE__ << ") REPORT THREAD STARTED";
QThread::sleep(2);
tries = 5;
while (!m_hw->dcDownloadReportRunning()) { // may take some time
if (--tries < 0) {
qCritical() << QDateTime::currentDateTime().toString(Qt::ISODate)
<< "(" << __func__ << ":" << __LINE__ << ") DOWNLOAD REPORT NOT RUNNING";
break;
}
continue;
}
qCritical() << QDateTime::currentDateTime().toString(Qt::ISODate)
<< "(" << __func__ << ":" << __LINE__ << ") DOWNLOAD REPORT RUNNING";
tries = 1200;
while (m_hw->dcDownloadReportRunning()) {
QThread::msleep(1000);
if (--tries < 0) {
qCritical() << QDateTime::currentDateTime().toString(Qt::ISODate)
<< "(" << __func__ << ":" << __LINE__
<< ") DOWNLOAD REPORT STILL RUNNING AFTER 20mins";
break;
}
}
if (fToWorkOn.contains("dc2c.bin")) {
bool updateBinaryRes = true; bool updateBinaryRes = true;
// CONSOLE() // CONSOLE()
#if 0
m_hw->dc_autoRequest(false);// default: turn auto-request setting off
QThread::sleep(1); // wait to be sure that there are no more
// commands sent to dc-hardware
if ((updateBinaryRes = updateBinary(fToWorkOn)) == true) { // m_hw->dc_autoRequest(false);// default: turn auto-request setting off
// QThread::sleep(1); // wait to be sure that there are no more
// // commands sent to dc-hardware
// if ((updateBinaryRes = updateBinary(fToWorkOn)) == true) {
//
// qCritical() << "downloaded binary" << fToWorkOn; // qCritical() << "downloaded binary" << fToWorkOn;
++displayIndex; // ++displayIndex;
emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(2, ' ') + QString(")") // emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(2, ' ') + QString(")")
+ QString(" Update ") + QFileInfo(fToWorkOn).fileName(), // + QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
Worker::UPDATE_STEP_DONE); // Worker::UPDATE_STEP_DONE);
} //}
m_hw->dc_autoRequest(true); // turn auto-request setting on m_hw->dc_autoRequest(true); // turn auto-request setting on
@ -742,10 +637,11 @@ bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) {
qInfo() << "dc-firmware-version (NOT UPDATED)" << versions[1]; qInfo() << "dc-firmware-version (NOT UPDATED)" << versions[1];
} }
} }
#endif
res = updateBinaryRes; res = updateBinaryRes;
} else if (fToWorkOn.contains("DC2C_print", Qt::CaseInsensitive) } else {
if (fToWorkOn.contains("DC2C_print", Qt::CaseInsensitive)
&& fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) { && fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
res = true; res = true;
int i = fToWorkOn.indexOf("DC2C_print", Qt::CaseInsensitive); int i = fToWorkOn.indexOf("DC2C_print", Qt::CaseInsensitive);
@ -799,8 +695,7 @@ bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) {
qCritical() << "UNKNOWN JSON FILE NAME" << fToWorkOn; qCritical() << "UNKNOWN JSON FILE NAME" << fToWorkOn;
res = false; res = false;
} }
// m_worker->stopProgressLoop(); }
// m_worker->setProgress(100);
if (res == false) { if (res == false) {
break; break;

View File

@ -94,8 +94,6 @@ private slots:
void readyReadStandardOutput(); void readyReadStandardOutput();
void readyReadStandardError(); void readyReadStandardError();
void finished(int exitCode, QProcess::ExitStatus exitStatus); void finished(int exitCode, QProcess::ExitStatus exitStatus);
void onReportDCDownloadStatus(QString const &status);
void onReportDCDownloadSuccess(QString const &msg);
void onReportDCDownloadFailure(QString const &errorMsg);
}; };
#endif // UPDATE_H_INCLUDED #endif // UPDATE_H_INCLUDED

View File

@ -165,14 +165,8 @@ Worker::Worker(int customerNr,
// TODO: turn object into singleton // TODO: turn object into singleton
instance = this; instance = this;
m_lastFailedUpdateStep = UPDATE_STEP::NONE; m_lastFailedUpdateStep = UPDATE_STEP::NONE;
m_update = new Update(this,
QDir::cleanPath(m_workingDirectory + QDir::separator() + m_customerNrStr),
m_customerNrStr,
m_branchName,
m_pluginDir,
m_pluginName,
m_workingDirectory);
this->setObjectName("worker-object"); this->setObjectName("worker-object");
QDir::setCurrent(m_workingDirectory); QDir::setCurrent(m_workingDirectory);
@ -181,10 +175,6 @@ Worker::Worker(int customerNr,
} }
Worker::~Worker() { Worker::~Worker() {
if (m_update != nullptr) {
delete m_update;
m_update = nullptr;
}
} }
void Worker::displayProgressInMainWindow(int progress) { void Worker::displayProgressInMainWindow(int progress) {
@ -761,7 +751,7 @@ bool Worker::filesToUpdate() {
} }
m_filesToUpdate.removeDuplicates(); m_filesToUpdate.removeDuplicates();
qCritical() << "(" << __func__ << ":" << __LINE__ << ") FILES-TO-UPDATE" << m_filesToUpdate; qCritical() << __PRETTY_FUNCTION__ << "FILES-TO-UPDATE" << m_filesToUpdate;
GUI(m_filesToUpdate) << (CONSOLE(m_filesToUpdate) << UPDATE_STEP::FILES_TO_UPDATE); GUI(m_filesToUpdate) << (CONSOLE(m_filesToUpdate) << UPDATE_STEP::FILES_TO_UPDATE);
setProgress(_FILES_TO_UPDATE); setProgress(_FILES_TO_UPDATE);
@ -898,7 +888,15 @@ bool Worker::downloadFilesToPSAHardware() {
QStringList lst = m_filesToDownload; QStringList lst = m_filesToDownload;
ISMAS(lst) << (CONSOLE(lst) << UPDATE_STEP::FILES_TO_DOWNLOAD); ISMAS(lst) << (CONSOLE(lst) << UPDATE_STEP::FILES_TO_DOWNLOAD);
if (m_update && m_update->doUpdate(m_displayIndex, m_filesToDownload)) { Update update(this,
QDir::cleanPath(m_workingDirectory + QDir::separator() + m_customerNrStr),
m_customerNrStr,
m_branchName,
m_pluginDir,
m_pluginName,
m_workingDirectory);
if (update.doUpdate(m_displayIndex, m_filesToDownload)) {
// prepared for use: at the moment, the dc-library does not work // prepared for use: at the moment, the dc-library does not work
// as expected. // as expected.
@ -1062,17 +1060,6 @@ QString Worker::getAPISMYoctoInstallationStatus() {
return "N/A"; return "N/A";
} }
QString Worker::getDCVersionPreparedForDownload(QString const &filename) {
if (QFile::exists(filename)) { // <customer-repo/etc/dc/dc2c.bin>
QString const cmd = QString("strings %1 | grep -e DC2[Cc]\\. | head -n1").arg(filename);
Command c("bash");
if (c.execute("/tmp", QStringList() << "-c" << cmd)) {
return c.getCommandResult(); // DC2c.04.42 14.09.2023
}
}
return "N/A";
}
QString Worker::getATBQTVersion() const { QString Worker::getATBQTVersion() const {
QString const cmd = QString("echo -n $(/opt/app/ATBAPP/ATBQT -v | head -n 2 | cut -d':' -f2)"); QString const cmd = QString("echo -n $(/opt/app/ATBAPP/ATBQT -v | head -n 2 | cut -d':' -f2)");
@ -1197,9 +1184,7 @@ PSAInstalled Worker::getPSAInstalled() {
if (m_versionInfo.size() == 3) { if (m_versionInfo.size() == 3) {
qCritical() << QString("***** %1:%2").arg(__func__).arg(__LINE__) qCritical() << QString("***** %1:%2").arg(__func__).arg(__LINE__)
<< "m_versionInfo" << m_versionInfo << "*****"; << "m_versionInfo" << m_versionInfo << "*****";
psaInstalled.versionInfo.lastCommit = QString("%1-%2") psaInstalled.versionInfo.lastCommit = m_versionInfo.at(0);
.arg(QCoreApplication::applicationPid())
.arg(m_versionInfo.at(0));
psaInstalled.versionInfo.reason = m_versionInfo.at(1); psaInstalled.versionInfo.reason = m_versionInfo.at(1);
psaInstalled.versionInfo.created = m_versionInfo.at(2); psaInstalled.versionInfo.created = m_versionInfo.at(2);
} }

View File

@ -249,6 +249,7 @@ class Worker : public QThread{
<< UPDATE_STEP::SEND_LAST_VERSION)); << UPDATE_STEP::SEND_LAST_VERSION));
} }
m_worker->stopProgressLoop(); m_worker->stopProgressLoop();
m_worker->m_updateProcessRunning = false; m_worker->m_updateProcessRunning = false;
emit m_worker->enableExit(); emit m_worker->enableExit();
emit m_worker->restartExitTimer(); emit m_worker->restartExitTimer();
@ -369,7 +370,6 @@ public:
static QString getATBUpdateToolYoctoInstallationStatus(); static QString getATBUpdateToolYoctoInstallationStatus();
static QString getAPISMYoctoVersion(); static QString getAPISMYoctoVersion();
static QString getAPISMYoctoInstallationStatus(); static QString getAPISMYoctoInstallationStatus();
static QString getDCVersionPreparedForDownload(QString const &filename);
static const QString UPDATE_STEP_OK; static const QString UPDATE_STEP_OK;
static const QString UPDATE_STEP_DONE; static const QString UPDATE_STEP_DONE;