Add UI feedback on invalid firmware update

CURA-6537
This commit is contained in:
Lipu Fei 2019-08-27 08:51:48 +02:00
parent b20a349b44
commit 3853fb6d19
4 changed files with 11 additions and 3 deletions

View file

@ -75,4 +75,4 @@ class FirmwareUpdateState(IntEnum):
communication_error = 4 communication_error = 4
io_error = 5 io_error = 5
firmware_not_found_error = 6 firmware_not_found_error = 6
invalid_firmware_error = 7

View file

@ -151,6 +151,8 @@ Cura.MachineAction
return catalog.i18nc("@label","Firmware update failed due to an input/output error."); return catalog.i18nc("@label","Firmware update failed due to an input/output error.");
case 6: case 6:
return catalog.i18nc("@label","Firmware update failed due to missing firmware."); return catalog.i18nc("@label","Firmware update failed due to missing firmware.");
case 7:
return catalog.i18nc("@label","Firmware update failed due to invalid firmware file.");
} }
} }

View file

@ -27,6 +27,9 @@ class AvrFirmwareUpdater(FirmwareUpdater):
except (FileNotFoundError, AssertionError): except (FileNotFoundError, AssertionError):
Logger.log("e", "Unable to read provided hex file. Could not update firmware.") Logger.log("e", "Unable to read provided hex file. Could not update firmware.")
self._setFirmwareUpdateState(FirmwareUpdateState.firmware_not_found_error) self._setFirmwareUpdateState(FirmwareUpdateState.firmware_not_found_error)
except Exception:
Logger.logException("e", "Failed to read hex file '%s'", self._firmware_file)
self._setFirmwareUpdateState(FirmwareUpdateState.invalid_firmware_error)
return return
programmer = stk500v2.Stk500v2() programmer = stk500v2.Stk500v2()

View file

@ -5,13 +5,16 @@ See: http://en.wikipedia.org/wiki/Intel_HEX
This is a python 3 conversion of the code created by David Braam for the Cura project. This is a python 3 conversion of the code created by David Braam for the Cura project.
""" """
import io import io
from typing import List
from UM.Logger import Logger from UM.Logger import Logger
def readHex(filename):
def readHex(filename: str) -> List[int]:
""" """
Read an verify an intel hex file. Return the data as an list of bytes. Read an verify an intel hex file. Return the data as an list of bytes.
""" """
data = [] data = [] # type: List[int]
extra_addr = 0 extra_addr = 0
f = io.open(filename, "r", encoding = "utf-8") f = io.open(filename, "r", encoding = "utf-8")
for line in f: for line in f: