以下内容是《蓝牙应用开发指南—近程互联解决方案》书中的有关章节,科学出版社。
第一章 蓝牙应用介绍
1.住所网的理念 住所连网有两种理念。第一种认为,有一台“主设备”将会控制从录像机到安全系统的所有设备,并且会代替PC而成为住所的技术中枢。另一种建议保留了PC作为连网家庭的中枢。
蓝牙技术不该用于哪些必须绝对确保数据安全传输的应用程序,因为出现突发干扰而中断链路的可能性总是存在的。蓝牙发送器和接收器都需要在通信开始之前先进行同步,所以连接时间会很长。如果所用的无线链路关系重大,比如用于“应急按钮”,攸关姓名的医疗监视器或者发动机管理系统,则这种限制可能会带来严重后果。
2.蓝牙链路建立连接的过程:
1)搜索设备
查询inquiry,调频的原因同一频率的蓝牙设备将建立连接。
2)连接设备
寻呼page。寻呼设备需要知道设备的ID值,可以从48位蓝牙设备地址BD_ADDR算出。
3)执行服务搜索
分辨哪个设备支持哪项服务,哪台设备允许发送电子邮件、打印传真或者交换名片。服务搜索协议SDP使设备可以或缺附近设备提供的服务的信息。所谓服务是指其它设备可以使用的功能。
3.使用节能模式
蓝牙标准提供了三种节省电源的模式,保持、呼吸和暂停。仍然保持链路,没有处于激活状态。
第二章 探索蓝牙基础
一、蓝牙协议层
较低的层:无线电基带、链路管理器、逻辑链路控制和适配协议L2CAP和服务搜索协议。
三个应用路径:数据,音频,设备管理。
(1)数据:基础层—HCI--L2CAP—recomm+OBEX/TCS/SDP—连接管理器
(2)音频:基础层—HCI--音频—连接管理器
(3)设备管理器:基础层—HCI—音频—连接管理器
1. L2CAP
逻辑链路控制和适配协议。将上层数据通过多路复用器传送到两台设备之间的单个异步无连接ACL链路智商,对主设备来说,引导数据并发送给适当的从设备。
数据分段重组为适合HCI的有效数据块。HCI是主机控制器接口,将主机的高层连接到蓝牙设备的底层。
远程设备使用CID匹配识别同一信道的另一端。每个L2Cap逻辑信道有唯一的CID。0x000,0x0001信号信息,0x0002广播数据。
L2cap上层通过协议服务多路复用器psm值识别。远程设备请求一个到特定psm的连接,l2cap则为它分配一个cid。L2cap层上的蓝牙定义层的psm:
SDP-0x0001
RFCOMM-0x0003
TCS-BIN 0x0005
TCS-BIN-CORDLESS 0x0007
L2CAP只处理数据通信,不包括语音。除了广播,一个主设备到多个从设备的同时传输之外的所有信道被认为是可靠的。
2. RFCOMM
PC上的串行COM端口。在L2CAP上模仿9针RS232串行通信。软件模拟RS232硬件接口制定TS07.10标准。
为每个端口使用不同的数据链路连接标识符DLCI,把多个模拟串行端口多路复用到单独的一个数据连接上。只能连接到一个信道上,只能和一个设备通信。一台主设备必须为每个请求串行端口连接的从设备运行单独的RFCOMM。
3. OBEX
对象交换标准是红外数据协会开发的。
4.PPP
5.SDP
以蓝牙为中心,处理蓝牙运作中的一项特殊需要,找出已连接设备中有哪些可用的服务。像一个服务数据库,本地应用程序负责将可用服务注册到数据库中,并更新数据库中的记录,然后远程设备就可以查询数据库,,找到有哪些可用服务以及如何连接到这些设备。
6.TCS binary
7.管理实体
8.HCI
主机控制器接口不是软件层,而是一个帮助不同制造商解决方案协同工作的传输和通信协议。有更好的解决方案,不一定要使用高中标准:通用串行总线USB,RS232或者简单的通用异步收发UART定义的HCI接口,甚至根本不同任何HCI传输。
9.底层
各种规范使用了哪些层。
(1)串行端口:底层,L2cap,SDP,RFCOMM
(2)文件传输:底层,L2cap,SDP。OBEX
三、连接并使用蓝牙服务
在使用蓝牙服务前必须完成的几个步骤
(1)查到设备—查询
(2)连接到设备—寻呼
(3)搜索设备支持何种服务—SDP
(4)决定连接到哪项服务并找出连接的方法—SDP
(5)连接到服务
1.用来发现设备的过程称为查询,连接设备的过程称为寻呼。在这两个过程中,一台设备都要按照所有设备已知的特殊频率序列进行传送和接收。另一台设备需要侦听传输,如果接收正确,就发出应答。因为该设备知道查询和寻呼所用的频率序列,所以它能够算出用于发送应答的正确的频率。关键:
1)发现或连接某台设备,必须将它置为侦听模式。允许设备被发现的模式叫做发现模式,或者查询扫描。允许设备被连接的侦听模式叫做可连接模式,或者称为寻呼扫描。
2)为了通信,一台设备必须以另一台设备接受的频率进行传输。这是通过发送设备快速改变频率,每秒1600次,而接收设备缓慢改变频率,1.28s改变一次实现的。
3)语音链路优先,查询和寻呼优先于其它数据传输。在语音传输的间隙进行查询和寻呼是允许的,但是搜索和链接非常缓慢和不可靠。必须注意这个限制。
2.查询 HCI_inquiry
三个参数:
Lower address part( LAP)
Inqiuiry_length 超时时间
Number_of_responses 最大响应次数
LAP决定了查询访问码inquiry access code IAC,用于被传送的ID消息中,进行侦听的设备对消息做出响应。
HCI上的消息传送。不同把同时进行的HCI事物排入队列中,而不是发送到底层。
定期查询:HCI_periodic_inquiry_Mode
关闭查询扫描,把设备隐蔽起来,这样的设备处于不可发现模式。HCI_Write_Scan_Enable关闭查询扫描。
查询要付出代价:电源消耗和带宽。
3. 连接到设备
寻呼HCI_Write_Page_Scan_Activity,scan_Mode,period_Mode。
从设备使用HCI_Set_Event_Filter命令来切换三种可能的行为:
(1)向主机发送HCI_connection_Request,等待HCI_Accept_connection_Request或HCI_Reject_connection_Request
主、从设备角色交换。主设备,从设备的唯一区别,主设备可以和多个从设备对话,从设备只能和主设备对话。不允许主从设备转换,不允许连接,就会断开连接。
寻呼成功,新建链路的两端会生成一个状态为succss的HCI_connection_Complete时间。
4.查找设备提供的服务信息
提供的服务。通用音频、耳机音频开关、免提音频开关。获取服务的协议,连接到这些协议,支持的规范。 音频网关寻呼连接到耳机设备
1)音频网关应用程序向底层发送寻呼请求
2)音频网关底层寻呼耳机,用其蓝牙设备地址生成ID包,ID包是它唯一侦听的。
3)耳机的底层向耳机应用程序发送一条消息,将连接请求告知它。这条通知包括音频网关的蓝牙设备地址和设备类,这些信息是寻呼过程中收集的。
4)耳机应用程序回答低层,接收连接
5)耳机的底层将响应发到音频网关的底层。
6)音频网关的底层把消息转发,接收音频网关应用程序的连接。音频网关应用程序现在知道它已经准备好一条可用的ACL数据连接了。