From df6abf988e1214e1ce914204284bc9ab4c81e073 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 8 Dec 2020 13:39:22 -0800 Subject: [PATCH] make fingerprint script nice old-commit-hash: b1a4ec8135cbaccf016ee78487582b9e3e7724d4 --- selfdrive/debug/fingerprint_from_route.py | 45 +++++++++++++++++++ .../internal/get_fingerprint_from_route.py | 32 ------------- 2 files changed, 45 insertions(+), 32 deletions(-) create mode 100755 selfdrive/debug/fingerprint_from_route.py delete mode 100755 selfdrive/debug/internal/get_fingerprint_from_route.py diff --git a/selfdrive/debug/fingerprint_from_route.py b/selfdrive/debug/fingerprint_from_route.py new file mode 100755 index 000000000..a06dfe180 --- /dev/null +++ b/selfdrive/debug/fingerprint_from_route.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 + +import sys +from tools.lib.route import Route +from tools.lib.logreader import MultiLogIterator + + +def get_fingerprint(lr): + # TODO: make this a nice tool for car ports. should also work with qlogs for FW + + fw = None + msgs = {} + for msg in lr: + if msg.which() == 'carParams': + fw = msg.carParams.carFw + elif msg.which() == 'can': + for c in msg.can: + # read also msgs sent by EON on CAN bus 0x80 and filter out the + # addr with more than 11 bits + if c.src % 0x80 == 0 and c.address < 0x800: + msgs[c.address] = len(c.dat) + + # show CAN fingerprint + fingerprint = ', '.join("%d: %d" % v for v in sorted(msgs.items())) + print(f"\nfound {len(msgs)} messages. CAN fingerprint:\n") + print(fingerprint) + + # TODO: also print the fw fingerprint merged with the existing ones + # show FW fingerprint + print("\nFW fingerprint:\n") + for f in fw: + print(f" (Ecu.{f.ecu}, {hex(f.address)}, {None if f.subAddress == 0 else f.subAddress}): [") + print(f" {f.fwVersion},") + print(" ],") + print() + + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Usage: ./get_fingerprint_internal.py ") + sys.exit(1) + + route = Route(sys.argv[1]) + lr = MultiLogIterator(route.log_paths()[:5], wraparound=False) + get_fingerprint(lr) diff --git a/selfdrive/debug/internal/get_fingerprint_from_route.py b/selfdrive/debug/internal/get_fingerprint_from_route.py deleted file mode 100755 index 6a7d12e22..000000000 --- a/selfdrive/debug/internal/get_fingerprint_from_route.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python3 - -import sys -from tools.lib.route import Route -from tools.lib.logreader import MultiLogIterator - - -def get_fingerprint(lr): - can_msgs = [m for m in lr if m.which() == 'can'] - - msgs = {} - - for msg in can_msgs: - for c in msg.can: - # read also msgs sent by EON on CAN bus 0x80 and filter out the - # addr with more than 11 bits - if c.src % 0x80 == 0 and c.address < 0x800: - msgs[c.address] = len(c.dat) - - fingerprint = ', '.join("%d: %d" % v for v in sorted(msgs.items())) - print("number of messages {0}:".format(len(msgs))) - print("fingerprint {0}".format(fingerprint)) - - -if __name__ == "__main__": - if len(sys.argv) < 2: - print("Usage: ./get_fingerprint_internal.py ") - sys.exit(1) - - route = Route(sys.argv[1]) - lr = MultiLogIterator(route.log_paths()[:5], wraparound=False) - get_fingerprint(lr)