compile_gatt.py (4783d25609a5032739e1b6e67d2236f2d80f2100) | compile_gatt.py (ced5a857a4247f7eaffbe9bc3bff2d5bde76efb7) |
---|---|
1#!/usr/bin/env python3 2# 3# BLE GATT configuration generator for use with BTstack 4# Copyright 2019 BlueKitchen GmbH 5# 6# Format of input file: 7# PRIMARY_SERVICE, SERVICE_UUID 8# CHARACTERISTIC, ATTRIBUTE_TYPE_UUID, [READ | WRITE | DYNAMIC], VALUE 9 10# dependencies: 11# - pip3 install pycryptodomex | 1#!/usr/bin/env python3 2# 3# BLE GATT configuration generator for use with BTstack 4# Copyright 2019 BlueKitchen GmbH 5# 6# Format of input file: 7# PRIMARY_SERVICE, SERVICE_UUID 8# CHARACTERISTIC, ATTRIBUTE_TYPE_UUID, [READ | WRITE | DYNAMIC], VALUE 9 10# dependencies: 11# - pip3 install pycryptodomex |
12# alternatively, the pycryptodome package can be used instead 13# - pip3 install pycryptodome |
|
12 13import codecs 14import csv 15import io 16import os 17import re 18import string 19import sys 20import argparse 21import tempfile 22 | 14 15import codecs 16import csv 17import io 18import os 19import re 20import string 21import sys 22import argparse 23import tempfile 24 |
23# try to import Cryptodome | 25have_crypto = True 26# try to import PyCryptodome independent from PyCrypto |
24try: 25 from Cryptodome.Cipher import AES 26 from Cryptodome.Hash import CMAC | 27try: 28 from Cryptodome.Cipher import AES 29 from Cryptodome.Hash import CMAC |
27 have_crypto = True | |
28except ImportError: | 30except ImportError: |
29 have_crypto = False 30 print("\n[!] PyCryptodome required to calculate GATT Database Hash but not installed (using random value instead)") 31 print("[!] Please install PyCryptodome, e.g. 'pip install pycryptodomex'\n") | 31 # fallback: try to import PyCryptodome as (an almost drop-in) replacement for the PyCrypto library 32 try: 33 from Crypto.Cipher import AES 34 from Crypto.Hash import CMAC 35 except ImportError: 36 have_crypto = False 37 print("\n[!] PyCryptodome required to calculate GATT Database Hash but not installed (using random value instead)") 38 print("[!] Please install PyCryptodome, e.g. 'pip install pycryptodomex' or 'pip install pycryptodome'\n") |
32 33header = ''' 34// {0} generated from {1} for BTstack 35// it needs to be regenerated when the .gatt file is updated. 36 37// To generate {0}: 38// {2} {1} {0} 39 --- 1016 unchanged lines hidden --- | 39 40header = ''' 41// {0} generated from {1} for BTstack 42// it needs to be regenerated when the .gatt file is updated. 43 44// To generate {0}: 45// {2} {1} {0} 46 --- 1016 unchanged lines hidden --- |