From 30a0f691016212ee4d36d2ca2cd49c2b47bd1ee4 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Mon, 2 Dec 2019 22:57:22 -0500 Subject: [PATCH] Fix broken uploadb.py putc didn't work well with any byte value on most terminal configuration. It was a bad idea... --- tools/uploadb.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/tools/uploadb.py b/tools/uploadb.py index e812378..74c7e22 100755 --- a/tools/uploadb.py +++ b/tools/uploadb.py @@ -47,14 +47,26 @@ def main(): for i, c in enumerate(fcontents): c = bytes([c]) - sendcmd(fd, 'getc') - os.write(fd, c) - os.read(fd, 2) # read prompt - sendcmd(fd, 'putc a') - r = os.read(fd, 1) # putc result - os.read(fd, 2) # read prompt - if r != c: - print(f"Mismatch at byte {i}! {c} != {r}") + print('.', end='', flush=True) + for _ in range(5): # try 5 times + sendcmd(fd, 'getc') + os.write(fd, c) + os.read(fd, 2) # read prompt + sendcmd(fd, 'print a') + s = b'' + while True: + r = os.read(fd, 1) # putc result + if not r.isdigit(): + break + s += r + os.read(fd, 3) # read prompt + if int(s) == c[0]: + break + else: + print(f"Mismatch at byte {i}! {c} != {r}. Retrying") + else: + print("Maximum retries reached, abort") + return 1 sendcmd(fd, 'poke m a') os.read(fd, 2) # read prompt sendcmd(fd, 'm=m+1')