蓝牙核心系统包括一个主机,一个主要控制器和零到多个次要控制器。
蓝牙BR/EDR最小核心系统包括:
如果蓝牙BR/EDR最小核心系统带有AMP控制器,还会包括:
蓝牙LE最小核心系统包括:
如果蓝牙系统包括BR/EDR和LE技术,那么最小核心系统就是上面两个最小核心系统的叠加。完整的蓝牙应用需要更多附加的服务和上层协议。蓝牙的应用场景非常多,所以如果包含所有的协议,系统会非常庞大。目前蓝牙芯片或设备只是针对不同的场景,集成不同的上层服务和协议,不会集成所有的蓝牙协议。在本章中,只讨论蓝牙最小系统中包括的层次和协议。
以下是蓝牙核心规范给出的,捆绑BR/EDR/LE技术的蓝牙最小核心系统图:
图中显示了蓝牙最小核心系统的功能模块、控制流和数据流。图中的功能模块只是参考,一般情况下蓝牙规范不会定义实现细节。但是蓝牙规范会定义模块之间的交互。因此图中显示的功能模块是为了帮助描述系统行为。实现方式各个厂商自己定,可能与上图有些差别。
蓝牙规范为所有设备间操作定义标准交互,蓝牙设备根据蓝牙规范交换协议信令。蓝牙核心系统协议包括:
以上协议都会在蓝牙核心规范中定义
以下协议会被一些蓝牙应用使用,属于服务层协议。因为使用比较广泛,所以也会在蓝牙核心协议中描述:
图中椭圆的图形表示蓝牙核心系统提供的服务的访问点。这些访问点提供基本原语去控制蓝牙核心系统(原语:可以理解为系统调用)。蓝牙核心系统提供三种服务:
前两项服务属于控制面(C-plane),后两项服务属于用户面(U-plane)
在图中,蓝牙控制器的服务接口被定义,使得控制器是一种标准的组件加入到蓝牙系统中。在这种组织方式中,蓝牙控制器管理最低四个层次,蓝牙主机管理L2CAP及以上层次。蓝牙控制器和蓝牙主机之间的标准接口叫做主机控制器接口(Host Controller Interface,HCI)。(但HCI接口是可选的。意思是假如蓝牙系统的用另外一种方式组织,蓝牙主机和蓝牙控制器运行在同一个芯片或硬件上,他们之间就不需要HCI接口)
因为蓝牙主机和控制器很可能会分开,主机和控制器之间使用HCI接口进行通信。蓝牙主机和控制器之间都需要buffer存储HCI的命令和数据,而且buffer是有限的。
基于这种假定,在L2CAP层上需要负担一些资源管理的责任。当L2CAP的PDU提交给蓝牙控制器发送到对方设备时,L2CAP需要把PDU分段,转变成更多粒度更小、适合存放在控制器buffer的数据包。并且根据通道的质量情况(因为通道可能会被干扰),控制buffer的流量。(因为通道被干扰的时候可能需要重发,这时候数据流变慢,如果主机一直塞数据给控制器,会出现buffer溢出。L2CAP需要根据实际情况,控制数据包提交速度)
蓝牙BR/EDR基带,LE的连接层,以及AMP的MAC层支持基础的应答/重发请求(ARQ)机制。L2CAP层可以支持一种错误检测和重传的机制(这个机制是可选的,意思是厂商可能提供也肯能不提供)。这个功能对于纠正一些低概率和不能检测的数据错误非常有用(因为底层的误码大多数是1位,1位误码能被底层传输纠正。2位或多位的错误底层可能检测不出来,即使检测出来也不能纠正。但多位错误概率比较低)。另外一个L2CAP可选的功能是基于窗口流控,这个功能可以管理接收buffer的申请。以上两种功能在特定场景下的服务通信质量(QoS)进行讨论。并非所有的L2CAP功能在LE系统中都可用。
尽管各个厂家生产的蓝牙嵌入系统不会把所有功能层次都整合进去,因此有些假设并不需要。然而蓝牙总体架构和QoS模型在定义的时候会把这些假设考虑进去。
自动化一致性测试是蓝牙系统中必备的功能。允许测试器通过控制PHY接口去实现。测试的接口包括:
测试器使用执行测试单元(IUT),通过PHY接口确保从远端设备获得正确的请求应答。测试器通过HCI、DTM、GTM或者TCI接口控制IUT,使得IUT通过PHY接口与远端产生交互。通过这种方法验证一致性。(蓝牙核心规范理解起来有点困难,原理其实比较简单,就是本地设备和远端设备都是由IUT控制,两端的信息IUT都能收集到。IUT枚举各种测试用例,从而观察设备的运行是否正常。)
TCI使用不同的命令集去测试架构中不同的层次和协议。HCI指令集中的子集用作BR/EDR控制器系统中各层次协议的TCI服务接口。一个独立的服务接口用来测试L2CAP层和协议。它没有在《蓝牙核心规范》中描述,在另一个叫《测试控制接口规范》中描述。L2CAP测试接口仅仅用作一致性测试。