PSOC BLE中如何解析广播数据或者扫描响应数据

2017年9月28日 3969点热度 1人点赞 0条评论

1、广播数据和扫描响应数据的格式
1-1 广播数据格式

这些都是SIG蓝牙组织规定的标准广播数据格式,一般BLE广播数据的开头都是0x020106,后面接着就是设备名、服务ID等广播数据,从上图中可以看出0x02是长度,0x01是SIG规定的指定值,0x06是这个0x01所代表的标志的具体值。紧接着后面的数据都是遵循这样的格式,即长度+SIG规定的标志值+SIG规定的标志值数据(其中长度等于SIG规定的标志值的长度和SIG规定的标志值所代表的数据长度相加)

1-2    扫描响应数据格式

这些也是SIG蓝牙组织规定的标准扫描响应数据格式,格式跟广播数据的格式是一样的。

2、广播数据和扫描响应数据分析

从上面的1章节中可以看到不管是广播数据还是扫描响应数据,其数据格式都是一样的,都是长度+SIG规定的标志值+SIG规定的标志值所表示的数据(其中长度等于SIG规定的标志值的长度和SIG规定的标志值所代表的数据长度相加)因此,如果我们要分析广播数据或者扫描响应数据,只要判断SIG规定的标志值是什么就可以知道,广播的数据里面有什么信息。其中SIG规定的标志值,如下表所示:

SIG规定的标志 CYPRESS规定的枚举名 枚举值
Flags CYBLE_GAP_ADV_FLAGS 0x01
Incomplete List of 16-bit Service Class UUIDs CYBLE_GAP_ADV_INCOMPL_16UUID 0x02
Complete List of 16-bit Service Class UUIDs CYBLE_GAP_ADV_COMPL_16UUID 0x03
Incomplete List of 32-bit Service Class UUIDs CYBLE_GAP_ADV_INCOMPL_32_UUID 0x04
Complete List of 32-bit Service Class UUIDs CYBLE_GAP_ADV_COMPL_32_UUID 0x05
Incomplete List of 128-bit Service Class UUIDs CYBLE_GAP_ADV_INCOMPL_128_UUID 0x06
Complete List of 128-bit Service Class UUIDs CYBLE_GAP_ADV_COMPL_128_UUID 0x07
Shortened Local Name CYBLE_GAP_ADV_SHORT_NAME 0x08
Complete Local Name CYBLE_GAP_ADV_COMPL_NAME 0x09
Tx Power Level CYBLE_GAP_ADV_TX_PWR_LVL 0x0A
Class of Device CYBLE_GAP_ADV_CLASS_OF_DEVICE 0x0D
Simple Pairing Hash C CYBLE_GAP_ADV_SMPL_PAIR_HASH_C 0x0E
Simple Pairing Randomizer R CYBLE_GAP_ADV_SMPL_PAIR_RANDOM_R 0x0F
Device ID CYBLE_GAP_ADV_DEVICE_ID 0x10
Security Manager TK Value CYBLE_GAP_ADV_SCRT_MNGR_TK_VAL 0x10
Security Manager Out of Band Flags CYBLE_GAP_ADV_SCRT_MNGR_OOB_FLAGS 0x11
Slave Connection Interval Range CYBLE_GAP_ADV_SLAVE_CONN_INTRV_RANGE 0x12
List of 16-bit Service Solicitation UUIDs CYBLE_GAP_ADV_SOLICIT_16UUID 0x14
List of 128-bit Service Solicitation UUIDs CYBLE_GAP_ADV_SOLICIT_128UUID 0x15
Service Data - 16-bit UUID CYBLE_GAP_ADV_SRVC_DATA_16UUID 0x16
Public Target Address CYBLE_GAP_ADV_PUBLIC_TARGET_ADDR 0x17
Random Target Address CYBLE_GAP_ADV_RANDOM_TARGET_ADDR 0x18
Appearance CYBLE_GAP_ADV_APPEARANCE 0x19
Advertising Interval CYBLE_GAP_ADV_ADVERT_INTERVAL 0x1A
LE Bluetooth Device Address CYBLE_GAP_ADV_LE_BT_DEVICE_ADDR 0x1B
LE Role CYBLE_GAP_ADV_LE_ROLE 0x1C
Simple Pairing Hash C-256 CYBLE_GAP_ADV_SMPL_PAIR_HASH_C256 0x1D
Simple Pairing Randomizer R-256 CYBLE_GAP_ADV_SMPL_PAIR_RANDOM_R256 0x1E
List of 32-bit Service Solicitation UUIDs CYBLE_GAP_ADV_SOLICIT_32UUID 0x1F
Service Data - 32-bit UUID CYBLE_GAP_ADV_SRVC_DATA_32UUID 0x20
Service Data - 128-bit UUID CYBLE_GAP_ADV_SRVC_DATA_128UUID 0x21
3D Information Data CYBLE_GAP_ADV_3D_INFO_DATA 0x3D
3、广播数据和扫描响应数据分析---代码实现

4、空中的广播数据或扫描响应数据的处理---代码实现
    当我们需要处理周边BLE设备的广播数据或者扫描响应数据时,可以这样处理如下:

转载至:http://ececdaf4.wiz03.com/share/s/3IXdHQ3P5k-v2nS-fl33REKL3CfYbM3VQ4hA2IX99w1e3G4S

龙魂

本站点用于记录工作及学习中遇到的问题, 也希望本站记录对于同样需要的人带来帮助。 如有问题可发邮件:zp@wlzs.cn