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