藍牙是面向開發者的無線通信技術,它讓設備之間無需路由器或接入點等中央設備也能相互通信。 藍牙有一項獨特的“低功耗”特性,這意味著采用低功耗藍牙的設備使用很小的電池也可以很長時間。 在低功耗藍牙的世界,每個設備都有自己的“配置文件”,它定義了藍牙設備間建立通信的方式。在某種程度上,藍牙配置文件從特性和功能的層面上定義了設備之間相互通訊的方式。
換而言之,藍牙配置文件其實是一種接口規格。它定義了設備所擁有的數據;其他設備通過藍牙連接能如何獲取這些數據;以及當與之相連的設備基于這一接口進行操作時,帶有這一配置文件的設備應如何作出回應等。現在就讓我們從技術的角度再詳細了解一下吧! 基本概念 藍牙設備包含一個屬性表(Attribute Table,簡稱ATT),其他與之相連的設備可以以多種方式訪問表中的數據。表中的數據及其利用方式就涉及到藍牙的“通用屬性配置文件(Generic Attribute profile,簡稱GATT)”這一技術領域。在諸如安卓平臺提供的API相關文檔中常能看到GATT這一用語。 屬性表中包含一系列不同類型的相關記錄。主要類型包括服務(Service)、特性(Characteristics)和描述符(Descriptors)。現在就讓我們來一一了解下。 屬性(ATTRIBUTES) 服務(Services)、特性(Characteristics)和描述符(Descriptors)都是屬性類別,因此也就有了通用屬性配置文件(Generic Attribute Profile)、屬性表(Attribute Table)和屬性協議(Attribute Protocol)等。具體是哪一個類別的屬性,由“通用唯一標識符(Universally Unique Identifier,簡稱UUID)”來定義。有些屬性是由制定藍牙技術標準的藍牙技術聯盟定義的, UUID長度為16位。有些屬性是產品設計團隊自行定義的,是客制化的,這樣的UUID為128位。 架構(STRUCTURE) 服務(Service)、特性(Characteristics)和描述符(Descriptors)也有層級之分。服務位于頂層,描述符位于底層。服務包括一項或多項特性。一項特性可能沒有、擁有一個或擁有多個描述符,因為描述符是可選的,而服務必須包括至少一項特性。
服務(SERVICES) 服務是包含了邏輯相關的藍牙數據項的容器。這些數據項實際上就是特性。我們可以認為服務內部的屬性就歸服務所有。服務通常代表一項特定的設備特性(例如硬件特性),如按鈕或特定的傳感器。設備信息服務(Device Information Service)就是藍牙技術聯盟所定義的服務之一,顧名思義,它是包含了如制造商和序列號等多項設備信息的容器。 特性(CHARACTERISTICS) 特性是與某種設備內部特殊狀態、或設備用傳感器能夠測量的環境狀態相關的數據項。例如,當前的電池狀態就是內部狀態數據,而環境溫度可通過傳感器來測量。有時特性代表配置數據,例如針對某個對象的測量頻率等。在任何一種情況下,設備都可以將數據以特性的形式通過藍牙鏈路發送給其他設備,供其所用。設備信息服務中的序列號字符串(Serial Number String)就是藍牙技術聯盟所定義的特性之一。
特性包括多個部分,如類型、值、一些屬性和權限等。 類型(Type) 類型(Type)在上面已經解釋過了,就是表明屬性具體特性類別的UUID值 值(Value) 就是相關狀態數據項的值。 屬性(Properties) 屬性定義了其他設備如何通過藍牙運用特性,這些特性主要關于各項操作,如讀取(READ)、寫入(WRITE)或通知(NOTIFY)。讀取特性就是通過藍牙鏈路將當前的值從屬性表傳輸至相連的設備。寫入是允許互連設備改變狀態表中的值。通知是當相關特性值改變或由定時器進行周期性控制時,設備可以發送至相連設備的一種特定的信息類型。有些特性并不支持所有操作。通過特性的屬性可以了解其支持的操作。 有時設備的編程允許其在處理操作時(如在屬性表中讀寫值)能夠以特定的方式作出回應,這樣就能實現更多功能,而不是簡單的通過連接來傳輸數據。例如,改變特性的值也可能改變設備從加速器上讀取樣本數據的頻率。 權限(Permissions)
權限與安全相關,并進一步描述了在對特性進行讀寫訪問之前必須確保的安全條件。
描述符(DESCRIPTORS) 描述符含有元數據,這些元數據可以放大描述符所屬特性的相關細節,或實現涉及這一屬性的運行配置。例如,可通過名為“客戶端特性配置描述符(Client Characteristic Configuration Descriptor,CCCD)”的特定描述符來開啟或關閉通知(NOTIFY)信息。 配置文件(PROFILE) 藍牙配置文件是包括所有必需信息的規格,包括設備功能,服務、屬性及描述符的訪問方式,以及安全準則、并行限制等。 客戶端架構(Client Server Architecture) 當智能手機應用通過藍牙連接與設備互動時,就形成了客戶端(Client)/服務器(Server)架構。手機應用通常是GATT客戶端,設備通常是GATT服務器。它們采用屬性協議(Attribute Protocol,簡稱ATT)進行通信。智能手機開發者可利用API,無須擔心如何制定ATT協議數據單元等問題。
設備發現(Device Discovery) 以上所描述的都是關于作為GATT客戶端和服務器進行連接并通信的設備。但是在此之前的環節中,兩臺設備尚未建立連接,它們是如何找到彼此并連接的呢?答案就在于“設備發現(Device Discovery)”,這是由另一項稱為通用訪問屬性(Generic Access Profile,簡稱GAP)的藍牙架構來負責的。 在GAP中,一臺設備發出廣播,周期性地發射廣播數據包,其中包含設備自身的相關信息。其他執行掃描操作的設備執行掃描、接收并處理廣播數據包,然后濾過類型不相關的設備。通常用戶會獲得被發現設備的相關信息,然后就能選擇一個進行連接。能夠發出廣播的設備叫做藍牙周邊設備,而執行掃描的設備稱為藍牙中央設備。
-
藍牙
+關注
關注
114文章
5827瀏覽量
170394 -
無線通信
+關注
關注
58文章
4572瀏覽量
143560
發布評論請先 登錄
相關推薦
評論