Connection Parameter Update Procedure 是一個 GAP 的 Procedure,允許 Central 或者 Peripheral 在連接後是可以更新連接參數。一般原廠會提供相關 GAP 的 API, 例如我司的 API 就是
int inb_conn_param_update(int conidx, inb_conn_param_update_t *p_upd)
而GAP下面的layer如果實現,則是分爲3種情況:
-
Central 要更新連接參數,但 Central 或 Peripheral 有一個不支持 Connection Parameters Request Procedure,則 Central 用 Link Layer 的 Connection Update procedure 來更新參數。Master 發送 LL_CONECTION_UPDATE_IND 來更新連接參數。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6OQhRQmo-1592233267585)(https://raw.githubusercontent.com/hnmsky/gitalk/master/img/20200614211208.png)]
-
Peripheral 要更新連接參數,但有兩個連接的設備有一個不支持 Connection Parameters Request Procedure ,就需要用 L2CAP 的CONNECTION PARAMETER UPDATE REQUEST 命令,master 會發送 CONNECTION PARAMETER UPDATE RESPONSE 返回結果。如果更新成功,Slave 的 Host 會收到 Controller 的通知。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8UQvaxZe-1592233267588)(https://raw.githubusercontent.com/hnmsky/gitalk/master/img/20200615081249.png)]
CONNECTION PARAMETER UPDATE REQUEST
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qoVZ6xYm-1592233267589)(https://raw.githubusercontent.com/hnmsky/gitalk/master/img/20200615081314.png)]
CONNECTION PARAMETER UPDATE RESPONSE
- 如果 Central 和 Peripheral 都支持 Connection Parameters Request Procedure, 則用 Connection Parameters Request Procedure 來更新連接參數。下面分別是 Master 和 Slave 發起請求的過程:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-63v1KnIf-1592233267592)(https://raw.githubusercontent.com/hnmsky/gitalk/master/img/20200615224116.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-wLxtQHMK-1592233267595)(https://raw.githubusercontent.com/hnmsky/gitalk/master/img/20200615224123.png)]
參考文獻:
Bluetooth Core Specification v 5.0