蓝牙查询扫描过程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
物理信道(physical channel)是蓝牙系统的最底层结构,它以一伪随机跳频序列、特定的发送时槽定时、接入码及帧头编码来表征。蓝牙定义了一系列物理信道用于不同的应用,包括用于匹克网内设备通信的匹克网物理信道,用于查找设备的查找扫描物理信道和用于寻呼设备的寻呼扫描物理信道。两台设备必须采用相同的物理信道才能进行通信。主从设备建立连接的过程就是建立相同的匹克网信道的过程,这样主从设备才能以同样的定时和次序进行载波频率的跳变,进行数据传输,
同时可以根据匹克网接入码和帧头编码进行数据过滤和解析,避免和其他设备在同一个频段上的偶尔的相撞。
1.查询扫描过程
2.寻呼扫描过程
寻呼扫描物理信道(page scan physical channel)用于主设备寻呼从设备,是设备建立连接的必经阶段,主从设备是匹克网内设备的概念,这里用来指发起寻呼的设备和寻呼扫描设备。寻呼扫描跳频序列和寻呼请求帧的设备接入码-DAC是由从设备物理地址运算出来的,主设备以该跳频序列进行载波频率的跳变并在发送时间槽内发送寻呼请求,处于可被连接模式的从设备以固定的周期(由page scan interval 决定)在一个固定的时间窗(由page scan window决定)内以某个跳频频率监听主设备的寻呼请求,监听到请求便在下个时间槽立即发送从设备寻呼响应(slave page response),主设备在收到从设备寻呼响应的下个时间槽发送主设备寻呼响应(master page response),该响应中包含了由主设备地址运算出来的跳频序列信息和时钟相位,从设备接收到这些信息便进入连接状态并自动成为匹克网的从设备,并再次返回从设备寻呼响应,主设备收到该响应后进入连接状态并自动成为匹克网的主设备。
应用层的连接是建立在匹克网物理信道之上的逻辑连接,主设备通过SDP查询从设备相应服务的逻辑通道号,依据该通道建立应用
层级的连接。
协议栈已经有了,使用蓝牙是非常简单的事情。
(1)找到蓝牙设备,这是HCI层负责的,使用bluez-utils包提供的hcitool 来找到蓝牙设备。
(2)找到服务,RFCOMM是通过不同的频道(channel)来提供不同的Profile 的,所以需要找到要用的服务在设备上的哪个频道上,这是通过同一个软件包里的sdptool来完成的,就是SDP,服务发现协议。
(3)连接恰当的服务并使用。
蓝牙的特点就是如上所述的那些了,而用户态的工具所要完成的任务就是发现服务和使用服务了。
连接的建立:
蓝牙系统有三种主要状态:待机状态,连接状态和节能状态。从待机状态向连接状态转变的过程中,有7个子状态:寻呼、寻呼扫描、查询、查询扫描、主响应、从响应、查询响应。
1.启动HCI设备
首先,用户需要启动hcid,让HCI层的通信可以进行。对于Debian用户来说,需要安装bluez-utils包,并启动hcid。如果已经运行了bluetooth服务,插入USB 适配器后,hcid就已经在运行了,看看相关信息,见清单15.2。
清单15.2 HCI接口信息
1 inspiration :/ etc/ bluetooth # hciconfig -a
hci 0: Type : USB
3 BD Address : 11:11:11:11:11:11 ACL MTU: 678:8 SCO MTU: 48:10 UP RUNNING PSCAN ISCAN
5 RX bytes :413 acl :0 sco :0 events :19 errors :0
TX bytes :323 acl :0 sco :0 commands :19 errors :0
7 Features : 0xbf 0xfe 0x8d 0x78 0x08 0x18 0x00 0x00
Packet type : DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
9 Link policy : RSWITCH HOLD SNIFF PARK
Link mode : MASTER
11 Name : 'inspiration -0'
Class : 0x3e 0100
13 Service Classes : Networking , Rendering , Capturing , Object Transfer , Audio
Device Class : Computer , Uncategorized
15 HCI Ver : 1.2 (0x2) HCI Rev : 0x1fe LMP Ver : 1.2 (0x2) LMP Subver : 0x1fe
Manufacturer : Integrated System Solution Corp . (57) 这个过程是自动的,当然也可以用hciconfig(8)来手工控制。hcid的配置文件位于/etc/bluetooth/hcid.conf,通常使用软件包附带的版本就可以了,如果希望不用每次连接都在计算机这里确认一次PIN码的话,可以设置其中的security字段为auto,这样,每次连接就会使用passkey设置的PIN码了。
2.寻找蓝牙设备
HCI已经启动了,现在就可以用它来寻找蓝牙设备了,当然,一定要先开启蓝
牙设备的蓝牙功能,这个不是废话,手机的蓝牙是默认关闭的,只有在手动控制之下才会发送信号,允许被扫描到,不过设备的个体差异性太大,这里没法介绍,作者假设读者已经自己摸索或参照说明书打开了设备的蓝牙电源。寻找蓝牙设备如清单15.3所示。
清单15.3 寻找蓝牙设备
inspiration :/ home / gnawux # hcitool scan
18 Scanning ...
00:17:00:7 B :18: B8 Motorola SLVR
之后蓝牙设备就会被顺利地找到,当然,前提是不要忘了打开手机的蓝牙开关,并允许被找,这个功能平时最好不要打开,以防在公共场合遇到安全问题。
3.查看设备提供的服务
利用SDP协议,用户还可以查看每个设备都有功能,能提供什么服务,每种基于RFCOMM的服务都使用某种协议,占据一个“频道(channel)”,这是使用蓝牙服
务时的一个重要参数。
下面是例子,先看看本机,见清单15.4。
清单15.4 本机提供的蓝牙服务