Bluetooth在android中的实现和开发

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Bluetooth socket app User space Kernel space
TCP/IP
PPP
rfcomm.ko krfcommd bnep.ko kbnepd
Hidp.ko Transport layer Network layer
Bluetooth.ko (core socket sysfs)
Bluetooth 其余知识
两种链路类型: 面向连接的同步链路(SCO) 面向无连接的异步链路(ACL)。 三种节能状态, 停等(Park)状态 保持(Hold)状态 呼吸(Sniff)状态 三种纠错方案 1/3前向纠错(FEC) 2/3前向纠错 自动重发(ARQ) 在链路层中,蓝牙系统提供了认证、加密和密钥管理等功能。 每个用户都有一个个人标识码(PIN),它会被译成128bit的链路密钥 (Link Key)来进行单双向认证。一 旦认证完毕,链路就会以不同长度的密码(Encryphon Key)来加密(此密码以shit为单位增减,最大 的长度为128bit)链路层安全机制提供了大量的认证方案和一个灵活的加密方案(即允许协商密码的 长度)
Bluetooth Core System Architecture
Bluetooth Core System Architecture
蓝牙技术的系统结构分为三大部分:底层硬件模块、中间协议层和高层应用。 底层硬件部分包括无线跳频(RF)、基带(BB)和链路管理(LM)。 RF层 通过2.4GHz无需授权的ISM频段的微波,实现数据位流的过滤和传输,本层协议主要定 义了蓝牙收发器在此频带正常工作所需要满足的条件。 基带 负责跳频以及蓝牙数据和信息帧的传输。 链路管理 负责连接、建立和拆除链路并进行安全控制。 LM (Link Manager) 层是蓝牙协议栈的链路管理层协议, 他负责将上层HCI 命令翻译成基 带能接受的操作, 建立ACL (数据) 和SCO (语音) 链接, 以及使蓝牙设备进入节能状态的工 作模式等。 LC (Link Control) 层负责在一批数据包传送期间, 响应上层LM 命令(如执行建立数据包的 传输链路, 维持链路等功能的LM 命令)。 HCI 位于蓝牙系统的L2CAP(逻辑链路控制与适配协议)层和LMP(链路管理协议)层之间 的一层协议。HCI为上层协议提供了进入LM的统一接口和进入基带的统一方式。 蓝牙的SIG规定了四种与硬件连接的物理总线方式:USB、RS232、UART和PC卡
模块及应用程序接口
模块及应用程序接口
(1)HCI层接口(Host Controller Interface) 主机控制接口(HCI)为主机提供了直接控制蓝牙模块的方法和途径。通过HCI把蓝牙模块 和主机连接在一起。HCI模块由HCI事件管理、HCI命令管理、HCI ACL/SCO数据传输、HCI传 输层API、向上层输出的API模块组成。HCI Firmware通过访问基带命令、链路管理器命令、 硬件状态寄存器、控制寄存器、事件寄存器实现对蓝牙硬件的HCI命令。 (2) L2CAP协议层(Logical Link Control and Adaptation Protocol) 逻辑链路控制与适配协议(L2CAP)是数据链路层的一部分,它向上层提供面向连接和无连 接的服务。 (3) RFCOMM及其接口 RFCOMM是一个基于ETST标准TS 07.10的传输协议,提供了对RS-232串行接口的仿真。它在 两个蓝牙设备之间同时最多提供60条连接,最大可以接收/发送32KB大小的数据分组。 (4)SDP及其接口 服务发现协议(SDP)是蓝牙框架的一个关键部分,它由服务发现代理(SDA)、服务发现 服务器(SDS)、服务数据库管理器(SDM)三个模块组成。 (5) BNEP 网络封装协议(Bluetooth Network Encapsulation Protocol ) 该协议对上层口协议提供了类似于以太网的接口。对于IEEE802.3/Ethemet封装支持的网络 协议,蓝牙网络封装均支持。BNEP协议把这些网络 协议包封装起来,直接通过蓝牙I2CAP 协议进行无线传输。蓝牙网络封装主要应用在蓝牙个人无线局域网(PAN)中,PAN应用是指 由两个或者更多的设备 形成一个特定网络,而且这些设备能通过一个网络接入点来访问远 程网络 (6) AVDTP &AVCTP AVDTP: Audio/Video Distribution Transport Protocol AVCTP: Audio/Video Control Transport Protocol
SDP 发现服务
这个模型分为三个过程:设备发现过程,设备名字发现过程和SDP服务发现
SDP由三大模块组成: 链路维护模块:完成SDP链路的建立,参数配置和拆链。 PDU收发模块:完成请求PDU的封装发送,收到PDU后以socket通讯方式交给SDP解析服务器完成。 SDP解析服务器:完成收到的PDU的解析,对于请求PDU检索数据库得到响应数据后返回给PDU收 发模块,对于响应PDU解析出的结果直接发送给应用程序。
HCI协议的作用
HCI协议提供了统一访问蓝牙控制器的能力。 主机控制器以HCI命令的形式提供了访问蓝牙硬 件的基带控制器、链路管理器、硬件状态寄存 器、控制寄存器以及事件寄存器的能力,所有 这些功能都要通过内置于蓝牙硬件内部的HCI Firmware来实现。主机通过HCI接口向主机控制 器内的HCI Firmware发送HCI命令,HCI Firmware 再通过基带命令、链路管理器命令、硬件状寄 存器、控制寄存器以及事件寄存器完成该HCI命 令,从而实现对蓝牙硬件的控制。
High Layer
request confirm response indication
L2CAP
request confirm response indication
Low Layer(BB or HCI)
L2CAP的层间操作
RFCOMM 协议层
RFCOMM提供对RS-232串口的仿真,包括对数据信号线和非数据信号线的仿真。它既可以仿真 两个设备之间的多个串口,也可以支持多个设备之问的多串口仿真,同时RFCOMM中还提供 了对空调制解调器的仿真。 1.RFCOMM对九针RS-232串口的仿真 RFCOMM提供了对九针RS-232串口的仿真,包括数据信号线和非数据信号线。 2.多串口仿真 两个数据终端设备之间通过RFCOMM通信,可以打开多达60个仿真串口,但是实际打开串口 数还要视设备生产商的具体实现以及实际需要而定。各仿真串口之间通过数据链路连接标示 符DLCI(Data Link Connection Identifier)加以区分,其中DLCI_0用于指示控制信道,DLCI_1不可用, 而DLCI_62和DLCI 63为保留标示符
L2CAP 协议层
L2CAP协议是一个为高层协议屏蔽基带协议的适配协议,位于基带协议之上,属于数据链路层,为高层提供面 向连接和面向无连接的数据服务,完成协议复用、分段和重组、服务质IQoS(Quality Of Service)传输以及组抽象 等功能: (1)协议复用:多个高层协议共享一个公共的物理连接,从逻辑上看每个协议都有自己独立的数据通道,但由于 基带协议不能识别任何高层协议,所以L2CAP必须支持上层协议复用,它能区分诸如服务发现协议、RFCOMM协 议、电话控制协议等高层协议。 (2)分段与重组:与有线的物理媒质相比,蓝牙基带协议数据包的大小是有限的。最大的基带包只能传输341字节 的信息,这就限制了高层协议带宽的有效使用,因此较大的L2CAP包必须分解成小的基带包来发送。同样,在接 收方,必须将多个基带包重组为一个完整的L2CAP数据包。 (3)服务质量:在L2CAP建立连接的过程中允许改变两台蓝牙设备间的服务质量,每个L2CAP实体必须监视协议使 用的资源并保证服务质量的实现。 (4)组管理:蓝牙的基带协议支持微微网,即一组设备使用同一时钟同步跳频,L2CAP协议的组提取功能可以有 效地将协议的组映射为基带的微微网,以避免高层协议为了有效的管理组而必须与基带协议以及链路管理器直 接联系。
l2cap.ko Logical linker control and adaption layer Hci_uart.ko Hci_usb.ko Host control interface layer
sco.ko Hci_vhci.ko
Bluetooth ChipSet
蓝牙协议体系结构
BlueZ-util 用户区 socket Bluetooth application
Bluetooth Introduce
张文
zhangwen363@
Bluetooth Overview
• • • • • • • Bluetooth Core System Architecture Bluetooth Interface BlueZ Android Bluetooth Architecture Android A2dp Profile Android HFP and HSP Profile Android PAN Profile
பைடு நூலகம்lueZ介绍
• BlueZ 是官方 Linux Bluetooth栈,由主机控 制接口(Host Control Interface ,HCI)层、 Bluetooth协议核心、逻辑链路控制和适配 协议(Logical Link Control and Adaptation Protocol,L2CAP)、SCO 音频层、其他 Bluetooth 服务、用户空间后台进程以及配 置工具组成。 • BlueZ以标准socket形式封装了hci、l2cap和 rfcomm协议,使得应用调用更加方便。 • 参考/
内核区
HCI协议
L2cap
Rfcomm
SCO
BlueZ core
驱动接口
Uart driver USB driver Other driver
Bluetooth hardware
蓝牙协议栈bluez可分为两部分:内核代码和用户态程序及工具集,其中内核代码由BLUEZ核心协 议和驱动程序等模块组成的。用户态程序及工具集包括应用程序接口和BLUEZ工具集。 在内核代码中,bluez协议的bluez-kernal和bluez-libs软件实现了主机控制接口(HCI)和套接字接口 的全部功能,内核代码采用模块化设计,由设备驱动程序模块和蓝牙核心协议模块组成,分别 位于Linux内核的代码的drivers子目录和net子目录下,drivers子目录代码包括Linux内核对各种接 口的蓝牙设备的驱动,net子目录下包括蓝牙核心协议和一部分扩展协议的内核代码,如L2CAP, RFCOMM, SCO, SDP, BNEP的协议。
Bluetooth protocol layers mapped to BlueZ kernel modules
hciX Hidd
Mice app
sdpd
telnet/app/ftp/ssh
PAND user bnepX
Serial app
dund
pppX
rfcomm
/dev/rfcomm X
Audio app
主机 其他高层协议 HCI驱动 物理总线(串口,USB等)驱动
物理总线
物理总线固件
HCI Firmware LM
RF
蓝牙控制器
HCI 包命令解析
命 令包:命令包中的OCF(Opcode Command Field)和OGF(Opcode Group Field)是用于区分命令的。Parameter Length表示所带参数的长度,以字节数为单位,随后就是所带的参数列表。 * 链路控制命令; OGF 0X01 控制主机控制器对其他设备的连接; * 链路政策和模式命令; OGF 0X02 通过命令改变控制器的链路管理器的管理方式 * 主机控制和基带命令; OGF 0X03 访问和控制蓝牙的硬件设备 * 信息命令; OGF 0X04 发现本地设备的相关信息 * 状态命令; OGF 0X05 读取主机控制器的状态参数 * 测试命令。 OGF 0X06 功能测试命令 事件包也可分为三种类型: * 通用事件,包括命令完成包(Command Complete)和命令状态包(Command Status); * 测试事件; * 出错时发生的事件,如产生丢失(Flush Occured)和数据缓冲区溢出(Data Buffer Overflow)。 数据包则可分为ACL和SCO的数据包。 看HCI log 工具: Hcidump –X hci
相关文档
最新文档