Bui~ 又是BLE ╮(╯▽╰)╭
新的藍牙規範出來,高通也引入了新的協議棧機制——synergy。這一改動大大小小會影響一些功能的使用,很多操作協議的代碼書寫習慣會發生改變,其中也包括BLE o(╥﹏╥)o 但還好改動不算天翻地覆那種,基本邏輯還是沒怎麼變的。對於自建ble的gatt服務的操作,其實還是可以參考之前的博文Biu~筆記:高通藍牙ADK(21)--自定義BLE服務 - 大大通(中國) (wpgdadatong.com.cn) 但是gatt庫初始化和消息處理部分需要改動,其他還是原來的樣子,可以參考Biu~筆記:高通藍牙ADK(20)--自建gatt庫 - 大大通(中國) (wpgdadatong.com.cn) 前面部分。
對應改動部分,我們其實可以參考默認的代碼,例如fast pair的服務或者device info的服務(但是這個比較簡單,而且他被移到別的文件夾下面了,和以前有些差異)。我們這裡就參考fast pair簡單講解一下,目前用的代碼版本是S3/S5 Gen2 的593.1版本。
在adk-src-1-0_qtil_standard_oem_qcc518x-qcc308x\adk\src\libs\gatt_fast_pair_server這個目錄下我們能看到fast pair的gatt庫,裡面會調用GattFastPairServerInit進行初始化註冊,完成之後會在fpsServerMsgHandler 接收到註冊確認信息CSR_BT_GATT_REGISTER_CFM, 如果成功就會進一步註冊handle,隨後還會在fpsServerMsgHandler接收到註冊確認信息 CSR_BT_GATT_FLAT_DB_REGISTER_HANDLE_RANGE_CFM。到這裡gatt註冊就完成了。這是初始化部分的不同,在連接後的數據交互部分,底層反上來的消息也和以前不一樣,但是都會在fpsServerMsgHandler做對應的處理,這個對著修改就好了。
而在應用層的處理,我們就不參考fast pair的,因為他的太複雜了,這裡就可以參考電池服務的應用處理。他的代碼目錄是在 adk-src-1-0_qtil_standard_oem_qcc518x-qcc308x\adk\src\domains\bt\gatt\servers\gatt_server_battery ,具體內容和以前區別不大。
但是在BLE 廣播裡就有些不一樣了。因為新規範是改動了BLE部分的協議,所以代碼里會經常看到有Legacy的語句,這是用來區分新舊機制的。
在廣播數據設置中,獲取數據的callback函數發生了變化,相關定義如下:
可以看到還是有獲取數據的callback,但是這個callback不需要加廣播類型的判斷了,而這個判斷可以理解為移到了GetItemInfo這個callback裡面設置。這裡面會設置廣播包位置、廣播類型、廣播數據大小等,但個人感覺這種設置比以前更直觀了(畢竟以前的方法我還做了動畫出來給別人講解o(╥﹏╥)o)。而其他的callback是可選的應用,參考默認去使用就好了。大致的改變就是這樣,如果想要用以前的廣播可以參考Biu~筆記:高通藍牙ADK(14)--添加BLE廣播數據 - 大大通(中國) (wpgdadatong.com.cn) 和Biu~筆記:高通藍牙ADK(15)--BLE廣播數據組建過程 - 大大通(中國) (wpgdadatong.com.cn) 。
另外(→ ◡ →) 懂你們的啦。
以上是本期博文的全部內容,如有疑問就別在博文下方評論留言了,有什麼疑問或想了解的當面和我說(如果你知道我是誰的話ヽ( ̄▽ ̄)و),我會儘量安排上(o´ω`o)و。謝謝大家瀏覽,我們下期再見。
簡單是長期努力的結果,而不是起點
—— 不是我說的
FAQ 1:有沒有快速上手代碼?
A1:下載附件
FAQ 2:如何獲得博主的聯繫方式?
A2:通過正規渠道成為我們的VIP,即可體驗博主一對一的服務(→ ω →)
知道的人不可販賣博主聯繫方法,從前有個人這樣做,結果沒了(〃'▽'〃)
FAQ 3:不用LE audio能不能用回傳統ble 廣播
A3:理論上是可以的
FAQ 4:用LE audio能不能用回傳統ble 廣播
A4: 不建議
FAQ 5:出現了很多怪怪的問題,求指導
A5: (→ ω →)可能你需要個VIP
評論