ZHCACZ4 August 2023 CC2564C
Pair 命令负责启动与远程蓝牙设备的绑定。此函数在成功执行时返回零,而在出现任何错误时返回负值。在尝试配对之前,必须存在蓝牙协议栈 ID,并且该设备不能事先连接到任何设备(包括该设备尝试配对的设备)。还需要注意的是,要连接到远程设备,必须在调用 Pair 命令之前使用 Inquiry 命令。通用和专用绑定均受支持。
Pair 命令需要一个或两个具有特定值的参数才能成功运行。第一个参数是远程蓝牙设备的查询索引。此参数始终是必需的。该值可以在查询后找到,或者在使用命令 DisplayInquiryList 时显示。如果所需的远程设备未出现在列表中,则无法与该设备配对。第二个参数是用于配对过程的绑定类型。这是一个可选参数,仅在连接需要通用绑定时才需要此参数。必须将值指定为 0(表示专用绑定)或 1(表示通用绑定)。如果仅提供一个参数,则绑定类型为专用绑定。
GAP_Initiate_Bonding(BluetoothStackID, InquiryResultList[(TempParam->Params[0].intParam – 1)], BondingType, GAP_Event_Callback, (unsigned long)0);
提供此函数是为了能够启动绑定过程。此函数可以根据请求的绑定类型执行通用绑定和专用绑定。该函数将以下内容作为输入:执行绑定的本地蓝牙设备的蓝牙协议栈 ID、要绑定的设备的远程蓝牙地址、要执行的绑定类型,以及用于处理此函数成功时将产生的身份验证事件的 GAP 事件回调信息。如果该函数成功,则会通过注册的 GAP 事件回调返回所有进一步的信息。如果此函数成功返回结果,并不意味着远程设备已成功与本地设备绑定,仅意味着远程设备绑定过程已启动。仅当与指定远程蓝牙设备的物理连接尚不存在时,此函数才会成功。此函数将连接到蓝牙设备并开始绑定过程。如果指定了通用绑定,则会维持链路,并且在调用 GAP_End_Bonding 函数之前不会终止链路。这将允许执行在同一物理链路上需要的任何更高级别的初始化。如果执行了专用绑定,则在身份验证过程完成后,链路会自动终止。由于此过程的异步性质,指定的 GAP 事件回调将向调用方通知身份验证过程中出现的任何事件和/或数据。GAP_Cancel_Bonding 函数可随时由 Pair 命令调用以结束绑定过程并终止链路(无论执行的是哪种绑定方法)。使用通用绑定时,如果通过此函数启动的蓝牙链路建立了 L2CAP 连接,则在发出 L2CAPDisconnect 请求(或响应)时,蓝牙协议栈可能会也可能不会终止物理链路。如果发生这种情况,则调用 GAP_End_Bonding 函数将不起作用(在这种情况下,GAP_End_Bonding 函数将返回错误代码)。