#!/usr/bin/env python3
import struct
import os
from datetime import datetime
from collections import defaultdict

with open('/tmp/FS/data/misc/bluetooth/logs/btsnooz_hci.log', 'rb') as f:
    f.read(16)
    pkts = []
    while True:
        pkt_hdr = f.read(24)
        if len(pkt_hdr) < 24:
            break
        orig_len, inc_len, flags, drops, ts = struct.unpack('>IIIIq', pkt_hdr)
        data = f.read(inc_len)
        if len(data) < inc_len:
            break
        pkt_type = flags & 0x0F
        ts_sec = ts / 1000000.0
        if pkt_type == 0:
            if len(data) >= 3:
                opcode = struct.unpack('<H', data[:2])[0]
                if opcode == 0x4202:
                    pkts.append({'ts': ts_sec, 'data': data})

print(f"Total 0x4202 commands: {len(pkts)}")
print()
for i, p in enumerate(pkts):
    ts_str = datetime.fromtimestamp(p['ts']).strftime('%H:%M:%S.%f')[:-3]
    print(f"[{i:3d}] {ts_str} ({len(p['data'])} bytes) {p['data'].hex()}")
