This code connects the final parts of the generic firmware update code.

Signed-off-by: Anton Lundin <[email protected]>
---
 configuredivecomputer.cpp | 22 +++++++++++++++++++++-
 configuredivecomputer.h   |  3 +++
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/configuredivecomputer.cpp b/configuredivecomputer.cpp
index 1b2b9e8..9a708ad 100644
--- a/configuredivecomputer.cpp
+++ b/configuredivecomputer.cpp
@@ -13,7 +13,8 @@ ConfigureDiveComputer::ConfigureDiveComputer(QObject *parent) 
:
        QObject(parent),
        readThread(0),
        writeThread(0),
-       resetThread(0)
+       resetThread(0),
+       firmwareThread(0)
 {
        setState(INITIAL);
 }
@@ -512,7 +513,17 @@ bool ConfigureDiveComputer::restoreXMLBackup(QString 
fileName, DeviceDetails *de
 
 void ConfigureDiveComputer::startFirmwareUpdate(QString fileName, 
device_data_t *data)
 {
+       setState(FWUPDATE);
 
+       if (firmwareThread)
+               firmwareThread->deleteLater();
+
+       firmwareThread = new FirmwareUpdateThread(this, data, fileName);
+       connect(firmwareThread, SIGNAL(finished()),
+               this, SLOT(firmwareThreadFinished()), Qt::QueuedConnection);
+       connect(firmwareThread, SIGNAL(error(QString)), this, 
SLOT(setError(QString)));
+
+       firmwareThread->start();
 }
 
 void ConfigureDiveComputer::resetSettings(device_data_t *data)
@@ -557,6 +568,15 @@ void ConfigureDiveComputer::writeThreadFinished()
        }
 }
 
+void ConfigureDiveComputer::firmwareThreadFinished()
+{
+       setState(DONE);
+       if (resetThread->lastError.isEmpty()) {
+               //No error
+               emit message(tr("Device firmware successfully updated"));
+       }
+}
+
 void ConfigureDiveComputer::resetThreadFinished()
 {
        setState(DONE);
diff --git a/configuredivecomputer.h b/configuredivecomputer.h
index 8123576..93c50f9 100644
--- a/configuredivecomputer.h
+++ b/configuredivecomputer.h
@@ -22,6 +22,7 @@ public:
                        READING,
                        WRITING,
                        RESETTING,
+                       FWUPDATE,
                        CANCELLING,
                        CANCELLED,
                        ERROR,
@@ -49,11 +50,13 @@ private:
        ReadSettingsThread *readThread;
        WriteSettingsThread *writeThread;
        ResetSettingsThread *resetThread;
+       FirmwareUpdateThread *firmwareThread;
        void setState(states newState);
 private slots:
        void readThreadFinished();
        void writeThreadFinished();
        void resetThreadFinished();
+       void firmwareThreadFinished();
        void setError(QString err);
 };
 
-- 
1.9.1

_______________________________________________
subsurface mailing list
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to