Skip to content
Snippets Groups Projects
Commit 5bfa1962 authored by dawehr's avatar dawehr
Browse files

Added verification of quad checksum to test script

parent dfae2e9d
No related branches found
No related tags found
No related merge requests found
......@@ -24,19 +24,23 @@ def create_test_packet(size=8):
data = bytes((i % 256 for i in range(size)))
return create_msg(0, 1, 0, data)
def read_packet(ser):
def read_packet(ser, raw=False):
header = ser.read(7)
length = int.from_bytes(header[5:7], byteorder='little')
data = ser.read(length)
checksum = ser.read()
return data
print(checksum)
if raw:
return header + data + checksum
else:
return data
def query_received(ser):
# Send request
query_msg = create_msg(0, 2, 0, b'')
ser.write(query_msg)
ser.flush()
sleep(0.1)
resp = read_packet(ser)
received_str = resp[:-1].decode('ascii')
if len(received_str) == 0:
......@@ -55,6 +59,24 @@ def check_test(ser, n_sent, size_sent, old_status):
valid = False
return valid, (new_n, new_size)
def test_checksum(ser):
print("Checking if received checksum is valid")
# Send query packet
ser.write(create_msg(0, 2, 0, b''))
raw_data = read_packet(ser, True)
print("Raw:")
print(raw_data.hex())
given_checksum = raw_data[-1]
computed_checksum = 0
for i in range(len(raw_data) - 1):
computed_checksum ^= raw_data[i]
valid = computed_checksum == given_checksum
ret_status = query_received(ser)
if not valid:
print("Failure: Received checksum " + str(given_checksum) + ", expected " + str(computed_checksum))
return valid, ret_status
def test_partial_packet(ser, cur_status, size=50):
print("Checking partial packet...")
to_send = create_test_packet(size)
......@@ -66,8 +88,6 @@ def test_partial_packet(ser, cur_status, size=50):
sleep(0.2)
return check_test(ser, 1, size, cur_status)
return success, (n_received, tot_size_received)
def test_blast(ser, cur_status, N=50, size=32):
print("Checking data blast... of size " + str(N) + " with size " + str(size))
to_send = create_test_packet(size)
......@@ -98,4 +118,5 @@ if __name__ == '__main__':
passed, status = test_blast(ser, status)
passed, status = test_blast(ser, status, 150, 80)
passed, status = test_bad_checksum(ser, status)
passed, status = test_checksum(ser)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment