xref: /btstack/tool/uuid128_formats.py (revision aa487f40a710fb5906365a8c17b228ab369269f6)
1*aa487f40SMatthias Ringwald#!/usr/bin/env python
2*aa487f40SMatthias Ringwald#
3*aa487f40SMatthias Ringwald# Parase and dump UUID128 in various formats
4*aa487f40SMatthias Ringwald
5*aa487f40SMatthias Ringwaldimport codecs
6*aa487f40SMatthias Ringwaldimport io
7*aa487f40SMatthias Ringwaldimport os
8*aa487f40SMatthias Ringwaldimport re
9*aa487f40SMatthias Ringwaldimport string
10*aa487f40SMatthias Ringwaldimport sys
11*aa487f40SMatthias Ringwald
12*aa487f40SMatthias Ringwaldusage = '''
13*aa487f40SMatthias RingwaldUsage: ./uuid128_formats.py UUID128
14*aa487f40SMatthias Ringwald'''
15*aa487f40SMatthias Ringwald
16*aa487f40SMatthias Ringwalddef twoByteLEFor(value):
17*aa487f40SMatthias Ringwald    return [ (value & 0xff), (value >> 8)]
18*aa487f40SMatthias Ringwald
19*aa487f40SMatthias Ringwalddef parseUUID128(uuid):
20*aa487f40SMatthias Ringwald    parts = re.match("([0-9A-Fa-f]{4})([0-9A-Fa-f]{4})-([0-9A-Fa-f]{4})-([0-9A-Fa-f]{4})-([0-9A-Fa-f]{4})-([0-9A-Fa-f]{4})([0-9A-Fa-f]{4})([0-9A-Fa-f]{4})", uuid)
21*aa487f40SMatthias Ringwald    uuid_bytes = []
22*aa487f40SMatthias Ringwald    for i in range(8, 0, -1):
23*aa487f40SMatthias Ringwald        uuid_bytes = uuid_bytes + twoByteLEFor(int(parts.group(i),16))
24*aa487f40SMatthias Ringwald    return uuid_bytes
25*aa487f40SMatthias Ringwald
26*aa487f40SMatthias Ringwaldif (len(sys.argv) < 2):
27*aa487f40SMatthias Ringwald    print(usage)
28*aa487f40SMatthias Ringwald    sys.exit(1)
29*aa487f40SMatthias Ringwald
30*aa487f40SMatthias Ringwalduuid128 = sys.argv[1]
31*aa487f40SMatthias Ringwalduuid_bytes = parseUUID128(uuid128)
32*aa487f40SMatthias Ringwaldprint('UUID128:       %s' % uuid128)
33*aa487f40SMatthias Ringwaldprint('little endian: %s' % ', '.join( [hex(i) for i in uuid_bytes] ))
34*aa487f40SMatthias Ringwaldprint('big endian:    %s' % ', '.join( [hex(i) for i in reversed(uuid_bytes)] ))
35