BLE 開發:什麼是 GATT 以及它如何運作?

目錄

關貿總協定的概念

想要進行BLE相關的開發,我們必須要有一定的基礎知識,當然,也必須是非常簡單的。

關貿總協定 設備作用:

首先要明白的是,這兩個角色的差異在於硬體層面,它們是成對出現的相對概念:

「中心設備」:功能比較強大,用於掃描和連接週邊設備,如手機、平板電腦等。

「週邊設備」:功能相對簡單,耗電量較小,連接中心設備提供數據,如腕帶、智慧體溫計等。

其實,從最根本的層面來說,應該是建立連結過程中不同角色之間的區分。 我們知道,藍牙設備想要讓別人知道自己的存在,需要不斷地向外界廣播,而對方則需要掃描並回覆廣播包,這樣才能建立連線。 在這個過程中,負責廣播的人是Peripheral,而Central負責掃描。

注意兩者的連接過程:

中心設備可以同時連接多個週邊設備。外圍設備一旦連接,會立即停止廣播,斷開連接後繼續廣播。任何時候只有一台設備可以嘗試連接,排隊連接。

關貿總協定 協議

BLE技術基於GATT進行通訊。 GATT是一種屬性傳輸協定。 可以看作是屬性傳輸的應用層協定。

它的結構非常簡單:   

你可以將其理解為xml:

每個 GATT 由執行不同功能的服務組成;

每個Service由不同的Characteristic組成;

每個Characteristic由一個值和一個或多個描述符組成;

Service和Characteristic相當於標籤(Service相當於它的類別,Characteristic相當於它的名稱),而value實際上包含了數據,Descriptor是對這個值的解釋和描述。 當然,我們可以從不同的角度來描述和描述。 描述,所以可以有多個Descriptor。

例如:常見的小米手環是一個BLE設備,(假設)它包含三個Service,分別是提供設備資訊的Service、提供步數的Service、偵測心率的Service;

設備資訊的服務所包含的特徵包括廠商資訊、硬體資訊、版本資訊等; 心率Service包括心率特徵等,心率特徵中的值實際上包含了心率數據,描述符就是該值。 描述,例如價值單位、描述、權限等。

關貿總協定C/S

透過對GATT的初步了解,我們知道GATT是典型的C/S模式。 既然是C/S,我們就有必要區分Server和Client。

“GATT 伺服器”與“GATT 客戶端”。 這兩個角色存在的階段是在連結建立之後,根據對話的狀態來區分。 很容易理解,保存資料的一方稱為GATT伺服器,存取資料的一方稱為GATT客戶端。

這是和我們之前提到的設備角色不同層次的概念,有必要區分一下。 我們用一個簡單的例子來說明:

以手機和手錶為例來說明。 在手機與手機建立連線之前,我們使用手機的藍牙搜尋功能來搜尋手錶的藍牙裝置。 在此過程中,很明顯手錶正在廣播 BLE,以便其他裝置知道其存在。 ,在這個過程中扮演的是周邊的角色,而手機則負責掃描任務,自然扮演中心的角色; 兩者建立GATT連線後,當手機需要從手錶讀取步數等感測器資料時,兩者互動的資料就保存在手錶中,所以此時手錶就是GATT的角色伺服器,手機自然就是GATT客戶端; 而當手錶想要從手機上讀取簡訊通話等資訊時,數據的守護者就變成了手機,所以此時手機就是伺服器,手錶就是客戶端。

服務/特色

上面我們已經對它們有了一個感性的認識,接下來我們還有一些實用的資訊:

  1. 特徵是資料的最小邏輯單元。
  2. 對value和descriptor中儲存的資料的分析是由Server工程師決定的,沒有規格。
  3. Service/Characteristic有唯一的UUID標識,UUID有16位元和128位元兩種,我們需要了解的是16位元的UUID是經過藍牙組織認證的,需要購買,當然還有一些常見的個16位元UUID。例如心率服務的UUID為0X180D,在代碼中表示為0X00001800-0000-1000-8000-00805f9b34fb,其他位元固定。 128位元UUID可以自訂。
  4. GATT 連接是排他性的。

回到頁首