您現在的位置是:首頁 > 遊戲

低功耗藍芽中的資料包確認

由 鑫宇環檢測認證 發表于 遊戲2023-01-14
簡介如果比較結果顯示兩者不同則表明此PDU為重複傳送的PDU,應保持下一個期望順序號位元值不變並忽略此資料包

手機接收資料包數多少正常

低功耗藍芽中的資料包確認

資料包確認流程

低功耗藍芽鏈路層的資料包確認和流量控制機制應用於所有ACL連線及連線等時流(CIS)中。下述中的PDU指資料物理通道PDU或連線等時流資料PDU。

在每一條低功耗藍芽連線中鏈路層有兩個引數: 傳送順序號(SN)和下一個期望順序號(NESN),每個引數由一個位元表示。傳送順序號用於區分鏈路層傳送的資料包;下一個期望順序號用於鏈路層對與其相連線的裝置上一次傳送的資料包的確認或者請求重新發送。

ACL連線或連線等時流(CIS)剛建立時傳送順序號和下一個期望順序號引數均應設定為0。

如果上一次傳送的資料物理通道PDU使用的是LE Coded PHY, 重新發送使用的編碼方案可能與上一次傳送使用的編碼方案不相同。如果在等待資料物理通道PDU重新發送時出現PHY更新流程則將使用新的PHY重新發送。

新PDU是指由鏈路層初次傳送的PDU; 上一個PDU是指鏈路層重新發送的PDU。當重新發送資料物理通道PDU時,資料包中除報頭中的NESN位元之外的資料包其他部份應當與鏈路層上次傳送的資料物理通道PDU相同。

對於每一個新PDU,報頭中的SN位元應設定為[傳送裝置的]傳送順序號位元值;對於每一個傳送的PDU,報頭中的NESN位元應設定為[傳送裝置的]下一個期望順序號位元值。

每接收到一個PDU後應將PDU中的SN位元值與[接收裝置的]下一個期望順序號(NESN)位元值進行比較。如果比較結果顯示兩者不同則表明此PDU為重複傳送的PDU,應保持下一個期望順序號位元值不變並忽略此資料包;如果比較結果顯示兩者相同則表明此PDU為新PDU,應將下一個期望順序號位元值取反並接收此資料包。

每接收到一個PDU後應將PDU中的NESN位元值與[接收裝置的]傳送順序號(SN)位元值進行比較。如果比較結果顯示兩者相同則表明上一次傳送的PDU沒有被確認,應當立即重新發送;如果比較結果顯示兩者不同則表明上一次傳送的PDU已被確認,可以傳送新的PDU了。

以上描述的流程可以圖解如下:

低功耗藍芽中的資料包確認

如果接收到的PDU中CRC無效時下一個期望順序號位元值應保持不變,以表明此PDU沒有確認接收。由於接收到的PDU已被拒絕,來自對等裝置的下一個期望順序號位元值不可信,因此從此裝置傳送的上一個PDU未被確認,必須重新發送且傳送順序號應保持不變。

CRC檢查合格的PDU中的SN及NESN位元值應當採用;當接收到的PDU的SN位元值與上次接收到的PDU中的SN位元值相同時此PDU的有效載荷應當被忽略。

推薦文章