diff options
-rwxr-xr-x | downloader/downloader.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/downloader/downloader.py b/downloader/downloader.py index 8da13cf..9efb30e 100755 --- a/downloader/downloader.py +++ b/downloader/downloader.py @@ -85,7 +85,7 @@ def open_serial(device, baud): print "opening %s (%s Baud)" % (device, baud) try: - dev = serial.Serial(port=device, baudrate=baud) + dev = serial.Serial(port=device, baudrate=baud, timeout=3) dev.flushInput() dev.flushOutput() return dev @@ -114,6 +114,9 @@ def exec_command(dev, cmd, answer): astr = bytearray() astr += dev.read(3) + if len(astr) < 3: + print "ERROR: timeout while reading response header" + sys.exit(4) if astr[0] != cstr[0]: print "ERROR: bootloader returned wrong command code" @@ -130,7 +133,14 @@ def exec_command(dev, cmd, answer): sys.exit(4) answer_len = struct.calcsize(answer) - astr += dev.read(answer_len) + if answer_len > 0: + tmp = bytearray() + tmp += dev.read(answer_len) + if len(tmp) < answer_len: + print "ERROR: timeout while reading response" + sys.exit(4) + + astr += tmp if 0 != calc_csum(astr): print "ERROR: checksum error" |