久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

藍(lán)牙基本原理

 恰似一場(chǎng)夢(mèng) 2019-09-21

簡(jiǎn)介

本次講座介紹 SimpleLink? CC26x2 和 CC13x2 軟件開(kāi)發(fā)套件 (SDK) 的 低功耗 Bluetooth? 器件,。本次實(shí)驗(yàn)中的 4 個(gè)任務(wù)預(yù)計(jì)將在 2 小時(shí)內(nèi)完成。完成 這些任務(wù)需具備中級(jí) C 語(yǔ)言編程知識(shí) 以及一定的嵌入式軟件開(kāi)發(fā)經(jīng)驗(yàn),。

本次實(shí)驗(yàn)課程將使用 SimpleLink CC26X2R1 無(wú)線 MCU LaunchPad 開(kāi)發(fā)套件來(lái)演示本模塊中的各項(xiàng)任務(wù),。第一項(xiàng)任務(wù)是演示 如何將項(xiàng)目下載到設(shè)備以及如何運(yùn)行, 然后我們將討論無(wú)線 BLE 接口,, 并對(duì) BLE 應(yīng)用做一些小的更改。

對(duì)于后面的任務(wù)來(lái)說(shuō),,我們將需要用到一個(gè)支持低功耗藍(lán)牙的手機(jī)或 運(yùn)行 TI host_test 示例應(yīng)用的評(píng)估套件。使用 host_test 的優(yōu)點(diǎn)在于可以使用 BTool 等 TI 工具,。

套件和 SDK 兼容性

LAUNCHXL-CC26x2R1LAUNCHXL-CC1352R1 套件均支持 各自的軟件開(kāi)發(fā)套件中包含的 低功耗藍(lán)牙棧。在本次實(shí)驗(yàn)中,我們將以 CC26x2R Launchpad 和 CC26x2 SDK 為例,, 但兩者的適用性相同。

除了進(jìn)行本實(shí)驗(yàn),,還建議閱讀 TI BLE-Stack 用戶(hù)指南 以了解詳細(xì)信息和更多信息,。本文還提供了一些參考文獻(xiàn)。

必要條件

桌面開(kāi)發(fā)軟件

為了進(jìn)行測(cè)試,,需要使用藍(lán)牙客戶(hù)端應(yīng)用:

  • BTool(位于 SimpleLink CC26x2 SDK 安裝程序目錄 tools->ble5stack)
  • 藍(lán)牙移動(dòng)應(yīng)用:

編譯器支持

請(qǐng)參閱支持的 TI ARM 編譯器版本的 SimpleLink CC26X2 SDK 發(fā)行說(shuō)明。 與 CCS 中的其他 TI ARM 編譯器版本的兼容性尚未經(jīng)過(guò)測(cè)試,, 因此使用其他編譯器版本可能會(huì)導(dǎo)致未定義行為,。 請(qǐng)參閱《TI BLE-Stack 用戶(hù)指南》的 SDK 快速入門(mén)指南 → IDE → CCS → 步驟 4. 一章,了解安裝其他編譯器版本的步驟,。

硬件

用于測(cè)試:

  • 運(yùn)行 host_test 的其他 CC26xx LaunchPad
  • 用于測(cè)試的移動(dòng)設(shè)備

推薦閱讀

入門(mén) - 桌面

安裝軟件

通過(guò) View → Resource Explorer 打開(kāi) Resource Explorer,找到 您要安裝的 SDK,。

在右側(cè)將看到下載圖標(biāo)。單擊此處以安裝 SDK 以及它的所有依賴(lài)項(xiàng),。

1.從上方必要條件下的 SDK 鏈接下載離線安裝程序

2.運(yùn)行 SimpleLink CC26X2 SDK 安裝程序:simplelink_cc26x2_sdk_1_60_00_xx.exe。 以下說(shuō)明假設(shè)默認(rèn)安裝目錄為:C:\ti\

在這種情況下,,您無(wú)需在計(jì)算機(jī)上進(jìn)行任何安裝。您可以導(dǎo)航到 TI-Rex 中的項(xiàng)目并將它導(dǎo)入 CCS 云,。

然后單擊 Cloud Import 按鈕:

請(qǐng)注意,,這不會(huì)在計(jì)算機(jī)上安裝 BTool。

這將為您提供:

  • 位于 C:\ti\simplelink_cc26x2_sdk_1_60_00_xx 的 SimpleLink CC26X2 SDK
  • 可通過(guò) SimpleLink CC26X2 SDK 安裝目錄 tools->ble5stack->btool 目錄 訪問(wèn)的 BTool

任務(wù) 1 - 運(yùn)行 ProjectZero 項(xiàng)目

第一個(gè)任務(wù)只需在 CC26X2R1 LaunchPad 上運(yùn)行 Project Zero 示例項(xiàng)目,, 并驗(yàn)證項(xiàng)目按照預(yù)期運(yùn)行,。

無(wú)線下載和 BIM 項(xiàng)目

