ble pdu 头格式

根据应用场景的不同,处于不同状态的BLE设备,可以发送不同类型的PDU(Packet Data Unit)

PDU Type(4 bits) RFU(2 bits) TxAdd(1 bit) RxAdd(1 bit) Length(6 bits) RFU(2 bits)
指示PDU的类型 保留将来使用 由具体的PDU Type决定其意义 由具体的PDU Type决定其意义 PDU的长度,6 bits,有效范围是6~37 octets 保留将来使用
           

PDU类型

PDU类型 PDU格式 说明
Advertising ADV_IND AdvA(6 octets) 
AdvData(0~31 octets)
connectable undirected advertising event,用于常规的广播,可携带不超过31bytes的广播数据,可被连接,可被扫描: 
AdvA,6bytes的广播者地址,并由PDU Header的TxAdd bit决定地址的类型(0 public,1 random); 
AdvData,广播数据。
  ADV_DIRECT_IND AdvA(6 octets) 
InitA(6 octets)
connectable directed advertising event,专门用于点对点连接,且已经知道双方的蓝牙地址,不可携带广播数据,可被指定的设备连接,不可被扫描: 
AdvA,6bytes的广播者地址,并由PDU Header的TxAdd bit决定地址的类型(0 public,1 random); 
InitA,6bytes的接收者(也是连接发起者)地址,并由PDU Header的RxAdd bit决定地址的类型(0 public,1 random)。
  ADV_NONCONN_IND AdvA(6 octets) 
AdvData(0~31 octets)
和ADV_IND类似,但不可以被连接,不可以被扫描。
  ADV_SCAN_IND AdvA(6 octets) 
AdvData(0~31 octets)
和ADV_IND类似,但不可以被连接,可以被扫描。
Scanning SCAN_REQ ScanA(6 octets) 
AdvA(6 octets)
当接收到ADV_IND或者ADV_SCAN_IND类型的广播数据的时候,可以通过该PDU,请求广播者广播更多的信息: 
ScanA,6bytes的本机地址,并由PDU Header的TxAdd bit决定地址的类型(0 public,1 random); 
AdvA,6bytes的广播者地址,并由PDU Header的RxAdd bit决定地址的类型(0 public,1 random)。
  SCAN_RSP AdvA(6 octets) 
ScanRspData(0~31 octets)
广播者收到SCAN_REQ请求后,通过该PDU响应,把更多的数据传送给接受者。 
AdvA,6bytes的广播者地址,并由PDU Header的TxAdd bit决定地址的类型(0 public,1 random); 
ScanRspData,scan的应答数据。
Initiating CONNECT_REQ InitA (6 octets) 
AdvA (6 octets) 
LLData (22 octets)
当接收到ADV_IND或者ADV_DIRECT_IND类型的广播数据的时候,可以通过该PDU,请求和对方建立连接: 
InitA,6bytes的本机地址,并由PDU Header的TxAdd bit决定地址的类型(0 public,1 random); 
AdvA,6bytes的广播者地址,并由PDU Header的RxAdd bit决定地址的类型(0 public,1 random); 
LLData,BLE连接有关的参数信息,具体请参考后续文章的介绍。

参考:http://www.wowotech.net/bluetooth/ble_broadcast.html

猜你喜欢

转载自blog.csdn.net/Life_Maze/article/details/81395800