国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > BLE協(xié)議棧

BLE協(xié)議棧 時間:2018-08-16      來源:未知

進(jìn)行BLE 應(yīng)用開發(fā),我們會經(jīng)常聽說到連個詞匯“協(xié)議棧”和“協(xié)議”。那他 們之間有什么關(guān)系和區(qū)別呢。 

協(xié)議定義的是一系列的通信標(biāo)準(zhǔn),通信雙方需要共同按照規(guī)定好的標(biāo)準(zhǔn)進(jìn)行正常的數(shù)據(jù)收發(fā)。

舉個例子來說兩個人想要進(jìn)行交流必須要說同一種語言,這就是協(xié)議。

協(xié)議棧是協(xié)議的具體實現(xiàn)形式,通俗理解為用代碼實現(xiàn)的函數(shù)庫,以便于開發(fā)人員調(diào)用。 藍(lán)牙 4.0 BLE 協(xié)議棧就是將各個層定義的協(xié)議都集合在一起,以函數(shù)的形式實現(xiàn),并提供一 些應(yīng)用層 API 供用戶調(diào)用。 

下面來看一下BLE基本協(xié)議層

藍(lán)牙核心規(guī)格中說明了藍(lán)牙核心系統(tǒng)組成包含主機部分和控制器部分(一個主控制器和一 個或多個二級控制器)。主機和控制器的分離追溯到藍(lán)牙 BR/EDR 設(shè)備時期,控制器和主機 通常分開實現(xiàn)。 

  主機部分:所有非核心配置文件以下和主機控制接口以上層。  控制器部分:主機控制接口以下層。

ti公司的cc2540的結(jié)構(gòu),將ble協(xié)議棧的各個部分進(jìn)行了詳細(xì)的區(qū)分,這個結(jié)構(gòu)對我們來說過于復(fù)雜。

TI 公司(CC2540)精簡一下,大致分可分為以下幾層。 所有 Profile (配置文件層)和應(yīng)用都建構(gòu)在 GAP 或 GATT 之上。TI 的 CC2540 器件可以單芯片實現(xiàn) BLE 藍(lán)牙協(xié)議棧結(jié)構(gòu)圖的所有組件,包括應(yīng)用程序。 

下面我們簡單了解一下藍(lán)牙協(xié)議棧的分層

下面解釋一下我們會涉及到的一些專業(yè)名詞:

物理層(Physical Layer):1Mbps 自適應(yīng)跳頻 GFSK(高斯頻移鍵控調(diào)制),運行在免征的 2.4GHz 頻段。 

鏈路層(Link Layer):此層為 RF 控制器,用于控制設(shè)備的射頻狀態(tài),控制設(shè)備會處于 5 種狀態(tài)之一:待機(Standby)、廣播、監(jiān)聽/掃描(Scan)、初始化、連接。廣播設(shè)備不需 要建立連接就可以發(fā)送數(shù)據(jù);而掃描設(shè)備監(jiān)聽廣播數(shù)據(jù)。發(fā)起設(shè)備響應(yīng)一個連接請求給廣播 設(shè)備。如果廣播設(shè)備接受連接請求,發(fā)起者設(shè)備和廣播設(shè)備將會進(jìn)入連接狀態(tài)。此時兩個設(shè) 備的角色變了:主機和從機。發(fā)起連接的設(shè)備叫做主機,接受連接請求的設(shè)備稱為從機。 

主機控制接口層(Host Controller Interface):為主機和控制器之間提供一個標(biāo)準(zhǔn)通信接 口。這一層可以通過軟件 API 或硬件接口實現(xiàn),例如 UART、SPI、USB。

邏輯鏈路控制及自適應(yīng)協(xié)議層(Logical link Control and Adaptation Protocol):為上層提 供數(shù)據(jù)封裝服務(wù),允許邏輯上的點對多點數(shù)據(jù)通信。 

安全管理層(Security Manager):定義了配對和密鑰分配方式。并為協(xié)議棧的其它層和 其它設(shè)備之間的安全連接和交換數(shù)據(jù)提供服務(wù)。 

通用訪問配置文件層(Generic Access Profile):GAP 是直接與應(yīng)用程序或配置文件 (profiles)通信的接口,處理設(shè)備發(fā)現(xiàn)和連接相關(guān)服務(wù)。另外還處理安全特性的初始化。對 上級,提供應(yīng)用程序接口;對下級,管理各級智能部門,尤其是指示 LL 層控制器 5 種狀態(tài) 切換。 

屬性協(xié)議層(Attribute Protocol):允許設(shè)備向其它設(shè)備展示一塊特定的數(shù)據(jù),稱之為“屬 性”。在 ATT 環(huán)境中,展示“屬性”的設(shè)備稱之為服務(wù)器,與之配對的設(shè)備稱之為客戶端。 鏈路層狀態(tài)(主機和從機)與設(shè)備的 ATT 角色是相互獨立的。例如,主機設(shè)備既可以是 ATT 服務(wù)器,也可以是 ATT 客戶端。從機設(shè)備可以是 ATT 客戶端,也可以是 ATT 服務(wù)端。 

通用屬性配置文件層(Generic Attribute Profile):定義了使用 ATT 的服務(wù)框架。GATT 規(guī)定了配置文件(profiles)的結(jié)構(gòu)。在 BLE 中,所有被 profile 或服務(wù)器用到的數(shù)據(jù)塊都稱之 為“特征”。兩個建立連接的設(shè)備之間的所有數(shù)據(jù)通信都是通過 GATT 子程序處理。應(yīng)用程 序和 profiles 直接使用 GATT 層。GATT 負(fù)責(zé)處理向上與應(yīng)用打交道,其關(guān)鍵工作是為檢索工 作提供合適的 profile 結(jié)構(gòu),而 profile 由檢索關(guān)鍵詞(characteristics)組成。 

再需要介紹的就是協(xié)議棧頂層的配置文件層

藍(lán)牙 4.0BLE 協(xié)議棧配置文件層包括 GAP/安全配置文件、GATT 配置文件兩部分,處于 協(xié)議棧的頂層部分,配置文件將協(xié)議棧和應(yīng)用緊密地聯(lián)系在一起。這使得開發(fā)者即使對協(xié)議 棧底層的原理沒有深入的了解。也可以方便地進(jìn)行應(yīng)用的開發(fā)。

通用屬性配置文件層(Generic Attribute Profile):定義了使用 ATT 的服務(wù)框架。GATT 規(guī)定了配置文件(profiles)的結(jié)構(gòu)。在 BLE 中,所有被 profile 或服務(wù)器用到的數(shù)據(jù)塊都稱之 為“特征”。兩個建立連接的設(shè)備之間的所有數(shù)據(jù)通信都是通過 GATT 子程序處理。應(yīng)用程 序和 profiles 直接使用 GATT 層。GATT 負(fù)責(zé)處理向上與應(yīng)用打交道,其關(guān)鍵工作是為檢索工 作提供合適的 profile 結(jié)構(gòu),而 profile 由檢索關(guān)鍵詞(characteristics)組成。 

剛才也說到了新的藍(lán)牙規(guī)格采用基于屬性協(xié)議(ATT)的服務(wù)結(jié)構(gòu),所有低功耗數(shù)據(jù)通信都是通過 通用屬性配置文件(GATT)運行。從 GATT 角度來看,當(dāng)連個設(shè)備建立連接后,他們處于 兩個狀態(tài)――GATT 服務(wù)器和 GATT 客戶端。如果應(yīng)用或另一個配置文件使用 GATT 配置文 件,那么客戶端和服務(wù)器可以有序的方式進(jìn)行互動。 

 GATT 服務(wù)器――它是為 GATT 客戶端提供讀寫數(shù)據(jù)服務(wù)的設(shè)備。 

 GATT 客戶端――它是從 GATT 服務(wù)器讀寫應(yīng)用數(shù)據(jù)的設(shè)備。 

特別注意的是,GATT 角色中的客戶端和服務(wù)器與鏈路層角色的主機和從機是兩個完全 獨立的概念,與 GAP 的外設(shè)和集中器也是完全獨立的。一個從機可以是 GATT 客戶端或 GATT 服務(wù)器;主機也可以是 GATT 客戶端和 GATT 服務(wù)器。 

