From 281daa7a671de8a692c3eb09a318bd1999c1bf8b Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 12 Jun 2020 14:47:52 +0200 Subject: [PATCH] Attempt to fix the progress bar issue on Companion Read Firmware function on Windows, dfu-util 0.7 (DFU mode) --- companion/src/process_flash.cpp | 12 ++++++++---- companion/src/process_flash.h | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/companion/src/process_flash.cpp b/companion/src/process_flash.cpp index 22baa83c6..77a77ea4d 100644 --- a/companion/src/process_flash.cpp +++ b/companion/src/process_flash.cpp @@ -136,10 +136,8 @@ void FlashProcess::onKillTimerElapsed() void FlashProcess::analyseStandardOutput(const QString & text) { - -// qDebug() << text; - currStdoutLine.append(text); + if (currStdoutLine.contains("size = ")) { int pos = currStdoutLine.lastIndexOf("size = "); QString temp = currStdoutLine.mid(pos+7); @@ -147,17 +145,23 @@ void FlashProcess::analyseStandardOutput(const QString & text) int size = temp.left(pos).toInt(); progress->setMaximum(size / 2048); } + if (currStdoutLine.contains("\n")) { int nlPos = currStdoutLine.lastIndexOf("\n"); currStdoutLine = currStdoutLine.mid(nlPos+1); } + if (!currStdoutLine.isEmpty()) { if (currStdoutLine.at(0) == QChar('.')) { int pos = currStdoutLine.lastIndexOf("."); progress->setValue(pos); } else if (currStdoutLine.startsWith("Starting upload: [")) { - int pos = (currStdoutLine.lastIndexOf("#")-19)*100/256; + int pos = (currStdoutLine.lastIndexOf("#") - 19) * 100 / 256; + progress->setValue(pos); + } + else if (currStdoutLine.startsWith("[") && progress->getText().contains("bytes_per_hash=2048")) { + int pos = (currStdoutLine.lastIndexOf("#") - 1) * 2048 / (2 * 1024 * 1024); // TODO depends on bin size progress->setValue(pos); } } diff --git a/companion/src/process_flash.h b/companion/src/process_flash.h index c39be2644..530938590 100644 --- a/companion/src/process_flash.h +++ b/companion/src/process_flash.h @@ -53,10 +53,10 @@ protected: void analyseStandardError(const QString &text); void errorWizard(); void addReadFuses(); - ProgressWidget *progress; + ProgressWidget * progress; const QString cmd; const QStringList args; - QProcess *process; + QProcess * process; bool hasErrors; QString currStdoutLine; QString currStderrLine;