From 1cc7f90595d286b18b9602eec1235095576df600 Mon Sep 17 00:00:00 2001 From: LongHairedHacker Date: Sat, 29 Oct 2016 22:43:21 +0200 Subject: [PATCH] Added crc check to sniffer --- software/testutils/.gitignore | 1 + software/testutils/sniff.py | 55 ++++++++++++++++++++++------------- 2 files changed, 36 insertions(+), 20 deletions(-) create mode 100644 software/testutils/.gitignore diff --git a/software/testutils/.gitignore b/software/testutils/.gitignore new file mode 100644 index 0000000..8aa978b --- /dev/null +++ b/software/testutils/.gitignore @@ -0,0 +1 @@ +virtenv diff --git a/software/testutils/sniff.py b/software/testutils/sniff.py index eea06d2..2ccfc64 100644 --- a/software/testutils/sniff.py +++ b/software/testutils/sniff.py @@ -2,6 +2,8 @@ import sys import serial +import crcmod.predefined + def hexdump(data): res = "" @@ -10,27 +12,40 @@ def hexdump(data): return res -if len(sys.argv) < 2: - print "Usage %s " % (sys.argv[0]) - sys.exit(-1) - -ser = serial.Serial(sys.argv[1], 9600, timeout=0.40) +def main(): + if len(sys.argv) < 2: + print "Usage %s " % (sys.argv[0]) + sys.exit(-1) + + ser = serial.Serial(sys.argv[1], 9600, timeout=0.40) + + while True: + data = ser.read(19) + if data != "" and len(data) != 19: + print "No Frame:\t" + hexdump(data) + + header_ok = data.startswith(chr(0xAA) + chr(0xFE)) + + line = "" + if header_ok: + line += "Header Ok " + else: + line += "Header not Ok " + + payload = data[2:18] + crc = crcmod.predefined.Crc('crc-8-maxim') + crc.update(payload) + crc_sum = crc.digest() + if data[18] == crc_sum: + line += "CRC Ok " + else: + line += "CRC not Ok " + + line += hexdump(data) + print line -while True: - data = ser.read(19) - if data != "" and len(data) != 19: - print "No Frame:\t" + hexdump(data) - - header_ok = data.startswith(chr(0xAA) + chr(0xFE)) - - line = "" - if header_ok: - line += "Header OK\t" - else: - line += "Header not OK\t" - - line += hexdump(data) - print line +if __name__ == '__main__': + main()