从客户端登陆服务器的配置文件,BLE模式和配置文件
BLE模式和配置文件(原文)
本文檔探討了BLE如何工作,特別是如何將兩種BLE模式(連接和廣告)用于不同的目的。
外圍設(shè)備和中央設(shè)備vs服務(wù)器和客戶端
當(dāng)我們通過BLE連接設(shè)備時(shí),我們將它們視為外設(shè)(從設(shè)備)設(shè)備或中央(主設(shè)備)設(shè)備。 藍(lán)牙標(biāo)準(zhǔn)建立了該區(qū)分方式以匹配設(shè)備上可用的資源:
主設(shè)備/中央
通常將具有更多的計(jì)算資源和可用能量 - 例如計(jì)算機(jī)或平板電腦。
從設(shè)備/外設(shè)
一個(gè)mbed設(shè)備 - 將在計(jì)算資源和能源兩個(gè)方面受限制。
目前,mbed的BLE_API支持創(chuàng)建外設(shè)。 我們計(jì)劃盡快將其擴(kuò)展到中央設(shè)備。
BLE使用兩個(gè)附加術(shù)語來描述連接實(shí)體 - 服務(wù)器和客戶端:
服務(wù)器
該設(shè)備具有希望共享的信息,且對(duì)于BLE而言通常是外設(shè)(如mbed板子)。
客戶端
需要信息和服務(wù)的設(shè)備,且對(duì)于BLE而言通常是中央設(shè)備 - 例如電話。
在討論信息交流時(shí),我們使用術(shù)語服務(wù)器和客戶端 。 我們使用中央和外設(shè)來表示BLE連接的起點(diǎn)和目標(biāo)。 中央作為客戶端連接,外圍設(shè)備作為服務(wù)器并不罕見。
服務(wù)器和客戶端
mbed板是服務(wù)器或外設(shè);手機(jī)是客戶端和中央設(shè)備“)
啟動(dòng)連接
中央啟動(dòng),控制和結(jié)束連接 - 外設(shè)不能強(qiáng)制中央執(zhí)行(掃描BLE設(shè)備,查看其信息,連接等)。 中央還決定詢問外圍設(shè)備的頻度。 然而,外設(shè)可以向中央推薦一些東西。 有關(guān)這些決定的更多信息,請(qǐng)參閱連接參數(shù)部分 。
廣告和連接模式
BLE使用的兩種模式是:
廣告模式
外設(shè)會(huì)發(fā)出該區(qū)域任何設(shè)備可以接收到的信息。 這是中央設(shè)備如何知道周圍有外圍設(shè)備的方式。
連接模式
外設(shè)和中央設(shè)備建立一對(duì)一的對(duì)話。 這就是他們?nèi)绾谓粨Q復(fù)雜的信息的方式。
中央設(shè)備必須知道外圍設(shè)備存在才能與之連接。 因此,外設(shè)將使用BLE 廣告模式發(fā)布其存在。 在這種模式下,設(shè)備使用通用訪問配置文件 (GAP)以穩(wěn)定的速率發(fā)送一些信息 —— 一個(gè)廣告。 這個(gè)廣告是其他設(shè)備,像你的手機(jī),接收到的。 它告訴他們附近有一個(gè)BLE設(shè)備存在,以及該設(shè)備是否愿意與他們交談。
廣告模式是一對(duì)多的,而連接模式是一對(duì)一的。
廣告模式數(shù)據(jù)包大小非常有限。 GAP廣播的一般數(shù)據(jù)包格式如下圖所示:
BLE協(xié)議棧占用了47B數(shù)據(jù)包的一部分,直到我們的數(shù)據(jù)只有26B
每個(gè)BLE包可以包含最多47個(gè)字節(jié)(這不是很多),我們不能使用它們的全部:
為了自己的目的,BLE協(xié)議棧需要8個(gè)字節(jié)(1 + 4 + 3)。
因此,廣告分組數(shù)據(jù)單元(PDU)最多具有39個(gè)字節(jié)。 但是BLE棧再次需要一些開銷,占用8個(gè)字節(jié)(2 + 6)。
PDU的廣告數(shù)據(jù)字段剩下31個(gè)字節(jié),分為廣告數(shù)據(jù)(AD)結(jié)構(gòu)。 然后:
GAP廣播必須包含告訴設(shè)備有關(guān)我們發(fā)送的廣告類型的標(biāo)志。 標(biāo)志結(jié)構(gòu)總共使用三個(gè)部分(一個(gè)用于數(shù)據(jù)長度,一個(gè)用于數(shù)據(jù)類型,一個(gè)用于數(shù)據(jù)本身)。 我們需要前兩個(gè)字節(jié)(數(shù)據(jù)長度和類型指示)的原因是幫助解析器來使用我們的標(biāo)志信息正常工作。 我們還剩下28個(gè)字節(jié)。
現(xiàn)在我們終于用自己的數(shù)據(jù)結(jié)構(gòu)發(fā)送自己的數(shù)據(jù)了 - 但是它也需要一個(gè)長度和類型的指示(總共兩個(gè)字節(jié)),所以我們只剩下26個(gè)字節(jié)。
所有這些意味著我們只有26B用于通過GAP發(fā)送的數(shù)據(jù)。
如果您想查看AD的示例,請(qǐng)參閱自定義GAP廣告部分中的擴(kuò)展說明。
對(duì)于許多應(yīng)用,廣告可能是需要的一切。 這可能是:
外圍設(shè)備只想周期性地廣播可以適應(yīng)廣告的少量信息。
無論身份驗(yàn)證如何,這些數(shù)據(jù)都可用于范圍內(nèi)的任何中央設(shè)備。
但是,有時(shí)候,您需要提供比單向數(shù)據(jù)傳輸更多的信息或更復(fù)雜的交互。 為此,您需要在BLE設(shè)備和用戶的手機(jī),平板電腦或計(jì)算機(jī)之間設(shè)置“對(duì)話”。該會(huì)話基于連接模式 ,其描述了僅兩個(gè)設(shè)備之間的關(guān)系:BLE外圍設(shè)備和中央設(shè)備。
目前,廣告和連接模式還不能共存。 這是因?yàn)锽LE外圍設(shè)備一次只能連接到一個(gè)中央設(shè)備(如移動(dòng)電話)。 連接建立的時(shí)刻,BLE外設(shè)將停止廣告。 在這一點(diǎn)上,沒有其他中央設(shè)備能夠連接到它,因?yàn)槿绻粡V告,他們不能發(fā)現(xiàn)該設(shè)備在那里。 只有在第一個(gè)連接終止并且BLE外圍設(shè)備再次開始廣告之后,才能建立新的連接。
注意:最新的藍(lán)牙標(biāo)準(zhǔn)允許廣告并行連接,這將在2015年底之前成為mbed的BLE_API的一部分。
服務(wù)和配置文件(GATT)
為了使上述通信的功耗較低,BLE規(guī)范在連接模式下交換數(shù)據(jù)的方式施加了特定的結(jié)構(gòu)。 它依賴于BLE外設(shè)維護(hù)客戶端可以訪問的狀態(tài)變量數(shù)據(jù)庫(如電池電量,溫度和時(shí)間)的能力。 我們可以根據(jù)功能將狀態(tài)變量分組到服務(wù)中。 例如,心率服務(wù)是狀態(tài)變量的集合,包括心率測(cè)量和身體傳感器位置。 這些狀態(tài)變量的技術(shù)術(shù)語是“特征(Characteristics)”。 為了互操作性,每個(gè)特征(Characteristics)也包含了值類型的描述。 這樣客戶端就可以解釋這個(gè)值,即使它們沒有被特別編程來識(shí)別它。
單一服務(wù)可以包含幾個(gè)特征
服務(wù),特征及其配套屬性是連接方式的基本實(shí)體。 服務(wù)使用通用屬性配置文件(Generic Attribute Profile,GATT)根據(jù)特征來組織信息。 我們將在下面更詳細(xì)地探索特征。
我們將服務(wù)捆綁到一個(gè)配置文件中 。 例如,心率配置文件(Heart Rate Profile)包括兩個(gè)服務(wù) - 心率和設(shè)備信息(Heart Rate and Device Information),血壓配置文件(Blood Pressure Profile)包括血壓和設(shè)備信息(Blood Pressure and Device Information)服務(wù)。
具有兩個(gè)服務(wù)的示例配置文件
BLE已經(jīng)有一段時(shí)間了,所以它有一些標(biāo)準(zhǔn)的服務(wù),你可以進(jìn)入。 回到我們的心率監(jiān)測(cè)器的例子,心率服務(wù)是完善的,易于使用。 它可以從BLE心率監(jiān)測(cè)器讀取信息并將其發(fā)送到應(yīng)用程序。 你會(huì)在稍后的編碼示例中看到。
在開始研究項(xiàng)目之前,值得看看是否已經(jīng)有可以完成所需功能的服務(wù)了; 它會(huì)節(jié)省大量的編碼和測(cè)試時(shí)間。 您可以在這里找到可用的配置文件和服務(wù)列表。
特征和相互作用
服務(wù)將數(shù)據(jù)分解為特征 。 每個(gè)特征映射到單個(gè)數(shù)據(jù)點(diǎn):它告訴你一件事,只有一件事。 例如, 設(shè)備信息服務(wù)具有以下特征:
制造商名稱
型號(hào)
序列號(hào)
硬件版本
固件版本
軟件版本
系統(tǒng)ID
IEEE 11073-20601監(jiān)管認(rèn)證資料清單(regulatory certification data list)
這些特征中的每一個(gè)應(yīng)該只包含其標(biāo)簽所包含的信息。 他們一起揭示設(shè)備的制造商信息,并組成一個(gè)完整的設(shè)備信息服務(wù)。 此服務(wù)本身捆綁在不同的配置文件中。
在mbed上創(chuàng)建一個(gè)特征非常簡(jiǎn)單,因?yàn)锽LE_API為涉及服務(wù)定義的實(shí)體提供C++抽象。 例如,這里我們創(chuàng)建一個(gè)簡(jiǎn)單的特征,通知客戶一個(gè)按鈕的狀態(tài)(按下/釋放):
//button initial state
bool buttonPressed = false;
//read-only characteristic of type boolean,
//accepting the buttonState’s UUID and initial value
ReadOnlyGattCharacteristic buttonState(BUTTON_STATE_CHARACTERISTIC_UUID,
&buttonPressed);
有關(guān)mbed的特征創(chuàng)建的完整展示,請(qǐng)參閱我們的輸入服務(wù)模板 。
特征完全由其聲明,值和描述符定義:
聲明包含有關(guān)特征的數(shù)據(jù),例如其通用唯一標(biāo)識(shí)符(UUID)。
值是特征的“有趣”部分:它是包含您正在查看和響應(yīng)的數(shù)據(jù)的值。
** 描述符**不是強(qiáng)制性的; 您可以使用它來提供有關(guān)特征的更多信息或控制其行為。 例如,在使用通知時(shí)使用描述符。
特征可以是靜態(tài)的(如設(shè)備的制造商名稱)或動(dòng)態(tài)的。 如果一個(gè)特征是動(dòng)態(tài)的,當(dāng)設(shè)備有新的信息時(shí),您的設(shè)備可以為它生成一個(gè)新的值。 例如,在心率服務(wù)中, 當(dāng)前心率是定期獲得新值的特征。
以下是創(chuàng)建讀/寫特征(可以接收新值并顯示其當(dāng)前值的特征)的示例:
bool initialValueForLEDCharacteristic = false;
ReadWriteGattCharacteristic ledState(LED_STATE_CHARACTERISTIC_UUID,
&initialValueForLEDCharacteristic);
有關(guān)在mbed上創(chuàng)建讀/寫特征的信息,請(qǐng)參閱我們的執(zhí)行器服務(wù)模板 。
一些特征是雙向?qū)嶓w。 這意味著服務(wù)器(BLE外設(shè))可以自己更新,也可以從客戶端(手機(jī))接收新的值。 這種雙向流量使BLE具有交互性:用戶向一個(gè)或多個(gè)特征發(fā)送新值,并且設(shè)備響應(yīng)這些新值。 例如,當(dāng)UriBeacon設(shè)備打開時(shí),它進(jìn)入臨時(shí)配置模式(configuration mode) ,讓我們有機(jī)會(huì)更新其特征的值(包含稍后公布的數(shù)據(jù))。
對(duì)于每個(gè)特征,服務(wù)定義說明客戶端是否有權(quán)寫入該特征。 這是在外設(shè)上設(shè)置GATT服務(wù)器時(shí)完成的。 在我們的示例中, 配置模式(configuration mode)指出廣告信息是可讀/寫的, 廣告模式表示它是只讀的。 因此,根據(jù)設(shè)備的模式,相同的特征可以具有兩種不同的權(quán)限。
UUID
每個(gè)服務(wù)和特征都需要一個(gè)普遍唯一的標(biāo)識(shí)符(UUID),它們?cè)诼暶髦辛谐?如上所述)。 對(duì)于BLE官方實(shí)體,UUID為16位,BLE站點(diǎn)上提供了完整的列表,以獲取服務(wù)和特性 。 對(duì)于您自己創(chuàng)建的服務(wù)和特征,您將需要128位UUID; 您可以在UTI網(wǎng)站上生成。
有關(guān)UUID分配的更多信息,請(qǐng)參見我們的服務(wù)創(chuàng)建示例 。
配置文件,服務(wù)和特征的總結(jié)
因此,配置文件的完整拆分是:一個(gè)或多個(gè)服務(wù),每個(gè)服務(wù)包含零個(gè)或多個(gè)特征,每個(gè)特征具有零個(gè)或多個(gè)描述符:
單個(gè)配置文件可以包含多個(gè)服務(wù),并且每個(gè)服務(wù)可以包含幾個(gè)特征
總結(jié)
以上是生活随笔為你收集整理的从客户端登陆服务器的配置文件,BLE模式和配置文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql 零距离-入门(五)操作数据表
- 下一篇: 二元相图软件_FactSage 软件教程