ZHCACY9 August 2023 CC2564C
Pair 命令負(fù)責(zé)啟動與遠程藍牙設(shè)備的綁定。此函數(shù)在成功執(zhí)行時返回零,而在出現(xiàn)任何錯誤時返回負(fù)值。在嘗試配對之前,必須存在藍牙協(xié)議棧 ID,并且該設(shè)備不能事先連接到任何設(shè)備(包括該設(shè)備嘗試配對的設(shè)備)。請注意,要連接到遠程設(shè)備,必須在調(diào)用 Pair 之前使用 Inquiry 命令。通用和專用綁定均受支持。
Pair 命令需要一個或兩個具有特定值的參數(shù)才能成功運行。第一個參數(shù)是遠程藍牙設(shè)備的查詢索引。此參數(shù)始終是必需的。該值可以在查詢后找到,或者在使用命令 DisplayInquiryList 時顯示。如果所需的遠程設(shè)備未出現(xiàn)在列表中,則無法進行配對。第二個參數(shù)是用于配對過程的綁定類型。這是一個可選參數(shù),僅在連接需要通用綁定時才需要此參數(shù)。必須將值指定為 0(表示專用綁定)或 1(表示通用綁定)。如果僅提供一個參數(shù),則綁定類型為專用綁定。
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)
提供此函數(shù)是為了能夠啟動綁定過程。此函數(shù)可以根據(jù)請求的綁定類型執(zhí)行通用綁定和專用綁定。該函數(shù)將以下內(nèi)容作為輸入:本地藍牙設(shè)備的藍牙協(xié)議棧 ID(用于執(zhí)行綁定)、要綁定的設(shè)備的遠程藍牙地址、要執(zhí)行的綁定類型,以及 GAP 事件回調(diào)信息(用于處理此函數(shù)成功時將產(chǎn)生的身份驗證事件)。如果該函數(shù)成功,則會通過注冊的 GAP 事件回調(diào)返回所有進一步的信息。請注意,如果此函數(shù)成功返回結(jié)果,并不意味著遠程設(shè)備已成功與本地設(shè)備綁定,僅意味著遠程設(shè)備綁定過程已啟動。僅當(dāng)不存在與指定遠程藍牙設(shè)備的物理 DisplayInquiryList 配對連接時,此函數(shù)才會成功。此函數(shù)將連接到藍牙設(shè)備并開始綁定過程。
如果指定了通用綁定并維持了鏈路,則在調(diào)用 GAP_End_Bonding 函數(shù)之前不會終止連接。這允許執(zhí)行在同一物理鏈路上需要的任何更高級別的初始化。
如果執(zhí)行了專用綁定,則在身份驗證過程完成后,鏈路會自動終止。由于此過程的異步性質(zhì),指定的 GAP 事件回調(diào)將向調(diào)用方通知身份驗證過程中出現(xiàn)的任何事件和/或數(shù)據(jù)。可隨時調(diào)用 GAP_Cancel_Bonding 函數(shù)以結(jié)束綁定過程并終止鏈路(無論執(zhí)行的是哪種綁定方法)。使用通用綁定時,如果通過此函數(shù)啟動的藍牙鏈路建立了 L2CAP 連接,則在發(fā)出 L2CAPDisconnect 請求(或響應(yīng))時,藍牙協(xié)議??赡軙部赡懿粫K止物理鏈路。如果發(fā)生這種情況,則調(diào)用 GAP_End_Bonding 函數(shù)不起作用(在這種情況下,GAP_End_Bonding 函數(shù)會返回一個錯誤代碼)。