天天看點

[BLE--Link Layer]Link層控制之連接配接參數請求

簡述

在兩個BLE裝置處于connection狀态時(至于如何進入connection狀态可以參考​​Link Layer狀态及其之間的切換​​​)。

連接配接參數請求的作用,就是master或slave可能因為自己應用的需求,比如要增大資料傳輸速率等,要将connection interval, slave latency之類的參數進行修改更新,此時就會發起一個“連接配接參數請求”的過程,和對方協商以達到更适合于應用的目的。

Connection Parameters Request Procedure

在介紹master或slave的連接配接參數更新之前,必須要了解下Connection Parameters Request Procedure(連接配接參數請求過程)。

作用

該過程被master或slave用來向對方請求連接配接參數更新,這些連接配接參數包括:connInterval, connSlaveLatency, connSupervision Timeout。

LL_CONNECTION_PARAM_REQ初始化

連接配接參數請求過程的開始是由發起一個LL_CONNECTION_PARAM_REQ的PDU觸發的。這個PDU既可以被master發起,也可以被slave發起的。

當對方不支援該PDU,會回複一個LL_UNKNOWN_RSP的PDU。如果slave端由host初始化“連接配接更新過程”時發起的LL_CONNECTION_PARAM_REQ這個PDU,那slave在收到LL_UNKNOWN_RSP的PDU時還需要通知Host這次“連接配接更新過程”的結果。

對于host層發起而觸發的連接配接參數更新的考慮

即Link層“連接配接參數請求過程”初始化是由Host層“連接配接更新過程”初始化所觸發的時候:

- Link層接收來自Host層的connInterval, Latency, Timeout的值,但是當這些值并不滿足Link層這邊需求時可以修改之;

- Link層可以告知其偏好的值;

- Link層可以設定Offset0–Offset5區域的值;

LL_CONNECTION_PARAM_REQ更多考慮

如果由Link層自主發起,而非由Host層觸發,那connInterval, Latency, Timeout的值都是設定為目前值(這裡的目前值應當是本地所存儲的值?如果目前值就是目前鍊路所用的連接配接參數,那還用更新幹嘛?),估計這種情況用的并不多。

另外Link層必須保證connInterval, Latency參數的設定不會直接引起Timeout,因為interval和Latency過大,兩個connection event之間的時間間距就超過suppervision timeout值了,這樣的設定沒有意義!

對LL_CONNECTION_PARAM_REQ的回複

如果LL_CONNECTION_PARAM_REQ中的參數隻是改變了LE connection的Anchor Point的話,說明connInterval, Latency, Timeout并未更改,是以此時Link層不需要通知給Host層。

其實對于LL_CONNECTION_PARAM_REQ的回複,如果Link層發現參數超出了自己的範圍,擷取有某些錯誤,或者通知了Host層而得到Host的拒絕更新,那麼就會回複一個LL_REJECT_IND_EXT給對方表示不接受。隻要有LL_REJECT_IND_EXT發出,本次“連接配接參數請求”過程就宣告失敗,不會繼續進行後面步驟。

簡圖

如下是對“連接配接參數請求”過程中涉及的Link層消息互動的簡圖:

[BLE--Link Layer]Link層控制之連接配接參數請求

“連接配接參數請求過程”的所有可能情況

直接從Slave的Link層發起,master接受

[BLE--Link Layer]Link層控制之連接配接參數請求

直接從Slave的Link層發起,master拒絕

[BLE--Link Layer]Link層控制之連接配接參數請求

從Slave的Host層發起,master接受

[BLE--Link Layer]Link層控制之連接配接參數請求

從Slave的Host層發起,master拒絕

[BLE--Link Layer]Link層控制之連接配接參數請求

直接從Master的Link層發起,slave接受

[BLE--Link Layer]Link層控制之連接配接參數請求

直接從Master的Link層發起,slave拒絕

[BLE--Link Layer]Link層控制之連接配接參數請求

從Master的Host層發起,slave接受

從Master的Host層發起,slave拒絕