BLE作為從機使用時,如何手動斷開藍牙連接,有沒有相關(guān)的接口可以調(diào)用?
應用程序的某個任務(wù)需要手動查詢當前藍牙處于連接狀態(tài)還是廣播狀態(tài),怎么操作?
查看: 4809
回復: 3
CH573的BLE協(xié)議棧應用需求問題
熱門產(chǎn)品 :
CH339: 7端口多功能USB HUB控制器芯片
斷開可調(diào)用下面代碼:
//這里的connHandle 是連接建立時候傳進來的connection handle, 代表一路連接
extern bStatus_t GAPRole_TerminateLink( uint16 connHandle );
連接會有連接和斷開會報事件上來,例程里面通常提供了函數(shù):? ? ? ??
連接斷開:Peripheral_LinkTerminated(?pEvent?); 連接建立:Peripheral_LinkEstablished(?pEvent?);
至于是否處于廣播狀態(tài)可以通過以下api獲取:
//獲取當前廣播狀態(tài)//0為非廣播,非0為廣播uint8_t?adv_status; GAPRole_GetParameter(GAPROLE_ADVERT_ENABLED,?&adv_status?);
一個要注意的地方:
?* 廣播與連接 并不是互斥的, 可以存在連接建立后,仍然開啟廣播的情況(多連接場景).
應用里只需要一對一連接,不需要多連接,該怎么配置,其他任務(wù)需要隨時可以查詢藍牙是否斷開連接
兩個選擇:
1,定義一個變量, 在下面兩個函數(shù)里面 分別復位和置位, 用這個變量作連接斷開標識
連接斷開:Peripheral_LinkTerminated(?pEvent?);
連接建立:Peripheral_LinkEstablished(?pEvent?);
2,直接判斷connection handle值, 例程中,這個值,在斷開后會賦值為0xffff, 連上后會賦值為對應的connection handle值
如在官方sdk中EXAM>BLE>Peripheral 例程中以下變量:
peripheralConnList.connHandle
請勿發(fā)布廣告和違法內(nèi)容, 代碼可以選擇編輯器代碼語言格式, 更易他人閱讀幫助您, 或者留下聯(lián)系方式,以便更好更快服務(wù)您
只有登錄才能回復,可以選擇微信賬號登錄