【IoT】Android/TI 藍牙 profile 詳解

      網(wǎng)友投稿 1525 2025-03-31

      1、TI BLE profile詳解

      BLE 協(xié)議棧的 GATT 層是設計用于應用程序在兩個連接設備之間的數(shù)據(jù)通信。

      從 GATT 層的角度看,當設備連接后,將充當一下兩種角色中的一個:

      GATT Client —— 從 GATT 服務器讀/寫數(shù)據(jù)的設備

      GATT Server —— 包含客戶端需要讀/寫的數(shù)據(jù)的設備

      GATT Client 和 Server 的角色完全獨立于 BLE 的鏈路層的 slave 和 master 的角色,或 GAP 層 peripheral 和 central 的角色。

      一個 slave 可以是 GATT Client 或 GATT Server,一個 master 同樣可以是 GATT Client 或 GATT Server。

      一個 GATT Server 可以有多個完成一個特定的功能或特性 GATT Server 組成。

      在 SimpleBLEPeripheral(從機) 應用程序中有三個 GATT 服務:

      Mandatory GAP Service —— 這個服務包含設備和訪問信息,比如設備名稱和供應商和產(chǎn)品標識,是一個部分的 BLE 協(xié)議棧,需要每個設備按照 BLE 協(xié)議棧規(guī)范。

      Mandatory GATT Service ——這個服務包含有關服務器,是 BLE 的一部分協(xié)議棧,它要求每個 BLE 服務器設備按照 BLE 規(guī)范。

      SimpleGATTProfile Service ——這個服務是一個示例配置文件,供測試和演示。

      什么是 Profile?

      為了更容易的保持 Bluetooth 設備之間的兼容, Bluetooth 規(guī)范中定義了Profile。

      Profile 定義了設備如何實現(xiàn)一種連接或者應用,你可以把 Profile 理解為連接層或者應用層協(xié)議。

      Bluetooth 的一個很重要特性,就是所有的 Bluetooth 產(chǎn)品都無須實現(xiàn)全部 的 Bluetooth 規(guī)范,你可根據(jù)所需要的產(chǎn)品實現(xiàn)需要的 Profile,不必給開發(fā)帶來更大的開銷。

      這就是說當需要利用藍牙提供數(shù)據(jù)傳輸功能時就必須建立對應的 Profile, TI 的 BLE 協(xié)議棧為我們提供了部分 Profile,其中一部分是非標準的 Profile。

      其中非標準的有 SimpleGATTProfile 和 SimpleKeysProfile,我們將通過對這兩個 Profile 的介紹及實驗來了解 Profile 的特性和使用。

      每個 Profile 初始化其響應的服務和內(nèi)部寄存器。GATT 服務器將整個服務加到屬性表中,并為每個屬性分配唯一的句柄,GATT Profile 用于存儲和處理 GATT 服務器中的數(shù)據(jù)。

      一個GATT服務器通過一個稱為屬性表的表格組織數(shù)據(jù),這些數(shù)據(jù)就是真正用于發(fā)送的數(shù)據(jù)。

      屬性包括:UUID、handle、Characteristic Values

      handle:屬性在GATT表中的索引,一個設備中每一個屬性的句柄都是唯一的;

      UUID:包含屬性表中數(shù)據(jù)類型的信息,是理解屬性表中的值得每一個字節(jié)的意義的關鍵信息;

      在一個GATT表中可能有許多屬性,但這些屬性可能有相同的UUID。

      2、Android Bluetooth Profile詳解

      【IoT】Android/TI 藍牙 profile 詳解

      SPP Serial Port Profile

      A2DP Advanced Audio Distribution Profile

      AVRCP Audio/Video Remote Control Profile

      HID Human Interface Device Profile

      HFP Hands-Free Profile

      其中Media相關度比較大的是A2DP和AVRCP,做數(shù)據(jù)通信經(jīng)常用到SPP

      Bluetooth Profile的概念

      Profile定義了一種基于藍牙的應用,每個Profile規(guī)范主要包括針對開發(fā)者的接口,消息的格式和標準(例如音頻壓縮),使用藍牙協(xié)議棧的組件等。

      每一種Profile對應于一個UUID,Bluetooth種UUID的概念類似于TCP/IP中端口的概念,每一個UUID運行一種服務。

      Bluetooth通過SDP(Service Discovery Protocol)來發(fā)現(xiàn)配對設備的所支持的Profile。

      在Bluetooth Device的SDP Servie Daemon中,保存有支持的Service List和連接的Session等信息,SDP Client利用這些信息來完成Profile的發(fā)現(xiàn)和鑒別。

      特殊說明的是,Bluetooth中比較基礎的Profile有Generic Access Profile (GAP)和上述的SDP,此外,SPP通常作為其他Profile的實現(xiàn)基礎。

      Bluetooth UUID的概念

      UUID的概念應用很普遍,是一種分布式(更確切說是局部式?)的ID生成方式。上述每種Profile均對應一個或多個UUID(同一Profile內(nèi)不同UUID也對應不同的service)。

      在Bluetooth SIG中已定義的Profile的UUID均采用如下方式生成:

      BASE_UUID + uuid16 << 96 或 BASE_UUID + uuid32 << 96

      其中,BASE_UUID為:

      BASE_UUID 00000000-0000-1000-8000-00805F9B34FB

      因此,Bluetooth SIG預定義的UUID僅在后32位(實際為96~112位)發(fā)生變化

      例如,

      A2DP_UUID 0000110B-0000-1000-8000-00805F9B34FB

      在android的logcat種經(jīng)??吹?0805F9B34FB的字串

      SPP

      SPP是Android唯一完全開放的Bluetooth Profile,在Offical Tutorial中也采用00000000-0000-1000-8000-00805F9B34FB作為SPP的UUID。

      事實上,SPP通信是一個很基本的方式,UUID完全可以自定義,但Device雙方必須事先共享UUID。

      具體實現(xiàn)上,SPP的編程方式非常接近于linux的Tcp socket. 一些共同的問題如client接入之后處理,另開線程等等都非常類似。

      A2DP

      A2DP是做音頻和多媒體方面遇到比較多的一個Profile,在Android中已經(jīng)包含了A2DP對應的API(大部為@hide)。需要自己用reflection的方式來獲得對應的API。

      相關的API與Android API Level的對應關系隨后總結。

      HID

      HID是標準的鍵盤、鼠標等的輸入輸出,例如可以用這個Profile來實現(xiàn)一些簡單的遠程按鍵控制。

      Android種HID的事件捕獲與backKey等等方式相同,可以在使用View.OnKeyListener的onKey來捕獲對應的keyCode。

      AVRCP

      AVRCP主要是對應一些媒體播放控制,基本可以等價于HID,例如PC的“多媒體鍵盤”上的音量鍵、播放暫停鍵等。

      AVRCP事件可以看成HID的特殊情況,具體在Android的keybord layout中定義按鍵的具體含義。

      HFP

      在車載種經(jīng)常用到的Profile,音頻部分類似于A2DP,支持HFP和A2DP的設備,Bluetooth在藍牙打開的情況下會自動連接。

      Android IoT

      版權聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權內(nèi)容。

      版權聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權內(nèi)容。

      上一篇:無代碼應用服務器搭建(無服務器開發(fā))
      下一篇:驚!\u202a錯誤,百分之九十都不知道的隱藏在文件路徑里的驚天秘密?。ǜ韶浭詹兀?/a>
      相關文章
      亚洲AV综合色区无码另类小说| 亚洲精品国产字幕久久不卡 | 亚洲M码 欧洲S码SSS222| 学生妹亚洲一区二区| 亚洲国产成人久久99精品| 亚洲国产综合在线| 亚洲精品乱码久久久久久下载| 91亚洲精品第一综合不卡播放| 亚洲高清中文字幕| 亚洲综合激情视频| 亚洲六月丁香六月婷婷蜜芽| 亚洲免费视频网址| 亚洲男人的天堂久久精品| 日本亚洲精品色婷婷在线影院| 亚洲三级在线视频| 在线观看亚洲AV日韩A∨| 亚洲日本VA午夜在线影院| 亚洲色成人网站WWW永久四虎| 亚洲精品久久无码av片俺去也| 亚洲乱码中文字幕在线| 青青青亚洲精品国产| 内射无码专区久久亚洲| 亚洲人成影院在线无码观看| 国产成人亚洲综合| 亚洲乱色熟女一区二区三区丝袜| 日韩亚洲欧洲在线com91tv| 亚洲精品高清国产一久久| 2022年亚洲午夜一区二区福利| 亚洲精品综合久久中文字幕| 亚洲午夜久久久精品电影院| 激情综合亚洲色婷婷五月| 亚洲国产无线乱码在线观看| 亚洲成片观看四虎永久| 久久亚洲AV永久无码精品| 亚洲国产精品无码一线岛国 | 亚洲久热无码av中文字幕| 亚洲av无码有乱码在线观看| 亚洲国产高清在线一区二区三区| 久久亚洲av无码精品浪潮| 久久久久亚洲AV成人无码| 亚洲成a人片在线观看中文app|