BLE Link Layer數據包和事件交互

BLE設備的狀態遷移圖:

 

Standby State:不會發送和接收數據包

Advertising State:轉發廣播數據包並且能夠監聽廣播通道的數據,在這個狀態下,設備被認爲是廣播者

Scanning State:監聽廣播通道的數據,這個狀態下被當做掃描者。

Initiating State:監聽廣播廣播通道數據從一個特定的設備,然後發起連接。

Connection State:設備連接起來

 

Link Layer pack格式:

主要有兩種 pack:

     Advertising pack、Data pack

Preamble(這個值取決於Accesss Address的最低位):

如果是0就是 10101010

如果是1就是 01010101

Accesss Address:

對於廣播信道的是個固定的值: 0x8E89BED6

如果是數據通道的話,Accesss Address這個值由在Initiating設備所產生的隨機值

產生的隨機值有六大要求:

(1)不能是6個連續的0或者1

(2)不能和廣播信道的值一樣

(3)最少要和廣播信道的值保持兩位不一樣

(4)四個字節的值不能一樣

(5)不能出現24個翻轉

(6)每六個相同的bit要翻轉一次

PDU:具體決定這個數據包是什麼類型

 

Advertising PDU:

Header:

PDU Type:決定廣播pack是哪一種類型

RFU:保存用在以後使用

TxAdd: 發送數據發送設備Device Address是公開的(Txadd = 0)或者隨機的(Txadd = 1)

RxAdd: 接收數據是接收設備Device Address是公開的(Txadd = 0)或者隨機的(Txadd = 1)

Length:表明Payload的長度

PDU Type有以下具體的廣播事件:

Advertising State:

ADV_IND:沒有確定連接方向的可連接廣播事件

ADV_DIRECT_IND:確定連接設備的廣播事件

ADV_NONCONN_IND:不可連接的廣播事件

ADV_SCAN_IND:掃描沒有連接的廣播事件

ADV_IND:當PDU_TYPE = ADV_IND TxAdd 反應廣播地址是公開的(Txadd = 0)或者隨機的(Txadd = 1)

 

AdvData:包含廣播數據來自於廣播的主機(I2CAP)

 

ADV_DIRECT_IND:

 

AdvA:廣播設備的地址

InitA:發起連接的設備地址

 

這個包不包含任何主機數據

 

 

RxAdd : (RxAdd = 0)  (RxAdd = 1)

表明發起的廣播地址是公開還是隨機的

 

ADV_NONCONN_IND:

 

 

ADV_SCAN_IND

 

 

 

掃描PDU:

 

SCAN_REQ:數據的發送在Scaning State接收在Advertising State

 

 

 

 

 

 

SCAN_RESP:數據發送在Advertising State接收在Scaning State

 

 

 

發起狀態的PDU:

 

CONNECT_REQ:數據發送在Initiating State接收在Advertising State

 

 

 

AA:Access Address

CRC:

WinSize:表示傳輸的大小

WinOffset:

Interval:傳輸間隔

Latency:

Timeout:

ChM:表示數據通道是否使用,總共有37個數據通道(0~36)

bit 0 對應的是數據通道 0

bit 36 對應的是通道 36 

37 38 39 保存

SCA:

 

LL Data PDU:

Header:

 

LL DATA Control PDU:

 

 

Length: 不能設置0

Opcode表示不同的控制類型

 

 

LL_CONNECTION_UPDATE_REQ:

 

 

 

 

LL_CHANNEL_MAP_REQ:

 

 

LL_TERMINATE_IND:

 

LL_ENC_REQ:

 

 

 

LL_ENC_RSP:

 

 

LL_START_ENC_REQ:

沒有CtrData

LL_START_ENC_RSP:

沒有CtrData

 

LL_UNKNOWN_RSP:

 

 

LL_FEATURE_REQ:

 

LL_FEATURE_RSP:

 

LL_PAUSE_ENC_REQ:

沒有CtrData filed.

 

LL_PAUSE_ENC_RSP:

沒有CtrData filed.

 

LL_VERSION_IND:

 

LL_REJECT_IND:

LL_SLAVE_FEATURE_REQ:

 

LL_CONNECTION_PARAM_REQ:

 

 

 

LL_CONNECTION_PARAM_RSP:

 

 

 

LL_REJECT_IND_EXT:

 

 

LL_PING_REQ:

沒有CtrData

LL_PING_RSP:

沒有數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章