mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-01 00:43:24 +00:00
Add support to reset OSTC3 settings to default
Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
d63a3ce420
commit
74f27a0a39
7 changed files with 97 additions and 1 deletions
|
@ -12,7 +12,8 @@
|
||||||
ConfigureDiveComputer::ConfigureDiveComputer(QObject *parent) :
|
ConfigureDiveComputer::ConfigureDiveComputer(QObject *parent) :
|
||||||
QObject(parent),
|
QObject(parent),
|
||||||
readThread(0),
|
readThread(0),
|
||||||
writeThread(0)
|
writeThread(0),
|
||||||
|
resetThread(0)
|
||||||
{
|
{
|
||||||
setState(INITIAL);
|
setState(INITIAL);
|
||||||
}
|
}
|
||||||
|
@ -514,6 +515,21 @@ void ConfigureDiveComputer::startFirmwareUpdate(QString fileName, device_data_t
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ConfigureDiveComputer::resetSettings(device_data_t *data)
|
||||||
|
{
|
||||||
|
setState(RESETTING);
|
||||||
|
|
||||||
|
if (resetThread)
|
||||||
|
resetThread->deleteLater();
|
||||||
|
|
||||||
|
resetThread = new ResetSettingsThread(this, data);
|
||||||
|
connect(resetThread, SIGNAL(finished()),
|
||||||
|
this, SLOT(resetThreadFinished()), Qt::QueuedConnection);
|
||||||
|
connect(resetThread, SIGNAL(error(QString)), this, SLOT(setError(QString)));
|
||||||
|
|
||||||
|
resetThread->start();
|
||||||
|
}
|
||||||
|
|
||||||
void ConfigureDiveComputer::setState(ConfigureDiveComputer::states newState)
|
void ConfigureDiveComputer::setState(ConfigureDiveComputer::states newState)
|
||||||
{
|
{
|
||||||
currentState = newState;
|
currentState = newState;
|
||||||
|
@ -540,3 +556,12 @@ void ConfigureDiveComputer::writeThreadFinished()
|
||||||
emit message(tr("Setting successfully written to device"));
|
emit message(tr("Setting successfully written to device"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ConfigureDiveComputer::resetThreadFinished()
|
||||||
|
{
|
||||||
|
setState(DONE);
|
||||||
|
if (resetThread->lastError.isEmpty()) {
|
||||||
|
//No error
|
||||||
|
emit message(tr("Device settings successfully resetted"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@ public:
|
||||||
INITIAL,
|
INITIAL,
|
||||||
READING,
|
READING,
|
||||||
WRITING,
|
WRITING,
|
||||||
|
RESETTING,
|
||||||
CANCELLING,
|
CANCELLING,
|
||||||
CANCELLED,
|
CANCELLED,
|
||||||
ERROR,
|
ERROR,
|
||||||
|
@ -35,6 +36,7 @@ public:
|
||||||
bool saveXMLBackup(QString fileName, DeviceDetails *details, device_data_t *data);
|
bool saveXMLBackup(QString fileName, DeviceDetails *details, device_data_t *data);
|
||||||
bool restoreXMLBackup(QString fileName, DeviceDetails *details);
|
bool restoreXMLBackup(QString fileName, DeviceDetails *details);
|
||||||
void startFirmwareUpdate(QString fileName, device_data_t *data);
|
void startFirmwareUpdate(QString fileName, device_data_t *data);
|
||||||
|
void resetSettings(device_data_t *data);
|
||||||
signals:
|
signals:
|
||||||
void message(QString msg);
|
void message(QString msg);
|
||||||
void error(QString err);
|
void error(QString err);
|
||||||
|
@ -46,10 +48,12 @@ signals:
|
||||||
private:
|
private:
|
||||||
ReadSettingsThread *readThread;
|
ReadSettingsThread *readThread;
|
||||||
WriteSettingsThread *writeThread;
|
WriteSettingsThread *writeThread;
|
||||||
|
ResetSettingsThread *resetThread;
|
||||||
void setState(states newState);
|
void setState(states newState);
|
||||||
private slots:
|
private slots:
|
||||||
void readThreadFinished();
|
void readThreadFinished();
|
||||||
void writeThreadFinished();
|
void writeThreadFinished();
|
||||||
|
void resetThreadFinished();
|
||||||
void setError(QString err);
|
void setError(QString err);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -714,3 +714,34 @@ void FirmwareUpdateThread::run()
|
||||||
emit error(lastError);
|
emit error(lastError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ResetSettingsThread::ResetSettingsThread(QObject *parent, device_data_t *data)
|
||||||
|
: QThread(parent), m_data(data)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResetSettingsThread::run()
|
||||||
|
{
|
||||||
|
bool supported = false;
|
||||||
|
dc_status_t rc;
|
||||||
|
rc = dc_device_open(&m_data->device, m_data->context, m_data->descriptor, m_data->devname);
|
||||||
|
if (rc == DC_STATUS_SUCCESS) {
|
||||||
|
#if DC_VERSION_CHECK(0, 5, 0)
|
||||||
|
if (dc_device_get_type(m_data->device) == DC_FAMILY_HW_OSTC3) {
|
||||||
|
supported = true;
|
||||||
|
hw_ostc3_device_config_reset(m_data->device);
|
||||||
|
}
|
||||||
|
#endif // divecomputer 0.5.0
|
||||||
|
dc_device_close(m_data->device);
|
||||||
|
|
||||||
|
if (!supported) {
|
||||||
|
lastError = tr("This feature is not yet available for the selected dive computer.");
|
||||||
|
emit error(lastError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
lastError = tr("Could not a establish connection to the dive computer.");
|
||||||
|
emit error(lastError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -55,4 +55,19 @@ private:
|
||||||
QString m_fileName;
|
QString m_fileName;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class ResetSettingsThread : public QThread
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
ResetSettingsThread(QObject *parent, device_data_t *data);
|
||||||
|
virtual void run();
|
||||||
|
QString lastError;
|
||||||
|
signals:
|
||||||
|
void progress(int percent);
|
||||||
|
void message(QString msg);
|
||||||
|
void error(QString err);
|
||||||
|
private:
|
||||||
|
device_data_t *m_data;
|
||||||
|
};
|
||||||
|
|
||||||
#endif // CONFIGUREDIVECOMPUTERTHREADS_H
|
#endif // CONFIGUREDIVECOMPUTERTHREADS_H
|
||||||
|
|
|
@ -43,6 +43,7 @@ ConfigureDiveComputerDialog::ConfigureDiveComputerDialog(QWidget *parent) :
|
||||||
connect(config, SIGNAL(deviceDetailsChanged(DeviceDetails*)),
|
connect(config, SIGNAL(deviceDetailsChanged(DeviceDetails*)),
|
||||||
this, SLOT(deviceDetailsReceived(DeviceDetails*)));
|
this, SLOT(deviceDetailsReceived(DeviceDetails*)));
|
||||||
connect(ui.retrieveDetails, SIGNAL(clicked()), this, SLOT(readSettings()));
|
connect(ui.retrieveDetails, SIGNAL(clicked()), this, SLOT(readSettings()));
|
||||||
|
connect(ui.resetButton, SIGNAL(clicked()), this, SLOT(resetSettings()));
|
||||||
|
|
||||||
memset(&device_data, 0, sizeof(device_data));
|
memset(&device_data, 0, sizeof(device_data));
|
||||||
fill_computer_list();
|
fill_computer_list();
|
||||||
|
@ -329,6 +330,15 @@ void ConfigureDiveComputerDialog::readSettings()
|
||||||
config->readSettings(&device_data);
|
config->readSettings(&device_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ConfigureDiveComputerDialog::resetSettings()
|
||||||
|
{
|
||||||
|
ui.statusLabel->clear();
|
||||||
|
ui.errorLabel->clear();
|
||||||
|
|
||||||
|
getDeviceData();
|
||||||
|
config->resetSettings(&device_data);
|
||||||
|
}
|
||||||
|
|
||||||
void ConfigureDiveComputerDialog::configMessage(QString msg)
|
void ConfigureDiveComputerDialog::configMessage(QString msg)
|
||||||
{
|
{
|
||||||
ui.statusLabel->setText(msg);
|
ui.statusLabel->setText(msg);
|
||||||
|
|
|
@ -21,6 +21,7 @@ public:
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void readSettings();
|
void readSettings();
|
||||||
|
void resetSettings();
|
||||||
void configMessage(QString msg);
|
void configMessage(QString msg);
|
||||||
void configError(QString err);
|
void configError(QString err);
|
||||||
void on_cancel_clicked();
|
void on_cancel_clicked();
|
||||||
|
|
|
@ -572,6 +572,16 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="10" column="3" colspan="2">
|
||||||
|
<widget class="QPushButton" name="resetButton">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Reset device to default settings</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="advancedSettings">
|
<widget class="QWidget" name="advancedSettings">
|
||||||
|
|
Loading…
Add table
Reference in a new issue