請(qǐng)注意,此項(xiàng)目默認(rèn)配置為 無(wú)線更新 (OAD)。這意味著您可以在手機(jī)上將新版本或完全不同的項(xiàng)目 上傳到 LaunchPad,。

它還意味著項(xiàng)目編譯和鏈接的方式使您的設(shè)備的內(nèi)部閃存中 必須先存在 cc26xxr1lp_bim_offchip 項(xiàng)目,, 項(xiàng)目才能正常運(yùn)行。有關(guān)詳情,,稍后繼續(xù),。

啟動(dòng)映像管理器

客戶(hù)配置 (CCFG)

此配置部分用來(lái)指示設(shè)備在啟動(dòng)后的行為方式, 如復(fù)位矢量的位置,、時(shí)鐘源是什么,,等等。

啟動(dòng)映像管理器 (BIM) 項(xiàng)目與 CCFG 部分位于內(nèi)部閃存的最后一個(gè)扇區(qū),, 負(fù)責(zé)從外部閃存加載新的映射(如果有),, 并啟動(dòng)內(nèi)部映像,。在 我們的案例中,,內(nèi)部映像是 Project Zero

如果不存在 BIM,,從 IDE 調(diào)試和啟動(dòng) Project Zero 將正常進(jìn)行,,因?yàn)?IDE 覆蓋引導(dǎo)配置并 直接跳到它認(rèn)為項(xiàng)目啟動(dòng)地址所在的位置。但如果 不存在 BIM,,在復(fù)位后,,設(shè)備將不知道做什么。

請(qǐng)注意,,在使用支持 OAD 的項(xiàng)目時(shí),,只需下載 BIM 一次。

導(dǎo)入 CCS 桌面

打開(kāi) Code Composer Studio 并導(dǎo)入 Project Zero 應(yīng)用和堆棧庫(kù) 項(xiàng)目:

  • 打開(kāi) TI Resource Explorer (View → Resource Explorer) 或進(jìn)入 http://dev./tirex/#/
  • 在左側(cè)的導(dǎo)航面板中,,通過(guò)展開(kāi)操作查找 SimpleLink CC26X2 SDK 中的 Project Zero,。
    • Software → SimpleLink CC26X2 SDK - v:1.60.00.xx → Examples → Development Tools → CC26x2R LaunchPad → ble5stack → project_zero → TI-RTOS → CCS Compiler → project_zero_app
目錄結(jié)構(gòu)
  • 單擊上方標(biāo)記的項(xiàng)目文件夾。在右側(cè)窗口中,,單擊右上角的 CCS 徽標(biāo) 將項(xiàng)目導(dǎo)入您的工作區(qū)中,。

    • 使用 CCS 桌面,導(dǎo)入工作區(qū)
      Resource Explorer
    • 使用 CCS 云,,在瀏覽器中導(dǎo)入 CCS 云工作區(qū)
      Resource Explorer
  • 項(xiàng)目將顯示在您的 Project Explorer 窗口中,,如下所示:

已導(dǎo)入

連接 CC26X2R LaunchPad

首先確保您的套件已組裝、開(kāi)啟并且通過(guò) USB 線纜 連接到 PC,。

連接 CC26X2R Launchpad 后,,Windows 設(shè)備管理器 (開(kāi)始 → 控制面板 → 設(shè)備管理器,, 或在 Windows 10 上使用 Win+X, M) 應(yīng)該會(huì)顯示已連接以下設(shè)備:

設(shè)備管理器

Application/User UART 串行端口用于此示例中的 應(yīng)用輸出,。

配置調(diào)試器連接

導(dǎo)入項(xiàng)目時(shí)會(huì)默認(rèn)選擇正確的調(diào)試器類(lèi)型 (XDS110),。

連接終端程序

要查看套件的串行輸出,必須使用終端仿真器,。 當(dāng)您確認(rèn)調(diào)試器與設(shè)備的連接正常時(shí),立即啟動(dòng)終端仿真器,。有多種選擇可供使用:

  • PuTTY
  • Tera Term
  • RealTerm
  • Windows PowerShell
  • 甚至直接進(jìn)入命令提示窗口并鍵入 type COM4: 之類(lèi)的命令。
    • 鍵入 help mode 可了解如何設(shè)置端口參數(shù),。

1.啟動(dòng)您的終端程序

2.選擇 115200 波特速率、8 位數(shù)據(jù),、1 個(gè)停止位,、無(wú)奇偶校驗(yàn),、無(wú)流量控制。

3.打開(kāi)串行端口

構(gòu)建項(xiàng)目并刷寫(xiě)設(shè)備

cc26xxr1lp_bim_offchip

1.構(gòu)建 BIM 項(xiàng)目,,方法是右鍵單擊該項(xiàng)目并選擇 Build Project

  • 或者通過(guò)按 Ctrl + B 構(gòu)建所有項(xiàng)目,。 2.對(duì)項(xiàng)目進(jìn)行編程,方法是右鍵單擊該項(xiàng)目,,并選擇 Debug As -> Code Composer Debug Session 3.當(dāng) IDE 在 bim_main 函數(shù)處暫停時(shí),通過(guò)單擊 Ctrl + F2 或方形紅色停止圖標(biāo)來(lái)終止調(diào)試會(huì)話,。

