Skip to content

Instantly share code, notes, and snippets.

@andrewleech
Created September 2, 2019 07:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andrewleech/49c2a54313f57e544dc1b3a3360d6dc3 to your computer and use it in GitHub Desktop.
Save andrewleech/49c2a54313f57e544dc1b3a3360d6dc3 to your computer and use it in GitHub Desktop.
ble advertising data example
BLE_GAP_AD_TYPE_FLAGS = 0x01 # Flags for discoverability.
BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE = 0x02 # Partial list of 16 bit service UUIDs.
BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE = 0x03 # Complete list of 16 bit service UUIDs.
BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE = 0x04 # Partial list of 32 bit service UUIDs.
BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE = 0x05 # Complete list of 32 bit service UUIDs.
BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE = 0x06 # Partial list of 128 bit service UUIDs.
BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE = 0x07 # Complete list of 128 bit service UUIDs.
BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME = 0x08 # Short local device name.
BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME = 0x09 # Complete local device name.
BLE_GAP_AD_TYPE_TX_POWER_LEVEL = 0x0A # Transmit power level.
BLE_GAP_AD_TYPE_CLASS_OF_DEVICE = 0x0D # Class of device.
BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C = 0x0E # Simple Pairing Hash C.
BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R = 0x0F # Simple Pairing Randomizer R.
BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE = 0x10 # Security Manager TK Value.
BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS = 0x11 # Security Manager Out Of Band Flags.
BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE = 0x12 # Slave Connection Interval Range.
BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT = 0x14 # List of 16-bit Service Solicitation UUIDs.
BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT = 0x15 # List of 128-bit Service Solicitation UUIDs.
BLE_GAP_AD_TYPE_SERVICE_DATA = 0x16 # Service Data - 16-bit UUID.
BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS = 0x17 # Public Target Address.
BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS = 0x18 # Random Target Address.
BLE_GAP_AD_TYPE_APPEARANCE = 0x19 # Appearance.
BLE_GAP_AD_TYPE_ADVERTISING_INTERVAL = 0x1A # Advertising Interval.
BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS = 0x1B # LE Bluetooth Device Address.
BLE_GAP_AD_TYPE_LE_ROLE = 0x1C # LE Role.
BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C256 = 0x1D # Simple Pairing Hash C-256.
BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R256 = 0x1E # Simple Pairing Randomizer R-256.
BLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID = 0x20 # Service Data - 32-bit UUID.
BLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID = 0x21 # Service Data - 128-bit UUID.
BLE_GAP_AD_TYPE_LESC_CONFIRMATION_VALUE = 0x22 # LE Secure Connections Confirmation Value
BLE_GAP_AD_TYPE_LESC_RANDOM_VALUE = 0x23 # LE Secure Connections Random Value
BLE_GAP_AD_TYPE_URI = 0x24 # URI
BLE_GAP_AD_TYPE_3D_INFORMATION_DATA = 0x3D # 3D Information Data.
BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA = 0xFF # Manufacturer Specific Data.
BLE_ADV_AD_TYPE_FIELD_SIZE = 1
BLE_ADV_LENGTH_FIELD_SIZE = 1
BLE_AD_TYPE_FLAGS_DATA_SIZE = 1
BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE = (0x01) # LE Limited Discoverable Mode.
BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE = (0x02) # LE General Discoverable Mode.
BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED = (0x04) # BR/EDR not supported.
BLE_GAP_ADV_FLAG_LE_BR_EDR_CONTROLLER = (0x08) # Simultaneous LE and BR/EDR, Controller.
BLE_GAP_ADV_FLAG_LE_BR_EDR_HOST = (0x10) # Simultaneous LE and BR/EDR, Host.
BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE = (BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) # LE Limited Discoverable Mode, BR/EDR not supported.
BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE = (BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) # LE General Discoverable Mode, BR/EDR not supported.
def adv_data(device_name=None):
data = []
if device_name:
data.append(BLE_ADV_AD_TYPE_FIELD_SIZE+len(device_name))
data.append(BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME)
data.extend((ord(c) for c in device_name))
data.append(BLE_ADV_AD_TYPE_FIELD_SIZE + BLE_AD_TYPE_FLAGS_DATA_SIZE)
data.append(BLE_GAP_AD_TYPE_FLAGS)
data.append(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE)
return bytearray(data)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment