打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
bluez source阅读笔记

Bluetooth 规范支持针对 Bluetooth HCI 数据分组的 UART(通用异步接收器/传送器)和 USB 传输机制。BlueZ 栈对这两个传输机制(drivers/Bluetooth/)都支持。

BlueZ BNEP(Bluetooth 网络封装协议)实现了 Bluetooth 上的以太网仿真,这使 TCP/IP 可以直接运行于 Bluetooth 之上。BNEP 模块(net/bluetooth/bnep/)和用户模式 pand 后台进程实现了 Bluetooth 个人区域网(PAN)。BNEP 使用 register_netdev 将自己作为以太网设备注册到 Linux 网络层,并使用上面为 WLAN 驱动程序描述的 netif_rx 来填充 sk_buffs 并将其发送到协议栈。

BlueZ RFCOMM(net/bluetooth/rfcomm/) 提供 Bluetooth 上的串行仿真,这使得串行端口应用程序(如 minicom)和协议(如点对点协议(PPP))不加更改地在 Bluetooth 上运行。RFCOMM 模块和用户模式 dund 后台进程实现了 Bluetooth 拨号网络。下面的列表给出了配置 Bluetooth 上的各种协议服务所必需的 BlueZ 模块、实用程序、后台进程以及配置文件。
简单的理解是:模块是内核支持的,由linux kernel 打bluez-kernel完成,用户程序则可以通过安装bluez-libs,bluez-utils得到;

而且值得注意的是:bnep,rfcomm都是蓝牙协议speciality,pand,dund都是蓝牙的profile。可以猜测还有l2cap模块,至于sdp为什么实现为用户程序就搞不懂了?

insmod serial_cs
insmod bluez
insmod l2cap
insmod hci_uart
insmod bnep (for pand)
insmod rfcomm (for dund)

BlueZ 用户空间后台进程、实用程序以及配置文件:
hciattach ttySx any [baud_rate] [flow]
hciconfig -a:检查 HCI 接口。
hcitool -a hci0 scan ‘flush:发现其他设备。
hcidump:HCI 嗅探器。
hcid:HCI 后台进程。
/etc/bluetooth/hcid.conf:hcid 所用的 HCI 后台进程配置文件,它指定了链接模式(主或从)、链接策略、询问和扫描模式,等等。
/etc/bluetooth/pinDB:BlueZ PIN 数据库。
hcidump:Service Discovery Protocol 后台进程。
pand:在 Bluetooth 上运行 TCP/IP(–listen 用于服务器,–connect 用于客户机)。
/etc/bluetooth/pan/dev-up:pand 在激活 TCP/IP 时调用此脚本。此脚本能够包含一个类似于 ifconfig bnep0 的命令,用以为 Bluetooth 接口配置 IP 地址。
hcidump:在 Bluetooth RFCOMM 上运行 PPP(–listen 用于服务器,–connect 用于客户机)。

具有内置 CSR Bluetooth 芯片组的母板

现在,关注一下具有内置 Bluetooth 芯片组的设备上的 Bluetooth 网络数据流。考虑一种拥有内置 CSR Bluetooth 芯片组的手持设备与使用 UART 接口的系统的连接。针对 UART 接口而言,在 Bluetooth 设备和系统之间传输 HCI 数据分组的可用协议有 BlueCore Serial Protocol (BCSP)、H4/UART 和 H3/RS232。而 H4 充当通过 UART 传输 Bluetooth 数据的标准方法。UART 是在规范中定义的来自 CSR 的专有 BCSP 协议,支持错误校验和重传。BCSP 用在基于 CSR BlueCore 芯片的非 USB 设备上,包括 PCMCIA 和 CF 卡。BlueZ 支持 BCSP 和 H4。

这个母板的 UART 通道使用的传统串行驱动程序可以从 BlueZ UART 传输驱动程序上收发数据。如果使用 BSCP 协议将 CSR 芯片设计为封装 HCI 数据分组,您必须使用 hciattach (hciattach ttySx bcsp) 通知 BlueZ 链接驱动程序,在这里 x 是连接到 CSR 芯片组的 UART 通道号。现在 hci_uart 与 CSR 芯片交互并且传送 Bluetooth 数据往返于 BlueZ 栈。
insmod serial_cs
insmod bluez
insmod l2cap
insmod hci_uart
insmod bnep (for pand)
insmod rfcomm (for dund)

hciattach ttySx bcsp [baud_rate] [flow]

hciconfig -a

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
linux下使用蓝牙设备 bluetooth hciconfig hcitool
Android Bluetooth
BlueTooth: 蓝牙核心协议与蓝牙芯片结构
How to run Bluez
Bluetooth协议
Android上成功实现了蓝牙的一些Profile
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服