ble5_project_zero_cc26x2r1lp_app

1.構(gòu)建 ble5_project_zero_cc26x2r1lp_app 項(xiàng)目,方法是右鍵單擊該項(xiàng)目并選擇 Build Project,。

  • 這將先為您自動(dòng)構(gòu)建堆棧庫(kù)項(xiàng)目。

2.下載并運(yùn)行該項(xiàng)目,,方法是

  • 右鍵單擊該項(xiàng)目,并選擇 Debug As -> Code Composer Debug Session,,或
  • 當(dāng)項(xiàng)目標(biāo)記為活動(dòng)時(shí)(見(jiàn)上圖),,按下 F11
  • 單擊工具欄中的綠色蟲(chóng)子圖標(biāo)

3.下載項(xiàng)目并在 main() 暫停后,按下 F8 或 Play/Pause 按鈕開(kāi)始執(zhí)行代碼,。

應(yīng)用運(yùn)行后,您應(yīng)可在終端應(yīng)用中觀察到如下所示的內(nèi)容:

Putty 初始內(nèi)容

這會(huì)顯示用戶(hù)應(yīng)用正在初始化三個(gè)服務(wù):LED,、Button 和 Data,并設(shè)置這些服務(wù)中特征的初始值,。最后會(huì)從堆棧收到回調(diào), 該回調(diào)指出設(shè)備已準(zhǔn)備就緒并已開(kāi)始廣播其存在,。

記下您的設(shè)備地址供以后使用。

任務(wù) 2 - 連接和瀏覽公開(kāi)的服務(wù)

為了與低功耗藍(lán)牙設(shè)備進(jìn)行交互,,您需要使用指向該設(shè)備并充當(dāng)中央設(shè)備的東西。

許多移動(dòng)應(yīng)用程序可用于此目的,。我們將介紹 使用適用于 iOS 和 Android 的 TI SimpleLink Starter 應(yīng)用的 說(shuō)明。

除了這些移動(dòng)應(yīng)用,,德州儀器 (TI) 還為此提供了一些 PC 工具,,這些工具可通過(guò)串行端口與加載到獨(dú)立的 CC26xx 器件上的 特定固件進(jìn)行通信。這些串行命令符合 藍(lán)牙 SIG 定義的 HCI 標(biāo)準(zhǔn),,且除了 HCI 規(guī)范要求的裸機(jī)鏈路層命令之外,,還允許控制主機(jī)層,如 GATT,、GAP 和 Security Manager。

諸如 BTool 之類(lèi)的工具使用此接口連接到其他 BLE 設(shè)備以及與這些設(shè)備進(jìn)行交互,。

通過(guò)展開(kāi)以下框來(lái)選擇連接到 Project Zero 的首選方法,。

首先,,您將使用 host_test 項(xiàng)目對(duì)第二個(gè)板進(jìn)行編程。 host_test 項(xiàng)目允許用戶(hù)通過(guò)串行接口調(diào)用 BLE 棧的大多數(shù) GAP,、GATT 和 ATT 函數(shù)。

0 – 在 Launchpad 上進(jìn)行 HostTest 編程

在這里,,您有兩個(gè)選擇:

  • 從 BLE5 示例文件夾構(gòu)建 ble5 host_test 并將它編程到設(shè)備上,或

  • 下載 適用于您的平臺(tái)的 UniFlash 并在 [sdk]examples/rtos/[board]/ble5stack/hexfiles/[device]/ble5_host_test_[board].hex 中的 預(yù)構(gòu)建十六進(jìn)制文件中進(jìn)行編程

1 – 啟動(dòng) BTool

BTool 是一個(gè)使用 HCI 供應(yīng)商特定命令的 PC 工具,, 作為低功耗藍(lán)牙設(shè)備使用。BTool 可在 SimpleLink CC26X2 SDK 安裝文件夾 tools -> blestack ->3363 btool 中找到,。

BTool 打開(kāi)時(shí),會(huì)提示您選擇 host_test 設(shè)備連接到的串行端口,,如下圖所示,。

BTool 串行端口配置

如果您有多個(gè) COM 端口,,請(qǐng)?jiān)?host_test 正在運(yùn)行的情況下使用 Windows 設(shè)備管理器查看哪一個(gè)端口連接到套件的 Application/User COM 端口。這在上文中有相關(guān)說(shuō)明,。

設(shè)備管理器

2 – 掃描 BLE 設(shè)備

設(shè)備完成初始化后,GUI 右側(cè)的選項(xiàng)卡部分可用于執(zhí)行 BLE 功能,。我們將使用以下操作 來(lái)掃描和連接 Project Zero 設(shè)備。

