广播数据和扫描回应数据,它们的长度都不能超过31个字节(0 ~ 31)(BT4.0里面),由有效数据部分和无效数据部分组成。数据的格式必须满足下图的要求, 1) 有效数据部分:包含N个AD Structure,每个AD Structure由Length,AD Type和AD Data组成。其中: Length:AD Type和AD Data的长度。AD Type:指示AD Data数据的含义。问题来了,我们怎么知道有哪些AD Type?他们又表示什么意义?可以查看,查看Nordic的SDK中的定义,AD type的定义在程序的“ble_gap.h”头文件中。定义如下: #define BLE_GAP_AD_TYPE_FLAGS 0x01 /**#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE 0x02 /**#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE 0x03 /**#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE 0x04 /**#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE 0x05 /**#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE 0x06 /**#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE 0x07 /**#define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME 0x08 /**#define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME 0x09 /**#define BLE_GAP_AD_TYPE_TX_POWER_LEVEL 0x0A /**#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE 0x0D /**#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C 0x0E /**#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R 0x0F /**#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE 0x10 /**#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS 0x11 /**#define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE 0x12 /**#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT 0x14 /**#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT 0x15 /**#define BLE_GAP_AD_TYPE_SERVICE_DATA 0x16 /**#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS 0x17 /**#define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS 0x18 /**#define BLE_GAP_AD_TYPE_APPEARANCE 0x19 /**#define BLE_GAP_AD_TYPE_ADVERTISING_INTERVAL 0x1A /**#define BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS 0x1B /**#define BLE_GAP_AD_TYPE_LE_ROLE 0x1C /**#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C256 0x1D /**#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R256 0x1E /**#define BLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID 0x20 /**#define BLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID 0x21 /**#define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA 0x3D /**#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA 0xFF /** 09-26 05:53