服務(wù)器包含一個或多個 GATT 服務(wù),GATT 服務(wù)是完成特定功能的一系列數(shù)據(jù)的集合。 而 GATT 配置文件定義如何利用屬性協(xié)議發(fā)現(xiàn)、讀取、編寫和獲取指示。這些功能支持基于 服務(wù)的結(jié)構(gòu)。所采用的服務(wù)在配置文件規(guī)格中有所界定。GATT 使你能了解配置文件規(guī)格所 界定的服務(wù)和特征。 

GATT 結(jié)構(gòu)使創(chuàng)建和實施新的配置文件更加容易。許多新的配置文件仍在開發(fā)過程中, 因為這一優(yōu)勢繼續(xù)擴大。配置文件實施十分簡單,有助應(yīng)用和支持這些配置文件的嵌入式設(shè) 備迅速增加。 

在 TI 公司的示例工程 SimpleBLEPeripheral 應(yīng)用中,有三個服務(wù): 

 強制的 GAP 服務(wù)――這一服務(wù)包含設(shè)備和訪問信息,例如,設(shè)備名、供應(yīng)商和產(chǎn)品 標(biāo)示,它是 BLE 協(xié)議棧的一部分,是 BLE 規(guī)范對每一個 BLE 設(shè)備必須強制要求的, 這部分源碼并沒有提供,而是編譯到協(xié)議棧庫中了。 

 強制的 GATT 服務(wù)――這一服務(wù)包含 GATT 服務(wù)器的信息,是協(xié)議棧的一部分。是 BLE 規(guī)范對每一個 GATT 服務(wù)器設(shè)備的必須要求。這部分源碼并不提供,而是編譯 到協(xié)議棧庫中。 

 SimpleGATTProfile 服務(wù)――這個服務(wù)是一個示例配置文件進(jìn)行測試和示范。所有的 源碼程序在 simpleGATTProfile.c 和 simpleGATTProfile.h 文件中。這個服務(wù)包含應(yīng)用 數(shù)據(jù)的信息,與應(yīng)用數(shù)據(jù)的傳遞密切相關(guān)。讀者可以按照上面示例特定的格式編寫 自己的 GATT 服務(wù)。 

“特性”是服務(wù)用到的值,以及其內(nèi)容和配置信息,GATT 定義了 BLE 連接中發(fā)現(xiàn)、讀 取、寫入屬性的子過程。GATT 服務(wù)上的特性值,及其內(nèi)容和配置信息(即描述符)存儲于 屬性表中。屬性表是一個數(shù)據(jù)庫,包含了小塊數(shù)據(jù)被稱之為屬性。除了值本身,每個屬性都 有與之相關(guān)的以下屬性。 

句柄——屬性在表中的地址,每個屬性有唯一的句柄。

類型——這表明數(shù)據(jù)所代表的含義,通常由 Bluetooth SIG 規(guī)定或用戶自定義的 “UUID”(universal unique identifier)。 

權(quán)限——規(guī)定了 GATT 客戶端設(shè)備對屬性的訪問權(quán)限,包括是否能訪問和怎樣訪問。 

GATT 定義了 GATT 服務(wù)器和客戶端之間通信的若干個子進(jìn)程。 

下面是一些子進(jìn)程: 

l 讀特性值——客戶端設(shè)備請求讀取特定句柄處的特性值,服務(wù)器將此值回應(yīng)為客戶端 (假設(shè)屬性為可讀權(quán)限)。 

l 使用特性的 UUID 讀——客戶端請求一個特定類型的所有特性值,服務(wù)端將所有相匹 配類型的特性的句柄和值回應(yīng)給客戶端(假定屬性有讀權(quán)限)?蛻舳瞬恍枰 這些特性的句柄。 

l 讀多個特性值——客戶端一次請求讀取多個句柄的特性值,服務(wù)器將這些特性值回 應(yīng)給客戶端(假定屬性有讀權(quán)限),客戶端需要知道如何解析這些不同特性值的數(shù) 據(jù)。 