1) 選擇 Discover/Connect 選項(xiàng)卡

2) 選擇 Scan。日志將會(huì)隨時(shí)更新已發(fā)現(xiàn)的設(shè)備,。

BTool 中的 Project Zero 掃描報(bào)告,。廣播的一部分是 LocalName,,標(biāo)記為黃色。

3) 在 Slave BDA 下拉菜單中,,選擇設(shè)備地址(來(lái)自于先前的終端輸出)

4) 單擊 Establish 以進(jìn)行連接

5) 建立連接后,,將看到已連接的外設(shè)的條目,。

BTool 接口

連接后,,串行窗口將如以下所示:

已連接 Putty

注意,,Peer address 是用作中央設(shè)備的套件的地址。

您還將在 BTool 窗口的左側(cè)看到一個(gè) 新的 Connection Info 部分:

連接信息

3 – 瀏覽 Attribute 表

注意,,我們已建立連接,,接下來(lái)我們將要執(zhí)行發(fā)現(xiàn)來(lái)查找 Project Zero 設(shè)備上的所有特征和服務(wù),以便可與這些屬性進(jìn)行交互,。UUID 將告知對(duì)等設(shè)備 如何解釋屬性的值,。可在自定義配置文件 SimpleLink Academy 模塊中了解有關(guān)屬性和 UUID 的 更多信息,。

  • 右鍵單擊 Connection Info 下的 Handle。
  • 選擇 Discover UUIDs

您將注意到日志下方的區(qū)域會(huì)填充設(shè)備上可用的 服務(wù)和特征的相關(guān)信息,。

直截了當(dāng)?shù)卣f(shuō),完成發(fā)現(xiàn)后在 BTool 中的日志下方看到的內(nèi)容,, 就是可以通過(guò)藍(lán)牙屬性協(xié)議對(duì)任何已連接的 GATT Client 設(shè)備 進(jìn)行訪問(wèn)的內(nèi)容的可視化結(jié)果。

通過(guò)無(wú)線方式報(bào)告的唯一結(jié)果是 Handle (即一種解決屬性的動(dòng)態(tài)簡(jiǎn)略方法)和 Type(用于告知您如何解釋報(bào)告中同時(shí)提供的 Value),。這三個(gè)值一起組成 Attribute

下圖中的每一行都是一個(gè) Attribute,。你會(huì)注意到一些行有不同的顏色,。不同顏色的原因是 Type 在 GATT 協(xié)議中 強(qiáng)加了層次結(jié)構(gòu),,如下所示(簡(jiǎn)化版):

  • 淡紅色 – 0x2800服務(wù)聲明 – Value 為 Service UUID,。
  • 淡黃色 – 0x2803特征聲明 – Value 描述了特征值屬性
  • 白色 – 0xXXXX(-XXX...)特征值屬性 – Value 為實(shí)際數(shù)據(jù),;所有其他均為元數(shù)據(jù)。
  • 白色 – 0x29xx特征描述符 – Value 為 有關(guān)特征值屬性的信息,。
掃描的設(shè)備

讀取所有值(通過(guò)右鍵單擊菜單)后的 Project Zero 的 GATT 表, 包括特征屬性/權(quán)限,。

4 - 交互

您可能會(huì)注意到,某些屬性沒(méi)有關(guān)聯(lián)的值,。為填充所有屬性的該字段,必須手動(dòng)讀取這些值,。

  • 右鍵單擊 Connection Info 下的 Handle。
  • 選擇 Read Values

或者,,也可單擊 Value 列中的某個(gè)字段 以讀取單項(xiàng)的值。

GATT 表填充完成后,,接下來(lái)可以開(kāi)始與 Project Zero 設(shè)備 進(jìn)行交互。Value Description 字段中的注釋將會(huì)指導(dǎo)您如何操作,。

要向特征寫(xiě)入,雙擊 Value 字段,,隨后將出現(xiàn)一個(gè)新窗口。編輯 Value 并選中 Write Value,,即可發(fā)送 Write Request。

例如,,要點(diǎn)亮 LED0,請(qǐng)雙擊與 LED0 State 對(duì)應(yīng)的 Value 字段,。寫(xiě)入一個(gè)值高于 00 的字節(jié)將點(diǎn)亮 Project Zero LaunchPad 上的 紅色 LED,。

連接信息

您可通過(guò)類(lèi)似的方式與 Button 和 Data 服務(wù)進(jìn)行交互,。

1 – 啟動(dòng) SimpleLink Starter

使用您的 iOS 設(shè)備,,找到 SimpleLink Starter 應(yīng)用并將其打開(kāi),。

應(yīng)用圖標(biāo)

2 – 掃描 BLE 設(shè)備

該應(yīng)用應(yīng)該會(huì)開(kāi)始自動(dòng)掃描 BLE 設(shè)備,但您可以通過(guò)下拉操作 刷新列表,。

