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