低功耗蓝牙学习笔记四

本系列学习笔记来源于啃书《低功耗蓝牙开发权威指南》。共计15章,每章将会一个笔记。本书系统讲解了蓝牙4.0的原理、体系结构、硬件设计以及应用开发。由于本人主要进行蓝牙软件开发,所以只对其中的原理做详细笔记、其他只对重点做笔记。

世界上所有的书籍包含的信息不超过美国一个大城市一年内播放的视频总量,但不是所有比特都具有同等的价值。

​ — 卡尔 · 萨根

低功耗了蓝牙提供了一种使用无线技术的新方式。一些主要的新模型都基于广播模式,包括存在检测、数据广播、无连接模型等,此外还包括设备接入互联网的网关。

存在检测

存在检测是低功耗蓝牙所支持的最为有趣的新无线模型。存在是指当前发生的或于某处出现的状态或者实施。使用广播模型,设备可以在后台被动扫描那些正在广播的设备。广播设备可以仅仅通告地址,也可以通告一些基于存在的数据。

广播是在链路层定义的一种新的运作模式。设备可以周期性的发送其身份信息和少量数据。

扫描模式分为两类:主动扫描和被动 扫描。主动扫描时,扫描者从广播者请求更多信息,以获得额外的静态数据;被动扫描时,扫描者仅仅侦听广播报文,并不发送请求。链路层收到广播数据包后会将他们交给主机。

存在说的是判断移动设备的自身位置。事实上,还有一类存在于静态设备有关,即判断指定的位置都有哪些设备。它的一个最大好处是在于方便你找人或者找东西。

广播数据

广播模式还可以广播少量的数据—寥寥可数的数据,仅有几十个字节—但是能将少量信息广播给区域内所有的侦听设备的能力还是非常有价值的。

我们可以使用广播来传输多种不同类型的有用数据。广播数据有助于 提升用户体验的三个主要方面为:发现连接建立、公告、广播信息。

设备还可以广播从本地收集的信息。

无连接模式

设计并实现无连接模型是经典蓝牙到低功耗蓝牙的一个最大的变化。在无连接模型中,设备无需为有效信息的快速交互标尺连接。由于主要协议不会再设备间建立面向 连接的通道。在需要发送数据时,将不再有连接丢失或者重连的成本。·

很多协议没有定义完全,他们的每一个位状态均为隐式定义而非显式定义。这将会导致互操作性的问题,每个设备认为连接都有不同的状态,因而对接下来会发生什么或者该发生什么做出不同的假设,而这正是面向连接系统的最大问题之一。该问题可以通过明确定义状态机如何让工作得以解决。蓝牙的逻辑链路控制和适配协议(L2WAP)层是一个很好的例子。经典蓝牙定义了简单的状态机和配置系统用于建立连接,明确定义了所有的连接状态,并对连接状态机进行了完整的描述。

无连接模式定义的是设备的状态,而不是连接的状态。通过无状态的协议(如协议属性)公开状态,允许在任意时刻断开连接,并在重新连接时直接从对端设备获得当前状态。

网关

低功耗蓝牙遵循的模型和许多实现了互联网接入的家庭采用的模型类似,他们大多拥有一台以上的计算机,并且支持网络地址转换(NAT)技术的网关。从外部看来,每个家庭通常只有唯一的互联网地址,分配给网关或者路由器;而该网关为家中与之相连的所有设备分配一个独立的地址空间。网关实现了内部地址和外部地址的转换,对外界隐藏了内部网络的拓扑结构。外部只看到一个设备,并不真正关心究竟是那个设备在发送或者接收数据。

通过使用低功耗蓝牙网关,微型无线设备不但可以连接到互联网,而且能使用尽可能少的能力实现。