您應(yīng)該會(huì)看到 Project Zero 廣播為ProjectZero,。連接到 設(shè)備,方法是單擊名稱(chēng),,并選擇 Sensor View 以轉(zhuǎn)到 GUI 界面,。

在此處的第一步中選擇 Sensor View,。稍后您將使用 Service Explorer

連接后,,串行窗口將如以下所示:

已連接 Putty

注意Peer address 是移動(dòng)設(shè)備的地址,。

3 – 使用 GUI

SimpleLink Starter 可以識(shí)別 Project Zero 實(shí)施的服務(wù)的 UUID,例如 LED 和 Button,,并顯示 GUI 小工具與這些服務(wù)交互。

4 – 瀏覽 Attribute 表

GUI 很有趣,,但我們也可以在更低的層級(jí)上探索 BLE 服務(wù)。為此,, 請(qǐng)返回 GUI 屏幕,并長(zhǎng)按 ProjectZero 以獲取 菜單,。

選擇菜單中的 Service Explorer

直截了當(dāng)?shù)卣f(shuō),,您看到的內(nèi)容, 就是可以通過(guò)藍(lán)牙屬性協(xié)議對(duì)任何已連接的 GATT Client 設(shè)備 進(jìn)行訪問(wèn)的內(nèi)容的可視化結(jié)果,。

通過(guò)無(wú)線方式報(bào)告的唯一結(jié)果是 Handle (即一種解決屬性的動(dòng)態(tài)簡(jiǎn)略方法)和 Type(用于告知您如何解釋報(bào)告中同時(shí)提供的 Value)。這三個(gè)值一起組成 Attribute,。

SimpleLink Starter 使用 Attribute 信息并以更有用的方式顯示它。 SimpleLink Starter 使用發(fā)送的 Type 將 Attribute 編排在特征和服務(wù)的 層級(jí)結(jié)構(gòu)中,如下所示:

SimpleLink Starter Project Zero UUIDs

出現(xiàn)在 ProjectZero 中的 SimpleLink Starter 的 GATT 服務(wù)列表

SimpleLink Starter Project Zero UUIDs

LED 服務(wù)中的特征列表,。請(qǐng)注意,,允許的操作突出顯示。這里是 Read/Write,。

參閱下方的 Project Zero 的自定義標(biāo)識(shí)符列表 了解如何解讀自定義 UUD

5 – 交互

要使用 SimpleLink Starter 與特征進(jìn)行交互,請(qǐng)單擊 Characteristic UUID,。根據(jù)所單擊的具體特征,您將看到如下所示的內(nèi)容:

SimpleLink Starter 特征視圖

如上所示的特征具有 Write 屬性,。要使用 Write 屬性 向特征寫(xiě)入新值,請(qǐng)單擊其中一個(gè)Write項(xiàng),。在新窗口中,,使用提供的鍵盤(pán)編輯值,,如圖所示。

SimpleLink Starter Write New Value

完成后,,單擊Write,,您將回到特征視圖。Read characteristic部分將顯示一個(gè)新值,, 如下所示:

6 – 廣播數(shù)據(jù)

通過(guò)操作菜單還可以查看設(shè)備在等待連接時(shí) 發(fā)送出去的數(shù)據(jù),。

在本例中為 Local Name 和它必須提供的其中一項(xiàng)服務(wù),。

SimpleLink Starter Write New Value

1 – Start SimpleLink Starter

使用您的 Android 設(shè)備,找到 SimpleLink Starter 應(yīng)用并將其打開(kāi),。

應(yīng)用圖標(biāo)

2 – 掃描 BLE 設(shè)備

該應(yīng)用應(yīng)該會(huì)開(kāi)始自動(dòng)掃描 BLE 設(shè)備,,但您可以通過(guò)在設(shè)備列表上執(zhí)行下拉操作 強(qiáng)制刷新。

設(shè)備

您應(yīng)該會(huì)看到 Project Zero 廣播為Project Zero,。通過(guò)單擊設(shè)備的方式 連接到該設(shè)備。

連接后,,串行窗口將如以下所示:

注意Peer address 是移動(dòng)設(shè)備的地址。

3 – 交互

Android SimpleLink Starter 已連接

SimpleLink Starter 應(yīng)用識(shí)別到 Project Zero 服務(wù) (如下所述),,并顯示要交互的 GUI 小工具。單擊其中一個(gè) LED 以更改狀態(tài),。它還自動(dòng)啟用按鈕狀態(tài)通知, 這反映在按鈕圖表中,。

Project Zero 的自定義標(biāo)識(shí)符列表 (UUID)

使用工具查看運(yùn)行 Project Zero 的設(shè)備的 Attribute 表時(shí), 如果該工具沒(méi)有元數(shù)據(jù)可用于解釋 UUID 以便顯示說(shuō)明和助記符,,請(qǐng)使用此列表來(lái)識(shí)別 每個(gè)服務(wù)和特征:

