mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
CURA-2079: Finish firmware upload process on errors
Looking at the old code shows that the download process was never completely finished. The according function was only return'ed, but no signal was emitted to the window to give the user the possibility to close it again. Optionally, it would be useful here to pass messages to the window dialog to inform the user about problems. However, this code is untested because: 1. I don't know where put my printers *.hex-file, when coding here with my editor, 2. Have no idea how to reproduce the IO errors reported at JIRA, so fingers crossed here. Contributes to CURA-2079
This commit is contained in:
parent
957f60eb11
commit
f915092f83
2 changed files with 17 additions and 9 deletions
|
@ -182,6 +182,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
|
|||
|
||||
if len(hex_file) == 0:
|
||||
Logger.log("e", "Unable to read provided hex file. Could not update firmware")
|
||||
self._updateFirmware_completed()
|
||||
return
|
||||
|
||||
programmer = stk500v2.Stk500v2()
|
||||
|
@ -197,6 +198,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
|
|||
|
||||
if not programmer.isConnected():
|
||||
Logger.log("e", "Unable to connect with serial. Could not update firmware")
|
||||
self._updateFirmware_completed()
|
||||
return
|
||||
|
||||
self._updating_firmware = True
|
||||
|
@ -206,15 +208,21 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
|
|||
self._updating_firmware = False
|
||||
except Exception as e:
|
||||
Logger.log("e", "Exception while trying to update firmware %s" %e)
|
||||
self._updating_firmware = False
|
||||
self._updateFirmware_completed()
|
||||
return
|
||||
programmer.close()
|
||||
|
||||
self._updateFirmware_completed()
|
||||
return
|
||||
|
||||
## Private function which makes sure that firmware update process has completed/ended
|
||||
def _updateFirmware_completed(self):
|
||||
self.setProgress(100, 100)
|
||||
self._firmware_update_finished = True
|
||||
|
||||
self.resetFirmwareUpdate(update_has_finished=True)
|
||||
self.firmwareUpdateComplete.emit()
|
||||
self.firmwareUpdateChange.emit()
|
||||
|
||||
return
|
||||
|
||||
## Upload new firmware to machine
|
||||
# \param filename full path of firmware file to be uploaded
|
||||
|
@ -227,8 +235,8 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
|
|||
def firmwareUpdateFinished(self):
|
||||
return self._firmware_update_finished
|
||||
|
||||
def resetFirmwareUpdateFinished(self):
|
||||
self._firmware_update_finished = False
|
||||
def resetFirmwareUpdate(self, update_has_finished = False):
|
||||
self._firmware_update_finished = update_has_finished
|
||||
self.firmwareUpdateChange.emit()
|
||||
|
||||
@pyqtSlot()
|
||||
|
|
|
@ -103,7 +103,7 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin, Extension):
|
|||
return
|
||||
|
||||
for printer_connection in self._usb_output_devices:
|
||||
self._usb_output_devices[printer_connection].resetFirmwareUpdateFinished()
|
||||
self._usb_output_devices[printer_connection].resetFirmwareUpdate()
|
||||
self.spawnFirmwareInterface("")
|
||||
for printer_connection in self._usb_output_devices:
|
||||
try:
|
||||
|
@ -111,7 +111,7 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin, Extension):
|
|||
except FileNotFoundError:
|
||||
# Should only happen in dev environments where the resources/firmware folder is absent.
|
||||
self._usb_output_devices[printer_connection].setProgress(100, 100)
|
||||
Logger.log("w", "No firmware found for printer %s", printer_connection)
|
||||
Logger.log("w", "No firmware found for printer %s called '%s'" %(printer_connection, self._getDefaultFirmwareName()))
|
||||
Message(i18n_catalog.i18nc("@info",
|
||||
"Could not find firmware required for the printer at %s.") % printer_connection).show()
|
||||
self._firmware_view.close()
|
||||
|
@ -126,7 +126,7 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin, Extension):
|
|||
self._usb_output_devices[serial_port].updateFirmware(Resources.getPath(CuraApplication.ResourceTypes.Firmware, self._getDefaultFirmwareName()))
|
||||
except FileNotFoundError:
|
||||
self._firmware_view.close()
|
||||
Logger.log("e", "Could not find firmware required for this machine")
|
||||
Logger.log("e", "Could not find firmware required for this machine called '%s'" %(self._getDefaultFirmwareName()))
|
||||
return False
|
||||
return True
|
||||
return False
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue