mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Desktop: Add option to force overwrite firmware for OSTC4.
In order to support development of the open source firmware of the OSTC4. Requires changes in libdivecomputer. Signed-off-by: Michael Keller <github@ike.ch>
This commit is contained in:
		
							parent
							
								
									5b263a8f4e
								
							
						
					
					
						commit
						324fbfa685
					
				
					 7 changed files with 47 additions and 33 deletions
				
			
		|  | @ -1,3 +1,4 @@ | |||
| desktop: add option to force firmware update on OSTC4 | ||||
| desktop: add column for dive notes to the dive list table | ||||
| desktop: fix bug when printing a dive plan with multiple segments | ||||
| desktop: fix bug in bailout gas selection for CCR dives | ||||
|  |  | |||
|  | @ -491,13 +491,13 @@ bool ConfigureDiveComputer::restoreXMLBackup(QString fileName, DeviceDetails *de | |||
| 	return true; | ||||
| } | ||||
| 
 | ||||
| void ConfigureDiveComputer::startFirmwareUpdate(QString fileName, device_data_t *data) | ||||
| void ConfigureDiveComputer::startFirmwareUpdate(QString fileName, device_data_t *data, bool forceUpdate) | ||||
| { | ||||
| 	setState(FWUPDATE); | ||||
| 	if (firmwareThread) | ||||
| 		firmwareThread->deleteLater(); | ||||
| 
 | ||||
| 	firmwareThread = new FirmwareUpdateThread(this, data, fileName); | ||||
| 	firmwareThread = new FirmwareUpdateThread(this, data, fileName, forceUpdate); | ||||
| 	connectThreadSignals(firmwareThread); | ||||
| 
 | ||||
| 	firmwareThread->start(); | ||||
|  |  | |||
|  | @ -36,7 +36,7 @@ public: | |||
| 	void fetchDeviceDetails(); | ||||
| 	bool saveXMLBackup(QString fileName, DeviceDetails *details, device_data_t *data); | ||||
| 	bool restoreXMLBackup(QString fileName, DeviceDetails *details); | ||||
| 	void startFirmwareUpdate(QString fileName, device_data_t *data); | ||||
| 	void startFirmwareUpdate(QString fileName, device_data_t *data, bool forceUpdate); | ||||
| 	void resetSettings(device_data_t *data); | ||||
| 
 | ||||
| 	QString dc_open(device_data_t *data); | ||||
|  |  | |||
|  | @ -2203,7 +2203,7 @@ void WriteSettingsThread::run() | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| FirmwareUpdateThread::FirmwareUpdateThread(QObject *parent, device_data_t *data, QString fileName) : DeviceThread(parent, data), m_fileName(fileName) | ||||
| FirmwareUpdateThread::FirmwareUpdateThread(QObject *parent, device_data_t *data, QString fileName, bool forceUpdate) : DeviceThread(parent, data), m_fileName(fileName), m_forceUpdate(forceUpdate) | ||||
| { | ||||
| } | ||||
| 
 | ||||
|  | @ -2218,7 +2218,7 @@ void FirmwareUpdateThread::run() | |||
| 	} | ||||
| 	switch (dc_device_get_type(m_data->device)) { | ||||
| 	case DC_FAMILY_HW_OSTC3: | ||||
| 		rc = hw_ostc3_device_fwupdate(m_data->device, qPrintable(m_fileName)); | ||||
| 		rc = hw_ostc3_device_fwupdate(m_data->device, qPrintable(m_fileName), m_forceUpdate); | ||||
| 		break; | ||||
| 	case DC_FAMILY_HW_OSTC: | ||||
| 		rc = hw_ostc_device_fwupdate(m_data->device, qPrintable(m_fileName)); | ||||
|  |  | |||
|  | @ -44,11 +44,12 @@ private: | |||
| class FirmwareUpdateThread : public DeviceThread { | ||||
| 	Q_OBJECT | ||||
| public: | ||||
| 	FirmwareUpdateThread(QObject *parent, device_data_t *data, QString fileName); | ||||
| 	FirmwareUpdateThread(QObject *parent, device_data_t *data, QString fileName, bool forceUpdate); | ||||
| 	void run(); | ||||
| 
 | ||||
| private: | ||||
| 	QString m_fileName; | ||||
| 	bool m_forceUpdate; | ||||
| }; | ||||
| 
 | ||||
| class ResetSettingsThread : public DeviceThread { | ||||
|  |  | |||
|  | @ -346,7 +346,7 @@ void OstcFirmwareCheck::saveOstcFirmware(QNetworkReply *reply) | |||
| 	connect(config, &ConfigureDiveComputer::error, dialog, &QProgressDialog::setLabelText); | ||||
| 	connect(config, &ConfigureDiveComputer::progress, dialog, &QProgressDialog::setValue); | ||||
| 	config->dc_open(&devData); | ||||
| 	config->startFirmwareUpdate(storeFirmware, &devData); | ||||
| 	config->startFirmwareUpdate(storeFirmware, &devData, false); | ||||
| } | ||||
| 
 | ||||
| ConfigureDiveComputerDialog::~ConfigureDiveComputerDialog() | ||||
|  | @ -869,6 +869,7 @@ void ConfigureDiveComputerDialog::readSettings() | |||
| 	ui.progressBar->setTextVisible(true); | ||||
| 	// Fw update is no longer a option, needs to be done on a untouched device
 | ||||
| 	ui.updateFirmwareButton->setEnabled(false); | ||||
| 	ui.forceUpdateFirmware->setEnabled(false); | ||||
| 
 | ||||
| 	config->readSettings(&device_data); | ||||
| } | ||||
|  | @ -1387,6 +1388,7 @@ void ConfigureDiveComputerDialog::on_restoreBackupButton_clicked() | |||
| 	if (!restorePath.isEmpty()) { | ||||
| 		// Fw update is no longer a option, needs to be done on a untouched device
 | ||||
| 		ui.updateFirmwareButton->setEnabled(false); | ||||
| 		ui.forceUpdateFirmware->setEnabled(false); | ||||
| 		if (!config->restoreXMLBackup(restorePath, deviceDetails)) { | ||||
| 			QMessageBox::critical(this, tr("XML restore error"), | ||||
| 					      tr("An error occurred while restoring the backup file.\n%1") | ||||
|  | @ -1411,7 +1413,7 @@ void ConfigureDiveComputerDialog::on_updateFirmwareButton_clicked() | |||
| 		ui.progressBar->setFormat("%p%"); | ||||
| 		ui.progressBar->setTextVisible(true); | ||||
| 
 | ||||
| 		config->startFirmwareUpdate(firmwarePath, &device_data); | ||||
| 		config->startFirmwareUpdate(firmwarePath, &device_data, ui.forceUpdateFirmware->isChecked()); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -1503,7 +1505,6 @@ void ConfigureDiveComputerDialog::dc_open() | |||
| 	ui.retrieveDetails->setEnabled(true); | ||||
| 	ui.resetButton->setEnabled(true); | ||||
| 	ui.resetButton_4->setEnabled(true); | ||||
| 	ui.updateFirmwareButton->setEnabled(true); | ||||
| 	ui.disconnectButton->setEnabled(true); | ||||
| 	ui.restoreBackupButton->setEnabled(true); | ||||
| 	ui.connectButton->setEnabled(false); | ||||
|  | @ -1511,6 +1512,7 @@ void ConfigureDiveComputerDialog::dc_open() | |||
| 	ui.DiveComputerList->setEnabled(false); | ||||
| 	ui.logToFile->setEnabled(false); | ||||
| 	ui.updateFirmwareButton->setEnabled(fw_upgrade_possible); | ||||
| 	ui.forceUpdateFirmware->setEnabled(selected_product == "OSTC 4"); | ||||
| 	ui.progressBar->setFormat(tr("Connected to device")); | ||||
| } | ||||
| 
 | ||||
|  | @ -1521,7 +1523,6 @@ void ConfigureDiveComputerDialog::dc_close() | |||
| 	ui.retrieveDetails->setEnabled(false); | ||||
| 	ui.resetButton->setEnabled(false); | ||||
| 	ui.resetButton_4->setEnabled(false); | ||||
| 	ui.updateFirmwareButton->setEnabled(false); | ||||
| 	ui.disconnectButton->setEnabled(false); | ||||
| 	ui.connectButton->setEnabled(true); | ||||
| 	ui.bluetoothMode->setEnabled(true); | ||||
|  | @ -1531,6 +1532,7 @@ void ConfigureDiveComputerDialog::dc_close() | |||
| 	ui.DiveComputerList->setEnabled(true); | ||||
| 	ui.logToFile->setEnabled(true); | ||||
| 	ui.updateFirmwareButton->setEnabled(false); | ||||
| 	ui.forceUpdateFirmware->setEnabled(false); | ||||
| 	ui.progressBar->setFormat(tr("Disconnected from device")); | ||||
| 	ui.progressBar->setValue(0); | ||||
| } | ||||
|  |  | |||
|  | @ -71,6 +71,29 @@ | |||
|    </item> | ||||
|    <item> | ||||
|     <layout class="QHBoxLayout" name="horizontalLayout_2"> | ||||
|      <item> | ||||
|       <widget class="QPushButton" name="updateFirmwareButton"> | ||||
|        <property name="enabled"> | ||||
|         <bool>false</bool> | ||||
|        </property> | ||||
|        <property name="text"> | ||||
|         <string>Update firmware</string> | ||||
|        </property> | ||||
|       </widget> | ||||
|      </item> | ||||
|      <item> | ||||
|       <spacer> | ||||
|        <property name="orientation"> | ||||
|         <enum>Qt::Horizontal</enum> | ||||
|        </property> | ||||
|        <property name="sizeHint" stdset="0"> | ||||
|         <size> | ||||
|          <width>40</width> | ||||
|          <height>20</height> | ||||
|         </size> | ||||
|        </property> | ||||
|       </spacer> | ||||
|      </item> | ||||
|      <item> | ||||
|       <widget class="QPushButton" name="retrieveDetails"> | ||||
|        <property name="enabled"> | ||||
|  | @ -94,19 +117,6 @@ | |||
|        </property> | ||||
|       </widget> | ||||
|      </item> | ||||
|      <item> | ||||
|       <spacer> | ||||
|        <property name="orientation"> | ||||
|         <enum>Qt::Horizontal</enum> | ||||
|        </property> | ||||
|        <property name="sizeHint" stdset="0"> | ||||
|         <size> | ||||
|          <width>40</width> | ||||
|          <height>20</height> | ||||
|         </size> | ||||
|        </property> | ||||
|       </spacer> | ||||
|      </item> | ||||
|      <item> | ||||
|       <widget class="QPushButton" name="backupButton"> | ||||
|        <property name="enabled"> | ||||
|  | @ -130,20 +140,20 @@ | |||
|        </property> | ||||
|       </widget> | ||||
|      </item> | ||||
|      <item> | ||||
|       <widget class="QPushButton" name="updateFirmwareButton"> | ||||
|        <property name="enabled"> | ||||
|         <bool>false</bool> | ||||
|        </property> | ||||
|        <property name="text"> | ||||
|         <string>Update firmware</string> | ||||
|        </property> | ||||
|       </widget> | ||||
|      </item> | ||||
|     </layout> | ||||
|    </item> | ||||
|    <item> | ||||
|     <layout class="QHBoxLayout" name="horizontalLayout_3"> | ||||
|      <item> | ||||
|       <widget class="QCheckBox" name="forceUpdateFirmware"> | ||||
|        <property name="enabled"> | ||||
|         <bool>false</bool> | ||||
|        </property> | ||||
|        <property name="text"> | ||||
|         <string>Force reinstall firmware</string> | ||||
|        </property> | ||||
|       </widget> | ||||
|      </item> | ||||
|      <item> | ||||
|       <spacer> | ||||
|        <property name="orientation"> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue