第16節_BLE協議GAP層


學習資料:官方手冊

Vol 3: Core System Package [Host volume]

          Part C: Generic Access Profile

下面這個圖是BLE協議各層跟醫院的各個科室的類比圖:

每個醫院的大堂都有些約定:

① 大堂里有醫院的介紹,你可以根據它確定這個醫院是否適合你;

② 有急救通道

③ 要掛號,掛號后你跟醫院才建立了聯系,才能去找醫生看病。

重點在於:怎么確定醫院(是否適合你)、怎么建立聯系。

 

在BLE里,也有一些約定用來發現設備、連接設備,在GAP里定義這些約定。GAP是一個Profile(規范)。這個規范里,它要用到LL層、L2CAP層、SM層、ATT層、GATT層的功能。

想想這4個設備:

1. 超市每個貨架那里有一個藍牙設備,它不斷向周邊發出廣告信息:你肯定不想連接它

2. 用電池供電的手環:平時它為了省電什么都不做,你要發現、連接它,首先要按一下按鈕

3. 家里用插座供電的鬧鍾:它不需要省電,它可以一直發出廣播信息。

4. 你的手機

上述設備的角色(Role)、所處的模式(Mode)、能執行的操作或規程(Procedure),由GAP定義。比如:

1. 貨架上的藍牙設備:

它的角色是:Broadcaster,廣播者。只廣播信息,別人不可能也沒必要去連接它。

2. 手環:

它的角色是:Peripheral,外圍設備。它可以處於這種模式:Limited Discoverable Mode,有限可發現模式。按下它的按鈕的一小段時間里,可以用手機去發現它;超時之后,手機無法發現它。

對應的,手機的Role是Central中央設備,它要執行這2種規程(Procedure)之一才能發現這個手環

① Limited Discovery Procedure

② General Discovery Procedure

3. 鬧鍾:

它的角色是:Peripheral,外圍設備。它可以處於這種模式:General Discoverable Mode,普通可發現模式,一直發出廣播信號

對應的,手機的Role是Central,中央設備,它要執行這種規程(Procedure)才能發現這個手環:General Discovery Procedure

4. 手機

即可能是Observer,也可能是Central。

當它去獲得貨架廣告機的信息時,它是Observer;

當它去嘗試連接手環、鬧鍾時,它是Central。

 

下面細說。

一、廣播數據的格式定義:

在LL層里對廣播包的格式有過定義,但是對於其中傳輸的廣播數據,它的格式是在GAP中定義的。

對於ADV_IND類型的廣播包,它的Payload也是在LL層定義的,如下:

但是,其中的AdvData格式是在GAP層定義的:

 

 

 

總結起來有2個概念:PDU Type、AD Type,如下:

1. LL層可以發出各種不同PDU Type的廣播包,比如:可連接的、不可連接的等等

2. 某種PDU Type的廣播包中,還可以進一步定義它的AD Type

  在GAP中,可以設置廣播類型(AD Type),比如Discoverable Mode

二、BLE GAP層中的角色(Role):

GATT層從數據的提供、使用者角度,提出了server、client的概念。

GAP則從數據的發起、接收者角度,提出了以下4個角色(Role)的概念:

1. Broadcaster,廣播者

發出廣播信號,可以沒有無線接收器。

2. Observer,觀察者

接收廣播信號,可以沒有無線發送器。

3. Peripheral,外圍設備

可以跟其他設備建立連接,建立連接時它是被動的一方。

既含有無線發送器,也含有無線接收器。

4. Central,中央設備

可以跟其他設備建立連接,建立連接時它是主動的一方。

既含有無線發送器,也含有無線接收器。

 

這些角色在物理層、LL層上能進行的操作如下:

三、Broadcast Mode and Observation Procedure:

處於Broadcast Mode的設備,可以發出這2種事件之一:

① non-connectable and non-scannable undirected events

② non-connectable and non-scannable directed advertising events

怎么發出呢?在LL層規范里顯示,是使用ADV_NONCONN_IND的廣播包實現第①種事件的:

在上圖中的ADV_NONCONN_IND的廣播包里,廣播數據中的AD Type要設置這2個位為0:

① LE General Discoverable Mode

② LE Limited Discoverable Mode

對於第②種事件,在LL層規范里也有描述,但是沒有圖。它是使用ADV_EXT_IND廣播包實現來實現的。ADV_EXT_IND廣播包是在BLE 5.0規范里才引入了,我們沒有講解它。

處於Broadcast Mode的設備發出的廣播操作,別人怎樣來接收它們?要使用Observation Procedure來接收

Observation Procedure有2種方法:主動掃描(active scanning)、被動掃描(passive scanning)

四、Discoverability modes and procedures:

1. Non-Discoverable Mode

不可發現模式,這很少用到。

在這種模式下,其發出的廣播包中的AD Type要設置這2個位為0

① LE General Discoverable Mode

② LE Limited Discoverable Mode

問題就來了,既然“不想被別人發現”,為何還要發出廣播包?

這完全是各個藍牙設備都遵守這樣的君子約定

① 設備A發出廣播報文,但是在其中的AD Type中表示自己是“不可發現”的

② 設備B的Controller,肯定可以接收到這個廣播包,上傳到Host,解析出其中的AD Type

③ 設備B的Host,是個“君子”,不在UI界面中顯示設備A;但是也許設備B可以自動連接設備A

2. Limited Discoverable Mode

有限可發現模式,為了省電,某些設備可能要先按一下按鍵,它才發出廣播報文;並且過一段時間后,它就繼續休眠。

我們使用手機查找藍牙設備時,可能會列出很多個設備,處於“有限可發現模式”的設備應該顯示在列表的最上面,因為它最緊迫。

在這種模式下,其發出的廣播包中的AD Type要設置這個位為1

LE Limited Discoverable Mode

3. General Discoverable Mode

一般可發現模式,跟“有限可發現模式”相比,它可以一直發出廣播報文

在這種模式下,其發出的廣播包中的AD Type要設置這個位為1:

LE General Discoverable Mode

4. Limited Discovery Procedure

 

 

5. General Discovery Procedure

 

 

 

 

 

 

五、Connection modes and procedures:

1. Non-Connectable Mode

不可連接模式

2. Directed Connectable Mode

定向連接模式,

如果希望快速連接中央設備,外圍設備可以使用該模式。

在該模式下,它發出ADV_DIRECT_ADV廣播報文,直接發給指定的中央設備。

所以,該外圍設備應該曾經與該中央設備建立過連接。

ADV_DIRECT_ADV廣播報文的發送頻率很快,該模式最多持續1.28S,之后控制器自動停止廣播。

3. Undirected Connectable Mode

無向連接模式。

如果一個外圍設備無需快速建立連接,或者打算盡可能地省電,則可以使用該模式。

它發出ADV_IND廣播報文。

4. Auto Connection Establishment Procedure

自動連接建立規程。

中央設備使用該規程來設置控制器,從而向一個或多個外圍設備,自動地建立連接。Host需要事先把想要連接的設備,寫入“白名單”中。

它有個缺點:對所有的設備,都只能使用一套基本連接參數

5. General Connection Establishment Procedure

一般連接建立規程。

這是我們常用的規程,先掃描出設備,選中某一個,然后使用“直接連接建立規程”去連接它。

 

 

 

6. Selective Connection Establishment Procedure

選擇性連接建立規程。

Host先把想連接的設備放入Controller的“白名單”。正在廣播的設備,只有在白名單上的才會被提交給Host。

Host決定是否連接該設備,並使用不同的參數去連接它。相比於“自動連接建立規程”,“選擇性連接建立規程”可以使用不同的參數連接每一個設備。

 

 

7. Direct Connection Establishment Procedure

定向連接建立規程,直接去連接指定的設備。

8. Connection Parameter Update Procedure

連接參數更新規程。

參考 VOL6, Part B, 5.1 LINK LAYER CONTROL PROCEDURES

9. Terminate Connection Procedure

終止連接規程。

中央設備或外圍設備都可以執行該規程,通過LL層向對方發出LL_TERMINATE_IND PDU就可以。

六、Security modes and procedures:

留待SM層再講。

七、GAP服務:

每一個中央設備或外圍設備中,都有一個GAP Service

GAP Service中,至少有這2項Characteristic

① Device Name,設備名字

② Appearance,中央設備根據它來顯示一個圖標、字符串等,用來形象地描述設備的功能。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM