--- a/HostFirmwareUpdater.py Mon Nov 11 16:03:30 2024 +0100
+++ b/HostFirmwareUpdater.py Wed Nov 20 12:04:45 2024 +0100
@@ -87,7 +87,8 @@
def _CreateFirmwareImageFileSizeMD5File(self):
# Note Pyro exceptions are already caught by catcher_func and PyroCatcher in PyroProxyProxy
- self.firmwareImageFileMD5Size = hashlib.md5("%s\n"%self.firmwareImageFileSize).hexdigest()
+ self.firmwareImageFileMD5Size = hashlib.md5( + ("%s\n"%self.firmwareImageFileSize).encode()).hexdigest() self.controller.logger.write(_("Firmware image size md5: %s\n")%(self.firmwareImageFileMD5Size))
status, textError = self.controller._connector.CreateFirmwareImageFileSizeMD5File(self.firmwareImageFileMD5Size)
@@ -120,7 +121,7 @@
# User feedback as percentage
keepGoing, _skip = self.dialog.Update(
- transferedBytes * 100 / self.firmwareImageFileSize)
+ int(transferedBytes * 100 / self.firmwareImageFileSize)) @@ -128,7 +129,8 @@
raise Exception(textError)
chunkData = self.imageData[transferedBytes:transferedBytes + chunksSize]
- status, textError = self.controller._connector.RunFeedPipe(chunkData, isLastChunk, chunksSize)
+ transferedData = bytes([isLastChunk])+chunkData + status, textError = self.controller._connector.RunFeedPipe(transferedData) transferedBytes = transferedBytes + chunksSize
--- a/LPCExtension.py Mon Nov 11 16:03:30 2024 +0100
+++ b/LPCExtension.py Wed Nov 20 12:04:45 2024 +0100
@@ -81,9 +81,34 @@
raise Exception("Invalid input for " + ExtendedCallName)
-LPCManagerExtendedCalls = ["CheckProductID", "GetVersions"]
-for ExtendedCall in LPCManagerExtendedCalls:
- setattr(BeremizPLCObjectServiceClient, ExtendedCall, JsonMethodProxyFactory(ExtendedCall))
+def JsonOutputMethodProxyFactory(ExtendedCallName): + def JsonMethodProxy(self, inputbin): + outputbin = self.ExtendedCall(ExtendedCallName, inputbin) + jsonoutput = json.loads(outputbin) + if type(jsonoutput) == list and len(jsonoutput) == 2: + result, error = jsonoutput + raise UserAddressedException(error) + raise Exception("Invalid input for " + ExtendedCallName) +LPCManagerExtendedCalls = [ + "CreateFirmwareImageFileSizeFile", + "CreateFirmwareImageFileSizeMD5File", + "CreateFirmwareImageFileMD5File", +for ExtendedCallName in LPCManagerExtendedCalls: + setattr(BeremizPLCObjectServiceClient, ExtendedCallName, JsonMethodProxyFactory(ExtendedCallName)) +# RunFeedPipe uses no JSON encoding for performance +setattr(BeremizPLCObjectServiceClient, "RunFeedPipe", JsonOutputMethodProxyFactory("RunFeedPipe")) # from LPCconnector import LPC_connector_factory
--- a/LPCProjectController.py Mon Nov 11 16:03:30 2024 +0100
+++ b/LPCProjectController.py Wed Nov 20 12:04:45 2024 +0100
@@ -199,7 +199,7 @@
self.firmwareUpadateIsRunning = True
self.logger.write(_("Firmware update started\n"))
- version_string = self._connector.GetVersions()
+ version_string = self._connector.GetFWVersions() # Launch the firmware selection dialog
dialog = FirmwareUpdateDialog(self.AppFrame, version_string)