bluez 扫盲篇

bluez 扫盲篇bluez是linux官方蓝牙协议栈。组成bluez分为两个部分:内核代码和用户态程序及工具集内核代码:bluez核心协议和驱动程序等模块组成用户态程序及工具集:应用程序接口和bluez工具集独立模块:linux内核蓝牙子系统核心L2CAP和SCO音频内核层RFCOMM,BNEP,CMTP和HIDP内核实现HCIUART,USB

bluez是linux官方蓝牙协议栈。
组成
bluez分为两个部分:内核代码和用户态程序及工具集
内核代码:bluez核心协议和驱动程序等模块组成
用户态程序及工具集:应用程序接口和bluez工具集
独立模块:
linux内核蓝牙子系统核心

L2CAP 和 SCO 音频内核层
RFCOMM, BNEP, CMTP 和 HIDP内核实现
HCI UART, USB, PCMCIA 和虚拟设备驱动
通用蓝牙和SDP库和守候进程
配置和测试小工具
协议解码和分析工具

 
HCI 主机控制接口
RFCOMM 基于ETSI 07.10规范的串口仿真协议
OBEX是一种类似于HTTP的协议
LMP链路管理协议
TCS 电话控制协议
SCO 面向连接
ACL 无连接
L2CAP 逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol)
BNEP 蓝牙网络封装协议
Bluetooth Network Encapsulation Protocol
PCMCIA 网卡的一种规范

实现
1.内核
软件级别的协议从HCI层开始。查看源码,你会发现socket函数的第一个参数都是
PF_BLUETOOTH,为什么呢?
因为bluez对各层协议的实现是依托于socket,它首先创建一个新的socket中的协议PF_BLUETOOTH,即在网络协议列表中添加PF_BLUETOOTH这一项。
补充:
函数原型 int socket(int domain, int type, int protocol);

domain指定应用程序使用的通讯协议的协议族
type指定要创建的套接字类型
protocol指定应用程序所使用的通讯协议

Bluetooth协议实现在内核源代码 /net/bluetooth中。包括hci,l2cap,hid,rfcomm,sco,SDP,BNEP等协议的实现。
驱动程序放在 /driver/bluetooth中,包含Linux kernel对各种接口的Bluetooth device的驱动。例如:USB接口,串口等。

2.用户应用
应用程序于kernel最方便的交流通道是ioctl(),但这不直观,于是就包装成了API。




今天的文章bluez 扫盲篇分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/5850.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注