ZHCACY9 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)
int BTPSAPI GAP_Initiate_Bonding(unsigned int BluetoothStackID, BD_ADDR_t BD_ADDR, GAP_Bonding_Type_t GAP_Bonding_Type, GAP_Event_Callback_tGAP_Event_Callback, unsigned long CallbackParameter)
提供此函數是為了能夠啟動綁定過程。此函數可以根據請求的綁定類型執行通用綁定和專用綁定。該函數將以下內容作為輸入:本地藍牙設備的藍牙協議棧 ID(用于執行綁定)、要綁定的設備的遠程藍牙地址、要執行的綁定類型,以及 GAP 事件回調信息(用于處理此函數成功時將產生的身份驗證事件)。如果該函數成功,則會通過注冊的 GAP 事件回調返回所有進一步的信息。請注意,如果此函數成功返回結果,并不意味著遠程設備已成功與本地設備綁定,僅意味著遠程設備綁定過程已啟動。僅當不存在與指定遠程藍牙設備的物理 DisplayInquiryList 配對連接時,此函數才會成功。此函數將連接到藍牙設備并開始綁定過程。
如果指定了通用綁定并維持了鏈路,則在調用 GAP_End_Bonding 函數之前不會終止連接。這允許執行在同一物理鏈路上需要的任何更高級別的初始化。
如果執行了專用綁定,則在身份驗證過程完成后,鏈路會自動終止。由于此過程的異步性質,指定的 GAP 事件回調將向調用方通知身份驗證過程中出現的任何事件和/或數據。可隨時調用 GAP_Cancel_Bonding 函數以結束綁定過程并終止鏈路(無論執行的是哪種綁定方法)。使用通用綁定時,如果通過此函數啟動的藍牙鏈路建立了 L2CAP 連接,則在發出 L2CAPDisconnect 請求(或響應)時,藍牙協議棧可能會也可能不會終止物理鏈路。如果發生這種情況,則調用 GAP_End_Bonding 函數不起作用(在這種情況下,GAP_End_Bonding 函數會返回一個錯誤代碼)。