Linux下开放的蓝牙协议栈主要包括IBM公司的BlueDrekar,Nokia公司的Affix, Axis公司的OpenBT和官方协议栈BlueZ。我们主要对Bluez进行探讨。
<wbr></wbr>
BlueZ基础代码均是由Maxim Krasnyansky完成的。包括:HCI,L2CAP,RFCOMM和基本socket的实现。他就职于Qualcomm(高通)。Marcel Holtmann开发层的协议和应用,包括:BNEP, CMTP等。当然,这些中也有Maxim Krasnyansky的参预。有部分代码由Nokia提供的。
Bluez是如何实现Bluetooth协议栈的呢? 它分2部分实现:
<wbr></wbr>
1.Kernel层实现:
正如上一篇所谈到的,bluetooth协议栈有多层结构,最底层的硬件协议在硬件中就已经实现了。(例如broadcom的芯片中,底层硬件协议已经包含于芯片之中了)。软件级别的协议实现,从HCI这一层起就可以了。 BlueZ对各层协议的实现是依托于Socket的。BlueZ首先创建了一个新的Socket中的协议--PF_BLUETOOTH<wbr>(AF_BLUETOOTH=31)</wbr>.
(也就是说,Socket()的第一个参数:domain必须是:PF_BLUETOOTH<wbr></wbr>)。这也意味着,地址类型需要使用Bluetooth所定义的。
<wbr></wbr>
其实很简单,就是在net_families(网络协议列表)中添加了PF_BLUETOOTH这一项。如果对Linux Kernel有了解的话,就知道这个注册动作一定在Bluetooth init部分作的。
同样,各个协议层(如:HCI,L2CAP,HID等)都将自己的行为规范添加到PF_BLUETOOTH协议中。
<wbr></wbr>
2.应用程序层实现:
虽然Kernel层已经将Bluetooth协议栈完全实现了,但如果要使用起来,还是非常不方便的。毕竟应用程序与kernel最方便的交流通道就是ioctl().这非常不直观。于是,BlueZ又提供了一套API,这个API帮助开发者方便的与Kernel层协议打交道。当然,这些API底层的实现其实就是ioctl.
<wbr></wbr>
BlueZ的实现,基本就是这样了。下面咱们具体研究如何使用BlueZ所提供的这套API。
分享到:
相关推荐
实战Linux Bluetooth编程, 用了bluez,有图有真相
摘 要:基于对Linux 下蓝牙协议栈BlueZ 源代码的分析,给出BlueZ的组织结构和特点。分析蓝牙USB 传输驱动机制和数据处理过程, 给出实现蓝牙设备驱动的重要数据结构和流程,并总结Linux 下开发蓝牙USB 设备驱动的...
bluez协议栈移植.zip
Bluez协议栈的交叉编译过程,详细地讲解编译过程与步骤,同时指出在编译过程中遇到的常见错误,难得的指导资料!
Linux下Bluez的编程实现
Bluez作为当前最成熟的开源蓝牙协议栈,在Linux的各大发行版中已经得到了广泛的应用。在桌面环境下,使用Bluez应该已经没有太大的问题,本文的主要目的是介绍在嵌入式平台上,搭建和配置Bluez的各个Profile运行所需...
linux平台上交叉编译移植蓝牙协议栈Bluez
bluez蓝牙协议栈交叉编译移植教程
Bluez 蓝牙协议栈代码 包含HCI层接口,以及上层应用协议代码
蓝牙模块服务多种多样,这个小demo实现了linux下建立蓝牙服务端的demo,并带了一个客户端测试。 使用时,可通过两台设备,分别作为服务端可客户端,连接时填入对方地址即可开启测试。服务端建立后,客户端可通过...
ARM平台上蓝牙协议栈Bluez的移植使用和配置 ARM平台上蓝牙协议栈Bluez的移植使用和配置
希望能给学习bluez的蓝牙爱好者一些帮助
go-bluetooth, 在 bluez DBus接口上,Golang蓝牙客户端 蓝牙基于 bluez DBus接口的Golang蓝牙客户端请参阅这里参考 https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc 。状态当前的API不稳定,将来可能会...
Linux Bluetooth编程原理和实践
bluez-libs-2.25蓝牙协议栈的库
蓝牙官方协议栈BlueZ 4.98,它被linux 和 android采用,拥有最好的兼容性
使用脚本自动编译蓝牙协议栈及其依赖库,下载后直接在目录中运行 ./autobuild.sh 即可自动编译。包括有:bluez-5.54.tar 、bluez-libs-3.36.tar、bluez-utils-3.36.tar、dbus-1.12.16.tar、expat-2.2.6.tar、gettext...
BlueZ,Linux Bluetooth Development,Linux 蓝牙开发
蓝牙协议栈BlueZ 的移植与开发 欢迎各位下载