diff options
Diffstat (limited to 'bin/dfu')
-rwxr-xr-x | bin/dfu | 16 |
1 files changed, 8 insertions, 8 deletions
@@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python3 # # Copyright (c) 2016, NORDUnet A/S All rights reserved. # @@ -43,7 +43,7 @@ import struct import serial import argparse -from binascii import crc32 +from binascii import crc32, hexlify CHUNK_SIZE = 4096 @@ -77,23 +77,23 @@ def parse_args(): def _write(dst, data): for i in range(len(data)): - dst.write(data[i]) + dst.write(data[i:i+1]) time.sleep(0.1) if len(data) == 4: - print("Wrote 0x{:02x}{:02x}{:02x}{:02x}".format(ord(data[0]), ord(data[1]), ord(data[2]), ord(data[3]))) + print("Wrote 0x{}".format(hexlify(data).decode("ascii"))) else: print("Wrote {!r}".format(data)) def _read(dst, verbose=False): - res = '' + res = b'' while True: x = dst.read(1) if not x: break res += x if res and verbose: - print ("Read {!r}".format(res)) + print("Read {!r}".format(res)) return res @@ -111,7 +111,7 @@ def send_file(filename, args): except serial.SerialException: time.sleep(0.2) continue - dst.write('\r') + dst.write(b'\r') response = _read(dst, args.verbose) if 'OK' in response: dst.timeout=2 @@ -137,7 +137,7 @@ def send_file(filename, args): if len(ack_bytes) == 4: break print('ERROR: Did not receive an ACK, got {!r}'.format(ack_bytes)) - dst.write('\r') # eventually get back to the CLI prompt + dst.write(b'\r') # eventually get back to the CLI prompt ack = struct.unpack('<I', ack_bytes)[0] if ack != counter + 1: print('ERROR: Did not receive the expected counter as ACK (got {!r}/{!r}, not {!r})'.format(ack, ack_bytes, counter)) |