From 09ec8a44e5c48b6b6a2e4ebb1253fd3cd94154ae Mon Sep 17 00:00:00 2001 From: "Joseph W. Joshua" Date: Wed, 11 Jun 2014 11:09:01 +0300 Subject: Add Support for more OSTC 3 Settings Adds support for more OSTC 3 Settings to the reading, writing, backup and restore functions. These settings are: last deco, units, sampling rate, salinity, dive mode colour and compass gain. Signed-off-by: Joseph W. Joshua Signed-off-by: Thiago Macieira --- qt-ui/configuredivecomputer.cpp | 24 ++ qt-ui/configuredivecomputerdialog.cpp | 14 +- qt-ui/configuredivecomputerdialog.ui | 259 ++++++++++++++++++---- qt-ui/configuredivecomputerthreads.cpp | 61 ++++++ qt-ui/devicedetails.cpp | 389 +++++++++++++++++++++++++++++++++ qt-ui/devicedetails.h | 148 ++++++++++++- 6 files changed, 851 insertions(+), 44 deletions(-) (limited to 'qt-ui') diff --git a/qt-ui/configuredivecomputer.cpp b/qt-ui/configuredivecomputer.cpp index 72f2427d4..c88534e9f 100644 --- a/qt-ui/configuredivecomputer.cpp +++ b/qt-ui/configuredivecomputer.cpp @@ -61,9 +61,15 @@ bool ConfigureDiveComputer::saveXMLBackup(QString fileName, DeviceDetails *detai xml += "\n"; xml += "\n"; xml += addSettingToXML("CustomText", details->customText()); + xml += addSettingToXML("LastDeco", details->lastDeco()); xml += addSettingToXML("Brightness", details->brightness()); + xml += addSettingToXML("Units", details->units()); + xml += addSettingToXML("SamplingRate", details->samplingRate()); + xml += addSettingToXML("Salinity", details->salinity()); + xml += addSettingToXML("DiveModeColor", details->diveModeColor()); xml += addSettingToXML("Language", details->language()); xml += addSettingToXML("DateFormat", details->dateFormat()); + xml += addSettingToXML("CompassGain", details->compassGain()); xml += "\n"; xml += "\n"; QFile file(fileName); @@ -120,14 +126,32 @@ bool ConfigureDiveComputer::restoreXMLBackup(QString fileName, DeviceDetails *de if (settingName == "CustomText") details->setCustomText(keyString); + if (settingName == "LastDeco") + details->setLastDeco(keyString.toInt()); + if (settingName == "Brightness") details->setBrightness(keyString.toInt()); + if (settingName == "Units") + details->setUnits(keyString.toInt()); + + if (settingName == "SamplingRate") + details->setSamplingRate(keyString.toInt()); + + if (settingName == "Salinity") + details->setSalinity(keyString.toInt()); + + if (settingName == "DiveModeColour") + details->setDiveModeColor(keyString.toInt()); + if (settingName == "Language") details->setLanguage(keyString.toInt()); if (settingName == "DateFormat") details->setDateFormat(keyString.toInt()); + + if (settingName == "CompassGain") + details->setCompassGain(keyString.toInt()); } settingNode = settingNode->next; diff --git a/qt-ui/configuredivecomputerdialog.cpp b/qt-ui/configuredivecomputerdialog.cpp index 2f8771ed7..c50306f1a 100644 --- a/qt-ui/configuredivecomputerdialog.cpp +++ b/qt-ui/configuredivecomputerdialog.cpp @@ -127,10 +127,16 @@ void ConfigureDiveComputerDialog::fill_device_list(int dc_type) void ConfigureDiveComputerDialog::populateDeviceDetails() { + deviceDetails->setCustomText(ui->customTextLlineEdit->text()); + deviceDetails->setLastDeco(ui->lastDecoSpinBox->value()); deviceDetails->setBrightness(ui->brightnessComboBox->currentIndex()); + deviceDetails->setUnits(ui->unitsComboBox->currentIndex()); + deviceDetails->setSamplingRate(ui->samplingRateComboBox->currentIndex()); + deviceDetails->setSalinity(ui->salinitySpinBox->value()); + deviceDetails->setDiveModeColor(ui->diveModeColour->currentIndex()); deviceDetails->setLanguage(ui->languageComboBox->currentIndex()); deviceDetails->setDateFormat(ui->dateFormatComboBox->currentIndex()); - deviceDetails->setCustomText(ui->customTextLlineEdit->text()); + deviceDetails->setCompassGain(ui->compassGainComboBox->currentIndex()); deviceDetails->setSyncTime(ui->dateTimeSyncCheckBox->isChecked()); } @@ -224,9 +230,15 @@ void ConfigureDiveComputerDialog::reloadValues() ui->serialNoLineEdit->setText(deviceDetails->serialNo()); ui->firmwareVersionLineEdit->setText(deviceDetails->firmwareVersion()); ui->customTextLlineEdit->setText(deviceDetails->customText()); + ui->lastDecoSpinBox->setValue(deviceDetails->lastDeco()); ui->brightnessComboBox->setCurrentIndex(deviceDetails->brightness()); + ui->unitsComboBox->setCurrentIndex(deviceDetails->units()); + ui->samplingRateComboBox->setCurrentIndex(deviceDetails->samplingRate()); + ui->salinitySpinBox->setValue(deviceDetails->salinity()); + ui->diveModeColour->setCurrentIndex(deviceDetails->diveModeColor()); ui->languageComboBox->setCurrentIndex(deviceDetails->language()); ui->dateFormatComboBox->setCurrentIndex(deviceDetails->dateFormat()); + ui->compassGainComboBox->setCurrentIndex(deviceDetails->compassGain()); } diff --git a/qt-ui/configuredivecomputerdialog.ui b/qt-ui/configuredivecomputerdialog.ui index 4fb731a3c..e117db644 100644 --- a/qt-ui/configuredivecomputerdialog.ui +++ b/qt-ui/configuredivecomputerdialog.ui @@ -6,8 +6,8 @@ 0 0 - 472 - 472 + 629 + 496 @@ -76,6 +76,13 @@ + + + + Save Chages to Device + + + @@ -107,24 +114,55 @@ - + + + + Custom Text: + + + + + + + Sampling Rate: + + + + Brightness: - - + + - Serial No. + Salinity (0-5%): - - + + - Custom Text: + Sync dive computer time with PC + + + + + + + % + + + 5 + + + + + + + m @@ -135,17 +173,42 @@ - + + + + Last Deco: + + + + + + + Serial No. + + + + Language: - - + + + + + m/°C + + + + + ft/°F + + + - + @@ -164,14 +227,26 @@ - - - - Firmware Version: - + + + + + MMDDYY + + + + + DDMMYY + + + + + YYMMDD + + - + @@ -195,44 +270,144 @@ - + + + + true + + + + Date Format: + + + + Firmware Version: + + + + + + + + 1 + 0 + + + + + + + + Units: + + + - + - MMDDYY + 2s - DDMMYY + 10s + + + + + + Dive Mode Colour: + + + + + - YYMMDD + Standard + + + + + Red + + + + + Green + + + + + Blue - - - - true + + + + Compass Gain: - - - - Sync dive computer time with PC + + + + + 1 + 0 + + + + 230LSB/Gauss + + + + + 330LSB/Gauss + + + + + 390LSB/Gauss + + + + + 440LSB/Gauss + + + + + 660LSB/Gauss + + + + + 820LSB/Gauss + + + + + 1090LSB/Gauss + + + + + 1370LSB/Gauss + + @@ -269,13 +444,6 @@ - - - - Save Chages to Device - - - @@ -306,12 +474,21 @@ device search retrieveDetails + backupButton + restoreBackupButton serialNoLineEdit firmwareVersionLineEdit customTextLlineEdit - brightnessComboBox languageComboBox - saveSettingsPushButton + lastDecoSpinBox + brightnessComboBox + dateFormatComboBox + unitsComboBox + samplingRateComboBox + salinitySpinBox + diveModeColour + compassGainComboBox + dateTimeSyncCheckBox cancel diff --git a/qt-ui/configuredivecomputerthreads.cpp b/qt-ui/configuredivecomputerthreads.cpp index bddced474..369640459 100644 --- a/qt-ui/configuredivecomputerthreads.cpp +++ b/qt-ui/configuredivecomputerthreads.cpp @@ -27,18 +27,47 @@ void ReadSettingsThread::run() m_deviceDetails->setLanguage(0); m_deviceDetails->setLastDeco(0); m_deviceDetails->setSerialNo(""); + m_deviceDetails->setCompassGain(0); + m_deviceDetails->setSalinity(0); + m_deviceDetails->setSamplingRate(0); + m_deviceDetails->setUnits(0); + //Read general settings unsigned char uData[1] = {0}; + //LastDeco + rc = hw_ostc3_device_config_read(m_data->device, 0x2D, uData, sizeof(uData)); + if (rc == DC_STATUS_SUCCESS) + m_deviceDetails->setLastDeco(uData[0]); + //Brightness rc = hw_ostc3_device_config_read(m_data->device, 0x2D, uData, sizeof(uData)); if (rc == DC_STATUS_SUCCESS) m_deviceDetails->setBrightness(uData[0]); + //Units + rc = hw_ostc3_device_config_read(m_data->device, 0x2E, uData, sizeof(uData)); + if (rc == DC_STATUS_SUCCESS) + m_deviceDetails->setUnits(uData[0]); + //Sampling Rate + rc = hw_ostc3_device_config_read(m_data->device, 0x2F, uData, sizeof(uData)); + if (rc == DC_STATUS_SUCCESS) + m_deviceDetails->setSamplingRate(uData[0]); + //Salinity + rc = hw_ostc3_device_config_read(m_data->device, 0x30, uData, sizeof(uData)); + if (rc == DC_STATUS_SUCCESS) + m_deviceDetails->setSalinity(uData[0]); + //Dive mode colour + rc = hw_ostc3_device_config_read(m_data->device, 0x31, uData, sizeof(uData)); + if (rc == DC_STATUS_SUCCESS) + m_deviceDetails->setDiveModeColor(uData[0]); + //Language rc = hw_ostc3_device_config_read(m_data->device, 0x32, uData, sizeof(uData)); if (rc == DC_STATUS_SUCCESS) m_deviceDetails->setLanguage(uData[0]); + //Date Format rc = hw_ostc3_device_config_read(m_data->device, 0x33, uData, sizeof(uData)); if (rc == DC_STATUS_SUCCESS) m_deviceDetails->setDateFormat(uData[0]); + //read firmware settings unsigned char fData[64] = {0}; rc = hw_ostc3_device_version (m_data->device, fData, sizeof (fData)); @@ -88,15 +117,47 @@ void WriteSettingsThread::run() case DC_FAMILY_HW_OSTC3: supported = true; //write general settings + + //custom text hw_ostc3_device_customtext(m_data->device, m_deviceDetails->customText().toUtf8().data()); unsigned char data[1] = {0}; + + //last deco + data[0] = m_deviceDetails->lastDeco(); + hw_ostc3_device_config_write(m_data->device, 0x2C, data, sizeof(data)); + + //brightness data[0] = m_deviceDetails->brightness(); hw_ostc3_device_config_write(m_data->device, 0x2D, data, sizeof(data)); + + //units + data[0] = m_deviceDetails->units(); + hw_ostc3_device_config_write(m_data->device, 0x2E, data, sizeof(data)); + + //sampling rate + data[0] = m_deviceDetails->samplingRate(); + hw_ostc3_device_config_write(m_data->device, 0x2F, data, sizeof(data)); + + //salinity + data[0] = m_deviceDetails->salinity(); + hw_ostc3_device_config_write(m_data->device, 0x30, data, sizeof(data)); + + //dive mode colour + data[0] = m_deviceDetails->diveModeColor(); + hw_ostc3_device_config_write(m_data->device, 0x31, data, sizeof(data)); + + //language data[0] = m_deviceDetails->language(); hw_ostc3_device_config_write(m_data->device, 0x32, data, sizeof(data)); + + //date format data[0] = m_deviceDetails->dateFormat(); hw_ostc3_device_config_write(m_data->device, 0x33, data, sizeof(data)); + //compass gain + data[0] = m_deviceDetails->compassGain(); + hw_ostc3_device_config_write(m_data->device, 0x34, data, sizeof(data)); + //sync date and time if (m_deviceDetails->syncTime()) { QDateTime timeToSet = QDateTime::currentDateTime(); diff --git a/qt-ui/devicedetails.cpp b/qt-ui/devicedetails.cpp index 7d6212f18..db95cfd41 100644 --- a/qt-ui/devicedetails.cpp +++ b/qt-ui/devicedetails.cpp @@ -5,6 +5,7 @@ DeviceDetails::DeviceDetails(QObject *parent) : { } + device_data_t *DeviceDetails::data() const { return m_data; @@ -14,6 +15,7 @@ void DeviceDetails::setData(device_data_t *data) { m_data = data; } + QString DeviceDetails::serialNo() const { return m_serialNo; @@ -23,6 +25,7 @@ void DeviceDetails::setSerialNo(const QString &serialNo) { m_serialNo = serialNo; } + QString DeviceDetails::firmwareVersion() const { return m_firmwareVersion; @@ -32,6 +35,7 @@ void DeviceDetails::setFirmwareVersion(const QString &firmwareVersion) { m_firmwareVersion = firmwareVersion; } + QString DeviceDetails::customText() const { return m_customText; @@ -41,6 +45,7 @@ void DeviceDetails::setCustomText(const QString &customText) { m_customText = customText; } + int DeviceDetails::brightness() const { return m_brightness; @@ -50,6 +55,7 @@ void DeviceDetails::setBrightness(int brightness) { m_brightness = brightness; } + int DeviceDetails::diveModeColor() const { return m_diveModeColor; @@ -59,6 +65,7 @@ void DeviceDetails::setDiveModeColor(int diveModeColor) { m_diveModeColor = diveModeColor; } + int DeviceDetails::language() const { return m_language; @@ -68,6 +75,7 @@ void DeviceDetails::setLanguage(int language) { m_language = language; } + int DeviceDetails::dateFormat() const { return m_dateFormat; @@ -77,6 +85,7 @@ void DeviceDetails::setDateFormat(int dateFormat) { m_dateFormat = dateFormat; } + int DeviceDetails::lastDeco() const { return m_lastDeco; @@ -86,6 +95,7 @@ void DeviceDetails::setLastDeco(int lastDeco) { m_lastDeco = lastDeco; } + bool DeviceDetails::syncTime() const { return m_syncTime; @@ -95,4 +105,383 @@ void DeviceDetails::setSyncTime(bool syncTime) { m_syncTime = syncTime; } + +gas DeviceDetails::gas1() const +{ + return m_gas1; +} + +void DeviceDetails::setGas1(const gas &gas1) +{ + m_gas1 = gas1; +} + +gas DeviceDetails::gas2() const +{ + return m_gas2; +} + +void DeviceDetails::setGas2(const gas &gas2) +{ + m_gas2 = gas2; +} + +gas DeviceDetails::gas3() const +{ + return m_gas3; +} + +void DeviceDetails::setGas3(const gas &gas3) +{ + m_gas3 = gas3; +} + +gas DeviceDetails::gas4() const +{ + return m_gas4; +} + +void DeviceDetails::setGas4(const gas &gas4) +{ + m_gas4 = gas4; +} + +gas DeviceDetails::gas5() const +{ + return m_gas5; +} + +void DeviceDetails::setGas5(const gas &gas5) +{ + m_gas5 = gas5; +} + +gas DeviceDetails::dil1() const +{ + return m_dil1; +} + +void DeviceDetails::setDil1(const gas &dil1) +{ + m_dil1 = dil1; +} + +gas DeviceDetails::dil2() const +{ + return m_dil2; +} + +void DeviceDetails::setDil2(const gas &dil2) +{ + m_dil2 = dil2; +} + +gas DeviceDetails::dil3() const +{ + return m_dil3; +} + +void DeviceDetails::setDil3(const gas &dil3) +{ + m_dil3 = dil3; +} + +gas DeviceDetails::dil4() const +{ + return m_dil4; +} + +void DeviceDetails::setDil4(const gas &dil4) +{ + m_dil4 = dil4; +} + +gas DeviceDetails::dil5() const +{ + return m_dil5; +} + +void DeviceDetails::setDil5(const gas &dil5) +{ + m_dil5 = dil5; +} + +setpoint DeviceDetails::sp1() const +{ + return m_sp1; +} + +void DeviceDetails::setSp1(const setpoint &sp1) +{ + m_sp1 = sp1; +} + +setpoint DeviceDetails::sp2() const +{ + return m_sp2; +} + +void DeviceDetails::setSp2(const setpoint &sp2) +{ + m_sp2 = sp2; +} + +setpoint DeviceDetails::sp3() const +{ + return m_sp3; +} + +void DeviceDetails::setSp3(const setpoint &sp3) +{ + m_sp3 = sp3; +} + +setpoint DeviceDetails::sp4() const +{ + return m_sp4; +} + +void DeviceDetails::setSp4(const setpoint &sp4) +{ + m_sp4 = sp4; +} + +setpoint DeviceDetails::sp5() const +{ + return m_sp5; +} + +void DeviceDetails::setSp5(const setpoint &sp5) +{ + m_sp5 = sp5; +} + +int DeviceDetails::ccrMode() const +{ + return m_ccrMode; +} + +void DeviceDetails::setCcrMode(int ccrMode) +{ + m_ccrMode = ccrMode; +} + +int DeviceDetails::diveMode() const +{ + return m_diveMode; +} + +void DeviceDetails::setDiveMode(int diveMode) +{ + m_diveMode = diveMode; +} + +int DeviceDetails::decoType() const +{ + return m_decoType; +} + +void DeviceDetails::setDecoType(int decoType) +{ + m_decoType = decoType; +} + +int DeviceDetails::pp02Max() const +{ + return m_pp02Max; +} + +void DeviceDetails::setPp02Max(int pp02Max) +{ + m_pp02Max = pp02Max; +} + +int DeviceDetails::pp02Min() const +{ + return m_pp02Min; +} + +void DeviceDetails::setPp02Min(int pp02Min) +{ + m_pp02Min = pp02Min; +} + +int DeviceDetails::futureTTS() const +{ + return m_futureTTS; +} + +void DeviceDetails::setFutureTTS(int futureTTS) +{ + m_futureTTS = futureTTS; +} + +int DeviceDetails::gfLow() const +{ + return m_gfLow; +} + +void DeviceDetails::setGfLow(int gfLow) +{ + m_gfLow = gfLow; +} + +int DeviceDetails::gfHigh() const +{ + return m_gfHigh; +} + +void DeviceDetails::setGfHigh(int gfHigh) +{ + m_gfHigh = gfHigh; +} + +int DeviceDetails::aGFLow() const +{ + return m_aGFLow; +} + +void DeviceDetails::setAGFLow(int aGFLow) +{ + m_aGFLow = aGFLow; +} + +int DeviceDetails::aGFHigh() const +{ + return m_aGFHigh; +} + +void DeviceDetails::setAGFHigh(int aGFHigh) +{ + m_aGFHigh = aGFHigh; +} + +int DeviceDetails::aGFSelectable() const +{ + return m_aGFSelectable; +} + +void DeviceDetails::setAGFSelectable(int aGFSelectable) +{ + m_aGFSelectable = aGFSelectable; +} + +int DeviceDetails::saturation() const +{ + return m_saturation; +} + +void DeviceDetails::setSaturation(int saturation) +{ + m_saturation = saturation; +} + +int DeviceDetails::desaturation() const +{ + return m_desaturation; +} + +void DeviceDetails::setDesaturation(int desaturation) +{ + m_desaturation = desaturation; +} + +int DeviceDetails::units() const +{ + return m_units; +} + +void DeviceDetails::setUnits(int units) +{ + m_units = units; +} + +int DeviceDetails::samplingRate() const +{ + return m_samplingRate; +} + +void DeviceDetails::setSamplingRate(int samplingRate) +{ + m_samplingRate = samplingRate; +} + +int DeviceDetails::salinity() const +{ + return m_salinity; +} + +void DeviceDetails::setSalinity(int salinity) +{ + m_salinity = salinity; +} + +int DeviceDetails::compassGain() const +{ + return m_compassGain; +} + +void DeviceDetails::setCompassGain(int compassGain) +{ + m_compassGain = compassGain; +} + +int DeviceDetails::pressureSensorOffset() const +{ + return m_pressureSensorOffset; +} + +void DeviceDetails::setPressureSensorOffset(int pressureSensorOffset) +{ + m_pressureSensorOffset = pressureSensorOffset; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qt-ui/devicedetails.h b/qt-ui/devicedetails.h index a0d0f18c2..d754e9774 100644 --- a/qt-ui/devicedetails.h +++ b/qt-ui/devicedetails.h @@ -5,6 +5,18 @@ #include #include "libdivecomputer.h" +struct gas { + int oxygen; + int helium; + int type; + int depth; +}; + +struct setpoint { + int sp; + int depth; +}; + class DeviceDetails : public QObject { Q_OBJECT @@ -41,17 +53,149 @@ public: bool syncTime() const; void setSyncTime(bool syncTime); + gas gas1() const; + void setGas1(const gas &gas1); + + gas gas2() const; + void setGas2(const gas &gas2); + + gas gas3() const; + void setGas3(const gas &gas3); + + gas gas4() const; + void setGas4(const gas &gas4); + + gas gas5() const; + void setGas5(const gas &gas5); + + gas dil1() const; + void setDil1(const gas &dil1); + + gas dil2() const; + void setDil2(const gas &dil2); + + gas dil3() const; + void setDil3(const gas &dil3); + + gas dil4() const; + void setDil4(const gas &dil4); + + gas dil5() const; + void setDil5(const gas &dil5); + + setpoint sp1() const; + void setSp1(const setpoint &sp1); + + setpoint sp2() const; + void setSp2(const setpoint &sp2); + + setpoint sp3() const; + void setSp3(const setpoint &sp3); + + setpoint sp4() const; + void setSp4(const setpoint &sp4); + + setpoint sp5() const; + void setSp5(const setpoint &sp5); + + int ccrMode() const; + void setCcrMode(int ccrMode); + + int diveMode() const; + void setDiveMode(int diveMode); + + int decoType() const; + void setDecoType(int decoType); + + int pp02Max() const; + void setPp02Max(int pp02Max); + + int pp02Min() const; + void setPp02Min(int pp02Min); + + int futureTTS() const; + void setFutureTTS(int futureTTS); + + int gfLow() const; + void setGfLow(int gfLow); + + int gfHigh() const; + void setGfHigh(int gfHigh); + + int aGFLow() const; + void setAGFLow(int aGFLow); + + int aGFHigh() const; + void setAGFHigh(int aGFHigh); + + int aGFSelectable() const; + void setAGFSelectable(int aGFSelectable); + + int saturation() const; + void setSaturation(int saturation); + + int desaturation() const; + void setDesaturation(int desaturation); + + int units() const; + void setUnits(int units); + + int samplingRate() const; + void setSamplingRate(int samplingRate); + + int salinity() const; + void setSalinity(int salinity); + + int compassGain() const; + void setCompassGain(int compassGain); + + int pressureSensorOffset() const; + void setPressureSensorOffset(int pressureSensorOffset); + private: device_data_t *m_data; QString m_serialNo; QString m_firmwareVersion; QString m_customText; + bool m_syncTime; + gas m_gas1; + gas m_gas2; + gas m_gas3; + gas m_gas4; + gas m_gas5; + gas m_dil1; + gas m_dil2; + gas m_dil3; + gas m_dil4; + gas m_dil5; + setpoint m_sp1; + setpoint m_sp2; + setpoint m_sp3; + setpoint m_sp4; + setpoint m_sp5; + int m_ccrMode; + int m_diveMode; + int m_decoType; + int m_pp02Max; + int m_pp02Min; + int m_futureTTS; + int m_gfLow; + int m_gfHigh; + int m_aGFLow; + int m_aGFHigh; + int m_aGFSelectable; + int m_saturation; + int m_desaturation; + int m_lastDeco; int m_brightness; + int m_units; + int m_samplingRate; + int m_salinity; int m_diveModeColor; int m_language; int m_dateFormat; - int m_lastDeco; - bool m_syncTime; + int m_compassGain; + int m_pressureSensorOffset; }; -- cgit v1.2.3-70-g09d2