低功耗蓝牙开发技术概述(三)——主机

首先来看看低功耗蓝牙的体系架构图,其实在上面的章节中已经出现过,这里再次把它搬出来看看一下的所有内容都是主机那层的内容1、逻辑链路控制和适配协议和经典蓝牙完全不同,低功耗蓝牙的一个基本概念在于无连接模式。用户只在需要发送数据的时候才建立莲接,其他时候设备可以长期处于断开连接状态。为了实现该功能,无连接模式必须扩展到L2CAP层,并且只能使用固定信道。在低功耗蓝牙设计之初并未
摘要由CSDN通过智能技术生成

首先来看看低功耗蓝牙的体系架构图,其实在上面的章节中已经出现过,这里再次把它搬出来看看


以下的所有内容都是主机那层的内容

1、逻辑链路控制和适配协议

和经典蓝牙完全不同,低功耗蓝牙的一个基本概念在于无连接模式。用户只在需要发送数据的时候才建立莲接,其他时候设备可以长期处于断开连接状态。为了实现该功能,无连接模式必须扩展到L2CAP层,并且只能使用固定信道。在低功耗蓝牙设计之初并未选择L2CAP,而是使用了另一个称为协议适配层(Protocol Adaptation Layer,PAL)的设计。PAL仅支持两种数据包:高层协议信令数据包以及自身的信令数据包。PAL不支持分割或重组,也没有区分不同协议的功能。协议设计的一个基本原则是每一层协议都是独立的。在经典蓝牙中,面向连接信道可以把某对单独的应用数据与其他信道的数据相分离。举个例子,虽然所有的面向连接信道都能添加额外的数据完整性检测,但它们可能有不同的流规范,或者隶属于流信道而非尽力交付信道。面向连接信遭非常适合那些复杂的、多种数据同时传输的系统。

1)、L2CAP信道

L2CAP有个很简单的概念——信道。毕竟L2CAP是一种复用层,有多个信道也不足为怪。信道是指一个数据包序列,连接两个设备上的一对服务。在两个设备间允许同时启用多条信道。低功耗蓝牙只支持固定信道。固定信道指的是两个设备一建立连接就已经存在的、没有任何配置参数的信道。

2)、L2CAP数据包结构

每个L2CAP数据包的净荷前端都包含一个32位比特报头。假设使用分割和重组,那么数据包的长度信息必须包含在报头中,以便判断数据包的结束。使用分割和重组机制需要为每个通过HCI接口的数据包打上标记,分为开始数据包或延续数据包。不过,这里没有定义怎样标记当前数据包的最后一个片段。选意味着,判断当前数据包唯一方法是发送一个新的数据包,或者将数据包的长度信息放在开始数据包中。如下图所示,报头包括2字节的长度字段和2字节的信道标识符。长度字段表示报头后的信息载荷字节数。在经典蓝牙中,信息载荷还可以包含额外的报头和信息,但在低功耗蓝牙的L2CAP层中并没有其他有意义的信息结构。


3)、低功耗信令信道

每个低功耗信令信道的数据包均含有一操作码,随后为各种参数。低功耗信令信道支持的命令操作码如下:

  (*)命令拒绝(Command Reject)

  (*)连接参数更新请求(Connection Parameter Update Request)

  (*)连接参数更新响应(Connection Parameter Update Response】

在低功耗蓝牙中,由于只定义一种请求命令粪型,并且该请求命令仅用于没有其他请求发送的情况,标识符的逻辑相对简单。L2CAP命令数据包如下图所示


命令拒绝:用于拒绝设备收到的不支持的信息包。该命令与经典蓝牙中的命令拒绝完全一样。它包含一个原因代码以及相关信息。其中的原因代码可以是“命令不理解”或“信令MTU溢出”。连接参数更新请求和响应:可以让从设备更新链路层的连接参数,这些参数包括连接事件间隔(从设备希望主设备允许从设备发送数据包的频率)、从设备延迟(从设备能够忽略主设备的连接事件的最大值)以及监控超时。连接参数更新请求命令仅用于从设备向主设备发送,这是由于主设备随时都能启动链路层连接参数更新控制(ConnectionParameter Update Control)规程。如果该命令由主设备发送,从设备会将其视为一个错误,并返回带有“命令不理解”原因代码的“命令拒绝”命令。

2、属性

在低功耗蓝牙的设计之初,使用什么样的协议就成为了一个难题。协议应当十分简单,因为任何的复杂性都会增加额外的成本和所需的存储空间;同时,协议的数量要越少越好。由此,有人认为使用一种单一的、普适的协议在该技术的起步阶段是最佳的选择。不过这个想法并没有完全实现。低功耗蓝牙最后使用了三种协议:逻辑链路控制和适配协议(L2CAP),安全管理协议(SM)和属性协议(AP)。精简协议:所有的计算乃至世上的大部分事物都围绕着协议运转。大多数的行为有其自身的协议,例如:载入网页用到了超文本传输协议(HTTP);传输文件用到了文件传输协议(FTP);安全的登陆另一台电脑,用到了安全外壳协议( SSH)。每一种协议都专攻于它自己的应用场合,试想要是用HTTP协议传输大量的文件,或是用FTP拇议登录电脑,那显然是欠缺效率的。低功耗蓝牙技术和成堆的因特网协议的最大区别在于,低功耗蓝牙技术并不试图传输多样化的数据类型。考虑到不会用来传输大批量的数据或是流媒体音乐,为其开发一种能够处理有限的几种数据类型的协议就可以。这种协议被称为属性协议,是整个蓝牙技术的基石和构造组件。只有理解了属性协议才能理解低功耗蓝牙技术。

数据与状态:还有一个需要理解的概念是:数据( data)与状态(state)这两者有着显著的差别。数据是一个值,它反映了某种客观性质,比如某种测量的结果、读数。数据可以是温度计涮出的房间温度,也可以是供暖系统测出的室内温度;它们都可以被不同的设备测量出来。而状态则反映了某个设备的当前状况或处境:它在做什么、是怎么运作的。设备的状态只有它自己知道,并靠自身维持。温控器测量室温,温度的度数则反映了房间温度的状态。几种常见的状态:低功耗蓝牙用到了三种不同种类的状态类型:外部状态、内部状态与抽象状态。物理测量值反映了物理传感器或者类似接口的当前状态+让我们设想一个浴室里的体重计。

状态机:有趣的是,有限状态机可以明确地使用属性协议和可公开的状态来表示。状态机反映了设备的内部状态,并且有一个或多个外部的辅人接口。这些外部辅人为瞬时命令,根据其他状态信息或行为来改变状态机的状态。这是一个抽象状态,或称为控制点。

服务和规范:从经典蓝牙到低功耗蓝牙,最有趣的转变是服务和规范的体系结构。经典蓝牙里的规范和协议大多定义的是行为与交互指南,它们极其复杂,糅合了许许多多不同的概念。其中,一个最大的问题是这些规范倪定义了两种设备类型,位于链路的两端,再对各自的行为分别定义。粗略地

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值