1、主機控制接口協議 HCI
藍牙主機-主機控模型測試
藍牙軟件協議棧堆的數據傳輸過程:spa
一、藍牙控制器接口數據分組:指令分組、事件分組、數據分組
(1)、指令分組3d
如:Accpet Connection Request
Opcode爲:0x0409
參數長度爲: 07
參數中藍牙地址爲:00:0d:fd:5f:16:9f
角色爲:從設備 0x01
大端數據模式
指令爲:09 04 07 9f 16 5f fd 0d 00 01
(2)、事件分組code
如上圖:
Opcode :0x0409
狀態: 0x00
總長度: 4字節
命令狀態:0x0f
(3)、數據分組
ACL 數據分組orm
注:PB Packet_Boundary BC Broadcast Flag
SCO 數據分組blog
(4)、RS232分組指示器:接口
二、HCI控制命令事件
(1)、鏈路控制指令ip
(2)、鏈路策略指令資源
(3)、主機控制器與基帶指令
(4)、信息指令參數
(5)、狀態指令參數
(6)、測試指令
(7)、錯誤代碼
2、邏輯鏈路控制與適配協議 L2CAP
L2CAP位於基帶之上,將基帶的數據分組轉換爲便於高層應用的數據分組格式,並提供協議複用和服務質量交換等功能。L2CAP只支持ACL數據傳輸,不支持SCO數據。
L2CAP自己不提供增強信道可靠性和保證數據完整性的機制,其信道的可靠性依靠基帶提供。
一、協議複用:底層傳輸協議沒有提供對高層協議的複用機制,於是L2CAP支持高層協議複用,L2CAP層能夠區分其上的SDP、RFCOMM、TCS等。
二、分段重組:L2CAP層幫助實現基帶的短PDU和高層的長PDU相互傳輸,L2CAP自己不完成任何PDU的分段重組,具體的分段重組有低層和高層來完成。
三、服務質量 Qualityof Serivce 信息的交換:藍牙創建鏈接的過程當中,L2CAP容許交互藍牙所指望的服務質量,創建完成後,經過監視資源的使用狀況,來保證服務質量。
四、組抽象:L2CAP忽略地址組概念,他只關心數據。
L2CAP信道有三種類型:
A、面向鏈接信道:Connection-OrientedCO,用於兩個設備之間的數據通訊。
B、無鏈接信道:Connection-LessCL,用來向一組設備廣播方式傳輸數據。CID爲固定值:0x0002。
C、信令信道:Signaling,用於建立CO通道,能夠經過協商改變CO信道的特性。
CL信道的L2CAP_PDU
如上圖所示,一條L2CAP信令,1爲L2CAP分組頭,2爲信令指令頭,3爲數據部分。
L2CAP:
Role:Master
Address:11
PDULength: 6 //指令的長度,值爲06 00
ChannelID: 0x0001 (Signaling)//L2CAP的信令通道,值爲01 00
Code:Information request//信息請求,值爲0a
Identifier:1//標識符,值爲01
CommandLength: 2//命令長度,值爲02 00
InfoType:Extended features supported//02 00
因此這條指令完整的爲:
06 00 01 00 0a 01 02 00 02 00
信令的其餘操做以下:
(3)、QoS 服務質量
3、服務發現協議 SDP
SDP兩種服務發現模式:
1)、服務搜索:查詢具備特定服務屬性的服務;
2)、服務瀏覽:簡單的瀏覽所有可用服務。
(1)、PDU 格式:(協議數據單元)
(2)、服務記錄表
SDP的服務記錄表對每個服務進行描述,每條記錄包含服務句柄、一組服務屬性:
Service Record Attributes:服務記錄;
Service Record Handle 服務句柄;
Attribute 服務屬性;
4、串口仿真協議 RFCOMM
爲創建在串口之上的傳統應用提供環境接口,使他們能夠作比較少協議改動就能夠在藍牙無線通訊無線鏈路上工做。多路串口仿真是RFCOMM的重要功能,經過多路複用器(multiplexer),一條L2CAP鏈路能夠同時 多個串行應用。
兩臺設備間的串口仿真: