《低功耗蓝牙开发权威指南》——3.3节应用层

简介:

本节书摘来自华章社区《低功耗蓝牙开发权威指南》一书中的第3章,第3.3节应用层,作者 (英)Robin Heydon,更多章节内容可以访问云栖社区“华章社区”公众号查看

3.3 应用层
控制器和主机之上是应用层。应用层规约(specification)定义了三种类型:特性(characteristic)、服务(service)和规范(profile)。这些规约均构建在通用属性规范上。通用属性规范为特性和服务定义了属性分组,应用程序为使用这些属性组定义了规约。

3.3.1 特性
特性是采用已知格式、以通用唯一识别码(UUID)作为标记的一小块数据。由于特性要求能够重复使用,因而设计时没有涉及行为。只要是添加了行为的东西,它的重用性就会大打折扣。特性有个很有意思的地方,它们被定义为计算机的可读格式,而非人类的可读文字。这赋予了计算机相应的能力:当遇到一个素未谋面的特性时,可以下载计算机的相关读取规则,用来向用户显示该特性。

3.3.2 服务
服务是人类可读的一组特征及其相关的行为规范。服务只定义了位于服务器上的相关特性的行为,而不定义客户端的行为。对于许多服务而言,客户端的行为可以隐式地由服务的服务器行为所决定。然而,还有些服务可能需要在客户端上定义复杂的行为,这些行为由规范而非服务定义。
一个服务可以包括其他服务。父服务只能定义自身包含的服务,它不能改变包含的服务的特性或者行为。但是,包含服务时应描述多个被包含服务之间如何彼此互动。
服务有两种类型:首要服务和次要服务,如3.2.4节所述。一个服务本质上是首要服务还是次要服务取决于服务的定义,或者可以由规范文件和规范文件的实现来决定。首要服务表征一个给定的设备主要做些什么。正是通过这些服务,用户才了解了该设备的作用。次要服务是那些协助主要业务或其他次要服务的服务。
服务本身并未规定设备之间如何连接,以及如何发现和使用服务。服务只描述在读写特性或通知和指示特性时究竟做了些什么。服务没有描述通用属性规范采用什么规程来寻找服务和服务的特性,也没有描述客户端如何使用特性。

3.3.3 规范
规范是用例或应用的最终体现。规范是描述两个或多个设备的说明,每个设备提供一个或多个服务。规范描述了如何发现并连接设备,从而为每台设备确定所需的拓扑结构。规范还描述了客户端行为,用于发现服务和服务特性,以及使用该服务实现用例或应用所要求的功能。
规范和服务之间是一种多对多的映射关系,如图3-5所示。一个服务可以用于许多规范,以便在设备上实现需要的行为。此时,服务的行为与使用该服务的规范是相互独立的。在应用商店里,可以提交某个设备支持的所有服务的列表,从而找到使用这些服务的所有应用。这种灵活性有助于实现即插即用模型,比如通用串行总线便是如此。


845d821c8958fc2e1cac71ce98c25090d5ba0506
相关文章
|
7月前
|
网络协议 算法 安全
《低功耗蓝牙开发权威指南》——导读
本节书摘来自华章社区《低功耗蓝牙开发权威指南》一书中的目录,作者 (英)Robin Heydon,更多章节内容可以访问云栖社区“华章社区”公众号查看
1859 0