bluez 协议栈实现1-概述

源码基于
linux 3.0.35, imx6

1.蓝牙协议栈的实现方式


bluez 协议栈实现1-概述_第1张图片
蓝牙协议栈有三种实现模型,取决于三类产品各自所具有的不同功能和资源。
这三种类型是:寄居型、嵌入型和完全嵌入型。
1.在寄居式模型中,底层协议栈位于蓝牙设备中,高层协议栈位于主机中,两者通过主机控制器接口HCI进行交互通信。最常见的传输方式是USB和UART。
2.在嵌入式模型中,整个协议栈都位于蓝牙设备中,用户应用程序单独运行于主机上,这个模型对可用内存有限的设备是理想的选择。
3.在完全嵌入式模型中,整个协议栈和用户应用程序都在蓝牙设备中,这一模型要求应用程序相对简单,如蓝牙耳机就是这类模型的最好例子。

基于csr8510 a10的蓝牙适配器属于寄居式模型,在linux下,其对应的高层协议栈便是bluez。

refer to
基于Linux的蓝牙L2CAP及RFCOMM层协议的实现


2.bluez的各个层次及相应的代码位置


首先,通常说的bluez源码包括
a.内核里面的drivers\bluetooth (驱动)
b.内核里面的net\bluetooth(bluez协议栈的实现)
c.从http://www.bluez.org/download/下载的bluez-libs-xxx.tar.gz(应用程序库)

而bluez工具集是bluez-utils-xxx.tar.gz,里面的各个工具需要调用bluez-libs的函数
没有搞懂http://www.bluez.org/download/里面的bluez-5.28.tar.xz是干嘛用的,里面只有一个emulate目录,不知用于仿真啥的???
-----对于bluez4和之前的版本,会有bluez-4.101.tar.xz (应用层协议 zan)和bluez-utilsbluez-lib(应用层工具集
----对于bluez5,bluez-5.28.tar.xz里面包含了bluetoothd应用层协议 zan
和 bluetoothctl(应用层工具集)。bluez5里面引入了dbus功能,bluetoothd会在dbus上注册一个org.bluez总线,其他程序比如 bluetoothctl会通过向这个总线上发送消息而获取对应服务。
bluez 协议栈实现1-概述_第2张图片

需要知道的是目前bluez5(bluez5.28)实现的不是Bluetooth 5  ,bluez5实现的仍然是蓝牙4

3.bluez分析

参考
和菜鸟一起学linux之bluez学习记录1


你可能感兴趣的:(协议-bluez)