Bluetooth HCI简述
HCI 是 Host 与 Controller 交互的桥梁. HCI的数据格式有以下几种:
- Command
- ACL
- SCO
- EVENT
- ISO
Command
用于 Host 发送命令到 Controller. 如 Host 发送 HCI_Inquiry 命令使 Controller 进入 Inquiry 模式(用于发现周边的设备).
数据流向: Host --> Controller
数据组成: 由 header 和 parameters 组成. 总长度不超过258个字节, 其中前三个字节为header, 其余部分由数据参数组成.
- Header Size: 3 bytes
- Payload (Parameters) Size: 0 to 255 bytes
- Total Packet Size: 3 to 258 bytes
Header 的构成:
- 前两个字节组成了OPCODE
- OPCODE由Opcode Group Field(OGF)和Opcode Command Field(OCF)组成
- 高6位是OGF, 低10位bit是OCF
- 第三个字节表示数据包中的参数长度(不是参数个数)
ACL
用于 Host 和 Controller 之间的数据交互. 如播放音乐的数据传输.
数据流向: Host <--> Controller
数据组成: 由 header 和 data 组成, 前4个字节是 header, 规范中并没有明确提及data部分的固定长度, 但是根据 Data Total Length 为2字节来看, 最长的 data 不超过65535字节.
- Header Size: 4 bytes
- Payload (Data) Size: 可变
SCO
用于 Host 与 Controller 之间的同步数据流交互(几乎只用于实时的语音交流). 如拨打电话的语音数据.
数据流向: Host <--> Controller
数据组成: 由 header 和 data 组成, 规范中并没有明确提及包大小. 前三个字节是header, 仅有一个字节表示data的大小, 所以data部分最大也只能是255字节
- Header Size: 3 bytes
- Payload (Voice Data) Size: 0 to 255 bytes
- Total Packet Size: 3 to 258 bytes
Event
用于 Controller 通知 Host 存在事件发生. 如 Controller 发送 HCI_Inquiry_Complete 事件到 Host (表示 Inquiry 已经完成).
数据流向: Controller --> Host
数据组成: 由 header 和 params 组成. 总长度不超过257个字节, 其中前两个字节为 header, 其余部分由数据参数组成.
- Header Size: 2 bytes
- Payload (Parameters) Size: 0 to 255 bytes
- Total Packet Size: 2 to 257 bytes
ISO

文章标题:Bluetooth HCI简述
文章作者:zabbits
文章链接:https://zabbits.com/posts/bluetooth/hci[复制]
最后修改时间:
商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。