63 lines
1.4 KiB
Python
63 lines
1.4 KiB
Python
import argparse
|
|
import random
|
|
import serial
|
|
import sys
|
|
import threading
|
|
import time
|
|
|
|
tty = "/dev/ttyUSB1"
|
|
baud = 115200
|
|
|
|
|
|
def sendrecv(s, size, timeout=5):
|
|
"""Send some data and recv until the same data was received back."""
|
|
data = random.randbytes(size)
|
|
return sendcheck(s, data, timeout)
|
|
|
|
|
|
def sendcheck(s, data, timeout=5):
|
|
s.write(data)
|
|
received = 0
|
|
start = time.time()
|
|
got = bytearray()
|
|
while received < len(data):
|
|
r = s.read()
|
|
got += r
|
|
try:
|
|
assert(r == data[received: received + len(r)])
|
|
assert(time.time() < start + timeout)
|
|
except:
|
|
fr = received - 10
|
|
to = received + len(r) + 1
|
|
sdat = data[fr: to]
|
|
rdat = bytes(got[fr: to])
|
|
print(f"failed after receiving {received} correct bytes")
|
|
print(f"expected {sdat}")
|
|
print(f" got {rdat}")
|
|
sys.exit(-1)
|
|
|
|
received += len(r)
|
|
|
|
|
|
def parse_args():
|
|
parser = argparse.ArgumentParser()
|
|
return parser.parse_args()
|
|
|
|
|
|
def main():
|
|
args = parse_args()
|
|
|
|
s = serial.Serial(tty, baud, timeout=1)
|
|
for i in range(12):
|
|
size = 2**i
|
|
print(f"Trying with {size} bytes")
|
|
sendrecv(s, size)
|
|
data = b'ze%s\x96:M#\xd8\x98\x9d\x96\xf5?\x80c\xc6\xa7\x03\xe0i\x04V\xcb\xa3\x95#GC\xabf\x98'
|
|
#sendcheck(s, data)
|
|
|
|
print("All sizes passed.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|