本文適用範圍
ADK22.3~
問題/功能描述
使用新版本後,如何實現手機端藍牙耳機經典柱狀電量顯示功能?
實現方案
前面陸續介紹synergy Bluetooth相關知識,本文就是展示如何具體在此版本上解決實際問題。
問題處理邏輯和之前做法一樣。在hfp profile建立配對連接過程中,在合適的地方發送支持電量功能顯示通知給到應用層。應用層接受後就創建循環發送電量的任務。難點在於代碼結構改變,修改位置、使用函數都需要重新定位查找。
- 查找接口函數用於發送AT指令
在INC目錄下文件hfp profile對應頭文件中synergy\inc\hf_lib.h,找到HfAtCmdReqSend宏定義,命名理解就是我們要找的接口。往下跟蹤實際使用函數實現也印證了猜測。
2.查找合適位置注入支持電量顯示功能代碼
在bt目錄下hf profile相關源碼路徑中的查看找到和AT指令處理相關文件,這裡需要結合調試和log信息找到恰當函數
synergy\bt\profile_managers\handsfree\hf\code\csr_bt_hf_at_inter.c
具體添加位置可以詳見下面截圖,這裡不再展示代碼。
3.應用層查找位置添加at指令發送代碼
找到原始發送電量函數位置,藉助默認框架在同時將本指令一同發出即可
adk\src\domains\bt\profiles\hfp_profile\hfp_profile_battery_level.c
FAQ | 常見問題
1.還可以使用老軟體藍牙協議代碼嗎?
目前代碼是可以的。它不支持LE audio,後續也不會升級,所以不推薦使用
2.有沒有官方文檔介紹說明?
有的可以參考文檔80_13827_1,80-34461-1
3.可以支持哪些profile?
基本statck已經實現了據大部分的profile,不過應用層只有和耳機相關的幾個profile的使用代碼。如果用在車載或其他產品需要自行實現應用層
4.協議使用有什麼額外費用嗎?
沒有,代碼開放免費使用
5.以前藍牙相關代碼還可以移植過來嗎?
應用層的還有借鑑作用,底層的代碼都要推倒重來。
評論