請(qǐng)記住,有些工具會(huì)使用通過(guò)無(wú)線接收的字節(jié)順序來(lái)顯示 ValueType 字段,,這意味著對(duì)于 UUID, F0001110-0451-4000-B000-000000000000 將變?yōu)?00:00:00:00:00:00:00:B0:00:40:51:04:10:11:00:F0,。

UUID 哪個(gè) ATT 字段 描述 用法
F0001110-0451-4000-B000-000000000000 Value LED Service 服務(wù)聲明
F0001111-0451-4000-B000-000000000000 Type/Value LED0 State 讀取狀態(tài)或?qū)懭?01 或 00。
F0001112-0451-4000-B000-000000000000 Type/Value LED1 State 讀取狀態(tài)或?qū)懭?01 或 00,。
F0001120-0451-4000-B000-000000000000 Value Button Service 服務(wù)聲明
F0001121-0451-4000-B000-000000000000 Type/Value BUTTON0 State 讀取狀態(tài)或訂閱通知
F0001122-0451-4000-B000-000000000000 Type/Value BUTTON1 State 讀取狀態(tài)或訂閱通知
F0001130-0451-4000-B000-000000000000 Value Data Service 服務(wù)聲明
F0001131-0451-4000-B000-000000000000 Type/Value String char 讀取/寫(xiě)入長(zhǎng)字符串
F0001132-0451-4000-B000-000000000000 Type/Value Stream char 發(fā)送或接收 WriteNoRsp/通知

識(shí)別 ProjectZero 服務(wù)和特征的 UUID,。

對(duì)于服務(wù)和特征聲明,您將在 ATT-Value 字段中 找到 UUID,,而且對(duì)于特征值,,UUID 位于 ATT-Type 字段中,。

ATT Type/UUID GATT Type/UUID 查找 GATT UUID 的位置
0x2800 Service declaration ATT Value 字段為 GATT Service UUID
0x2803 Characteristic declaration ATT Value 字段,,字節(jié) 3 以后包含特征值的 UUID
<UUID> Characteristic value ATT Type 為 GATT 特征值的 UUID

GATT UUID 在 ATT 表中的位置。 請(qǐng)參閱自定義配置文件 實(shí)驗(yàn)以了解更多詳細(xì)信息

Quiz-time

借助使用 BTool 進(jìn)行連接部分的此 GATT 表回答以下 問(wèn)題(單擊 GATT 表可將其放大),。

掃描的設(shè)備

上圖 GATT 表中的 LED 1 Characteristic DeclarationATT Handle 是什么?

在哪里可以找到 GATT Service UUID,?

Characteristic DeclarationValue 告訴您哪些信息?多個(gè)正確答案,。

LED Service 總共包含多少個(gè) Attributes,?

配置文件和發(fā)現(xiàn)

當(dāng)一個(gè)設(shè)備連接到您的設(shè)備時(shí),,它不知道就它可交互的服務(wù)和特征而言,, 您需要提供什么,。

諸如 BTool 之類(lèi)的仿真工具將會(huì)發(fā)現(xiàn)并顯示可供您操作的一切,, 但通常對(duì)于大多數(shù)應(yīng)用而言,將會(huì)有一個(gè) Profile,。 這是一個(gè)文檔,描述了可以通過(guò)低功耗藍(lán)牙完成哪些交互,, 需要哪些服務(wù)來(lái)完成各種目標(biāo),以及如何對(duì)讀取和寫(xiě)入的值 進(jìn)行格式化和排序以便完成此操作,。

例如,,一個(gè)心率監(jiān)測(cè)設(shè)備通常會(huì)實(shí)施 Heart Rate Profile(HRP), HRP 反過(guò)來(lái)會(huì)規(guī)定它必須具有 Heart Rate Service(HRM),, 且 HRM 在被讀取和寫(xiě)入時(shí)必須遵循特定的行為方式。

如果您尚不知曉,,GATT 會(huì)在 ATT 上方強(qiáng)加一個(gè)元層,。 這意味著,,AttributeATT 項(xiàng),而 Service 是使用 AttributeGATT 項(xiàng),。

使用仿真工具,您可以根據(jù) Profile 來(lái)確定應(yīng)該 寫(xiě)入或讀取哪些 Attribute,,并且手動(dòng)地 像啟用了 GATT 的應(yīng)用那樣操作。

在建立連接后會(huì)發(fā)現(xiàn)服務(wù)和特征,,然后 GATT 交互 才會(huì)開(kāi)始。這樣做的原因在于,,AttributeHandle 是在 ATT 級(jí)別通過(guò)無(wú)線方式用于讀取/寫(xiě)入的內(nèi)容, 但 Handle 是動(dòng)態(tài)分配的,。遠(yuǎn)程設(shè)備在連接之前知道的唯一內(nèi)容是 它想要在對(duì)端上使用的服務(wù)和特征的 UUID,。

健康溫度計(jì)示例

例如,您有一個(gè) Health Thermometer Collector 設(shè)備,, 想要連接并使用一個(gè)遵循藍(lán)牙 SIG 針對(duì) 健康溫度計(jì) [PDF] 采納的 Profile 的健康溫度計(jì)。

