蓝牙角色

主机:负责连接从机
从机:负责发送广播数据或给从机连接
连接成功后可以相互通信

广播数据组成

广播数据 包含 广播包(必须)和应答包(非必须,视应用需要)
广播包或者应答包都是31字节。分为有效数据和无效数据。
有效数据:实际广播出去的数据
无效数据:全0数据
一条 广播包中可以有多条广播数据(structure
一条广播数据包含:长度数据类型实际数据
长度:数据类型的长度+实际数据长度。
数据类型 每个类型都有对应的值表示。在下一小节具体说明。
比如一个广播包中只有2条数据(只占10个字节),则剩余21个字节用0补全(不需要手动)(无效数据)
对广播包解析时不需要对无效数据进行解析

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_android 蓝牙广播接收时间间隔

数据类型(AD Type)

[注:] 有些类型没弄懂,弄懂了会继续更新上去

Flags (0x01)

用来标识设备 BLE 物理连接的功能

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_数据类型_02


说明:

bit0:有限的可发现模式

bit1:普通的发现模式

Bit2:不支持经典蓝牙

Bit3:支持经典蓝牙和低功耗蓝牙(对于controller)

Bit4:支持经典蓝牙和低功耗蓝牙(对于Host)

Bit5-7:保留

Service UUID (0x02-0x07)
广播数据中一般都会把设备支持的 GATT Service 广播出来,用来通知主机本设备所支持的 Service
此类型有6种形式

16bitsUUID

不完整的16bits uuid

完整的16bits uuid

32bitsUUID

不完整的32bits uuid

完整的32bits uuid

128bitsUUID

不完整的128bits uuid

完整的128bits uuid

LOCAL_NAME (0X08,0X09)
蓝牙设备名字(有简写和完整两种)

当使用简写设备名称时,名字需从全称第一个字符开始,连续的N个字符。如全称为“BLE_Device_name”,则缩写则可以定义为“BLE_Dev”,“BLE_Device”

type


Short local name

0x08

Complete Local name

0x09

MANUFACTURER SPECIFIC DATA(0xFF)

制作商特定的信息(自定义信息)

前两个字节包含公司的标识码,后紧跟数据

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_数据类型_03


TX POWER LEVEL (0x0A)

当次数据包的传输功率

可根据下列公式计算数据包的传输路径损失

pathloss=tx_power_level - RSSI

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_设备名_04

SECURE SIMPLE PAIRING OUT OF BAND

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_android 蓝牙广播接收时间间隔_05

SECURITY MANAGER OUT OF BAND

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_android 蓝牙广播接收时间间隔_06

SECURITY MANAGER TK VALUE

使用带外机制来传递TK值

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_android 蓝牙广播接收时间间隔_07

SLAVE CONNECTION INTERVAL RANGE

连接间隔范围

最小值取决于外设的电池考虑,最大连接间隔取决于外设上可用的缓冲器 (个人理解为外设的处理时间)

主机连接时,应使用该连接间隔

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_设备名_08


数据有4个字节,前两字节定义最小连接间隔,后两字节定义最大连接间隔

connInterval = Conn_Interval_Min (Conn_Interval_Max)* 1.25 ms

Conn_Interval_Min范围:0x0006到0x0C80

Conn_Interval_Max范围:0x0006 到0x0C80

值最小为61.25=7.5ms 最大为32001.25=4sSERVICE SOLICITATION

服务请求

发送此广播类型时,从机要设置为无定向模式和可发现模式之一

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_数据类型_09

SERVICE DATA

服务数据

由服务UUID和与该服务关联的数据组成

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_android 蓝牙广播接收时间间隔_10

APPEARANCE

定义设备外观

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_设备名_11

PUBLIC TARGET ADDRESS

公共地址

定义广播一个或多个预期收件人的地址

用于避免绑定设备不必要地响应针对另一个绑定设备的广告的情况

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_设备名_12

RANDOM TARGET ADDRESS

随机地址

具体功能与PUBLIC TARGET ADDRESS一致

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_数据_13


ADVERTISING INTERVAL

广播间隔

数据:2字节,单位为0.625ms

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_数据类型_14

LE BLUETOOTH DEVICE ADDRESS

本地设备地址和地址类型

数据:前6字节为设备地址

最后一字节的bit0表示为随机地址还是公共设备地址

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_数据类型_15


LE ROLE

蓝牙角色

数据:1字节

0x00:从机 0x01:主机

0x02:主从机,建立连接时首选从机角色

0x03:主从机,建立连接时首选主机角色

其他:保留备用

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_android 蓝牙广播接收时间间隔_16


UNIFORM RESOURCE IDENTIFIER(0x24)

广播URI,采用UTF8格式

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_数据_17


例如:广播 “http://www.bluetooth.com”

则用捉包工具可捉到

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_android 蓝牙广播接收时间间隔_18


LE SUPPORTED FEATURES

设备支持的特性

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_android 蓝牙广播接收时间间隔_19

CHANNEL MAP UPDATE INDICATION

只能出现在包含AUX_SYNC_IND PDU的包的扩展报头中

android 蓝牙广播接收时间间隔 蓝牙广播数据内容长度_设备名_20

BIGINFO
包含同步接收器同步到正在由同步广播器广播的大信号所需的信息

BROADCAST_CODE
加密的广播代码的字符串格式

蓝牙学习目录

【注】:资料会持续更新,大神们看到有误可以留言更正,欢迎来踩