蓝牙BLE4.0的LL层数据和L2CAP层数据的区分与理解
一直搞不太清楚藍牙BLE協議,不知道LL層和L2CAP層是如何劃分的,后來博士給我講了講就理解了,寫下來,做個記錄:
1. 我們知道,除了藍牙5.1新出的CTE,所有的BLE都是如下類型的包:
對于連接后的通訊包,PDU的最前面兩個字節為header,header的最前兩個bit為LLID,藍牙BLE就是通過LLID來區分LL層數據和L2CAP層數據的。
2. LL層的包如下:
其中LLID這兩個bit就是用于區分LL層數據和L2CAP層數據的。
當LLID為3時,該數據包為LL控制層數據,如下所示:
3. L2CAP層的包如下:
當LLID為2時,該數據包為L2CAP層數據包的起始包,起始包后續會有L2CAP層的長度和L2CAP層的channel ID,
當LLID為1時,該數據包為L2CAP層數據包的延續包,延續包后續沒有L2CAP層的長度和L2CAP層的channel ID,但這種情況只有當
MTU的值大于data length時才會出現這樣的包,但一般我們不這樣用。
如下圖為L2CAP層數據包格式:
4. L2CAP層的數據,根據channel ID不同,又分為三種不同的L2CAP指令,如下圖所示:
上圖可看出L2CAP包括三種指令:ATT指令,信令指令,SMP指令。
其中,
ATT指令用于傳輸應用通訊數據;
信令指令用于更新連接間隔的指令,和拒絕錯誤操作碼時使用此信令指令;如下圖:
SMP指令用于配對過程;
轉載于:https://www.cnblogs.com/unrulife/p/10763843.html
總結
以上是生活随笔為你收集整理的蓝牙BLE4.0的LL层数据和L2CAP层数据的区分与理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英国诺丁汉大学读研费用一年多少
- 下一篇: java单例设计模式