l 讀特性描述符——客戶端請求讀取特殊句柄的特性描述符,服務(wù)器將特性描述符的值 回應(yīng)為客戶端(假定屬性有讀權(quán)限)。 

l UUID 發(fā)現(xiàn)特性值——客戶端通過發(fā)送“特性”的類型(UUID)來請求發(fā)現(xiàn)這個“特 性”的句柄,服務(wù)器將特性的聲明回應(yīng)給客戶端,其中包括特性值的句柄以及特性 的權(quán)限。 

l 寫特性值——客戶端請求向服務(wù)器特定的句柄寫入特性值,服務(wù)器將數(shù)據(jù)是否寫入成 功的信息反饋給客戶端。 

l 寫特性描述符——客戶端請求向服務(wù)器特定的句柄寫入特性描述符,服務(wù)器將數(shù)據(jù)是 否寫入成功的信息反饋給客戶端。 

l 特性值通知——服務(wù)器將一個特性值通知給客戶端。這個客戶端無需向服務(wù)器請求這 個數(shù)據(jù),當(dāng)客戶端接收到通知數(shù)據(jù)后 3,也不需要回應(yīng)服務(wù)器。但必須首先配置特性 使能通知服務(wù),profile 定義了什么時候服務(wù)器應(yīng)該發(fā)送這個數(shù)據(jù)。 

每個 profile 初始化其相應(yīng)的服務(wù)并內(nèi)在的通過 GATT 服務(wù)注冊服務(wù)。GATT 服務(wù)添加整 個服務(wù)向?qū)傩粤斜,并給每個屬性分配唯一句柄。 

GATT 屬性列表中有一些特殊屬性類型,其值有藍(lán)牙技術(shù)聯(lián)盟技術(shù)定義: 

GATT_PRIMARY_SERVICE_UUID——表示新服務(wù)的開始和提供的服務(wù)類型。 

GATT_CHARACTER_UUID——稱之為“特性聲明”,表示緊跟其后的是 GATT 特 性值。 

GATT_CLIENT_CHAR_CFG_UUID——這個屬性代表特性描述符,它與屬性表中它 前面近的句柄處的特征值相關(guān),它允許 GATT 客戶端設(shè)備使能特性值通知。 

GATT_CHAR_USER_DESC_UUID——這個屬性代表特性描述符,它與屬性表中它前 面近的句柄處的特性值相關(guān),包含一個 ASCII 字符串,是對相關(guān)特性的描述。 

這些特定屬性類型在 BLE 規(guī)范中包括,更多其他的詳細(xì)屬性類型請參考文檔 BLE_API_Guide_main.htm。 

下面是已經(jīng)采用的基于 GATT 的藍(lán)牙配置文件和服務(wù): 

基于 GATT 的規(guī)格 服務(wù) 

(可進(jìn)行資格認(rèn)證) 

已采納 版本 

ANP 警報通知配置文件 

1.0 

ANS 警報通知服務(wù) 

1.0 

CTS 當(dāng)前時間服務(wù) 

1.0 

DIS 設(shè)備信息服務(wù) 

1.0 

FMP Find Me 配置文件 

1.0 

HTP 健康體溫計配置文件 

1.0 

HTS 健康體溫計服務(wù) 

1.0 

HRP 心率配置文件 

1.0 

HRS 心率服務(wù) 

1.0 

IAS 即時警報服務(wù) 

1.0 

LLS 鏈路丟失服務(wù) 

1.0 

NDCS 下個日光節(jié)約時間更改服務(wù) 

1.0 

PASP 電話警報狀態(tài)配置文件 

1.0 

PASS 電話警報狀態(tài)服務(wù) 

1.0 

PXP 近距傳感配置文件 

1.0 

RTUS 參考時間更新服務(wù) 

1.0 

TIP 時間配置文件 

1.0 

TPS 發(fā)射功率服務(wù) 

1.0 

 通用訪問配置文件(Generic Access Profile)

BLE 協(xié)議棧中的 GAP 層負(fù)責(zé)處理設(shè)備訪問模式和程序。包括設(shè)備發(fā)現(xiàn)、建立連接、終止 

