如何去设置蓝牙协议栈应用程序进行交互

通过WIFI转蓝牙中蓝牙协议栈是如何与应用程序进行交互,说一下自己的心得总结。

蓝牙协议栈主要分为Host和Controller

通用访问配置文件(GAP

定义了五种状态:

standby、advertiser、scanner、initiator、master or slave;

连接参数:连接间隔:低功耗蓝牙采用跳频方案,设备在特定的时间在特定的通道上发送和接收数据。范围7.5ms~4s。主机和从机一次数据发送与接收为一个连接事件,连接间隔就是发生一个连接事件,到下一次连接事件之间间隔的时间就是连接间隔。

减小连接间隔就会增大功耗,减少数据响应事件。当设定为1s的连接间隔,10s就会产生10次连接事件,而设定5s的连接间隔,就会产生2次连接事件,相比来说少三次连接事件,就是在睡眠状态对应的功耗也会不同。

从设备延迟:可以让从机跳过部分连接事件。当没有数据进行收发的时候,从机延时可以跳过部分连接事件,停止射频,降低功耗。范围0-499。

监督超时:此参数为两个有效连接事件之间的最大时间,如果超出这个时间未响应,蓝牙连接就会断开。设备退回未连接状态。范围100ms~32s,超时时间必须大于有效时间间隔。

有效连接间隔=(连接间隔)x(1+从设备延迟);

设连接间隔为100ms,从机延迟:4

有效连接间隔=(100ms)x(1+4)=5000ms.

就是两个连接事件之间相隔5000ms,从机每隔5000ms发起一次连接事件。

终止连接:当一方终止连接,另一方必须在断开连接前做出终止连接响应。

用属性配置文件(GATT)

GATT层是主机和从机之间进行数据通讯,数据以特征的形式传递和储存。主机和从机连接之后,他们将扮演一下两种角色之一:

GATT服务器——该设备提供GATT客户端读取或写入特征数据库

GATT客户端——该设备从GATT服务器读写数据

规范属性中数据内容,并运用group(分组)的概念对attribute进行分类管理,GATT规定配置文件的结构。GATT层用于已连接的蓝牙设备之间的数据通信。应用程序和profile直接使用GATT.GATT定义了ATT的服务框架

ATT

用来定义用户命令及命令操作的数据,读取某个数据或写某个数据。           

SMP

管理BLE连接的加密和安全,如何保证连接的安全性,同时不影响用户的体验。

PHY

定义了BLE所用的无线频段,调制解调方式和方法,在2.4GHZ,使用高斯频移键控技术进行调制。

LL链路层

选择哪个射频通道进行通信,怎么识别空中数据包,具体在哪个时间点把数据包发送出去,怎么保障数据的完整性,ACK如何接收,如何重传,如何对链路进行管理和控制。

数据发出接收,解析由GAP和GATT解析。

HCI主机与控制器交互

规范两者之间的通信协议和通道命令,将主机的操作转换成HCI指令传给控制器,

逻辑链路控制和适配协议L2CAP

L2CAP对LL进行了一次简单封装,LL只关心传输的数据本身,L2CAP就要区分是加密通道还是普通通道,同时还要连接间隔进行管理。

如何通过无线发送一个数据包

以发送一个数据0x53。

GATT层定义数据的类型和分组, 0x0013表示电量这种数据类型,这样GATT层把数据打包成130053(小端模式!)

  • ATT层用来选择具体的通信命令,比如读/写/notify/indicate等,这里选择notify命令0x1B,这样数据包变成了:1B130053
  • L2CAP用来指定connection interval(连接间隔),比如每10ms同步一次(CI不体现在数据包中),同时指定逻辑通道编号0004(表示ATT命令),最后把ATT数据长度0x0004加在包头,这样数据就变为:040004001B130053
  • LL层要做的工作很多,首先LL层需要指定用哪个物理信道进行传输(物理信道不体现在数据包中),然后再给此连接分配一个Access address(0x50655DAB)以标识此连接只为设备A和设备B直连服务,然后加上LL header和payload length字段,LL header标识此packet为数据packet,而不是control packet等,payload length为整个L2CAP字段的长度,最后加上CRC24字段,以保证整个packet的数据完整性,所以数据包最后变成:
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值