閱讀藍(lán)牙 SIG 規(guī)范后,,您就會(huì)明白 Health Thermometer Service 的 UUID 是 0x1809,,而 Temperature Measurement Characteristic 的 UUID 是 0x2A1C,。

然后,,您通過(guò)定義的過(guò)程發(fā)現(xiàn)它們的 Handle,以便進(jìn)行配置/讀取/寫(xiě)入,。

任務(wù) 3 - 接收通知

如果使用移動(dòng)設(shè)備

此任務(wù)是使用 BTool 進(jìn)行演示的,,因?yàn)樗峁┝俗钊娴?GATT 表。本任務(wù)結(jié)尾提供了有關(guān)在移動(dòng)設(shè)備上啟用通知的說(shuō)明,,但強(qiáng)烈建議您閱讀 BTool 說(shuō)明,以更好地了解藍(lán)牙通知,。

您已建立連接,。您已讀取并寫(xiě)入值來(lái)控制藍(lán)牙設(shè)備 并已點(diǎn)亮和熄滅 LED,。從設(shè)備上的傳感器取回一些數(shù)據(jù)(如按鈕的狀態(tài))如何,?

讀取發(fā)生更改的數(shù)據(jù)

假設(shè)讀取 BUTTON0 State 的值,。您讀取的值如何與按鈕的實(shí)際狀態(tài)相關(guān)聯(lián)?例如,,您應(yīng)該多久讀出一次該值來(lái)做一個(gè)可靠的門(mén)鈴,?

在此任務(wù)中,您將學(xué)習(xí)如何在不輪詢(xún)您感興趣的值 (這可能會(huì)浪費(fèi)大量精力)的情況下對(duì)設(shè)備進(jìn)行配置 以便在值更改時(shí)向您傳輸通知

當(dāng)您連接到符合 [Project Zero 配置文件] {這是我虛構(gòu)的,。但這實(shí)際上在一定程度上 是出于應(yīng)該如何使用 Project Zero 服務(wù)的考慮,。}要求的外設(shè)時(shí),,可對(duì)按鈕狀態(tài)實(shí)現(xiàn)此目的, 原因在于以下三點(diǎn):

1.每個(gè) BUTTONx 狀態(tài)特征的屬性包括 GATT_PROP_NOTIFY 標(biāo)志,。

2.BUTTONx 狀態(tài)特征包括 Client Characteristic Configuration Descriptor(客戶(hù)端特征配置) (即 CCCD)屬性。寫(xiě)入此屬性可讓 GATT Client 啟用或禁用通知,。

3.該應(yīng)用會(huì)關(guān)注 CCCD Attribute 的值,還會(huì)嘗試 在 Characteristic Value 的狀態(tài)變化時(shí)發(fā)送通知,。

如果我們?cè)?BTool 中查看 Button Service,情況可能會(huì)變得更加清晰:

CCCD

在上圖中,,可在左列中看到 每個(gè) Characteristic DeclarationAccess Properties,。Characteristic Declaration 值的前導(dǎo)字節(jié)中的 12也表現(xiàn)出了這一點(diǎn),。您還會(huì)注意到 LED 所沒(méi)有的 Client Characteristic Configuration 屬性,。

特征屬性

考慮在上面看到的 BUTTONx State 屬性的值 0x12,。 看看下方代碼塊中的屬性列表,, Button 特征值屬性有哪些屬性,?多個(gè)屬性 通過(guò)或進(jìn)行計(jì)算,。

按鈕狀態(tài)特征的訪問(wèn)屬性有哪些?

訪問(wèn)屬性

每個(gè)特征都具有屬性,;在特征聲明中通過(guò) 位圖來(lái)聲明這些屬性。以下列表摘錄自 SimpleLink CC26X2 SDK 中的定義,。

/** @defgroup GATT_PROP_BITMAPS_DEFINES GATT Characteristic Properties Bit Fields
 * @{
 */
#define GATT_PROP_BCAST         0x01 //!< Permits broadcasts of the Characteristic Value
#define GATT_PROP_READ          0x02 //!< Permits reads of the Characteristic Value
#define GATT_PROP_WRITE_NO_RSP  0x04 //!< Permits writes of the Characteristic Value without response
#define GATT_PROP_WRITE         0x08 //!< Permits writes of the Characteristic Value with response
#define GATT_PROP_NOTIFY        0x10 //!< Permits notifications of a Characteristic Value without acknowledgement
#define GATT_PROP_INDICATE      0x20 //!< Permits indications of a Characteristic Value with acknowledgement
#define GATT_PROP_AUTHEN        0x40 //!< Permits signed writes to the Characteristic Value
#define GATT_PROP_EXTENDED      0x80 //!< Additional characteristic properties are defined in the Characteristic Extended Properties Descriptor
/** @} End GATT_PROP_BITMAPS_DEFINES */

Snippet from gattservapp.h

客戶(hù)端特征配置(CCC)

