首页 > 代码库 > Linux Bluetooth内核分析

Linux Bluetooth内核分析

Linux提供了对Bluetooth的支持,核心代码位于net/bluetooth

1. 初始化

主要由subsys_initcall调用函数bt_init()来完成

bt_init() -> bt_sysfs_init() -> sock_register(&bt_sock_family_ops) -> hci_sock_init() -> l2cap_init() -> sco_init()

bt_sock_family_ops包含了蓝牙套接字创建函数bt_sock_create()
hci_sock_initl(),2cap_init(),sco_init()则分别完成了hci/l2cap/sco类型传输协议的初始化

之后,module_init函数(Down Shows)初始化rfcomm/bnep/cmtp/hidp类型传输协议的初始化(avdtp未实现)
rfcomm_init(), bnep_init(), cmtp_init(), hidp_init()

2. hci部分

HCI, 主机控制接口(Host Controller Interface), 是蓝牙协议栈的重要部分, 相应的规范位于Core Version 4.1的Part E

HCI提供了对控制器的统一的命令接口,用来沟通Host和Module(Control),它的位置比较特殊,如下图所示

实战Linux <wbr>Bluetooth编程(三) <wbr>HCI层编程