低功耗蓝牙开发技术-基本概念和体系结构
1、术语
在低功耗蓝牙方面工作的人们都使用他们自己的术语来描述一些技术特征和规范,下面介绍几个相关术语:
自适应跳频(Adaptive Frequency Hopping, AFH):一种使用某个频率子集的技术,使设备可以避免其他非自适应技术使用该频率(比如Wi-Fi接入点)。
体系结构(architecture):低功耗蓝牙的设计方案。
频段(band):参看无线频段(radio band)。
跳频(frequency hopping):两个设备之间使用多个频率通信。某一时刻只用一个频率,各频率按照确定的顺序依次使用。
层(layer):系统中实现一个具体功能的部分,例如物理层负责无线电操作。系统中每一层是根据上层或下层抽象而来的。链路层并不需要知道有关无线电功能的所有细节;逻辑链路控制层和适配层(L2CAP)不需要知道关于链路层如何工作的所有细节。这一抽象概念对于管理复杂系统而言至关重要。
主设备(master):微微网中协调与其他设备的操作的一台复杂设备。
微微网(piconet):单词pico和network两个单词的缩写,表示非常微小的网络,一个微微网包括唯一的一个主设备以及一个或多个从设备,之设备负责协调与本微微网中的所有其他从设备的操作。
无线频段(radio band):无线电波通过频率或波长进行划分。不同的无线电波具有不同的规则和使用方法。
从设备(slave):与主设备一起工作的简单设备。
Wi-Fi:一种为高传输率而设计的补充无线技术,用于计算机等复杂设备的互联网接入。
2、非对称性设计所有的低功耗蓝牙体系结构的设计都是非对称的,目的是为了让能源更少的设备负担更少的事情。
对《低功耗蓝牙开发权威指南》的个人理解,画了如下的低功耗蓝牙体系层析结构图
3、客户端——服务器架构
采用纯客户端——服务器架构,服务器仅仅作为数据存储,并不关心客户端是谁。客户端可以直接链接到服务器,或者可以从地球的另一侧通过互联网网关链接。客户端——服务器网关模式也可以用于支持从客户端到网关的互联网安全,网关可执行访问控制、防火墙和客户端授权等操作,之后再向客户端授予网关外部的访问权限。
客户端——服务器架构的主要优点是将客户端和服务器二者划分开,当系统的不同部分位于不同的设备上时,这种划分必不可少,就爱那个其中一部分作为服务器,另一部分作为客户端,系统中二者之间的关系随之确定下来。
4、面向服务的架构
客户端——服务器架构之上进一步抽象是面向服务器的范式。这是一种将服务器中的信息组织成服务的模型。该服务ikeyi被发现、进行交互或用做已知语义,这意味着该服务具有确定的行为,在给定形同的条件时,总会产生相同的结果。这种范式最成功的互联网系统的基础,如SOAP、REST、COBRA、RPC、Web服务等。
(1)正式合约
一个服务之所以被视为服务.是因为其在公开的功能以及如何工作两个方画提供了正规的描述。正式合约的一个好处在于, 一个服务的实例很容易被另一个服务的实例所代替。只要两个服务的实例具有相同的功能和行为,这种情况就有可能发生。在低功耗蓝牙中.这些正式合釣位手服务規范之中.并为蓝牙SIG所来用。这些规范也有相应的测试规范.以确保实施行为的有效性。
(2)松耦合
在面向对象的软件中,单独的系统组件是指被设计成边界效应的独立对象。那些发生在组件之间的相互作用可以被明地定义和测试。将依赖关系减少最低限度,使修改服务的实现时不会带来意想不到的边界效应.从而降低风险。
(3)抽象化
服务抽象是十分重要的设计原则,如果违背该原理可能造成严重的后果。假如不利用抽象化,而让客户端掌握服务的所有实现细节.那么客户端使用该服务的方式将会严重制约服务的演化。
(4)可重用性
可重用性的概念多年来一直是面向对象方法所期望的设计目标。但是,真正意义上的可重用性是令服务适用于多种不同应用的一种能力。如果未经认真思考,设计的服务往往仅能完成某一种工作。而在良好的设计方案中,服务可以与具体的实现过程相互独立。这意味着该服务能够在其他应用程序中快速、轻松地获得重用。蓝牙技术联盟为应对这一姚战设立了一个工作组,该工作组的唯一工作就是找寻通用的功能,对其需求进行抽象以实现有效的重用。
(5)无状态
为了让众多客户端支持服务扩展.服务器不能保存任何客户端的状态数据。服务器或许可以定义一个服务用来记住客户端已经告诉它们的所有信息。使客户端在后续请求时不必重复这些信息。但该方法的同題在于,这些信息占用了大量的内存.且依赖于客户端和服务器二者之间同步的共享状态信息。这将导致服务器完全依赖客户端的正确操作,而这样的假设无疑站不住脚。
因此,状态信息存储在服务器上.但是它们均为服务器状态,而非客户端状态。这意味着,无论任无状态的设计目标是删除客户端和服务器之间所有交互状态。
(6)可组合性
这一没计目标鼓励服务器之间相互组合。
(7)自治
自治的情况可以单独执行任务,而不用去管周边发生的事情。
(8)可发现性
想要使用服务就必须能够发现服务,可发现性通常是通过一个单独的、与服务交互的协议来实现的。低功耗蓝牙采用不同的方法:使用同一协议实现发现以及服务交互,该协议称为”属性协议“。
5、低功耗蓝牙的体系结构
它分成三个基本部分:控制器、主机和应用程序。
控制器:通常是一个物理设备,能够发送和接受无线电信号,病懂得如何就这些信号翻译成携带信息的数据包。
主机:通常是一个软件栈,管理两台或多台设备之间如何通信及如何利用无线电同时提供几种不同的服务。
应用程序:则使用软件堆栈,进而是控制器来实现用户实例。
低功耗蓝牙体系机构图如下所示:
在控制器内既有物理层和链路层,又有直接测试模式和主机控制器接口(HCI)层的下半部。在主机内包含了三个协议:逻辑链路控制和适配协议(L2CAP)属性协议(Attribute Protocol)和安全管理器协议(Security Manager Protocol),此处还包括通用属性规范(GATT)、通用访问规范(GAP)和模式(MODE)。
(1)控制器:
控制器与外界通过天线相连,与主机通过主机控制接口(HCI)相连。
控制器中的物理层:采用2.4G无线电,输出0和1的信号。
控制器中的直接测试模式:直接测试模式允许测试者让控制器的物理层发送一系列的数据包和接收一系列的数据包,直接测试模式不经能量化测试,还能用于执行线性测试和校准无线电。
控制器中的链路层:它是的低功耗蓝牙体系中最复杂的一部分,负责广播、扫描、建立和维护链接,以及确保数据包按照正确的方式组织。链路层的信道分为两种,广播信道和数据信道。
主机控制接口下半部:提供了一个与控制器通信的标准接口,由60%以上的蓝牙控制器能使用HCI接口它允许主机将命令和数据包发送给控制器。已经定义的物理接口有USB、SDIO、两个UART的变种。
(2)主机:
主机做的事情比较多,主机构建了主机控制器接口的上层部分。
主机中的逻辑链路层和适配协议:L2CAP是低功耗蓝牙的复用层。定义了两个基本的概念,L2CAP信道和L2CAP信令。信道是一个双向数据通道,没哟个信道都是独立的。在低功耗蓝牙中只使用固定信道,一个用于信令信道,一个用于安全管理器,还有一个用于属性协议。
主机中的安全管理协议:定义了一个简单的配对和密匙分发协议,配对是一个获得对方信任的过程采用认证的方式实现,当两台设备在未来的某一时刻重连时,他们可以享用先前分发的密匙进行加密,从而迅速认证彼此的身份。
主机中的属性协议:定义了访问对端设备上的数据的一组规则。
主机中的通用属性规范:定义了属性的类型及其使用方法。
主机中的通用访问规范:定义了设备如何发现、链接,以及为用户提供有用信息,它还定义了设备之间如何建立长久的关系——绑定。
(3)应用层:
定义了上种类型:特性(characterustic)、服务(service)和规范(profile).
应用层中的特性:采用已知格式、以通用唯一识别码(UUID)作为表示的一个小块数据,由于特征要求能够重复使用,因而设计时没有涉及行为,特性被定义为计算机的可读格式。
应用层中的服务:服务是人类可读的一组特征及其相关的行为规范,只定义了位于服务器上的相关特性和行为,而不定义客户端的行为。服务有两种类型,首要服务和次要服务,一个服务是首要服务还是次要服务取决于服务的定义,首要服务表征一个给定的设备主要做些什么。正是通过这些服务,用户才了解到该设备是做什么的。次要服务是那些协助主要业务或其他次要服务的服务。
应用层中的规范:是用例或应用懂得最终体现。规范是藐视一个或多个设备的说明,每一个设备提供一个或多个服务,规范描述了如何发现和链接设备,从而微微每个设备确定了拓展结构,规范还描述的客户端的行为,用于发现服务和服务特性,规范和服务之间是一种多对多的映射关系。