一. 声明
本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:
第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。
第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等
第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等
第四篇:传统蓝牙host介绍,主要介绍传统蓝牙的协议栈,比如HCI,L2CAP,SDP,RFCOMM,HFP,SPP,HID,AVDTP,AVCTP,A2DP,AVRCP,OBEX,PBAP,MAP等等一系列的协议吧。
第五篇:低功耗蓝牙controller介绍,主要介绍低功耗蓝牙芯片,包括物理层(PHY),链路层(LL)
第六篇:低功耗蓝牙host介绍,低功耗蓝牙协议栈的介绍,包括HCI,L2CAP,ATT,GATT,SM等
第七篇:蓝牙芯片介绍,主要介绍一些蓝牙芯片的初始化流程,基于HCI vendor command的扩展
第八篇:附录,主要介绍以上常用名词的介绍以及一些特殊流程的介绍等。
另外,开发板如下所示,对于想学习蓝牙协议栈的最好人手一套。以便更好的学习蓝牙协议栈,相信我,学完这一套视频你将拥有修改任何协议栈的能力(比如Linux下的bluez,Android下的bluedroid)。
------------------------------------------------------------------------------------------------------------------------------------------
CSDN学院链接(进入选择你想要学习的课程):https://edu.csdn.net/lecturer/5352?spm=1002.2001.3001.4144
蓝牙交流扣扣群:970324688
Github代码:https://github.com/sj15712795029/bluetooth_stack
入手开发板:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-22329603896.18.5aeb41f973iStr&id=622836061708
------------------------------------------------------------------------------------------------------------------------------------------
二. 蓝牙HCI Event汇总(部分)
在介绍蓝牙event之前我还是要啰嗦点,尽管前面的文章已经写了,但是不排除有人直接看到这份文档
HCI event是蓝牙芯片发送给协议栈的事件。HCI事件包的格式如下图所示:
Event code:唯一event编码,在后续的小节会介绍(是固定的)
Parameter Total Length:后续参数的长度
Parameter:event参数。
传统蓝牙EVENT(部分) | ||
序号 | EVENT | 描述 |
0x01 | Inquiry Complete Event | 搜索完成 |
0x02 | Inquiry Result Event | 搜索结果 |
0x03 | Connection Complete Event | 连接完成 |
0x04 | Connection Request Event | 连接请求 |
0x05 | Disconnection Complete | 断开完成 |
0x06 | Authentication Complete event | 授权完成 |
0x07 | Remote Name Request Complete event | 获取远端蓝牙名称完成 |
0x08 | Encryption Change event | 加密模式改变完成 |
0x09 | Change Connection Link Key Complete event | 改变连接的link key完成 |
0x0A | Master Link Key Complete event | 管理Link key完成 |
0x0B | Read Remote Supported Features Complete event | 读取远端设备feature完成 |
0x0C | Read Remote VersionInformation Complete event | 读取远端版本完成 |
0x0D | QoS Setup Complete event | Qos setup完成 |
0x0E | Command Complete event | 命令完成 |
0x0F | Command Status event | 命令状态消息 |
0x10 | Hardware Error event | 蓝牙芯片硬件错误 |
0x12 | Role Change event | 角色切换事件 |
0x13 | Number Of Completed Packets event | 完成封包个数 |
0x14 | Mode Change event | 模式改变 |
0x15 | Return Link Keys event | 返回link key |
0x16 | PIN Code Request event | PIN code请求 |
0x17 | Link Key Request event | Link key请求 |
0x18 | Link Key Notification event | Link key通知 |
0x19 | Loopback Command event | Loopback模式返回的事件 |
0x1A | Data Buffer Overflow event | 芯片buffer爆掉 |
0x1B | Max Slots Change event | 最大slot变化 |
0x1C | Read Clock Offset Complete event | 读取时钟偏移完成 |
0x1D | Connection PacketType Changed event | 连接封包类型变化 |
0x1E | QoS Violation event | Qos违规 |
0x22 | Inquiry Result with RSSI event | 带RSSI的搜索结果 |
0x2C | Synchronous Connection Complete event | SCO连接完成 |
0x2F | Extended Inquiry Result event | 带EIR的搜索结果 |
0x31 | IO Capability Request event | IO capability请求 |
0x32 | IO Capability Response event | IO capability回复 |
0x33 | User Confirmation Request event | SSP配对方式用户确认请求 |
0x36 | Simple Pairing Complete event | SSP配对完成 |