1*987989bdSMilanka Ringwald#!/usr/bin/env python3 2*987989bdSMilanka Ringwald# 3*987989bdSMilanka Ringwald# Convert format UUID16 // SERVICE_NAME into bluetooth_gatt.h defines 4*987989bdSMilanka Ringwald# Copyright 2021 BlueKitchen GmbH 5*987989bdSMilanka Ringwald# 6*987989bdSMilanka Ringwaldimport os, sys, getopt 7*987989bdSMilanka Ringwald 8*987989bdSMilanka Ringwaldtag_description = { 9*987989bdSMilanka Ringwald "-c" : "ORG_BLUETOOTH_CHARACTERISTIC", 10*987989bdSMilanka Ringwald "-s" : "ORG_BLUETOOTH_SERVICE" 11*987989bdSMilanka Ringwald} 12*987989bdSMilanka Ringwald 13*987989bdSMilanka Ringwalddef main(argv): 14*987989bdSMilanka Ringwald cmd = "\nUSAGE: %s [-s|-c] [-f filename]" % sys.argv[0] 15*987989bdSMilanka Ringwald cmd += "\n -s: for SERVICE_UUID" 16*987989bdSMilanka Ringwald cmd += "\n -c: for CHARACTERISTICS_UUID" 17*987989bdSMilanka Ringwald cmd += "\n -f filename: input file with UUID and comment, i.e. 0x2B29 // Client Supported Features\n" 18*987989bdSMilanka Ringwald 19*987989bdSMilanka Ringwald tag_define = None 20*987989bdSMilanka Ringwald filename = None 21*987989bdSMilanka Ringwald 22*987989bdSMilanka Ringwald try: 23*987989bdSMilanka Ringwald opts, args = getopt.getopt(argv[1:],"scf:") 24*987989bdSMilanka Ringwald except getopt.GetoptError: 25*987989bdSMilanka Ringwald print("ERROR: wrong options") 26*987989bdSMilanka Ringwald print (cmd) 27*987989bdSMilanka Ringwald sys.exit(2) 28*987989bdSMilanka Ringwald 29*987989bdSMilanka Ringwald print(opts) 30*987989bdSMilanka Ringwald 31*987989bdSMilanka Ringwald for opt, arg in opts: 32*987989bdSMilanka Ringwald if opt == '-s' or opt == '-c': 33*987989bdSMilanka Ringwald tag_define = tag_description[opt] 34*987989bdSMilanka Ringwald elif opt == '-f': 35*987989bdSMilanka Ringwald print("filename") 36*987989bdSMilanka Ringwald filename = arg 37*987989bdSMilanka Ringwald else: 38*987989bdSMilanka Ringwald print("ERROR: wrong options") 39*987989bdSMilanka Ringwald print (cmd) 40*987989bdSMilanka Ringwald sys.exit(2) 41*987989bdSMilanka Ringwald 42*987989bdSMilanka Ringwald if (not tag_define) or (not filename): 43*987989bdSMilanka Ringwald print("ERROR: wrong options") 44*987989bdSMilanka Ringwald print (cmd) 45*987989bdSMilanka Ringwald sys.exit(2) 46*987989bdSMilanka Ringwald 47*987989bdSMilanka Ringwald with open (filename, 'rt') as fin: 48*987989bdSMilanka Ringwald for line in fin: 49*987989bdSMilanka Ringwald data = line.strip('\n').split(" // ") 50*987989bdSMilanka Ringwald if len(data) != 2: 51*987989bdSMilanka Ringwald continue 52*987989bdSMilanka Ringwald else: 53*987989bdSMilanka Ringwald uuid = data[0] 54*987989bdSMilanka Ringwald summary = data[1] 55*987989bdSMilanka Ringwald 56*987989bdSMilanka Ringwald tag = summary.upper().replace('.', '_').replace('-','_').replace(' ', '_') 57*987989bdSMilanka Ringwald print("#define %s_%-80s %s // %s" % (tag_define, tag, uuid, summary)) 58*987989bdSMilanka Ringwald 59*987989bdSMilanka Ringwald 60*987989bdSMilanka Ringwald 61*987989bdSMilanka Ringwaldif __name__ == "__main__": 62*987989bdSMilanka Ringwald main(sys.argv) 63*987989bdSMilanka Ringwald