連接、初始化安全特寫和設(shè)備配置。

GAP 層總是作為下面四種角色之一: 

(1) 廣播者------不可連續(xù)廣播設(shè)備; 

(2) 觀察者------掃描廣播,但不發(fā)起建立連接; 

(3) 外部設(shè)備------可連接的廣播設(shè)備,可以在單個鏈路層連接中作為從機; 

(4) 集中器------掃描廣播設(shè)備并發(fā)起連接,在單鏈路層或多鏈路層作為主機,目前,TI 的 BLE 協(xié)議棧支持一個集中器連接 3 個外設(shè)。 

BLE 規(guī)范說明允許特性的的多個角色組合。簡單外設(shè)實例默認(rèn)僅支持外設(shè)角色,可以通 過添加源碼程序使工程同時指出外設(shè)和廣播角色。當(dāng)然在編譯廣播源碼時,需禁止編譯外設(shè) 源碼。 

  在典型低功耗藍(lán)牙系統(tǒng)中,外部設(shè)備廣播特定數(shù)據(jù)為了是集中器知道它是一個可連接設(shè)備。廣播包包含:設(shè)備地址、以及一些額外的數(shù)據(jù),例如設(shè)備名。集中器接收到廣播包,會向外部設(shè)備發(fā)送一個掃描請求,這個外部設(shè)備響應(yīng)一個響應(yīng)信號,被稱之“掃描回應(yīng)”。因此集中器選擇意識到外部設(shè)備,知道是可以連接的設(shè)備,這就是發(fā)現(xiàn)設(shè)備的過程。此時,集中器向外部設(shè)備發(fā)送請求建立連接。一個連接請求包含許多連接參數(shù):

連接時間間隔(Connection Interval) 

兩個 BLE 設(shè)備連接使用跳頻機制,兩個設(shè)備發(fā)送和接收數(shù)據(jù)使用特定的信道,一段時間 后使用心得信道(鏈路層處理信道切換),兩設(shè)備在切換設(shè)備之后收發(fā)數(shù)據(jù)稱之為連接事件。 即使沒有應(yīng)用數(shù)據(jù)收發(fā),兩設(shè)備也一直通過交換鏈路層數(shù)據(jù)位置連接狀態(tài)。連接間隔就是兩 個連接時間的間隔。連接間隔以 1.25ms 為單位。連接間隔的范圍:6(7.5ms)~ 3200(4s)。 

  不同的應(yīng)用可能要求不同的連接間隔。長時間連接間隔的優(yōu)勢是節(jié)省功耗。因為設(shè)備在連接過程中有大量的睡眠時間,不好之處是設(shè)備發(fā)送數(shù)據(jù)后,需要等待哦下一個連接設(shè)備。

  短的連接間隔好處是設(shè)備收發(fā)數(shù)據(jù)機會多,因為兩個之間連接的頻率高。不好之處是耗能較高,因為設(shè)備頻繁被連接事件喚醒。

n從機延時(Slave Latency) 這項參數(shù)可以使從機(外設(shè))跳過幾項連接事件,使從機設(shè)備更靈活。如果沒有數(shù)據(jù)發(fā) 

送時,可以選擇跳過連接事件和休眠,以至于更省電。這個是由從機(外設(shè))決定。

從機延時值就是可以跳過大的連接事件個數(shù)。其值的范圍:0 ~ 499,0 表示不跳過任 何連接事件。然而大有效間隔時間不能大于 16s。  

監(jiān)視超時(Supervision Timeout) 

兩個成功連接事件之間的大允許間隔。如果超過了這個大時間而沒有成功的連接事 件,設(shè)備被認(rèn)為丟失連接,返回沒有連接狀態(tài)。參數(shù)值以 10ms 為單位。監(jiān)視超時值的范圍 從 10(100Ms) ~ 3200(32s)。另外,超時值必須大于有效連接間隔。 

有效間隔時間等于連個連接事件按之間的時間。假設(shè)從機跳過可能事件的大數(shù)量被從 機延時允許(如果從機延時被設(shè)置為 0,測有效連接間隔等于真實連接事件)。下面是運算 公式: 

