diff --git a/src/bluetooth_data_types.h b/src/bluetooth_data_types.h new file mode 100644 index 000000000..d8690c381 --- /dev/null +++ b/src/bluetooth_data_types.h @@ -0,0 +1,51 @@ +/** + * bluetooth_data_types.h generated from Bluetooth SIG website for BTstack + * https://www.bluetooth.com/specifications/assigned-numbers/generic-access-profile + */ + +#ifndef __BLUETOOTH_DATA_TYPES_H +#define __BLUETOOTH_DATA_TYPES_H + +#define BLUETOOTH_DATA_TYPE_FLAGS 0x01 // Flags +#define BLUETOOTH_DATA_TYPE_INCOMPLETE_LIST_OF_16_BIT_SERVICE_CLASS_UUIDS 0x02 // Incomplete List of 16-bit Service Class UUIDs +#define BLUETOOTH_DATA_TYPE_COMPLETE_LIST_OF_16_BIT_SERVICE_CLASS_UUIDS 0x03 // Complete List of 16-bit Service Class UUIDs +#define BLUETOOTH_DATA_TYPE_INCOMPLETE_LIST_OF_32_BIT_SERVICE_CLASS_UUIDS 0x04 // Incomplete List of 32-bit Service Class UUIDs +#define BLUETOOTH_DATA_TYPE_COMPLETE_LIST_OF_32_BIT_SERVICE_CLASS_UUIDS 0x05 // Complete List of 32-bit Service Class UUIDs +#define BLUETOOTH_DATA_TYPE_INCOMPLETE_LIST_OF_128_BIT_SERVICE_CLASS_UUIDS 0x06 // Incomplete List of 128-bit Service Class UUIDs +#define BLUETOOTH_DATA_TYPE_COMPLETE_LIST_OF_128_BIT_SERVICE_CLASS_UUIDS 0x07 // Complete List of 128-bit Service Class UUIDs +#define BLUETOOTH_DATA_TYPE_SHORTENED_LOCAL_NAME 0x08 // Shortened Local Name +#define BLUETOOTH_DATA_TYPE_COMPLETE_LOCAL_NAME 0x09 // Complete Local Name +#define BLUETOOTH_DATA_TYPE_TX_POWER_LEVEL 0x0A // Tx Power Level +#define BLUETOOTH_DATA_TYPE_CLASS_OF_DEVICE 0x0D // Class of Device +#define BLUETOOTH_DATA_TYPE_SIMPLE_PAIRING_HASH_C 0x0E // Simple Pairing Hash C +#define BLUETOOTH_DATA_TYPE_SIMPLE_PAIRING_HASH_C_192 0x0E // Simple Pairing Hash C-192 +#define BLUETOOTH_DATA_TYPE_SIMPLE_PAIRING_RANDOMIZER_R 0x0F // Simple Pairing Randomizer R +#define BLUETOOTH_DATA_TYPE_SIMPLE_PAIRING_RANDOMIZER_R_192 0x0F // Simple Pairing Randomizer R-192 +#define BLUETOOTH_DATA_TYPE_DEVICE_ID 0x10 // Device ID +#define BLUETOOTH_DATA_TYPE_SECURITY_MANAGER_TK_VALUE 0x10 // Security Manager TK Value +#define BLUETOOTH_DATA_TYPE_SECURITY_MANAGER_OUT_OF_BAND_FLAGS 0x11 // Security Manager Out of Band Flags +#define BLUETOOTH_DATA_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE 0x12 // Slave Connection Interval Range +#define BLUETOOTH_DATA_TYPE_LIST_OF_16_BIT_SERVICE_SOLICITATION_UUIDS 0x14 // List of 16-bit Service Solicitation UUIDs +#define BLUETOOTH_DATA_TYPE_LIST_OF_32_BIT_SERVICE_SOLICITATION_UUIDS 0x1F // List of 32-bit Service Solicitation UUIDs +#define BLUETOOTH_DATA_TYPE_LIST_OF_128_BIT_SERVICE_SOLICITATION_UUIDS 0x15 // List of 128-bit Service Solicitation UUIDs +#define BLUETOOTH_DATA_TYPE_SERVICE_DATA 0x16 // Service Data +#define BLUETOOTH_DATA_TYPE_SERVICE_DATA_16_BIT_UUID 0x16 // Service Data - 16-bit UUID +#define BLUETOOTH_DATA_TYPE_SERVICE_DATA_32_BIT_UUID 0x20 // Service Data - 32-bit UUID +#define BLUETOOTH_DATA_TYPE_SERVICE_DATA_128_BIT_UUID 0x21 // Service Data - 128-bit UUID +#define BLUETOOTH_DATA_TYPE_LE_SECURE_CONNECTIONS_CONFIRMATION_VALUE 0x22 // LE Secure Connections Confirmation Value +#define BLUETOOTH_DATA_TYPE_LE_SECURE_CONNECTIONS_RANDOM_VALUE 0x23 // LE Secure Connections Random Value +#define BLUETOOTH_DATA_TYPE_URI 0x24 // URI +#define BLUETOOTH_DATA_TYPE_INDOOR_POSITIONING 0x25 // Indoor Positioning +#define BLUETOOTH_DATA_TYPE_TRANSPORT_DISCOVERY_DATA 0x26 // Transport Discovery Data +#define BLUETOOTH_DATA_TYPE_PUBLIC_TARGET_ADDRESS 0x17 // Public Target Address +#define BLUETOOTH_DATA_TYPE_RANDOM_TARGET_ADDRESS 0x18 // Random Target Address +#define BLUETOOTH_DATA_TYPE_APPEARANCE 0x19 // Appearance +#define BLUETOOTH_DATA_TYPE_ADVERTISING_INTERVAL 0x1A // Advertising Interval +#define BLUETOOTH_DATA_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS 0x1B // LE Bluetooth Device Address +#define BLUETOOTH_DATA_TYPE_LE_ROLE 0x1C // LE Role +#define BLUETOOTH_DATA_TYPE_SIMPLE_PAIRING_HASH_C_256 0x1D // Simple Pairing Hash C-256 +#define BLUETOOTH_DATA_TYPE_SIMPLE_PAIRING_RANDOMIZER_R_256 0x1E // Simple Pairing Randomizer R-256 +#define BLUETOOTH_DATA_TYPE_3D_INFORMATION_DATA 0x3D // 3D Information Data +#define BLUETOOTH_DATA_TYPE_MANUFACTURER_SPECIFIC_DATA 0xFF // Manufacturer Specific Data + +#endif diff --git a/tool/bluetooth_data_types.py b/tool/bluetooth_data_types.py new file mode 100755 index 000000000..55e8688a3 --- /dev/null +++ b/tool/bluetooth_data_types.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python +# +# Scrape GAP Data Types from Bluetooth SIG page +# Copyright 2016 BlueKitchen GmbH +# + +from lxml import html +import datetime +import re +import requests +import sys +import os + +program_info = ''' +BTstack Data Types Scraper for BTstack +Copyright 2016, BlueKitchen GmbH +''' + +header = '''/** + * bluetooth_data_types.h generated from Bluetooth SIG website for BTstack + * {url} + */ + +#ifndef __BLUETOOTH_DATA_TYPES_H +#define __BLUETOOTH_DATA_TYPES_H + +''' + +trailer = ''' +#endif +''' + +def clean(tag): + # << 0xab + # >> 0xbb + # \n + # non-visible whitespace 0x200b + # non-vicible whitespace 0xa0 + return tag.replace(u'\xab','').replace(u'\xbb','').replace(u'\u200b','').replace('\n','').replace(u'\xa0',' ').strip() + +def scrape_page(fout, url): + print("Parsing %s" % url) + page = requests.get(url) + tree = html.fromstring(page.content) + + print('') + print('%-48s | %s' % ("Data Type Name", "Data Type Value")) + print('-' * 70) + + # get all