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
io_error = 5
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.");
case 6:
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):
Logger.log("e", "Unable to read provided hex file. Could not update firmware.")
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
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.
"""
import io
from typing import List
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.
"""
data = []
data = [] # type: List[int]
extra_addr = 0
f = io.open(filename, "r", encoding = "utf-8")
for line in f: