BLE簡介

常見藍(lán)牙名稱的簡寫

MFI ======= make for ipad ,iphone, itouch 專們?yōu)樘O果設(shè)備制作的設(shè)備

BLE ==== buletouch low energy,藍(lán)牙4.0設(shè)備因?yàn)榈秃碾?,所以也叫做BLE

peripheral,central == 外設(shè)和中心,發(fā)起連接的時central,被連接的設(shè)備為perilheral

service and characteristic === 服務(wù)和特征 每個設(shè)備會提供服務(wù)和特征,類似于服務(wù)端的api,但是機(jī)構(gòu)不同。每個外設(shè)會有很多服務(wù),每個服務(wù)中包含很多字段,這些字段的權(quán)限一般分為 讀read,寫write,通知notiy幾種,就是我們連接設(shè)備后具體需要操作的內(nèi)容。

Description 每個characteristic可以對應(yīng)一個或多個Description用戶描述characteristic的信息或?qū)傩?/p>

Profile Profile 并不是實(shí)際存在于 BLE 外設(shè)上的,它只是一個被 Bluetooth SIG 或者外設(shè)設(shè)計者預(yù)先定義的 Service 的集合。所有官方通過 GATT Profile 的列表可以從這里找到。

Service Service 是把數(shù)據(jù)分成一個個的獨(dú)立邏輯項(xiàng),它包含一個或者多個 Characteristic。每個 Service 有一個 UUID 唯一標(biāo)識。 UUID 有 16 bit 的,或者 128 bit 的。16 bit 的 UUID 是官方通過認(rèn)證的,需要花錢購買,128 bit 是自定義的,這個就可以自己隨便設(shè)置。官方通過了一些標(biāo)準(zhǔn) Service完整列表在這里。以 Heart Rate Service為例,可以看到它的官方通過 16 bit UUID 是 0x180D,包含 3 個 Characteristic:Heart Rate Measurement, Body Sensor Location 和 Heart Rate Control Point,并只有第一個是必須的,其它是可選實(shí)現(xiàn)的。

MFI === 開發(fā)使用ExternalAccessory 框架

4.0 BLE === 開發(fā)使用CoreBluetooth 框架

一個主設(shè)備最多能連7個外設(shè)

GAP(Generic Access Profile),它在用來控制設(shè)備連接和廣播。GAP 使你的設(shè)備被其他設(shè)備可見,并決定了你的設(shè)備是否可以或者怎樣與合同設(shè)備進(jìn)行交互。

GAAT : Generic Attribute Profile , GATT配置文件是一個通用規(guī)范,用于在BLE鏈路上發(fā)送和接收被稱為“屬性”的數(shù)據(jù)塊。目前所有的BLE應(yīng)用都基于GATT。 藍(lán)牙SIG規(guī)定了許多低功耗設(shè)備的配置文件。配置文件是設(shè)備如何在特定的應(yīng)用程序中工作的規(guī)格說明。注意一個設(shè)備可以實(shí)現(xiàn)多個配置文件。例如,一個設(shè)備可能包括心率監(jiān)測儀和電量檢測。GATT Profile 簡介

Characteristic 一個characteristic包括一個單一變量和0-n個用來描述characteristic變量的descriptor,characteristic可以被認(rèn)為是一個類型,類 似于類。

Descriptor Descriptor用來描述characteristic變量的屬性。例如,一個descriptor可以規(guī)定一個可讀的描述,或者一個characteristic變量可接受的范圍,或者一個characteristic變量特定的測量單位。 Service service是characteristic的集合。例如,你可能有一個叫“Heart Rate Monitor(心率監(jiān)測儀)”的service,它包括了很多characteristics,如“heart rate measurement(心率測量)”等。你可以在bluetooth.org 找到一個目前支持的基于GATT的配置文件和服務(wù)列表。


CoreBluetooth框架的核心其實(shí)是兩個東西,peripheral和central, 可以理解成外設(shè)和中心。上圖為它們對應(yīng)的API和類。

左側(cè)叫做中心模式,就是以你的app作為中心,連接其他的外設(shè)的場景,而右側(cè)稱為外設(shè)模式,使用手機(jī)作為外設(shè)別其他中心設(shè)備操作的場景。我們app所做的都說對應(yīng)中心模式

iOS 藍(lán)牙中心模式流程如下

1. 建立中心角色

2. 掃描外設(shè)(discover)

3. 連接外設(shè)(connect)

4. 掃描外設(shè)中的服務(wù)和特征(discover)

- 4.1 獲取外設(shè)的services

- 4.2 獲取外設(shè)的Characteristics,獲取Characteristics的值,獲取Characteristics的Descriptor和Descriptor的值

5. 與外設(shè)做數(shù)據(jù)交互(explore and interact)

6. 訂閱Characteristic的通知

7. 斷開連接(disconnect)

藍(lán)牙外設(shè)模式流程

1. 啟動一個Peripheral管理對象

2. 本地Peripheral設(shè)置服務(wù),特性,描述,權(quán)限等等