0x2902 類(lèi)型屬性的行為和用法由藍(lán)牙規(guī)范定義幸運(yùn)的是,它不是很復(fù)雜,。

屬性的 Value 是一個(gè) 16 位寬的字段,。寫(xiě)入 01:00 (可轉(zhuǎn)換為 0x0001)將告知設(shè)備允許向您發(fā)送 值變化通知,。如果寫(xiě)入 00:00,, 表示禁用傳輸,。如果寫(xiě)入 02:00,,表示允許指示,。對(duì)于按鈕特征,,這是不允許的。

在移動(dòng)設(shè)備中啟用通知的方式略有不同,。

對(duì)于 SimpleLink Starter,,在特征視圖中,單擊Set notify state,。

iOS 通知

測(cè)驗(yàn)!

查看任務(wù) 3 - 接收通知中的此表,BUTTON1 State 特征的 CCCD 屬性的 Handle 是什么,?

CCCD

每個(gè)按鈕狀態(tài)的客戶(hù)端配置是什么,??jī)蓚€(gè)正確答案。

操作,!

  • 對(duì) BUTTON0 和 BUTTON1 均啟用通知。
  • 嘗試按下按鈕,。
  • 觀察 GUI 中顯示的串行輸出和值,。您可以追蹤代碼中的事件順序嗎?

任務(wù) 4 - 對(duì)應(yīng)用進(jìn)行自定義

此任務(wù)教您如何自定義設(shè)備對(duì)外的外觀,,使其更加個(gè)人化,。

您可以通過(guò)三種主要方法在設(shè)備上設(shè)置標(biāo)記:

  • AdvData 或 Scan Response 中的 GAP_ADVTYPE_LOCALNAME_(SHORT|COMPLETE) 字段,。
  • Generic Access Service 中的 Device Name 特征,以及
  • Device Information Service 中的各種字符串

GAP_ADVTYPE_LOCALNAME 是在掃描藍(lán)牙設(shè)備時(shí)由大多數(shù)終端設(shè)備顯示的字段,,也是我們現(xiàn)在要更改的字段,。建立 連接并完成服務(wù)發(fā)現(xiàn)后,,許多類(lèi)型的終端設(shè)備 隨后將使用 Device Name 的值進(jìn)行顯示。

讀取設(shè)備名稱(chēng)

使用 BTool 或您選擇的 BLE 中央設(shè)備,,查找 名稱(chēng)為 Generic Access Service (UUID 0x2800) 的服務(wù),, 必要時(shí)將其展開(kāi)以查找 Device Name (UUID 0x2A00), 然后讀取此值(如果尚未執(zhí)行此操作),。

更改廣播數(shù)據(jù)

advertDatascanRspData 這兩個(gè)變量包含 設(shè)備在廣播其存在狀態(tài)時(shí)會(huì)傳送的數(shù)據(jù),。此數(shù)據(jù)可供任何感興趣的對(duì)端使用,以便它們可以看到設(shè)備并連接到該設(shè)備,。

更改 LOCAL_NAME

project_zero.c 中,,查找名稱(chēng)為 advertData 的陣列 (通過(guò) Ctrl+F 進(jìn)行搜索),并修改 advertDataLOCAL_NAME_COMPLETE 片段 以便廣播一個(gè)您認(rèn)為比原來(lái)更好的名稱(chēng),。

static uint8_t advertData[] =
{
  /* ...*/
  // Complete name
  10,                               // length of this nugget including flag byte.
  GAP_ADTYPE_LOCAL_NAME_COMPLETE,   // identifier for this nugget
  'S', 'p', 'i', 'd', 'e', 'r', 'P', 'i', 'g',
  /* ...*/
}

示例 LOCAL_NAME 修改,。注意長(zhǎng)度字段。

完成此操作后,,右鍵單擊 Project Zero App 項(xiàng)目,,然后選擇 Build Project。完成此過(guò)程后,,下載到目標(biāo),,運(yùn)行更改后的代碼,并觀察當(dāng)您掃描藍(lán)牙設(shè)備時(shí)名稱(chēng)是否已更改,。 該更改也將顯示在串行輸出中,。

請(qǐng)注意,某些移動(dòng)設(shè)備傾向于緩存先前已知的設(shè)備名稱(chēng),,并且可能無(wú)法更新您的設(shè)備名稱(chēng),。要查看您的新設(shè)備名稱(chēng),請(qǐng)查看如何清除移動(dòng)設(shè)備上的藍(lán)牙緩存.通常 這只需要在系統(tǒng)菜單中禁用藍(lán)牙,,然后重新啟用藍(lán)牙,。

就是這樣!

做得很好,!冒險(xiǎn)一點(diǎn),,也可更改 Device Name 值。

在函數(shù) project_zero.c::ProjectZero_init() 中查找函數(shù)調(diào)用 GGS_SetParameter(GGS_DEVICE_NAME_ATT,...),,并修改指向的陣列的內(nèi)容,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多