bluez 扫盲篇

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。




  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值