From 000d23ea03be5093db304a979e4d587068e917d0 Mon Sep 17 00:00:00 2001 From: "matthias.ringwald@gmail.com" Date: Fri, 2 Jan 2015 18:02:43 +0000 Subject: [PATCH] minimal version of PacketLogger format dumper --- tools/dump_pklg.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 tools/dump_pklg.py diff --git a/tools/dump_pklg.py b/tools/dump_pklg.py new file mode 100755 index 000000000..770a63bc9 --- /dev/null +++ b/tools/dump_pklg.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python +# BlueKitchen GmbH (c) 2014 + +# primitive dump for PacketLogger format + +# APPLE PacketLogger +# typedef struct { +# uint32_t len; +# uint32_t ts_sec; +# uint32_t ts_usec; +# uint8_t type; // 0xfc for note +# } + +import re +import sys +import time +import datetime + +packet_types = [ "CMD =>", "EVT <=", "ACL =>", "ACL <="] + +def read_net_32(f): + a = f.read(1) + b = f.read(1) + c = f.read(1) + d = f.read(1) + return ord(a) << 24 | ord(b) << 16 | ord(c) << 8 | ord(d) + +def as_hex(data): + str_list = [] + for byte in data: + str_list.append("{0:02x} ".format(ord(byte))) + return ''.join(str_list) + +if len(sys.argv) == 1: + print 'Dump PacketLogger file' + print 'Copyright 2014, BlueKitchen GmbH' + print '' + print 'Usage: ', sys.argv[0], 'hci_dump.pklg' + exit(0) + +infile = sys.argv[1] + +with open (infile, 'rb') as fin: + try: + while True: + len = read_net_32(fin) + ts_sec = read_net_32(fin) + ts_usec = read_net_32(fin) + type = ord(fin.read(1)) + packet_len = len - 9; + packet = fin.read(packet_len) + time = "[%s.%03u]" % (datetime.datetime.fromtimestamp(ts_sec).strftime("%Y-%m-%d %H:%M:%S"), ts_usec / 1000) + if type == 0xfc: + print time, "LOG", packet + continue + if type <= 0x03: + print time, packet_types[type], as_hex(packet) + except TypeError: + exit(0) +