這就是告訴我們,在這種情況下,從機向主機沒有數(shù)據(jù)發(fā)送時,從機僅僅是每個 500ms 傳輸一次連接事件。 

許多應(yīng)用中,從機設(shè)置跳過連接事件大個數(shù)。因此,在選擇連接參數(shù)時,需要考慮有 效連接間隔。選擇正確的連接參數(shù)對 BLE 設(shè)備的功耗優(yōu)化啟到重要作用。先列表在連接參數(shù) 設(shè)置上給出一個通用概述: 

減少連接間隔: u增加設(shè)備功耗 

增加雙向傳輸數(shù)據(jù)量 

降低設(shè)備之間數(shù)據(jù)傳輸所用的時間 增加連接間隔: 

降低設(shè)備的功耗 u降低設(shè)備傳輸數(shù)據(jù)量 u提高設(shè)備之間數(shù)據(jù)傳輸所用的時間 

減少從機延時(或這個為 0): u提高從機設(shè)備的功耗 u降低從機設(shè)備接收集中器數(shù)據(jù)的時間。 

降低從機延時: u外圍設(shè)備沒有數(shù)據(jù)發(fā)送集中器期間降低了功耗。、 

Effective Connection Interval = (Connection Interval) * ( 1 + (Slave Latency) ) 

Take the following example: Connection Interval: 80 (100ms) Slave Latency: 4 

Effective Connection Interval: (100ms) * ( 1 + 4 ) = 500ms 

提高集中器發(fā)送給外圍設(shè)備的數(shù)據(jù)時間。 

在某些情況,集中器向外設(shè)請求一個連接參數(shù)包,對外設(shè)也是不容易的。在其他情況, 一個外設(shè)可能期望改變連接中的參數(shù),以外設(shè)應(yīng)用為基礎(chǔ)。外設(shè)可以通過向集中器發(fā)送“連 接參數(shù)參數(shù)更新請求”來改變連接設(shè)置,這個請求由協(xié)議棧的 L2CAP 層處理。這個 請求包 括 4 個參數(shù):小連接間隔、大連接間隔、從機延時和超時連接。這些參數(shù)值代表外設(shè)所 要求的連接參數(shù)。集中器接收請求后可以選擇接收或拒絕這些新的參數(shù)。 

  連接可以被主機和從機以任何原因自動終止。一方發(fā)起終止,并且另一方必須響應(yīng),因此兩個設(shè)備都退出連接狀態(tài)。

GAP 層也處理 BLE 連接中安全特性的初始化,只有在已認(rèn)證連接中,特定的數(shù)據(jù)才能被 讀寫。一旦連接建立,兩個設(shè)備進(jìn)行配對。當(dāng)配對完之后,形成加密和認(rèn)證鏈接的秘鑰。典 型案例中,外設(shè)請求集中器提供秘鑰來完成配對工作。秘鑰可能是一個固定值,例如“000000”, 也可以是一個隨機產(chǎn)生的值提供給使用者。當(dāng)集中器發(fā)送正確的秘鑰后,兩個設(shè)備交換安全 秘鑰并加密和認(rèn)證鏈接。 

在許多情況下,同一對集中器和外設(shè)會不時地連接和斷開,BLE 有一個安全特性在配對 時,提供一個長期的安全秘鑰信息。這種特性叫做綁定。它允許兩個設(shè)備重新連接后快速完 成加密和認(rèn)證,并且不需要每次連接執(zhí)行配對過程,只需要兩個之間存儲這個長期秘鑰信息。 

參考 SimpleBLEPeripheral 應(yīng)用,GAP 部分由 GAP 配置文件處理,并且綁定信息管理由 GAP 安全配置文件(security profile)處理,更多的信息在 TI 的 CC2540/41 BLE 協(xié)議棧的 GAP 配置文件頭文件 

 鏈路層規(guī)格 

借助先進(jìn)的省電和加密功能,鏈路層將提供超低耗能的閑置模式運行、簡單的設(shè)備發(fā)現(xiàn) 以及可靠的點對多點數(shù)據(jù)傳輸。

使用 GAP 和 GATT 的堆棧 API

