#include "reporting_thread.h" #include "shared_mem_buffer.h" #include "hwapi.h" #include #include ReportingThread::ReportingThread(hwapi *hw) : m_hw(hw) , m_fileToDownload(m_hw->dcDownloadFileName()) { } ReportingThread::~ReportingThread() { } // download thread running in ca-slave sends reports of download process to // each component which has connects for the corresponding signals. void ReportingThread::run() { qCritical() << "START DOWNLOAD THREAD"; static QString status; #if 0 int cnt = 5; while (!m_hw->dcDownloadRunning()) { if (--cnt > 0) { status = QString("%1 waiting for download to start %2") .arg(QDateTime::currentDateTime().toString(Qt::ISODate)) .arg(cnt); qCritical() << __LINE__ << "STATUS" << status; emit m_hw->hwapi_reportDCDownloadStatus(status); QThread::sleep(1); } else break; } if (cnt == 0) { m_hw->dcDownloadResetRequest(); status = QString("%1 reset download request") .arg(QDateTime::currentDateTime().toString(Qt::ISODate)); qCritical() << __LINE__ << "STATUS" << status; emit m_hw->hwapi_reportDCDownloadStatus(status); cnt = 5; while (!m_hw->dcDownloadRunning()) { if (--cnt > 0) { QThread::sleep(1); } else break; } if (cnt == 0) { status = QString("%1 download request failure") .arg(QDateTime::currentDateTime().toString(Qt::ISODate)); qCritical() << __LINE__ << "STATUS" << status; emit m_hw->hwapi_reportDCDownloadFailure(status); return; } } #endif uint16_t const tnr = 1750; uint16_t cnr = 0; while (cnr <= tnr) { QThread::msleep(100); QString report(""); if (cnr > 0) { double percent = (double)cnr / (double)tnr; report = QString("total blocks %1, current block %2 [%3%]") .arg(tnr).arg(cnr).arg(percent, 0, 'f', 2); } else { report = QString("total blocks %1, current block %2 [0]") .arg(tnr).arg(cnr); } status = QDateTime::currentDateTime().toString(Qt::ISODate) + report; qCritical() << "STATUS" << status; emit m_hw->hwapi_reportDCDownloadStatus(status); cnr += 1; } if (tnr == cnr) { m_hw->hwapi_reportDCDownloadSuccess( QString("SUCCESS DOWNLOADING") + m_fileToDownload); } else { m_hw->hwapi_reportDCDownloadFailure( QString("ERROR DOWNLOADING %1 (total blocks=%2, sent blocks=%3)") .arg(m_fileToDownload).arg(tnr).arg(cnr)); } #if 0 while (m_hw->dcDownloadRunning()) { uint16_t const cnr = m_hw->dcDownloadGetCurrentBlockNumber(); uint16_t const tnr = m_hw->dcDownloadGetTotalBlockNumber(); QString report(""); if (cnr > 0) { report = QString("total blocks %1, current block %2 [%3]") .arg(tnr).arg(cnr).arg((double)(tnr)/(double(cnr))); } else { report = QString("total blocks %1, current block %2 [0]") .arg(tnr).arg(cnr); } emit m_hw->hwapi_reportDCDownloadStatus(QString("XXXXX") + QDateTime::currentDateTime().toString(Qt::ISODate)); emit m_hw->hwapi_reportDCDownloadStatus(report); } uint16_t const cnr = m_hw->dcDownloadGetCurrentBlockNumber(); uint16_t const tnr = m_hw->dcDownloadGetTotalBlockNumber(); if (tnr == cnr) { m_hw->hwapi_reportDCDownloadSuccess( QString("SUCCESS DOWNLOADING") + m_fileToDownload); } else { m_hw->hwapi_reportDCDownloadFailure( QString("ERROR DOWNLOADING %1 (total blocks=%2, sent blocks=%3)") .arg(m_fileToDownload).arg(tnr).arg(cnr)); } #endif qCritical() << "FINISH DOWNLOAD THREAD"; }