From 090cb3a201b2c596bbace6272a483782a6a5b80b Mon Sep 17 00:00:00 2001 From: LongHairedHacker Date: Sun, 30 Oct 2016 00:12:55 +0200 Subject: [PATCH] Added test util for sending frames Adjusted timeouts for slow uarts --- README.md | 2 +- software/testutils/send.py | 42 +++++++++++++++++++++++++++++++++++++ software/testutils/sniff.py | 2 +- 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 software/testutils/send.py diff --git a/README.md b/README.md index 2f03c42..877b79e 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ Initial value: 0x0 unless it is currently receiving a frame. - Collision detection on the sender side is done by reading back each sent byte. - Collision checking on receiver side, is done by checking the CRC and frame header. -- If a frame has been started and there are no new bytes received for 20ms, +- If a frame has been started and there are no new bytes received for 50ms, the frame is considered timed out and all received data can be dropped. - Incoming messages are stored in a fifo until the application retrieves them. - The receive fifo has a size of at least 2 messages. diff --git a/software/testutils/send.py b/software/testutils/send.py new file mode 100644 index 0000000..1ca282d --- /dev/null +++ b/software/testutils/send.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python2 + +import sys +import serial +import crcmod.predefined + + +def send_byte(ser, byte): + ser.reset_input_buffer() + ser.write(byte) + read_byte = ser.read() + if read_byte != byte: + print "Written %s read %s" % (hex(ord(read_byte)), hex(ord(byte))) + sys.exit(-1) + + + +def main(): + if len(sys.argv) != 3: + print "Usage %s " % (sys.argv[0]) + sys.exit(-1) + + payload = sys.argv[2] + payload += chr(0) * (16 - len(payload)) + + ser = serial.Serial(sys.argv[1], 9600, timeout=0.40) + crc = crcmod.predefined.Crc('crc-8-maxim') + + send_byte(ser, chr(0xAA)) + send_byte(ser, chr(0xFE)) + + for byte in payload: + crc.update(byte) + send_byte(ser, byte) + + crc_sum = crc.digest() + send_byte(ser, crc_sum) + + print "Send sucessfully !" + +if __name__ == '__main__': + main() diff --git a/software/testutils/sniff.py b/software/testutils/sniff.py index 2ccfc64..1a368dc 100644 --- a/software/testutils/sniff.py +++ b/software/testutils/sniff.py @@ -15,7 +15,7 @@ def hexdump(data): def main(): - if len(sys.argv) < 2: + if len(sys.argv) != 2: print "Usage %s " % (sys.argv[0]) sys.exit(-1)