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