蓝牙基础

https://blog.csdn.net/zhaoshuzhaoshu/article/details/104236097

 

1. inquiry

作用:让蓝牙芯片进入发现周围蓝牙设备的模式,它的返回值是周围蓝牙设备的信号。

对应的HCI命令:HCI_inquiry

输入的参数有如下三个:一个是LAP(蓝牙地址分为三部分:

LAP(24位地址低端部分)、UAP(8位地址高端部分)和NAP(16位无意义地址部分)。

其中,NAP和UAP是生产厂商的唯一标识码,必须由蓝牙权威部门分配给不同的厂商。

而LAP是由厂商内部自由分配。

 对于某一种型号的手机或者设备,所有个体的NAP、UAP是固定的,可变的是LAP。

LAP共有24位,一般来说厂家在制造时会从0开始分配地址直到2的24次方,以保证个体之间地址的区别),一个是Inquiry长度表示发现多久单位是1.28秒,最长是61.44秒,

最后一个参数表示在停止发现设备前返回最大设备的响应数。

Inquiry模式有3种,主要区别是返回值不一样。

第一种模式:标准返回格式,Standard Inquiry Result event format

第二种模式:查询结果返回带有RSSI格式,Inquiry Result format with RSSI

第三种模式:查询结果带有RSSI的格式或者额外的查询结果格式,Inquiry Result with RSSI format or Extended Inquiry Result format。

Extended Inquiry Result format:除了带有RSSI,可能带有设备名字之类的信息。

2. inquiry scan

作用:蓝牙设备开启inquiry scan模式,才能够被别的蓝牙设备搜索到。

安卓设备(以华为手机荣耀6+为例),打开了“开放检测”按键后,才会进入inquiry scan模式,其他的设备才能够搜到这个荣耀手机的蓝牙信号。

苹果手机中没有对应的按键,设计为进入蓝牙设置界面后,自动进入inquiry scan模式;用户推出蓝牙界面后,自动关闭inquiry scan模式,此时其他手机就搜不到它了。

2.1 INQUIRY SCAN INTERVAL(查询扫描间隔)

这个参数表示蓝牙间隔多久进行一次查询扫描。

这个值得范围是:

Time Range: 11.25 to 2560 ms

Time Default: 2.56 s

2.2 INQUIRY SCAN WINDOW

这个参数表示蓝牙进行Inquiry Scan时持续的时间,这个值必须小于等于Inquiry Scan Interval的值。

Time Range: 10.625 ms to 2560 ms

Time Default: 11.25 ms

2.3 Inquiry Scan type

设置查询扫描的类型

3. Page

作用:发起连接的蓝牙设备向被连接的蓝牙设备发起连接请求或者认证,请求即是一次page动作。即,手机点击请求连接目标蓝牙耳机的过程中发送的很多命令都会进行page的动作。

Page的超时时间如下:最大是40.9秒,最小是0.625ms

当远端设备没有超时时间内没有返回Page Response时,返回Page Timeout事件。

Page不像inquiry那样有一条对应的HCI命令(hci_inquiry),page没有直接对应的HCI命令。但是许多条HCI命令都是要进行page这个动作的。

例如发起连接的HCI命令Create_Connection.。如果对方没有而执行失败,就会出现一条HCI命令回复--page timeout。

4. page scan

作用:蓝牙设备开启page scan模式,才能够相应其他蓝牙设备的连接请求。例如蓝牙耳机只有处于page scan才允许其他设备来连接。

Page scan是一个状态,只有蓝牙耳机处于page scan状态,手机才有可能连接成功

Page Scan的三个参数

2.1 Page Scan Interval(寻呼扫描间隔)

这个参数相当于间隔多久scan一次,最大值是2560ms。

 

2.2 Page Scan Windows(寻呼扫描窗口)

表示scan一次持续多长时间,这个值要小于等于Interval的值。

2.3 Page Scan Type(类型)

有两种类型,一个是强制的标准类型。另外一个是可选的Interlace(隔行扫描)类型。

 

七个子状态分别为:

Page:这个子状态就是我们通常称为的连接,进行连接/激活对应的slave的操作我们就称为page。

Page scan:这个子状态是和page对应的,它就是等待被page的slave所处的状态,换句话说,若想被page到,我们就要处于page scan的状态。

inquiry:这就是我们通常所说的扫描状态,这个状态的设备就是去扫描周围的设备。

inquiry scan:这就是我们通常看到的可被发现的设备。体现在上层就是我们在Android系统中点击设备可被周围什么发现,那设备就处于这样的状态。

slave response:这个就是在page的过程中,slave收到了master的page msg,它会回应对应的page response msg,同时自己就进入到了slave response的状态。

master response:master收到slaveresponse的msg后,他就会进入到master response的状态,同时他会发送一个FHS的packet。

inquiry response:就是在inquiry scan的设备在收到inquiry的msg后,就会发送inquiryresponse的msg,在这之后它就会进入到了inquiry response的状态了。

 

 

 

可以这样分析帧的容量:由于从节点只能使用奇数时间槽,跟主节点一样它得到800槽/秒。若用80位有效载荷,来自从节点的信道容量位64000bps,与来自主节点的信道容量一直。这样的容量对应单个全双工的PCM(脉冲编码调制)语音信道恰好足够(这也是为什么选择每秒1600跳的原因)。即尽管原始带宽为1Mbps,一个全双工未压缩的语音信道就可以完全饱和微网。这里建立时间花了41%,帧头花了20%,重复编码花了26%,因此最终的效率是13%。这个缺点凸显了增强型速率和多个时间槽的价值。

从Master的视角看,当它发出CONNECT_REQ后,会在1.25 ms + transmitWindowOffset到1.25ms + transmitWindowOffset + transmitWindowSize之间,发送第一个packet(M->S)。同理,Slave在收到CONNECT_REQ之后,也会在相应的时间区间去接收packet(M->S)。

Slave如果没有收到第一个packet(M->S),则会以1.25 ms + transmitWindowOffset为起点,等待connInterval之后,再次尝试接收,直到接收到为止。Slave接收到packet之后,则以收到该packet的时间点为起始点(anchor point),以connInterval为周期,接着接收后续的packet(M->S),以及发送packet给Master(S->M),具体可参考上面图片2。

 

重传机制(https://wenku.baidu.com/view/6ad5418f27d3240c8547ef8e.html):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值