乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      1、藍(lán)牙核心技術(shù)了解(藍(lán)牙協(xié)議、架構(gòu)、硬件和軟件筆記)

       看見就非常 2015-11-20

       

       

      聲明:這篇文章是樓主beautifulzzzz學(xué)習(xí)網(wǎng)上關(guān)于藍(lán)牙的相關(guān)知識的筆記,其中比較多的受益于xubin341719的藍(lán)牙系列文章,同時(shí)還有其他網(wǎng)上作者的資料。由于有些文章只做參考或統(tǒng)計(jì)不足,如涉及版權(quán)請?jiān)谙旅媪粞詞。同時(shí)我也在博客分類中新建一個(gè)藍(lán)牙通信分類,用來研究分享藍(lán)牙相關(guān)技術(shù)。

       

      主要參考資料的來源:xubin341719[下面是該前輩的BT系列文章]
      下載連接:Bluetooth PROFILE SPECIFICATIONS (基本涵蓋所有藍(lán)牙協(xié)議)、buletooth core 2.1-4.0 SPECIFICATION(三藍(lán)牙版本的核心協(xié)議v2.1\v3.0\v4.0)、藍(lán)牙核心技術(shù)與應(yīng)用 馬建倉 版(藍(lán)牙協(xié)議相關(guān)初學(xué)者必讀,開發(fā)者參考)

      藍(lán)牙核心技術(shù)概述(一):藍(lán)牙概述
      藍(lán)牙核心技術(shù)概述(二):藍(lán)牙使用場景
      藍(lán)牙核心技術(shù)概述(三): 藍(lán)牙協(xié)議規(guī)范(射頻、基帶鏈路控制、鏈路管理)
      藍(lán)牙核心技術(shù)概述(四):藍(lán)牙協(xié)議規(guī)范(HCI、L2CAP、SDP、RFOCMM)
      藍(lán)牙核心技術(shù)概述(五):藍(lán)牙協(xié)議規(guī)范(irOBEX、BNEP、AVDTP、AVCTP) 

       

      有道筆記分享鏈接:http://note.youdao.com/share/?id=950d00cefa9b7fd3c559eec349805b24&type=note

       

      下面是摘抄筆記內(nèi)容:

          藍(lán)牙,是一種支持設(shè)備短距離通信(一般10m內(nèi))的無線電技術(shù)。能在包括移動電話、PDA、無線耳機(jī)、筆記本電腦、相關(guān)外設(shè)等眾多設(shè)備之間進(jìn)行無線信息交換。利用“藍(lán)牙”技術(shù),能夠有效地簡化移動通信終端設(shè)備之間的通信,也能夠成功地簡化設(shè)備與因特網(wǎng)Internet之間的通信,從而數(shù)據(jù)傳輸變得更加迅速高效,為無線通信拓寬道路。藍(lán)牙采用分散式網(wǎng)絡(luò)結(jié)構(gòu)以及快跳頻和短包技術(shù),支持點(diǎn)對點(diǎn)及點(diǎn)對多點(diǎn)通信,工作在全球通用的2.4GHz ISM(即工業(yè)、科學(xué)、醫(yī)學(xué))頻段。其數(shù)據(jù)速率為1Mbps。采用時(shí)分雙工傳輸方案實(shí)現(xiàn)全雙工傳輸。

             Bluetooth的系統(tǒng)構(gòu)成

      1、無線射頻單元(Radio):負(fù)責(zé)數(shù)據(jù)和語音的發(fā)送和接收,特點(diǎn)是短距離、低功耗。藍(lán)牙天線一般體積小、重量輕,屬于微帶天線。
      2、基帶或鏈路控制單元(LinkController):進(jìn)行射頻信號與數(shù)字或語音信號的相互轉(zhuǎn)化,實(shí)現(xiàn)基帶協(xié)議和其它的底層連接規(guī)程。
      3、鏈路管理單元(LinkManager):負(fù)責(zé)管理藍(lán)牙設(shè)備之間的通信,實(shí)現(xiàn)鏈路的建立、驗(yàn)證、鏈路配置等操作。
      4、藍(lán)牙軟件協(xié)議實(shí)現(xiàn):如上圖紫色部分,這個(gè)后面我們做詳細(xì)說明。
      低耗電藍(lán)牙相關(guān)規(guī)范
       
      (二)藍(lán)牙協(xié)議組成
       
      2.1 藍(lán)牙協(xié)議架構(gòu)

      藍(lán)牙協(xié)議體系中的協(xié)議按SIG的關(guān)注程度分為四層:

      1.核心協(xié)議:BaseBand、LMP、L2CAP、SDP;
      2.電纜替代協(xié)議:RFCOMM;
      3.電話傳送控制協(xié)議:TCS-Binary、AT命令集;
      4.選用協(xié)議:PPP、UDP/TCP/IP、OBEX、WAP、vCard、vCal、IrMC、WAE。

      除上述協(xié)議層外,規(guī)范還定義了主機(jī)控制器接口(HCI),它為基帶控制器、連接管理器、硬件狀態(tài)和控制寄存器提供命令接口。在圖1中,HCI位于L2CAP的下層,但HCI也可位于L2CAP上層。

      藍(lán)牙核心協(xié)議由SIG制定的藍(lán)牙專用協(xié)議組成。絕大部分藍(lán)牙設(shè)備都需要核心協(xié)議(加上無線部分),而其他協(xié)議則根據(jù)應(yīng)用的需要而定??傊?strong>電纜替代協(xié)議、電話控制協(xié)議和被采用的協(xié)議在核心協(xié)議基礎(chǔ)上構(gòu)成了面向應(yīng)用的協(xié)議。 

      藍(lán)牙協(xié)議棧允許采用多種方法,包括 RFCOMM 和 Object Exchange (OBEX ), 在設(shè)備之間發(fā)送和接收文件。如果想發(fā)送和接收流數(shù)據(jù)(而且想采用傳統(tǒng)的串口應(yīng)用程序,并給它加上藍(lán)牙支持),那么 RFCOMM 更好。反過來,如果想發(fā)送對象數(shù)據(jù)以及關(guān)于負(fù)載的上下文和元數(shù)據(jù),則 OBEX 最好。

      藍(lán)牙應(yīng)用程序活動圖,如下:

       

      2.1.1  串口仿真RFCOMM介紹

      藍(lán)牙—RFCOMM協(xié)議

      找到服務(wù),RFCOMM是通過不同的頻道(channel)來提供不同的Profile的,所以需要找到要用的服務(wù)在設(shè)備上的哪個(gè)頻道上,這是通過同一個(gè)軟件包里的sdptool來完成的,就是SDP,服務(wù)發(fā)現(xiàn)協(xié)議 

       

      2.2 藍(lán)牙profile

      2.2.1 藍(lán)牙profile概述

        從3.0版本開始(據(jù)說2.1也是支持的?TBD),藍(lán)牙才開始支持BluetoothProfile。BluetoothProfile是藍(lán)牙設(shè)備間數(shù)據(jù)通信的無線接口規(guī)范。想要使用藍(lán)牙無線技術(shù),設(shè)備必須能夠翻譯特定藍(lán)牙配置文件,配置文件定義了可能的應(yīng)用.

          藍(lán)牙配置文件表達(dá)了一般行為,藍(lán)牙設(shè)備可以通過這些行為與其他設(shè)備進(jìn)行通信.
          藍(lán)牙技術(shù)定義了廣泛的配置文件,描述了許多不同類型的使用安全.按藍(lán)牙規(guī)格中提供的指導(dǎo),開發(fā)商可創(chuàng)建應(yīng)用程序以用來與其他符合藍(lán)牙規(guī)格的設(shè)備協(xié)同工作.在最低限度下,各配置文件規(guī)格應(yīng)包含下列主題的相關(guān)信息.
          ① 與其他配置文件的相關(guān)性
          ② 建議的用戶界面格式
          ③ 配置文件使用的藍(lán)牙協(xié)議堆棧的特定部分.
          為執(zhí)行其任務(wù),每個(gè)配置文件都使用堆棧各層上的特定選項(xiàng)和參數(shù).若需要,也可包括必需的服務(wù)記錄概要。ProfilesAPI層則分別對Audio、Data、Control等提供了不同的模塊。目前已規(guī)范有四大類、十三種協(xié)議規(guī)格。
        Bluetooth的一個(gè)很重要特性,就是所有的Bluetooth產(chǎn)品都無須實(shí)現(xiàn)全部的Bluetooth規(guī)范。為了更容易的保持Bluetooth設(shè)備之間的兼容,Bluetooth規(guī)范中定義了Profile。Profile定義了設(shè)備如何實(shí)現(xiàn)一種連接或者應(yīng)用,你可以把Profile理解為連接層或者應(yīng)用層協(xié)議。
      常用的profile介紹請參考“藍(lán)牙Profile的概念和常見種類”,幾種種最基本的配置文件為:
      1.通用訪問配置文件(Generic Access Profile, GAP)
      GAP是所有其他配置文件的基礎(chǔ),它定義了在藍(lán)牙設(shè)備間建立基帶鏈路的通用方法.除此之外,GAP還定義了下列內(nèi)容:
       
         ① 必須在所有藍(lán)牙設(shè)備中實(shí)施的功能
         ② 發(fā)現(xiàn)和鏈接設(shè)備的通用步驟
         ③ 基本用戶界面術(shù)語.
      GAP確保了應(yīng)用程序和設(shè)備間的高度互操作性,還允許開發(fā)人員利用現(xiàn)有的定義更加容易地定義新的配置文件.GAP處理未連接的兩個(gè)設(shè)備間的發(fā)現(xiàn)和建立連接過程.此配置文件定義了一些通用的操作,這些操作可供引用GAP的配置文件,以及實(shí)施多個(gè)配置文件的設(shè)備使用.GAP確保了兩個(gè)藍(lán)牙設(shè)備可通過藍(lán)牙技術(shù)交換信息,以發(fā)現(xiàn)彼此支持的應(yīng)用程序.不符合任何其他藍(lán)牙配置文件的藍(lán)牙設(shè)備必須與GAP符合以確?;镜幕ゲ僮餍院凸泊?
      2.服務(wù)發(fā)現(xiàn)應(yīng)用配置文件(Service Discovery Application Profile, SDAP)
         
      SDAP描述了應(yīng)用程序如何使用SDP發(fā)現(xiàn)遠(yuǎn)程設(shè)備上的服務(wù).由于GAP的要求,任何藍(lán)牙設(shè)備都應(yīng)能夠連接至其他藍(lán)牙設(shè)備.基于此,SDAP要求任何應(yīng)用程序都應(yīng)當(dāng)能夠發(fā)現(xiàn)它要連接的其他藍(lán)牙設(shè)備上的可用服務(wù).此配置文件可承擔(dān)搜索已知和特定服務(wù)及一般的任務(wù).SDAP涉及了稱為“服務(wù)發(fā)現(xiàn)用戶應(yīng)用程序”的一個(gè)應(yīng)用程序,這是藍(lán)牙設(shè)備查找服務(wù)所必需的.此應(yīng)用程序可與向/從其他藍(lán)牙設(shè)備發(fā)送/接收服務(wù)查詢的SDP相接.SDAP依賴于GAP,并可以重新使用部分GAP.
      3.串行端口配置文件(Serial Port Profile, SPP)
         
      SPP定義了如何設(shè)置虛擬串行端口及如何連接兩個(gè)藍(lán)牙設(shè)備.SPP基于ETSI TS 07.10規(guī)格,使用RFCOMM協(xié)議提供串行商品仿真.SPP提供了以無線方式替代現(xiàn)有的RS-232串行通信應(yīng)用程序和控制信號的方法.SPP為DUN,FAX,HSP和LAN配置文件提供了基礎(chǔ).此配置文件可以支持最高128kb/s的數(shù)據(jù)率.SPP依賴于GAP.
      4.通用對象交換配置文件(Generic Object Exchange Profile, GOEP)
         
      GOEP可用于將對象從一個(gè)設(shè)備傳輸?shù)搅硪粋€(gè)設(shè)備.對象可以是任意的.如:圖片,文檔,名片等.此配置文件定義了兩個(gè)角色:提供拉提或推送對象位置的服務(wù)器及啟動操作的客戶端.使用GOEP的應(yīng)用程序假定鏈路和信道已按GAP的定義建立.GOEP依賴于串行端口配置文件.
      GOEP為使用OBEX協(xié)議的其他配置文件提供了通用藍(lán)圖,并為設(shè)備定義了客戶端和服務(wù)器角色.對于所有的OBEX事務(wù).GOEP規(guī)定應(yīng)由客戶端啟動所有事務(wù).但是此配置文件并沒有描述應(yīng)用程序就如何定義要交換的對象或如何實(shí)施交換.這些細(xì)節(jié)留給屬于GOEP的配置文件.即OPP,FTP和SYNC去完成.通常使用此配置文件的藍(lán)牙設(shè)備為筆記本電腦,PDA,手機(jī)及智能電話.
      注意:藍(lán)牙1.1版本規(guī)范所有藍(lán)牙設(shè)備的最小實(shí)現(xiàn)必須支持通用訪問配置文件,服務(wù)發(fā)現(xiàn)應(yīng)用配置文件和串行端口配置文件.
      在兩臺電腦或者Labtop之間就可以建立這種連接,如下圖所示: 
       

          SPP是基于RFCOMM的,spp 協(xié)議處于rfcomm的上層,spp的應(yīng)用需走rfcomm層。如果你使用RFCOMM能夠?qū)崿F(xiàn),那么也就不需要使用SPP,而卻速度還會比SPP來做快,因?yàn)槭÷粤瞬捎胮rofile的一些數(shù)據(jù)包頭等。不過,還是推薦采用SPP來做,兼容性有保證,這也是為什么藍(lán)牙本質(zhì)上數(shù)據(jù)和語音的傳送卻出現(xiàn)HFP,HSP,SPP,OPP等諸多具體應(yīng)用profile的原因。

      2.2.2 藍(lán)牙profile框架

      每個(gè)attribute屬性被UUID(通用唯一標(biāo)識符)唯一標(biāo)識 ,UUID是標(biāo)準(zhǔn)128-bit格式的ID用來唯一標(biāo)識信息。attributes 被 ATT 格式化characteristics和services形式進(jìn)行傳送。

      特征(Characteristics)— 一個(gè)characteristics包含一個(gè)單獨(dú)的value值和0 –n個(gè)用來描述characteristic 值(value)的descriptors。一個(gè)characteristics可以被認(rèn)為是一種類型的,類似于一個(gè)類。

      描述符(descriptor)—descriptor是被定義的attributes,用來描述一個(gè)characteristic的值。例如,一個(gè)descriptor可以指定一個(gè)人類可讀的描述中,在可接受的范圍里characteristic值,或者是測量單位,用來明確characteristic的值。

      服務(wù)(service)—service是characteristic的集合。例如,你可以有一個(gè)所謂的“Heart RateMonitor”service,其中包括characteristic,如“heart rate measurement ”。你可以在 找到關(guān)于一系列基于GATT的profile和service。

       

      如上圖所示:藍(lán)牙設(shè)備可以包括多個(gè)Profile,一個(gè)Profile中有多個(gè)Service,一個(gè)Service中有多個(gè)Characteristic,一個(gè)Characteristic中包括一個(gè)value和多個(gè)Descriptor。

       

      profile框架和android低功耗藍(lán)牙管理和使用簡介

       

       

      2.3 藍(lán)牙4.0和4.1 
      藍(lán)牙4.0實(shí)際是個(gè)三位一體的藍(lán)牙技術(shù),它將傳統(tǒng)藍(lán)牙、低功耗藍(lán)牙和高速藍(lán)牙技術(shù)融合在一起,這三個(gè)規(guī)格可以組合或者單獨(dú)使用。也就是說 BLE是藍(lán)牙4.0增加的,之前沒有?(TBD)
      藍(lán)牙4.0專門面向?qū)Τ杀竞凸亩加休^高要求的無線方案,其主打特性就是省電、省電、省電。極低的運(yùn)行和待機(jī)功耗使得一粒紐扣電池甚至可連續(xù)工作一年之久。它有低功耗、經(jīng)典、高速三種協(xié)議模式。其中:高速藍(lán)牙主攻數(shù)據(jù)交換與傳輸;經(jīng)典藍(lán)牙則以信息溝通、設(shè)備連接為重點(diǎn);低功耗藍(lán)牙以不需占用太多帶寬的設(shè)備連接為主。這三種協(xié)議規(guī)范能夠互相組合搭配,從而適應(yīng)更廣泛的應(yīng)用模式。正因?yàn)橛辛巳N可以互相組合搭配的協(xié)議,藍(lán)牙4.0因此成為唯一一個(gè)綜合協(xié)議規(guī)范。它有著極低的運(yùn)行和待機(jī)功耗。此外,低成本和跨廠商互操作性,3毫秒低延遲、AES-128加密等諸多特色,可以用于計(jì)步器、心律監(jiān)視器、智能儀表、傳感器物聯(lián)網(wǎng)等眾多領(lǐng)域,大大擴(kuò)展藍(lán)牙技術(shù)的應(yīng)用范圍。
       藍(lán)牙4.1主打IOT(Internet Of Things全聯(lián)網(wǎng)),最新的藍(lán)牙4.1標(biāo)準(zhǔn)是個(gè)很有前途的技術(shù),其智能、低功耗、高傳輸速度、連接簡單的特性將適合用在許多新興設(shè)備上。
      藍(lán)牙4.1設(shè)備可以同時(shí)作為發(fā)射方和接受方,并且可以連接到多個(gè)設(shè)備上。舉個(gè)例子,智能手表可以作為發(fā)射方向手機(jī)發(fā)射身體健康指數(shù),同時(shí)作為接受方連接到藍(lán)牙耳機(jī)、手環(huán)或其他設(shè)備上。藍(lán)牙4.1使得批量數(shù)據(jù)可以以更高的速率傳輸,當(dāng)然這并不意味著可以用藍(lán)牙高速傳輸流媒體視頻,這一改進(jìn)的主要針對的還是剛剛興起的可穿戴設(shè)備。例如已經(jīng)比較常見的健康手環(huán),其發(fā)送出的數(shù)據(jù)流并不大,通過藍(lán)牙4.1能夠更快速地將跑步、游泳、騎車過程中收集到。因?yàn)樾聵?biāo)準(zhǔn)加入了對IPv6專用通道聯(lián)機(jī)的支持,通過IPv6連接到網(wǎng)絡(luò),實(shí)現(xiàn)與Wi-Fi相同的功能,解決可穿戴設(shè)備上網(wǎng)不易的問題。

       

      藍(lán)牙4.0和藍(lán)牙4.1的比較
       
      2.3.1 藍(lán)牙4.0低功耗(BLE)
      ① 低功耗藍(lán)牙Bluetooth Low Energy(BLE)是藍(lán)牙4.0增加的。(?TBD) ,蘋果系列都支持4.0.
      ② Android4.3(API級別18)引入內(nèi)置平臺支持BLE的central角色,同時(shí)提供API和app應(yīng)用程序用來發(fā)現(xiàn)設(shè)備,查詢服務(wù),和讀/寫characteristics。與傳統(tǒng)藍(lán)牙(ClassicBluetooth)不同,藍(lán)牙低功耗(BLE)的目的是提供更顯著的低功耗。這使得Android應(yīng)用程序可以和具有低功耗的要求BLE設(shè)備,如接近傳感器,心臟速率監(jiān)視器,健身設(shè)備等進(jìn)行通信。
      ③ BLE低功耗藍(lán)牙軟件有2個(gè)主要組成: OSAL操作系統(tǒng)抽象層和 HAL硬件抽象層,多個(gè)Task任務(wù)和事件在OSAL管理下工作,而每個(gè)任務(wù)和事件又包括3個(gè)組成:BLE 協(xié)議棧,profiles和應(yīng)用程序。
      BLE藍(lán)牙協(xié)議棧結(jié)構(gòu)
               附圖1 BLE藍(lán)牙協(xié)議棧結(jié)構(gòu)圖
      分為兩部分:控制器和主機(jī)。對于4.0以前的藍(lán)牙,這兩部分是分開的。所有profile(姑且稱為劇本吧,用來定義設(shè)備或組件的角色)和應(yīng)用都建構(gòu)在GAP或GATT之上。下面由結(jié)構(gòu)圖的底層組件開始介紹。 
        
      附圖 2 BLE低功耗藍(lán)牙系統(tǒng)架構(gòu)圖,圖中的Task用附圖1BLE藍(lán)牙協(xié)議棧結(jié)構(gòu)圖來描述

      通用屬性規(guī)范(GATT)—GATTprofile是一個(gè)通用規(guī)范用于在BLE鏈路發(fā)送和接收被稱為“屬性(attributes)”的數(shù)據(jù)片。目前所有的低功耗應(yīng)用 profile都是基于GATT。

      藍(lán)牙SIG定義了許多profile用于低功耗設(shè)備。Profile(配置文件)是一個(gè)規(guī)范,規(guī)范了設(shè)備如何工作在一個(gè)特定的應(yīng)用場景。注意:一個(gè)設(shè)備可以實(shí)現(xiàn)多個(gè)profile。例如,一個(gè)設(shè)備可以包含一個(gè)心臟監(jiān)測儀和電池電平檢測器。

       

      主從機(jī)連接建立過程:

       

      2.3.2 藍(lán)牙4.0(BLE)主從通信透傳模塊

          低功耗藍(lán)牙模塊主透傳協(xié)議是針對低功耗藍(lán)牙模塊從透傳協(xié)議設(shè)計(jì)的,通過本協(xié)議模塊可替代手機(jī)設(shè)備與從透傳協(xié)議模塊連接,實(shí)現(xiàn)透傳功能或直驅(qū)控制功能。此協(xié)議模塊可用作從透傳協(xié)議模塊開發(fā)過程中的輔助工具。

          BLE主透傳協(xié)議模塊(以下簡稱MTTM)可以工作在透傳模式(TTM)或指令模式(CM)。

          MTTM上電啟動后,處于待機(jī)模式(SBM),此時(shí)處于空閑狀態(tài),無睡眠,需要用戶通過AT指令控制模塊連接從設(shè)備。在成功與從設(shè)備建立鏈接后,MTTM會自動查找從設(shè)備的透傳通道,如果從設(shè)備屬于BLE從透傳協(xié)議模塊(以下簡稱STTM),MTTM默認(rèn)進(jìn)入透傳模式,否則默認(rèn)進(jìn)入指令模式。

        透傳模式下,用戶CPU可以通過模塊的通用串口與STTM進(jìn)行雙向通訊。從MTTM串口輸入的數(shù)據(jù)將轉(zhuǎn)發(fā)到STTM,并從STTM的串口輸出;從STTM輸入的數(shù)據(jù)將轉(zhuǎn)發(fā)到MTTM,并從MTTM的串口輸出,從而實(shí)現(xiàn)透明傳輸功能,用戶數(shù)據(jù)的具體含義由上層應(yīng)用程序自行定義。 

      透傳中數(shù)據(jù)的格式也是profile,或藍(lán)牙標(biāo)準(zhǔn)profile或自定義simple profile?;窘Y(jié)構(gòu)依然是:

      1、profile  
        profile可以理解為一種規(guī)范,一個(gè)標(biāo)準(zhǔn)的通信協(xié)議,它存在于從機(jī)中。藍(lán)牙組織規(guī)定了一些標(biāo)準(zhǔn)的profile,例如 HID OVER GATT ,防丟器 ,心率計(jì)等。每個(gè)profile中會包含多個(gè)service,每個(gè)service代表從機(jī)的一種能力。
      2、service
        service可以理解為一個(gè)服務(wù),在ble從機(jī)中,通過有多個(gè)服務(wù),例如電量信息服務(wù)、系統(tǒng)信息服務(wù)等,每個(gè)service中又包含多個(gè)characteristic特征值。每個(gè)具體的characteristic特征值才是ble通信的主題。比如當(dāng)前的電量是80%,所以會通過電量的characteristic特征值存在從機(jī)的profile里,這樣主機(jī)就可以通過這個(gè)characteristic來讀取80%這個(gè)數(shù)據(jù)
      3、characteristic
        characteristic特征值,ble主從機(jī)的通信均是通過characteristic來實(shí)現(xiàn),可以 理解為一個(gè)標(biāo)簽,通過這個(gè)標(biāo)簽可以獲取或者寫入想要的內(nèi)容。
      4、UUID
        UUID,統(tǒng)一識別碼,我們剛才提到的service和characteristic,都需要一個(gè)唯一的uuid來標(biāo)識
      每個(gè)從機(jī)都會有一個(gè)叫做profile的東西存在,不管是上面的自定義的simpleprofile,還是標(biāo)準(zhǔn)的防丟器profile,他們都是由一些列service組成,然后每個(gè)service又包含了多個(gè)characteristic,主機(jī)和從機(jī)之間的通信,均是通過characteristic來實(shí)現(xiàn)。
      實(shí)際產(chǎn)品中,每個(gè)藍(lán)牙4.0的設(shè)備都是通過服務(wù)和特征來展示自己的,服務(wù)和特征都是用UUID來唯一標(biāo)識的。一個(gè)設(shè)備必然包含一個(gè)或多個(gè)服務(wù),每個(gè)服務(wù)下面又包含若干個(gè)特征。特征是與外界交互的最小單位。藍(lán)牙設(shè)備硬件廠商通常都會提供他們的設(shè)備里面各個(gè)服務(wù)(service)和特征(characteristics)的功能,比如哪些是用來交互(讀寫),哪些可獲取模塊信息(只讀)等。比如說,一臺藍(lán)牙4.0設(shè)備,用特征A來描述自己的出廠信息,用特征B來與收發(fā)數(shù)據(jù)等。
      ?4.0中profile的存在是干嘛用的呢,只是一種組織形式存在? 

      服務(wù)和特征都是用UUID來唯一標(biāo)識的,UUID的概念如果不清楚請自行g(shù)oogle,國際藍(lán)牙組織為一些很典型的設(shè)備(比如測量心跳和血壓的設(shè)備)規(guī)定了標(biāo)準(zhǔn)的service UUID(特征的UUID比較多,這里就不列舉了)

      4.0 BLE數(shù)據(jù)傳輸可參考下述系列:

      (三)Android Bluetooth 架構(gòu)

      1、面向庫的架構(gòu)視圖
      2、面向進(jìn)程的架構(gòu)視圖

      參考 藍(lán)牙4.0 For IOS

      iOS 有兩個(gè)框架支持藍(lán)牙與外設(shè)連接。

      一個(gè)是 ExternalAccessory。從ios3.0就開始支持,也是在iphone4s出來之前用的比較多的一種模式,但是它有個(gè)不好的地方,External Accessory需要拿到蘋果公司的MFI認(rèn)證。

      另一個(gè)框架則是本文要介紹的CoreBluetooth,在藍(lán)牙4.0出來之后(注意,硬件上要4s以上,系統(tǒng)要ios6以上才能支持4.0),蘋果開放了BLE通道,專門用于與BLE設(shè)備通訊(因?yàn)樗腁PI都是基于BLE的)。這個(gè)不需要MFI,并且現(xiàn)在很多藍(lán)牙設(shè)備都支持4.0,所以也是在IOS比較推薦的一種開發(fā)方法?,F(xiàn)CoreBluetooth在的開發(fā)幾乎全部基于該框架,本節(jié)只介紹CoreBluetooth。

       

      1,CoreBluetooth介紹

      CoreBluetooth框架的核心其實(shí)是兩個(gè)東西,peripheral和central, 可以理解成外設(shè)和中心。對應(yīng)他們分別有一組相關(guān)的API和類,如下圖所示:

      如果你要編程的設(shè)備是手機(jī)的central,那么你大部分用到peripheral API。反之亦然,設(shè)備是peripheral,iphone手機(jī)是central,所以將大部分使用central API。使用peripheral編程的例子也有很多,比如像用一個(gè)ipad和一個(gè)iphone通訊,ipad可以認(rèn)為是central,iphone端是peripheral,這種情況下在iphone端就要使用上圖右邊部分的類來開發(fā)了。

      作為一個(gè)中心(central)要實(shí)現(xiàn)完整的通訊,一般要經(jīng)過這樣幾個(gè)步驟:

      (1)建立中心角色—
      (2)掃描外設(shè)(discover)(通過接收從設(shè)備廣播來掃描、發(fā)現(xiàn)設(shè)備,獲得peripheral ID)—      
        a, 如果數(shù)據(jù)中已經(jīng)和某些藍(lán)牙設(shè)備綁定,可以使用BluetoothAdapter.getBondedDevices();方法獲得已經(jīng)綁定的藍(lán)牙設(shè)備列表。通過指定特定的peripheral的UUID,central只會discover這個(gè)特定的設(shè)備。
        b, 搜索周圍的藍(lán)牙設(shè)備受用BluetoothAdapter.startDiscovery()方法
        c, 搜索到的藍(lán)牙設(shè)備都是通過廣播返回,so..。需要注冊廣播接收器來獲得已經(jīng)搜索到的藍(lán)牙設(shè)備
      (3)連接外設(shè)(connect)(根據(jù)peripheral ID連接指定的外設(shè))—
      (4)掃描外設(shè)中的服務(wù)和特征(discover)(一個(gè)設(shè)備里的服務(wù)和特征往往比較多,一般會在發(fā)現(xiàn)服務(wù)和特征的回調(diào)里通過service、characteristic UUID去匹配我們關(guān)心那些)—
      (5)與外設(shè)做數(shù)據(jù)交互(explore and interact)—
      (6)斷開連接(disconnect)。

       

      2, 設(shè)備ID描述DID

          每個(gè)與蘋果設(shè)備兼容的藍(lán)牙接入都必須:支持藍(lán)牙設(shè)備ID描述,1.3版本或者更高;使用藍(lán)牙SIG分配的Assigned Numbers文檔中的公司標(biāo)識作為他的Vendor ID值,也就是VID,如果生產(chǎn)商沒有藍(lán)牙SIG公司標(biāo)識,那么藍(lán)牙HID描述接入可能會使用USB Implementers Forum分配的VID;使用他的VID值來標(biāo)識最終的產(chǎn)品生產(chǎn)商;使用版本值來唯一標(biāo)識軟件的版本;使用ProductID值唯一標(biāo)識產(chǎn)品。Device ID描述使得蘋果產(chǎn)品能夠識別遠(yuǎn)程的藍(lán)牙接入,該信息可以用來在與遠(yuǎn)程接入交互的時(shí)候連接藍(lán)牙描述間的交替互操作。因此Device ID中的信息記錄非常重要。

          理想情況下,這兩個(gè)設(shè)備應(yīng)該有不同的產(chǎn)品ID。但是,當(dāng)他們擁有完全相同的硬件、軟件和特性的時(shí)候擁有相同的ProductID也是可以允許的。如果他們有任何的不同,就都應(yīng)該有不同的Product ID。

       

      3,IOS的藍(lán)牙低功耗

          藍(lán)牙4.0標(biāo)準(zhǔn)引入了藍(lán)牙低功耗,一種針對有限電池資源的藍(lán)牙接入的無線技術(shù)。如果支持藍(lán)牙低功耗的話,接入點(diǎn)需要支持下面的這些特性。(這里更多的是藍(lán)牙芯片商要做的事情)

      角色

      藍(lán)牙接入需要實(shí)現(xiàn)藍(lán)牙4.0標(biāo)準(zhǔn)中定義的外圍角色

      廣告通道

      藍(lán)牙接入需要在所有三個(gè)廣告通道中針對每個(gè)廣告事件進(jìn)行廣告

      廣告PDU

      藍(lán)牙接入需要使用如下廣告PDU中的一個(gè):ADV_IND;ADV_NOCONN_IND;ADV_SCAN_IND。其中ADV_DIRECT_IND不推薦使用。

      廣告數(shù)據(jù)

      由藍(lán)牙接入發(fā)送的廣告信息應(yīng)該至少包含藍(lán)牙4.0標(biāo)準(zhǔn)中包含的如下信息:Flags;TX Power Level;Local Name;Services。如果需要降低電量消耗或者并不是所有的廣告數(shù)據(jù)都適合放入到廣告PDU中的時(shí)候,接入點(diǎn)可能將Local Name和TX Power Level數(shù)據(jù)方知道SCAN_RSP PDU中。需要注意的是根據(jù)它的狀態(tài),蘋果產(chǎn)品可能不會總是執(zhí)行激活掃描。主要的服務(wù)應(yīng)該總是放在廣告PDU中進(jìn)行廣告。次要的服務(wù)不應(yīng)該進(jìn)行廣告。對于接入點(diǎn)不重要的服務(wù)信息可能會因?yàn)閺V告PDU中的空間不足而被忽略。廣告數(shù)據(jù)和SCAN_RSP PDU中的掃描響應(yīng)數(shù)據(jù)應(yīng)該遵循藍(lán)牙4.0標(biāo)準(zhǔn)中的格式。

      廣告間隔

      藍(lán)牙接入的廣告間隔應(yīng)該慎重考慮,因?yàn)樗麜绊懙桨l(fā)現(xiàn)和連接的性能。對于低功耗的接入,電池資源也應(yīng)該被考慮在內(nèi)。為了能夠被蘋果產(chǎn)品發(fā)現(xiàn),藍(lán)牙接入應(yīng)該首先使用推薦的廣告間隔20ms,并持續(xù)至少30秒。如果在這30秒內(nèi)沒有被發(fā)現(xiàn),那么接入點(diǎn)可能會選擇節(jié)省電池電量然后增加廣告間隔,蘋果推薦使用如下依次延長的事件間隔來發(fā)現(xiàn)藍(lán)牙接入點(diǎn):645 ms;768 ms;961 ms;1065 ms;1294 ms

      連接參數(shù)

      藍(lán)牙接入負(fù)責(zé)用來LE連接的連接參數(shù)。接入點(diǎn)需要請求合適的連接參數(shù)來在合適的時(shí)候發(fā)送一個(gè)L2CAP連接參數(shù)跟新請求。如果他沒有符合如下規(guī)則,那么連接參數(shù)請求可能會被拒絕:Interval Max * (Slave Latency + 1) ≤ 2 seconds;Interval Min ≥ 20 ms;Interval Min + 20 ms ≤ Interval Max;Slave Latency ≤ 4;connSupervisionTimeout ≤ 6 seconds以及Interval Max * (Slave Latency + 1) * 3 < connSupervisionTimeout。蘋果設(shè)備不會讀取或者使用Peripheral Preferred Connection Parameters特性中的參數(shù)。

      隱私

      藍(lán)牙接入應(yīng)該在任何情況下都能夠滿足Resovable Private Address。因?yàn)樗诫[方面的考慮,蘋果設(shè)備將會使用藍(lán)牙4.0標(biāo)準(zhǔn)中定義的隨機(jī)設(shè)備地址。

      授權(quán)

      藍(lán)牙接入不需要請求特殊的授權(quán),如配對、認(rèn)證或加密等來發(fā)現(xiàn)服務(wù)和特性。只有在獲取特性值或者描述值的時(shí)候可能會需要特殊的授權(quán)。9

      配對

      藍(lán)牙接入不應(yīng)該請求配對。如果處于安全考慮,接入點(diǎn)需要與Central建立綁定關(guān)系,外圍可以使用Insufficient Authentication錯(cuò)誤碼在必要的時(shí)候拒絕ATT請求。因此蘋果設(shè)備可能會需要按照既定的安流程程來執(zhí)行過程。配對可能會需要基于蘋果產(chǎn)品的用戶認(rèn)證。

      服務(wù)

      通用接入描述服務(wù):藍(lán)牙接入應(yīng)該實(shí)現(xiàn)按照藍(lán)牙標(biāo)準(zhǔn)4.0中的Device Name特性

      通用屬性描述服務(wù):只有當(dāng)接入有能力在生命周期內(nèi)更改他的服務(wù)的時(shí)候,該接入點(diǎn)才需要實(shí)現(xiàn)Service Changed特性。蘋果產(chǎn)品可以使用Service Changed服務(wù)特性來決定它是否可以使用之前讀取的或者緩存的來自設(shè)備的信息。

      設(shè)備信息服務(wù):藍(lán)牙接入應(yīng)該實(shí)現(xiàn)設(shè)備信息服務(wù)。服務(wù)的UUID不應(yīng)該包含在廣告數(shù)據(jù)當(dāng)中。如下的特性需要被支持:Manufacturer Name String;Model Number String;Firmware Revision String;Software Revision String

       

      4,IOS APP開發(fā) 的藍(lán)牙操縱API

          手機(jī)APP要想獲得藍(lán)牙設(shè)備的一些額外的信息如電量或者操作藍(lán)牙設(shè)備,必須通過IOS API。那么IOS底層必然有某種方式來與藍(lán)牙設(shè)備交互。 那么電量通過什么來讀寫呢?自定義 service characteristic?

      任何免提的藍(lán)牙耳機(jī)都可以在iOS設(shè)備的狀態(tài)欄中顯示一個(gè)用來標(biāo)識他電池電量的圖標(biāo)。這個(gè)特性被所有的iOS設(shè)備所支持,包括iPhone、iPod和iPad。耳機(jī)的藍(lán)牙知識通過兩個(gè)iOS藍(lán)牙HFP AT命令:HFP Command AT+XAPL

       

      HFP命令A(yù)T+XAPL

      • 描述:允許通過耳機(jī)自定義AT命令
      • 發(fā)起者:耳機(jī)
      • 格式:AT+XAPL=[vendorID]-[productID]-[version],[features]
      • 參數(shù):
        • vendorID: 標(biāo)識生產(chǎn)商的vendor ID的十六進(jìn)制表示,但是沒有0x前綴
        • productID: 標(biāo)識生產(chǎn)生的product ID的十六進(jìn)制表示,但是沒有0x前綴
        • version: 軟件的版本
        • features: 用10進(jìn)制標(biāo)識的位標(biāo)識:
          • 1 = 耳機(jī)支持電池電量報(bào)告
          • 2 = 耳機(jī)暫?;蛘哒诔潆?/li>
          • 其他值保留
      • 例子: AT+XAPL=ABCD-1234-0100,3
      • 響應(yīng): +XAPL=iPhone,[features]

      HFP命令A(yù)T+IPHONEACCEV

      • 描述:報(bào)告耳機(jī)的狀態(tài)變更
      • 發(fā)起者:耳機(jī)
      • 格式:AT+IPHONEACCEV=[Number of key/value pairs ],[key1 ],[val1 ],[key2 ],[val2 ],...
      • 參數(shù):
        • Number of key/value pairs : 接下來參數(shù)的數(shù)量
        • key: 被報(bào)告狀態(tài)變化的類型
          • 1 = 電量等級
          • 2 = 暫停狀態(tài)
        • val: 更改的值
          • Battery events:0-9之間數(shù)字的字符串 A string value between '0' and '9'.
          • Dock state: 0 = undocked, 1 = docked.
      • Example: AT+IPHONEACCEV=1,1,3
       
       
      (五)硬件接口
       
       一般藍(lán)牙芯片通過UART、USB、SDIO、I2S、PcCard和主控芯片通信。如下圖所示,通過UART和主控芯片通信。
       

      最后叮囑:大家有好的的藍(lán)牙通信的資料鏈接在下面留言分享下~多謝?(^?^*) 

       

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多