Merge remote-tracking branch 'UpdatePTUDevCtrl/dc-download'
This commit is contained in:
		@@ -98,6 +98,7 @@ bool Update::unloadDCPlugin() {
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class hwapi;
 | 
			
		||||
Update::Update(Worker *worker,
 | 
			
		||||
               QString customerRepository,
 | 
			
		||||
               QString customerNrStr,
 | 
			
		||||
@@ -122,31 +123,70 @@ Update::Update(Worker *worker,
 | 
			
		||||
    , m_dryRun(dryRun)
 | 
			
		||||
    , m_sys_areDCdataValid(false) {
 | 
			
		||||
 | 
			
		||||
    int tries = 20;
 | 
			
		||||
    while ((m_sys_areDCdataValid = m_hw->sys_areDCdataValid()) == false) {
 | 
			
		||||
        // must deliver 'true', only then are all data from hwapi valid
 | 
			
		||||
        if (--tries < 0) {
 | 
			
		||||
            qCritical() << "ERROR!!! DC DATA NOT VALID -> CA-MASTER-PLUGIN NOT CONNECTED";
 | 
			
		||||
            break;
 | 
			
		||||
    if (!m_hw) {
 | 
			
		||||
        qCritical() << "(" << __func__ << ":" << __LINE__ << ") m_hw == nullptr -> ca-slave plugin loaded ???";
 | 
			
		||||
    } else {
 | 
			
		||||
        int tries = 20;
 | 
			
		||||
        while ((m_sys_areDCdataValid = m_hw->sys_areDCdataValid()) == false) {
 | 
			
		||||
            // must deliver 'true', only then are all data from hwapi valid
 | 
			
		||||
            if (--tries < 0) {
 | 
			
		||||
                qCritical() << "ERROR!!! DC DATA NOT VALID -> CA-MASTER-PLUGIN NOT CONNECTED";
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
            m_hw->dc_autoRequest(true);
 | 
			
		||||
            QThread::msleep(500);
 | 
			
		||||
        }
 | 
			
		||||
        m_hw->dc_autoRequest(true);
 | 
			
		||||
        QThread::msleep(500);
 | 
			
		||||
 | 
			
		||||
        qCritical() << "(" << __func__ << ":" << __LINE__ << ") m_sys_areDCDataValid ..."
 | 
			
		||||
                    << m_sys_areDCdataValid;
 | 
			
		||||
 | 
			
		||||
        QObject const *obj = m_hw->getAPI();
 | 
			
		||||
        Q_ASSERT(obj != nullptr);
 | 
			
		||||
 | 
			
		||||
        QDebug critical = qCritical();
 | 
			
		||||
        critical << "connect() to onReportDCDownloadStatus() ...";
 | 
			
		||||
        if (!connect(obj,
 | 
			
		||||
                     SIGNAL(hwapi_reportDCDownloadStatus(QString const&)),
 | 
			
		||||
                     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";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    qCritical() << __PRETTY_FUNCTION__ << "m_sys_areDCDataValid ..." << m_sys_areDCdataValid;
 | 
			
		||||
 | 
			
		||||
    //qInfo() << "UPDATE: m_serialInterface    ..." << m_serialInterface;
 | 
			
		||||
    //qInfo() << "UPDATE: m_baudrate           ..." << m_baudrate;
 | 
			
		||||
    //qInfo() << "UPDATE: m_customerRepository ..." << m_customerRepository;
 | 
			
		||||
    //qInfo() << "UPDATE: m_customerNr ..........." << m_customerNrStr;
 | 
			
		||||
    //qInfo() << "UPDATE: m_branchName ..........." << m_branchName;
 | 
			
		||||
    //qInfo() << "UPDATE: m_pluginName ..........." << m_pluginName;
 | 
			
		||||
    //qInfo() << "UPDATE: m_workingDirectory ....." << m_workingDir;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
bool Update::openSerial(int br, QString baudrate, QString comPort) const {
 | 
			
		||||
    qDebug() << "opening serial" << br << baudrate << comPort << "...";
 | 
			
		||||
@@ -374,7 +414,7 @@ bool Update::downloadJson(enum FileTypeJson type,
 | 
			
		||||
        QFileInfo fi(jsFileToSendToDC); // max. size of template file is 800 bytes
 | 
			
		||||
        if (file.exists()) {
 | 
			
		||||
            if (file.open(QIODevice::ReadOnly)) {
 | 
			
		||||
                if (fi.size() <= 800) {
 | 
			
		||||
                if (fi.size() > 0 && fi.size() <= 800) {
 | 
			
		||||
                    QByteArray ba = file.readAll();
 | 
			
		||||
                    // kindOfFile: 1=config, 2=device, 3=cash, 4=serial, 5=time, 6=printer
 | 
			
		||||
                    //      nrOfTemplate=1...32 if kindOfFile==6
 | 
			
		||||
@@ -590,7 +630,6 @@ bool Update::checkDownloadedJsonVersions(QStringList const& jsonFileNames) {
 | 
			
		||||
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) {
 | 
			
		||||
    if (m_sys_areDCdataValid == false) {
 | 
			
		||||
        qCritical() << "ERROR!!! DC DATA NOT VALID -> CA-MASTER-PLUGIN NOT CONNECTED";
 | 
			
		||||
@@ -598,30 +637,96 @@ bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    bool res = false;
 | 
			
		||||
    bool dcDownloadPossible = true;
 | 
			
		||||
 | 
			
		||||
    QList<QString>::const_iterator it;
 | 
			
		||||
    for (it = filesToWorkOn.cbegin(); it != filesToWorkOn.cend(); ++it) {
 | 
			
		||||
        m_worker->startProgressLoop();
 | 
			
		||||
 | 
			
		||||
        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;
 | 
			
		||||
 | 
			
		||||
            // 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
 | 
			
		||||
 | 
			
		||||
            // 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) {
 | 
			
		||||
 | 
			
		||||
            // if ((updateBinaryRes = updateBinary(fToWorkOn)) == true) {
 | 
			
		||||
            //
 | 
			
		||||
                // qCritical() << "downloaded binary" << fToWorkOn;
 | 
			
		||||
 | 
			
		||||
            //    ++displayIndex;
 | 
			
		||||
            //    emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(2, ' ') + QString(")")
 | 
			
		||||
            //        + QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
 | 
			
		||||
            //        Worker::UPDATE_STEP_DONE);
 | 
			
		||||
            //}
 | 
			
		||||
                ++displayIndex;
 | 
			
		||||
                emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(2, ' ') + QString(")")
 | 
			
		||||
                    + QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
 | 
			
		||||
                    Worker::UPDATE_STEP_DONE);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            m_hw->dc_autoRequest(true); // turn auto-request setting on
 | 
			
		||||
 | 
			
		||||
@@ -637,65 +742,65 @@ bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) {
 | 
			
		||||
                    qInfo() << "dc-firmware-version (NOT UPDATED)" << versions[1];
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
            res = updateBinaryRes;
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
            if (fToWorkOn.contains("DC2C_print", Qt::CaseInsensitive)
 | 
			
		||||
        } else if (fToWorkOn.contains("DC2C_print", Qt::CaseInsensitive)
 | 
			
		||||
                && fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
 | 
			
		||||
                res = true;
 | 
			
		||||
                int i = fToWorkOn.indexOf("DC2C_print", Qt::CaseInsensitive);
 | 
			
		||||
                int const templateIdx = fToWorkOn.mid(i).midRef(10, 2).toInt();
 | 
			
		||||
                if ((templateIdx < 1) || (templateIdx > 32)) {
 | 
			
		||||
                    qCritical() << "WRONG TEMPLATE INDEX" << templateIdx;
 | 
			
		||||
                    res = false;
 | 
			
		||||
                } else {
 | 
			
		||||
                    if ((res = updatePrinterTemplate(templateIdx, fToWorkOn))) {
 | 
			
		||||
                        Utils::printInfoMsg(
 | 
			
		||||
                            QString("DOWNLOADED PRINTER TEMPLATE %1 WITH INDEX=%2")
 | 
			
		||||
                                .arg(fToWorkOn)
 | 
			
		||||
                                .arg(templateIdx));
 | 
			
		||||
                        ++displayIndex;
 | 
			
		||||
                        emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
 | 
			
		||||
                              + QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
 | 
			
		||||
                                Worker::UPDATE_STEP_DONE);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            } else if (fToWorkOn.contains("DC2C_cash", Qt::CaseInsensitive)
 | 
			
		||||
                    && fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
 | 
			
		||||
                res = true;
 | 
			
		||||
                if ((res = updateCashConf(fToWorkOn))) {
 | 
			
		||||
                    Utils::printInfoMsg(QString("DOWNLOADED CASH TEMPLATE %1").arg(fToWorkOn));
 | 
			
		||||
                    ++displayIndex;
 | 
			
		||||
                    emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
 | 
			
		||||
                          + QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
 | 
			
		||||
                            Worker::UPDATE_STEP_DONE);
 | 
			
		||||
                }
 | 
			
		||||
            } else if (fToWorkOn.contains("DC2C_conf", Qt::CaseInsensitive)
 | 
			
		||||
                    && fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
 | 
			
		||||
                res = true;
 | 
			
		||||
                if ((res= updateConfig(fToWorkOn))) {
 | 
			
		||||
                    Utils::printInfoMsg(QString("DOWNLOADED CONFIG TEMPLATE %1").arg(fToWorkOn));
 | 
			
		||||
                    ++displayIndex;
 | 
			
		||||
                    emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
 | 
			
		||||
                          + QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
 | 
			
		||||
                            Worker::UPDATE_STEP_DONE);
 | 
			
		||||
                }
 | 
			
		||||
            } else if (fToWorkOn.contains("DC2C_device", Qt::CaseInsensitive)
 | 
			
		||||
                    && fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
 | 
			
		||||
                res = true;
 | 
			
		||||
                if ((res = updateDeviceConf(fToWorkOn))) {
 | 
			
		||||
                    Utils::printInfoMsg(QString("DOWNLOADED DEVICE TEMPLATE %1").arg(fToWorkOn));
 | 
			
		||||
                    ++displayIndex;
 | 
			
		||||
                    emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
 | 
			
		||||
                          + QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
 | 
			
		||||
                            Worker::UPDATE_STEP_DONE);
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                qCritical() << "UNKNOWN JSON FILE NAME" << fToWorkOn;
 | 
			
		||||
            res = true;
 | 
			
		||||
            int i = fToWorkOn.indexOf("DC2C_print", Qt::CaseInsensitive);
 | 
			
		||||
            int const templateIdx = fToWorkOn.mid(i).midRef(10, 2).toInt();
 | 
			
		||||
            if ((templateIdx < 1) || (templateIdx > 32)) {
 | 
			
		||||
                qCritical() << "WRONG TEMPLATE INDEX" << templateIdx;
 | 
			
		||||
                res = false;
 | 
			
		||||
            } else {
 | 
			
		||||
                if ((res = updatePrinterTemplate(templateIdx, fToWorkOn))) {
 | 
			
		||||
                    Utils::printInfoMsg(
 | 
			
		||||
                        QString("DOWNLOADED PRINTER TEMPLATE %1 WITH INDEX=%2")
 | 
			
		||||
                            .arg(fToWorkOn)
 | 
			
		||||
                            .arg(templateIdx));
 | 
			
		||||
                    ++displayIndex;
 | 
			
		||||
                    emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
 | 
			
		||||
                          + QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
 | 
			
		||||
                            Worker::UPDATE_STEP_DONE);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        } else if (fToWorkOn.contains("DC2C_cash", Qt::CaseInsensitive)
 | 
			
		||||
                && fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
 | 
			
		||||
            res = true;
 | 
			
		||||
            if ((res = updateCashConf(fToWorkOn))) {
 | 
			
		||||
                Utils::printInfoMsg(QString("DOWNLOADED CASH TEMPLATE %1").arg(fToWorkOn));
 | 
			
		||||
                ++displayIndex;
 | 
			
		||||
                emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
 | 
			
		||||
                      + QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
 | 
			
		||||
                        Worker::UPDATE_STEP_DONE);
 | 
			
		||||
            }
 | 
			
		||||
        } else if (fToWorkOn.contains("DC2C_conf", Qt::CaseInsensitive)
 | 
			
		||||
                && fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
 | 
			
		||||
            res = true;
 | 
			
		||||
            if ((res= updateConfig(fToWorkOn))) {
 | 
			
		||||
                Utils::printInfoMsg(QString("DOWNLOADED CONFIG TEMPLATE %1").arg(fToWorkOn));
 | 
			
		||||
                ++displayIndex;
 | 
			
		||||
                emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
 | 
			
		||||
                      + QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
 | 
			
		||||
                        Worker::UPDATE_STEP_DONE);
 | 
			
		||||
            }
 | 
			
		||||
        } else if (fToWorkOn.contains("DC2C_device", Qt::CaseInsensitive)
 | 
			
		||||
                && fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
 | 
			
		||||
            res = true;
 | 
			
		||||
            if ((res = updateDeviceConf(fToWorkOn))) {
 | 
			
		||||
                Utils::printInfoMsg(QString("DOWNLOADED DEVICE TEMPLATE %1").arg(fToWorkOn));
 | 
			
		||||
                ++displayIndex;
 | 
			
		||||
                emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
 | 
			
		||||
                      + QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
 | 
			
		||||
                        Worker::UPDATE_STEP_DONE);
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            qCritical() << "UNKNOWN JSON FILE NAME" << fToWorkOn;
 | 
			
		||||
            res = false;
 | 
			
		||||
        }
 | 
			
		||||
        // m_worker->stopProgressLoop();
 | 
			
		||||
        // m_worker->setProgress(100);
 | 
			
		||||
 | 
			
		||||
        if (res == false) {
 | 
			
		||||
            break;
 | 
			
		||||
 
 | 
			
		||||
@@ -94,6 +94,8 @@ private slots:
 | 
			
		||||
    void readyReadStandardOutput();
 | 
			
		||||
    void readyReadStandardError();
 | 
			
		||||
    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
 | 
			
		||||
 
 | 
			
		||||
@@ -165,8 +165,14 @@ Worker::Worker(int customerNr,
 | 
			
		||||
 | 
			
		||||
    // TODO: turn object into singleton
 | 
			
		||||
    instance = this;
 | 
			
		||||
 | 
			
		||||
    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");
 | 
			
		||||
    QDir::setCurrent(m_workingDirectory);
 | 
			
		||||
@@ -175,6 +181,10 @@ Worker::Worker(int customerNr,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Worker::~Worker() {
 | 
			
		||||
    if (m_update != nullptr) {
 | 
			
		||||
        delete m_update;
 | 
			
		||||
        m_update = nullptr;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Worker::displayProgressInMainWindow(int progress) {
 | 
			
		||||
@@ -751,7 +761,7 @@ bool Worker::filesToUpdate() {
 | 
			
		||||
        }
 | 
			
		||||
        m_filesToUpdate.removeDuplicates();
 | 
			
		||||
 | 
			
		||||
        qCritical() << __PRETTY_FUNCTION__ << "FILES-TO-UPDATE" << m_filesToUpdate;
 | 
			
		||||
        qCritical() << "(" << __func__ << ":" << __LINE__ << ") FILES-TO-UPDATE" << m_filesToUpdate;
 | 
			
		||||
 | 
			
		||||
        GUI(m_filesToUpdate) << (CONSOLE(m_filesToUpdate) << UPDATE_STEP::FILES_TO_UPDATE);
 | 
			
		||||
        setProgress(_FILES_TO_UPDATE);
 | 
			
		||||
@@ -888,15 +898,7 @@ bool Worker::downloadFilesToPSAHardware() {
 | 
			
		||||
            QStringList lst = m_filesToDownload;
 | 
			
		||||
            ISMAS(lst) << (CONSOLE(lst) << UPDATE_STEP::FILES_TO_DOWNLOAD);
 | 
			
		||||
 | 
			
		||||
            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)) {
 | 
			
		||||
            if (m_update && m_update->doUpdate(m_displayIndex, m_filesToDownload)) {
 | 
			
		||||
                // prepared for use: at the moment, the dc-library does not work
 | 
			
		||||
                // as expected.
 | 
			
		||||
 | 
			
		||||
@@ -1060,6 +1062,17 @@ QString Worker::getAPISMYoctoInstallationStatus()  {
 | 
			
		||||
    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 const cmd = QString("echo -n $(/opt/app/ATBAPP/ATBQT -v | head -n 2 | cut -d':' -f2)");
 | 
			
		||||
@@ -1184,7 +1197,9 @@ PSAInstalled Worker::getPSAInstalled() {
 | 
			
		||||
    if (m_versionInfo.size() == 3) {
 | 
			
		||||
        qCritical() << QString("***** %1:%2").arg(__func__).arg(__LINE__)
 | 
			
		||||
                    << "m_versionInfo" << m_versionInfo << "*****";
 | 
			
		||||
        psaInstalled.versionInfo.lastCommit = m_versionInfo.at(0);
 | 
			
		||||
        psaInstalled.versionInfo.lastCommit = QString("%1-%2")
 | 
			
		||||
                .arg(QCoreApplication::applicationPid())
 | 
			
		||||
                .arg(m_versionInfo.at(0));
 | 
			
		||||
        psaInstalled.versionInfo.reason = m_versionInfo.at(1);
 | 
			
		||||
        psaInstalled.versionInfo.created = m_versionInfo.at(2);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -249,7 +249,6 @@ class Worker : public QThread{
 | 
			
		||||
                                     << UPDATE_STEP::SEND_LAST_VERSION));
 | 
			
		||||
            }
 | 
			
		||||
            m_worker->stopProgressLoop();
 | 
			
		||||
 | 
			
		||||
            m_worker->m_updateProcessRunning = false;
 | 
			
		||||
            emit m_worker->enableExit();
 | 
			
		||||
            emit m_worker->restartExitTimer();
 | 
			
		||||
@@ -370,6 +369,7 @@ public:
 | 
			
		||||
    static QString getATBUpdateToolYoctoInstallationStatus();
 | 
			
		||||
    static QString getAPISMYoctoVersion();
 | 
			
		||||
    static QString getAPISMYoctoInstallationStatus();
 | 
			
		||||
    static QString getDCVersionPreparedForDownload(QString const &filename);
 | 
			
		||||
 | 
			
		||||
    static const QString UPDATE_STEP_OK;
 | 
			
		||||
    static const QString UPDATE_STEP_DONE;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user