一、H4 串口设置
- 数据位:8bit
- 奇偶校验位:无
- 停止位:1bit
- 硬件流控:RTS/CTS
二、hci 数据类型
- 0x01 - HCI CMD: 由蓝牙协议栈发送给芯片的命令
- 0x02 - HCI ACL: 蓝牙协议栈跟蓝牙芯片双向交互的普通数据
- 0x03 - HCI SCO: 蓝牙芯片跟蓝牙协议栈双向交互的通话/语音识别等音频数据
- 0x04 - HCI EVENT: 由蓝牙芯片上报给蓝牙协议栈的事件
- 0x05 - HCI ISO:(core5.2添加)蓝牙协议栈跟蓝牙芯片双向交互的 LE audio 等音频数据
1. cmd
a. OGF
- 0x01: Link Control commands,控制蓝牙芯片跟remote沟通
- 0x02: Link Policy commands,比如转换角色等
- 0x03: Controller and Baseband commands,控制本地芯片跟基带,如 reset 本地芯片等
- 0x04: Informational parameters,读取信息,比如读取本地芯片的LMP版本,支持的command, 蓝牙地址等
- 0x05: Status parameters,状态参数,比如读取RSSI等
- 0x06: Testing commands,测试命令,比如让芯片进入测试模式(DUT,device under test)
- 0x08: LE Controller commands,BLE 的命令
- 0xFF: Vendor-specific Debug commands,芯片厂商为了扩展core文档的HCI command定义
b. OCF
每个 OGF 下都有一堆的 OCF 定义
c. Parameter Total Length
后续参数的长度,不包括OGF,OCF和自己
d. Parameter
不同 command 对应的参数不同
2. acl
a. Handle
连接句柄,对应某一个对端设备,用于蓝牙连接后跟对端设备交互ACL数据,ACL为上层L2CAP层的应用数据
b. PB flag
上层数据(L2CAP),是否是分包数据:0b10 - 首包,0b01 - 后续包
c. BC flag
是否为广播:0b00 - 点对点,0b01 - BR/EDR 广播,BLE不使用此字段
d. Data total length
后续 Data 长度,不包括handle,PB flag, BC flag 和 自己
3. sco
a. Handle
连接句柄,对应某一个对端设备,用于蓝牙连接后跟对端设备交互SCO音频数据
b. Packet_Status_Flag
c. Data_Total_Length
后续 Data 的长度
4. event
a. Event code
唯一的 event编码
b. Parameter Total Length
后续参数的长度,不包括Event Code和自己
Parameter
每个 Event 对应的参数不同
|