From 116c19d1c41ec8dc7fb2a6eed61a03abb1668dcc Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Tue, 25 Oct 2016 08:29:03 +0200 Subject: [PATCH] chamtool xmodem: pad small dumps --- Software/Chameleon/XModem.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Software/Chameleon/XModem.py b/Software/Chameleon/XModem.py index 062fb5b..7fb578b 100644 --- a/Software/Chameleon/XModem.py +++ b/Software/Chameleon/XModem.py @@ -78,9 +78,15 @@ class XModem: # Timeout or different char received return None + lastBlock = False while True: dataBlock = dataStream.read(128) + if (len(dataBlock) < 128): + lastBlock = True + if (0 < len(dataBlock) < 128): + # Last part smaller than xmodem block -> pad it + dataBlock += '\x00' * (128 - len(dataBlock)) if (len(dataBlock) == 128): # Write SOH, pktId, data and checksum self.ioStream.write(self.BYTE_SOH) @@ -93,8 +99,7 @@ class XModem: #Proceed to next packet packetCounter = (packetCounter + 1) % 256 bytesSent += 128 - - else: + if lastBlock: # Write EOT and wait for ACK self.ioStream.write(self.BYTE_EOT) self.ioStream.read(1)