摘要本文总结了配置中央和外围设备所需的过程,这些设备在单独的STM32WB平台上运行以进行白名单操作。提供了蓝牙LE标准背景下的白名单操作的描述,以及在中央或外围设备上实现此操作所需的程序。该实现基于标准P2P服务器和客户端应用程序示例的实现和使用,如STM32WB固件存储库中所示。

1.概述

第一步是定义白名单以及如何使用它。假设两个人在一个拥挤的区域,并试图定位和联系对方。他们可以试着大喊大叫来寻找对方,但最有可能的是,背景噪音和不知道该面对哪个方向,会淹没他们的呼叫。他们可以使用智能手机设备打电话、发短信、发电子邮件,或者使用任何其他社交应用程序相互联系。这将起作用,因为联系人详细信息正好包含设置此通信链接的信息。连接仅在两个期望的方之间,除非他们提供类似的联系方式供其他人加入。
蓝牙LE中的白名单以类似的方式工作。当中央和外围设备在有许多BLE设备的拥挤区域内运行时,白名单允许建立所需各方之间的连接。以这种方式,外围设备只向所需的中心进行广告,而不必响应和寻址来自其不感兴趣连接的其他中心的扫描或连接请求。反之亦然。中心可以向特定的BLE外围设备发送连接请求。发生上述情况的必要条件是,中心和外围都必须在彼此的白名单目录中。
这种方法的先决条件是,中央(客户端)和外围(服务器)必须事先连接,并且都在彼此的绑定和白名单中。提供了关于如何在客户端和服务器上设置白名单的描述。介绍了必要的程序步骤和与该过程相关的一些关键定义。
 

2.白名单程序


为了建立白名单条目,必须在客户端和服务器之间执行以下过程或步骤。
 
联系 在两个设备之间建立的GAP中心和GAP外围连接
 
配对 连接的设备交换安全加密密钥以管理链路(由安全管理器协议控制)
粘接 这两种设备都能在配对过程之前进行粘合设置。此步骤确保为两个设备之间的下一次连接存储加密密钥和BD地址
白名单条目 客户端会将服务器信息(绑定)添加到其白名单中。
服务器会将客户端信息(绑定)添加到其白名单中。
注意:这通常在达到断开状态时完成。

描述了与白名单的第一次设置相关联的初始连接过程,然后是在后续连接请求中建立的过程。在该示例中,假设外围设备或服务器正在尝试建立白名单,但也将显示中央或客户端如何启动扫描。
 

2.1连接和重新连接过程


初始连接过程将按照BLE标准中的规定进行描述。该实现反映在本文档中描述的客户端和服务器应用程序的示例中。该示例将在两个Nucleo板上实施,以便可以重复该过程。根据经验,不同的智能手机的响应或反应方式不同,因此,实施基于Nucleo板。
图1总结了pass one的流程以及将要呈现的项目结构。服务器以广告模式开始,客户端正在扫描。建立了IO能力。在这种情况下,使用是/否数字比较作为输入机制。绑定配置已设置,扫描和广告事件已启用。连接过程以中央和外围设备上的事件蓝色间隙配对完成开始和结束。这两个设备现在已经连接、绑定并建立了白名单。白名单过程允许在请求时快速存储和检索会话加密和会话地址信息,用于定向重新连接。

图1:连接过程
一旦建立了连接,客户端就会使用aci_gap_terminate()启动断开连接命令。图2总结了断开连接后的过程。服务器发送aci_gap_configure_whitelist()命令来存储白名单条目并将其与绑定信息相关联。然后,它开始了一个新的广告程序。然而,这一次,广告是使用aci_gap_set_undirected_connectable(),使用过滤策略3。这表示白名单广告,并且通过此设置,广告AD标志未设置。这确保了广告服务器将不可见或不可连接到非白名单客户端。
同时,客户端开始常规扫描,并启用其扫描筛选器策略以仅连接到白名单条目。一旦检测到连接事件,它将检查SCAN_RSP的事件处理程序。在扫描响应数据中,服务器的公共地址必须存在才能符合白名单设备的条件。验证服务器正确公共地址的过程对于防止与其他设备连接非常重要。此时,它可以连接到预期的服务器或外围设备。

图2:白名单重新连接过程
第二条
第三条
第四条