62 lines
1.1 KiB
Python
Executable File
62 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import binascii
|
|
import struct
|
|
import sys
|
|
|
|
from collections import namedtuple
|
|
|
|
|
|
fh_out0 = open('/tmp/out0.xlaw', 'wb')
|
|
fh_out1 = open('/tmp/out1.xlaw', 'wb')
|
|
|
|
|
|
class Header(namedtuple('Header', 'magic ts_sec ts_usec len ep')):
|
|
|
|
sd = struct.Struct('=LQQhB')
|
|
size = sd.size
|
|
|
|
@classmethod
|
|
def unpack(kls, data):
|
|
return kls(*kls.sd.unpack(data))
|
|
|
|
|
|
def process_frame(ep, frame):
|
|
#print("%02x %s" % (ep, binascii.b2a_hex(frame).decode('utf-8')))
|
|
if False:
|
|
if ep == 0x81:
|
|
ts = 1
|
|
fh_out0.write(frame[ts:ts+1])
|
|
elif ep == 0x82:
|
|
ts = 1
|
|
fh_out1.write(frame[ts:ts+1])
|
|
|
|
|
|
with open(sys.argv[1], 'rb') as fh_in:
|
|
|
|
while True:
|
|
hdr_data = fh_in.read(Header.size)
|
|
if len(hdr_data) != Header.size:
|
|
break
|
|
|
|
hdr = Header.unpack(hdr_data)
|
|
|
|
if hdr.magic != 0xe115600d:
|
|
print("Bad header %r" % (hdr,))
|
|
break
|
|
|
|
if hdr.len < 0:
|
|
print("Error %r" % (hdr,))
|
|
continue
|
|
|
|
if hdr.len > 0:
|
|
data = fh_in.read(hdr.len)
|
|
|
|
print(hdr.ep, binascii.b2a_hex(data[0:4]).decode('utf-8'), hdr.len)
|
|
|
|
nf = (len(data) - 4) // 32
|
|
for i in range(nf):
|
|
process_frame(hdr.ep, data[4+32*i:4+32*(i+1)])
|
|
|
|
#print(hdr)
|