Android 蓝牙驱动 概要

http://blog.sina.com.cn/s/blog_6fba73770100nme8.html

http://blog.csdn.net/jmq_0000/article/details/7379802


在linux中,蓝牙设备驱动是网络设备,使用网络接口。
蓝牙设备的网络协议,所定义的协议族为:
AF_BLUETOOTH (31)
蓝牙协议部分头文件:
include/net/bluetooth/hci_core.h
include/net/bluetooth/bluetooth.h
蓝牙协议源代码文件:
net/bluetooth/*
蓝牙系统的协议和驱动程序在内核进行menuconfig配置时,配置选项为:networking support >bluetooth subsystem support >bluetooth device drivers.
蓝牙协议对应的配置文件为:net/bluetooth/Kconfig;蓝牙系统驱动程序对应的配置文件为:drivers/bluetooth/Kconfig
在蓝牙协议部分,包含了主控制接口(HCI),SCO(SCO audio links)模块,L2CAP(Logical Link Control and Adaptation Protocol)模块,BNEP模块(蓝牙网络封装协议)等,BNEP等模块内容包含在其中的几个子目录中。
蓝牙驱动中的不同接口文件:
hci_vhci.c 蓝牙虚拟主控制器驱动程序;
hci_uart.c 蓝牙串口驱动程序;
btusb.c    蓝牙usb驱动程序;
btsdio.c   蓝牙sdio驱动程序;


 Android 的蓝牙协议栈使用BlueZ实现来对GAP, SDP以及RFCOMM等应用规范的支持,并获得了SIG认证。由于Bluez使用GPL授权, 所以Android 框架通过D-BUS IPC来与bluez的用户空间代码交互以避免使用未经授权的代码。             

 蓝牙的驱动程序一般都通过标准的HCI控制实现。但根据硬件接口和初始化流程的不同,又存在一些差别。这类初始化动作一般是一些晶振频率,波特率等基础设置。比如CSR的芯片一般通过BCSP协议完成最初的初始化配置,再激活标准HCI控制流程。对Linux来说,一旦bluez可以使用HCI与芯片建立起通信(一般是hciattach + hciconfig),便可以利用其上的标准协议(SCO, L2CAP等),与蓝牙通信,使其正常工作了。



你可能感兴趣的:(Linux,Android)