應(yīng)用程序和配置文件直接調(diào)用 GAP 和 GATT API 功能來實現(xiàn) BLE 相關(guān)功能,例如,廣 

播、連接、讀寫“特性” 。

APIs 中有不同層的 BLE 協(xié)議棧的詳細(xì)信息。可以在 HTML 指導(dǎo)中咨詢,更多其他的詳 

細(xì)信息請參考 BLE_API_Guide_main.htm 文檔。 使用 GAP 和 GATT 的 API 功能一般步驟如下: (1) 使用適當(dāng)?shù)膮?shù)調(diào)用 API 功能;

(2) 協(xié)議棧執(zhí)行特定的操作并返回;  

(3) 操作完成后,或者任何時候堆棧有消息需要報告給調(diào)用 API 功能的任務(wù),堆棧發(fā)送 一條 OSAL 纖細(xì)給調(diào)用 API 的任務(wù)。 

(4) 調(diào)用 API 任務(wù)接收和處理相應(yīng)地消息;

(5) 調(diào)用 API 的任務(wù)釋放消息;

從 GAP 從機角色 profile 可以看到一個過程的示例(peripheral.c)。 

(1) Profile 調(diào)用 GAP API 函數(shù) GAP_DeviceInit 初始化設(shè)備;、 

(2) GAP 進(jìn)行初始化并返回 SUCCESS(0x00); 

(3) 初始化之完成后,BLE 協(xié)議棧發(fā)送 OSAL 消息,外圍角色 profile 的頭事件值為 GAP_MSG_EVENT,并且操作碼為 GAP_DEVICE_INIT_DONE_EVENT; 

(4) Profile 任務(wù)接收 SYS_EVENT_MSG 事件,表明它是一個消息,Profile 接收到這個 消息并查看消息頭和操作碼的值;谶@些,Profile 知道將消息數(shù)據(jù)歸類到相應(yīng)的類型 (gapDeviceInitDoneEvent_t)并處理。這種情況下,Profile 將生成密鑰存儲到 Flash 存儲器, 并在本地保存設(shè)備地址; 

(5) Profile 釋放消息并返回;

這是另外一個示例,如果 GATT 客戶端向共同體 GATT 服務(wù)器請求一個 GATT 讀請求, 

它是可能存在的。

(1) 應(yīng)用調(diào)用 GATT 子程序 API 功能,連接通過,特性句柄(包含數(shù)據(jù)類型),它自己 

的任務(wù) ID 作為參數(shù)。 

(2) GATT 處理請求,并返回 SUCCESS; 

(3) 在下次連接事件協(xié)議棧發(fā)送讀請求,遠(yuǎn)處的設(shè)備接收到讀請求,協(xié)議棧發(fā)送一個包含 讀響應(yīng)的 OSAL 消息給應(yīng)用,消息包括頭事件值為 GATT_MSG_EVENT,操作碼為 ATT_READ_RSP; 

(4) 應(yīng)用任務(wù)接收到 SYS_EVENT_MSG 事件,表示它是一個消息,Profile 接收到這個消 息并查看消息頭和操作碼;谶@些,Profile 知道將消息歸類到相應(yīng)的類型(attReadRsp_t), 檢索在讀響應(yīng)中接收的數(shù)據(jù)。 

(5) Profile 釋放消息并返回; 

 GATT 的 Profile 層次結(jié)構(gòu) 

為了實現(xiàn)用戶的應(yīng)用,profile 通常有一個或者多個“Services”組成。

一個 service 或許包含某個特征值“characteristic values”,(例如,在一個溫度采集設(shè)備 中,通常會包含一個溫度的特征值) 每一個特征值必須有占用一個特征申明結(jié)構(gòu),其中包括他的其他特性,它是服務(wù)端和客 戶端共享的讀寫空間

這個特征值可以包含一個可選的描述(descriptor 字串),來只是這個特征值的含義。 

上一篇:fork函數(shù)的小誤區(qū)

下一篇:BLE 數(shù)據(jù)接發(fā)流程

熱點文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號-5,京公海網(wǎng)安備11010802025203號

回到頂部