3. Peripheral發(fā)送廣告

4. 設(shè)置處理訂閱、取消訂閱、讀characteristic、寫characteristic的委托方法

中心設(shè)備和外設(shè)需要雙向通信的話,唯一的方式就是建立 GATT 連接。

GATT 連接,必需先經(jīng)過 GAP 協(xié)議。藍(lán)牙芯片發(fā)起連接,總是先掃描設(shè)備,掃描到了才會發(fā)起連接。

GATT 連接是獨(dú)占的。也就是一個 BLE 外設(shè)同時只能被一個中心設(shè)備連接。一旦外設(shè)被連接,它就會馬上停止廣播,這樣它就對其他設(shè)備不可見了。當(dāng)設(shè)備斷開,它又開始廣播。

在 GAP 中外圍設(shè)備通過兩種方式向外廣播數(shù)據(jù): Advertising Data Payload(廣播數(shù)據(jù))和 Scan Response Data Payload(掃描回復(fù)),每種數(shù)據(jù)最長可以包含 31 byte。這里廣播數(shù)據(jù)是必需的,因?yàn)橥庠O(shè)必需不停的向外廣播,讓中心設(shè)備知道它的存在。掃描回復(fù)是可選的,中心設(shè)備可以向外設(shè)請求掃描回復(fù),這里包含一些設(shè)備額外的信息,例如設(shè)備的名字。

GATT 通信的雙方是 C/S 關(guān)系。外設(shè)作為 GATT 服務(wù)端(Server),它維持了 ATT 的查找表以及 service 和 characteristic 的定義。中心設(shè)備是 GATT 客戶端(Client),它向 Server 發(fā)起請求。需要注意的是,所有的通信事件,都是由客戶端(也叫主設(shè)備,Master)發(fā)起,并且接收服務(wù)端(也叫從設(shè)備,Slave)的響應(yīng)。

每個設(shè)備都會有一些服務(wù),每個服務(wù)里面都會有一些特征,特征就是具體鍵值對,提供數(shù)據(jù)的地方

// characteristic的屬性,是一個結(jié)構(gòu)體,每個特征值常用的權(quán)限分為讀,寫,通知這么幾種方式

typedef NS_OPTIONS(NSInteger, CBCharacteristicProperties) {

// 標(biāo)識這個characteristic的屬性是廣播

CBCharacteristicPropertyBroadcast= 0x01,

// 標(biāo)識這個characteristic的屬性是讀

CBCharacteristicPropertyRead= 0x02,

// 標(biāo)識這個characteristic的屬性是寫-沒有響應(yīng)

CBCharacteristicPropertyWriteWithoutResponse= 0x04,

// 標(biāo)識這個characteristic的屬性是寫

CBCharacteristicPropertyWrite= 0x08,

// 標(biāo)識這個characteristic的屬性是通知

CBCharacteristicPropertyNotify= 0x10,

// 標(biāo)識這個characteristic的屬性是聲明

CBCharacteristicPropertyIndicate= 0x20,

// 標(biāo)識這個characteristic的屬性是通過驗(yàn)證的

CBCharacteristicPropertyAuthenticatedSignedWrites= 0x40,

// 標(biāo)識這個characteristic的屬性是拓展

CBCharacteristicPropertyExtendedProperties= 0x80,

// 標(biāo)識這個characteristic的屬性是需要加密的通知

CBCharacteristicPropertyNotifyEncryptionRequiredNS_ENUM_AVAILABLE(NA, 6_0)= 0x100,

// 標(biāo)識這個characteristic的屬性是需要加密的申明

CBCharacteristicPropertyIndicateEncryptionRequiredNS_ENUM_AVAILABLE(NA, 6_0)= 0x200

};

app作為外設(shè)被連接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Introduction to Bluetooth Low Energy 簡介 Bluetooth Low Ene...
    小時不識月z閱讀 4,789評論 1 13
  • 藍(lán)牙 藍(lán)牙的波段為2400-2483.5MHz(包括防護(hù)頻帶)。這是全球范圍內(nèi)無需取得執(zhí)照(但定不是無管制的)的工...
    蘇永茂閱讀 6,599評論 0 11
  • Key Terms And Concepts 關(guān)鍵術(shù)語和概念 Here is a summary of key B...
    Jaesoon閱讀 2,570評論 0 5
  • 前言: 本文主要描述Android BLE的一些基礎(chǔ)知識及相關(guān)操作流程,不牽扯具體的業(yè)務(wù)實(shí)現(xiàn),其中提供了針對廣播包...
    幻影宇寰閱讀 5,598評論 6 19
  • 這里我們具體說明一下中心模式的應(yīng)用場景。主設(shè)備(手機(jī)去掃描連接外設(shè),發(fā)現(xiàn)外設(shè)服務(wù)和屬性,操作服務(wù)和屬性的應(yīng)用。一般...
    丶逝水流年閱讀 2,411評論 3 4

友情鏈接更多精彩內(nèi)容