Finish off the firmware update code.

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

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Anton Lundin 2014-10-20 22:58:21 +02:00 committed by Dirk Hohndel
parent c11e2fbb6f
commit adf03c7845
2 changed files with 24 additions and 1 deletions

View file

@ -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);

View file

@ -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);
};