藍牙技術了解


1、概念

1)無線通信

無線通信是利用電波信號可以在自由空間那種傳播的特性進行信息交換的一種通信方式。在移動中實現的無線通信又通稱為移動通信,人們把二者合稱為無線移動通信。簡單講,無線通信是僅利用電磁波而不通過線纜進行的通信方式。電子信號從發射器到達天線,然后天線將信號作為一系列電磁波發射到空氣中,信號通過空氣傳播,直到它到達目標位置為止。在目標位置,另一個天線接收信號,一個接收器將它轉換回電流信號。

2)藍牙(Bluetooth)

藍牙:一種短距離無線通信技術標准,可實現固定設備、移動設備和個人域網之間的短距離數據交換(使用2.4-2.485GHz的ISM波段的UHF無線電波)。(一般10m內)如今藍牙由藍牙技術聯盟(Bluetooth Special Interest Group,簡稱SIG)管理。

藍牙采用分散式網路結構以及快調頻和短包技術,支持點對點以及點對多點通信,工作在全球通用的2.4GHZ的ISM頻段。其數據速率為1Mbps。采用時分雙工傳輸方案實現全雙工傳輸。

3)藍牙系統構成

1、無線射頻單元(Radio):負責射頻信號的發送和接收,特點是短距離、低功耗。藍牙天線一般體積小,重量輕,屬於微帶天線。

2、基帶或鏈路控制單元(Link Controller):進行射頻信號與數字或語音信號的相互轉化,實現基帶協議和其他的底層連接規程。

3、鏈路管理單元(Link Manager):負責管理藍牙設備之間的通信,實現鏈路的建立、驗證、鏈路配置等操作。

4、藍牙軟件協議實現:如上圖紫色部分

低耗電藍牙相關規范

 

2、藍牙協議

2.1藍牙協議架構

藍牙協議棧

藍牙協議體系中的協議按SIG的關注程度分為四層:

1、核心協議:BaseBand、LMP、L2CAP、SDP;

2、電纜替代協議:RFCOMM

3、電話傳送控制協議:TCS-Binary、AT命令集

4、選用協議:PPP、UDP/TCP/IP、OBEX、vCard、vCal、IrMC、WAE

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

 

藍牙核心協議由SIG指定的藍牙專用協議組成。絕大部分藍牙設備都需要核心協議(加上無線部分),而其他協議則根據應用的需要而定。總之,電纜替代協議、電話控制協議和被采用的協議在核心協議基礎上構成了面向應用的協議。

藍牙協議棧允許采用多種方法,包括RFCOMM和Object Exchange(OBEX),在設備之間發送和接收文件。如果想發送和接收流數據(而且想采用傳統的串口應用程序,並給它加上藍牙支持),那么 RFCOMM 更好。反過來,如果想發送對象數據以及關於負載的上下文和元數據,則 OBEX 最好。

藍牙應用程序活動圖如下:

2.1.1串口仿真RFCOMM介紹

藍牙—RFCOMM協議

找到服務,RFCOMM通過不同的頻道(channel)來提供不同的profile的,所以需要找到要用的服務在設備上的哪個頻道上,這是通過一個軟件包里的sdptool來完成的,就是SDP,服務發現協議。

2.2藍牙profile

2.2.1藍牙profile概述

從3.0版本開始(據說2.1也是支持的。)藍牙才開始支持BluetoothProfile。Bluetoothprofile是藍牙設備間數據通信的無線接口規范。想要使用藍牙無線技術,設備必須能夠翻譯特定藍牙配置文件,配置文件定義了可能的應用。

藍牙配置文件表達了一般行為,藍牙設備可以通過這些行為與其他設備進行通訊

藍牙技術定義了廣泛的配置文件,描述了不同類型的使用安全。按藍牙規格中提供的指導,開發商可創建應用程序,用來與其他符合藍牙規格的設備協同工作,在最低限度下,個配置文件規格應包含下列主題的相關信息。

①與其他配置文件的相關性

②建議的用戶界面格式

③配置文件使用的藍牙協議堆棧 的特定部分

為執行其任務,每個配置文件都使用堆棧各層上的特定選項和參數。若需要,也可包括必須的服務記錄該概要。

profile API層分別對AUDIO、data、control等提供了不同的模塊。目前已規范有四大類、十三種協議規格。

Bluetooth的一個很重要的特性,就是所有的Bluetooth產品都無須實現全部的Bluetooth規范,為了更容易的保持Bluetooth設備之間的兼容,Bluetooth規范中定義了profile。profile定義設備如何實現一種連接或者應用,你可以吧profile理解為連接層或者 應用層協議。

 

常用的profile介紹請參考“藍牙profile的概念和常見種類”,幾種最基本的配置文件為:

1、通用訪問配置文件(Generic Access Profile,GAP)

GAP是所有其他配置文件的基礎,它定義了在藍牙設備間建立基帶鏈路的通用方法。除此之外,GAP還定義了下列內容:

1)必須在所有藍牙設備中實施的功能

2)發現和鏈接設備的通用步驟

3)基本用戶界面術語

GAP確保了應用程序和設備間的高度互操作性,還允許開發人員利用現有的定義更加容易地定義新的配置文件。GAP處理未連接的兩個設備間的發現和建立連接過程。此配置文件定義了一些通用的操作,這些操作可供引用GAP的配置文件,以及實施多個配置文件的設備使用。GAP確保了兩個藍牙設備可通過藍牙技術交換信息,以發現彼此支持的應用程序,不符合任何其他藍牙配置文件的藍牙設備必須與GAP符合以確保基本的互操作性和共存。

2、服務發現應用配置文件(Service Discovery Application Profile,SDAP)

SDAP描述了應用程序如何使用SDP發現遠程設備上的服務。由於GAP 的要求,任何藍牙設備都應能夠連接至其他藍牙設備。基於此,SDAP要求任何應用程序都應當能夠發現它要連接的其他藍牙設備上的可用服務。此配置文件,可承擔搜索已知和特定服務以及一般的任務。SDAP涉及了稱為“服務發現用戶應用程序”的一個應用程序,這是藍牙設備查找服務所必需的。此應用程序可與向/從其他藍牙設備發送/接收服務查詢的SDP相接。SDAP依賴於GAP,並可以重新使用部分GAP

3、串行端口配置文件(Serial Port Profile,SPP)

SPP定義了如何設置虛擬串行端口以及連接兩個藍牙設備。SPP基於ETSI TS 0.10規格,使用RFCOMM協議提供串行商品仿真。SPP提供了以無線方式替代現有的RS-232串行通信應用程序和控制信號的方法。SSP為DUN,FAX,HSP和LAN配置文件提供了基礎。此配置文件可以支持最高128kb/s的數據率。SSP依賴於GAP。

4、通用對象交換配置文件(Generic Object Exchange Profile,GOEP)

GOEP可用於將對象從一個設備傳輸到另一個設備。對象可以使任意的。如圖片,文檔,名片等。此配置文件定義了兩個角色:提供拉提或者推送對象位置的服務器以及啟動操作的客戶端。使用GOEP的應用程序假定鏈路和信道已按GAP的定義建立。GOEP依賴於串行口端口配置文件。

GOEP可用於為使用OBEX協議的其他配置文件提供了通用藍圖,並為設備定義了客戶端和服務器角色。對於所有的OBEX事務,GOEP規定應由客戶端啟動所有事務。但是此配置文件並沒有描述應用程序就如何定義要交換的對象或如何實施交換。這些細節留給屬於GOEP的配置文件,即OPP,FTP和SYNC 去完成。通常使用此配置文件的藍牙設備為電腦,PDA ,手機以及智能電話。

 

注意:藍牙1.1版本規范所有藍牙設備的最小實現必須支持通用訪問配置文件,服務發現應用配置文件和串行口端口配置文件。

在兩台電腦或者Labtop 之間就可以建立這種連接,如下圖所示:

SPP是基於RFCOMM的,SPP協議處於RFCOMM的上層,SPP的應用需走RFCOMM層。如果你使用RFCOMM能夠實現,那么也就不需要使用SPP,而且速度還會比SPP來做快,因為省略了采用profile的一些數據包頭等。不過,還是推薦采用SPP來做,兼容性有保證,這也是為什么藍牙本質上數據和語音的傳送卻出現HFP,HSP,SPP,OPP等諸多具體應用profile的原因。

2.2.2藍牙profile框架

每個attribute屬性被UUID(通用唯一標識符)唯一標識,UUID是標准128-bit格式的ID用來唯一標識信息。attribute被ATT格式化 characteristics 和 services 形式進行傳送。

特征(characteristics ):一個characteristics 包含一個單獨的value值和0-n個用來描述characteristics 值(value)的descriptors。一個characteristics 可以被認定是一種類型的,類似與一個類。

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

服務(service):service 是characteristics 的集合。例如,你可以有一個所謂的“Heart RateMonitor”service,其中包括characteristic,如“heart rate measurement”。你可以在bluetooth.org找到關於一系列基於GATT的profile和service。

如上圖所示:藍牙設備可以包括多個profile,一個profile中有多個service,一個service中有多個characteristics,一個characteristics中包括一個value和多個descriptor。

 

2.3藍牙4.0和4.1

藍牙4.0實際是一個三位一體的藍牙技術,它將傳統藍牙、低功耗藍牙和高速藍牙技術融合在一起,這三個規格可以組合或者單獨使用。也就是說 BLE是藍牙4.0增加的,之前沒有

藍牙4.0專門面向對成本和功耗都有較高要求的無線方案,其主打特性就是省電、省電、省電。極低的運行和待機功耗,使得一粒紐扣電池甚至可連續工作一年之久。它有低功耗、經典、高速三種協議模式。其中:高速藍牙主攻數據交換與傳輸;經典藍牙則以信息溝通、設備連接為重點;低功耗藍牙以不需要占用太多帶寬的設備連接為主。這三種協議規范能夠互相組合搭配,從而適應更廣泛的應用模式。正因為有了三種可以互相組合搭配的協議,藍牙4.0因此可以成為唯一一個綜合協議規范。它有着極低的運行和待機功耗。此外,低成本和跨廠商互操作性,3毫秒低延遲、AES-128加密等諸多特色,可以用於計步器、心率監視器、智能儀表、傳感器物聯網等眾多領域,大大擴展藍牙技術的應用范圍。

藍牙4.1主打IOT(Internet of Things),最新的藍牙4.1標准是個很有前途的技術,其智能、低功耗、高傳輸速度、連接簡單的特性將適用在許多新興設備上。

藍牙4.1設備可以同時作為發送方和接受方,並且可以連接到多個設備上。舉個例子,智能手表可以作為發射方向手機手機發送身體健康指數,同時作為接受方連接到藍牙耳機、手環或其他設備上。藍牙4.1使得批量數據可以以更高的速率傳輸,當然這並不 意味着可以用藍牙告訴傳輸流媒體視頻,這一改進的主要針對的還是剛剛興起的可穿戴設備。

例如已經比較常見的健康手環,其發送出的數據流並不大,通過藍牙4.1能夠更快速地將跑步、游泳、汽車過程中收到。因為新標准加入了對IPV6專用通道聯機的支持,通過IPV6連接到網絡,實現與WIFI相同的功能,解決可穿戴設備上網不易的問題。

 

藍牙4.0與藍牙4.1的比較

 

2.3.1藍牙4.0低功耗(LTE)

 1)低功耗藍牙Bluetooth Low Energy(BLE)是藍牙4.9增加的。蘋果系列都支持藍牙4.0

2)Android4.3(API級別18)引入內置支持BLE的central角色,同時提供API和app應用程序用來發現設備,查詢服務,和讀/寫characteristics。與傳統藍牙(Classic Bluetooth)不同,藍牙低功耗(BLE)的目的是提供更加顯著的低功耗。這使得Android應用程序可以和具有低功耗要求的BLE設備,如接近傳感器,心臟速率監視器,健身設備等進行通信。

3)BLE低功耗藍牙軟件有2個主要組成:OSAL操作系統抽象層和HAL硬件抽象層,多個Task任務和事件在OSAL管理下工作,而每個任務和事件又包括3個組成:BLE協議棧,Profiles和應用程序。

BLE藍牙協議棧結構

分為兩部分:控制器和主機。對於4.0以前的藍牙,這兩部分是分開的。所有profile(姑且稱為劇本吧,用來定義設備或組件的角色)和應用都建構在GAP或GATT之上。下面由底層組件開始介紹。

BEL低功耗藍牙系統架構圖,圖中的Task用附圖BLE藍牙協議棧結構圖來描述

通用屬性規范(GATT)—GATTProfile是一個通用規范用於在BLE鏈路發送和接收被稱為“屬性(attribute)”的數據片。目前所有的低功耗應用profile都是基於GATT。

藍牙SIG定義了許多profile用於低功耗設備。profile(配置文件)是一個規划,規划了設備如何工作在一個特定的應用場景。注意:一個設備可以實現多個profile。例如,一個設備可以包含一個心臟檢測儀和電池電平檢測器。

主從機連接建立過程:

 

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

低功耗藍牙模塊主透穿協議是針對低功耗藍牙模塊從透傳協議設計的,通過本協議模塊可替代手機設備從透傳協議模塊連接,實現透傳功能或直驅控制功能。

此協議模塊可用作透傳協議模塊開發過程中的輔助工具。

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

MTTM上電啟動后,處於待機模式(SBM),此時處於空閑狀態,無睡眠,需要用戶通過AT指令控制模塊連接設備。在成功與從設備建立連接后,MTTM會自動查找設備的透傳通道,如果從設備屬於BLE從透傳協議模塊(STTM),MTTM默認進入透傳模式,否則默認進入指令模式。

透傳模式下,用戶CPU可以通過模塊的通用串口與STM進行雙向通訊。從MTTM串口輸入的數據將轉發到STTM,並從STTM的串口輸入;從STTM輸入的數據將轉發到MTTM,並從MTTM的串口輸出,從而實現透明傳輸功能,用戶數據的具體含義由上層應用程序自行定義。

透傳,即透明傳輸(pass-through),指的是在通訊中不管傳輸的業務內容如何,只負責將傳輸的內容由源地址傳輸到目的地址,而不對業務內容做任何改變。

透傳中數據的格式也是profile,或藍牙標准profile或自定義simple profile。基本結構依然是:

1)profile

  profile可以理解為一種規范,一個標准的通信協議,它存在於從機中。藍牙組織規定了一些標准的profile,例如HID OVER GATT,防丟器,心率計等。每個profile中會包含多個service,每個service代表從機的一種能力。

2)service

  service可以理解為一個服務,在BLE從機中,通過多個服務,例如電量服務、信息系統服務等,每個service中又包含多個characteristic特征值。每個具體的characteristics特征值才是BLE通信的主題。比如當前的電量是80%,所以會通過電量的characteristic特征值存在從機的profile里,這樣主機就可以通過這個characteristic來讀取80%這個數據

3)characteristic

characteristic特征值,BLE主從機通信均是通過characteristic來實現,可以理解為一個標簽,通過這個標簽可以獲取或者寫入想要的內容

4)UUID

  UUID,統一識別碼,我們剛才提到的service和characteristic,都需要一個唯一的UUID來標識

每一個從機都會有 一個叫做profile的東西存在,不管是上面的自定義的simple profile 還是標准的防丟器profile,他們都是由一系列service,然后每個service 又包含多個characteristic值,主從機之間的通信,均是通過characteristic來實現。

實際產品中,每個藍牙4.0的設備都是通過服務和特征(service和characteristic)來展示自己的,service和characteristic都是用UUID來唯一標識的。一個設備必然包含一個或多個服務,每個服務下面又包含若干個特征。特征(characteristic)是與外界交互的最小單位。藍牙設備硬件廠商通常都會提供他們設備里的各個service和characteristic的功能,比如說哪些是用來交互(讀寫),哪些可獲取模塊信息(只讀)。比如說,一台藍牙4.0設備,用特征A來描述自己的出廠信息,用特征B來收發數據等。

服務和特征都是用UUID來唯一標識的,UUID的概念如果不清楚請自行google,SIG為一些典型的設備(比如測量心跳和血壓的設備)規定了標准的service UUID (特征的UUID比較多),這里就不列舉了。

3.Android Bluetooth 架構

1)面向庫的架構視圖

 

2)面向進程的架構視圖

IOS有兩個框架支持藍牙與外設連接

一個是ExternalAccessory。從IOS3.0就開始支持,也是在iphone出來之前用的比較多的一種模式,但是它有個不好的地方,External Accessory 需要拿到蘋果公司的MFT認證。

另一個框架則是本文要介紹的CoreBluetooth,在藍牙4.0出來之后(注意,硬件上要4s以上,系統要IOS6以上才支持4.0),蘋果開放了BLE通道,專門用於與BLE設備通訊(因為它的API都是基於BLE的)。這個不需要MFI,並且現在很多藍牙設備都支持4.0,所以也是在IOS比較推薦的一種開發方法。現CoreBluetooth在的開發幾乎全部基於該框架,本節只介紹CoreBluetooth。

1)CoreBluetooth介紹

CoreBluetooth框架的核心其實是兩個東西,peripheral 和 central,可以理解成外設和中心。對應他們分別有一組相關的API和類,如下圖所示:

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

作為一個中心(central)要實現完整的通訊,一般要經過這樣幾個步驟:

1)建立中心角色

2)掃描外設(discover)(通過接收從設備廣播來掃描、發現設備,獲得peripheral ID)—

  a、如果數據中已經和某些藍牙設備綁定,可以使用BluetoothAdapter.getBondedDevices();方法獲得已經綁定的藍牙設備列表。通過指定特定的peripheral的UUID,central只會discover這個特定的設備。

  b、搜索周圍的藍牙設備受用BluetoothAdapter.startDiscovery()方法

  c、搜索到的藍牙設備都是通過廣播返回,so,需要注冊廣播接收器來獲得已經搜索到的藍牙設備

3)連接外設(connect)(根據peripheral ID連接指定的外設)—

4)掃描外設中的服務和特征(discover)(一個設備里的服務和特征往往比較多,一般會在發現服務和特征的回調里通過service、characteristic、UUID去匹配我們關心的那些)

5)與外設做數據交互

6)斷開連接(disconnect)

 

2、設備ID描述DID

  每個與蘋果設備兼容的藍牙接入都必須:

支持藍牙設備ID描述,1.3版本或者更高;

使用藍牙SIG分配的Assigned Numbers 文檔中的公司標識作為他的Vendor ID值,也就是VID,如果生產商沒有藍牙藍牙SIG公司標識,那么藍牙HID描述接入可能會使用USB Implementers Forum分配的VID;使用他的VID來標識最終的產品生產商;使用版本值來唯一標識軟件的版本;使用Product ID值唯一標識產品。Device ID描述使得蘋果產品能夠識別遠程的藍牙接入,該信息可以用來與遠程接入交互的時候連接藍牙描述間的交替互操作。因此Device ID中的信息記錄非常重要。

理想情況下,這兩個設備應該有不同的產品ID。但是,當他們擁有完全相同的硬件、軟件和特性的時候擁有相同的ProductID也是可以允許的。如果他們有任何的不同,就都應該有不同的Product ID。

 

3、IOS的藍牙低功耗

  藍牙4.0標准引入了藍牙低功耗,一種針對有限電池資源的藍牙接入的無線技術。如果支持藍牙低功耗的話,接入點需要支持下面的這些特性。(這里更多的是藍牙芯片商要做的事情)

 

  角色:藍牙接入需要實現藍牙4.0標准中定義的外圍角色

  廣告通道:藍牙接入需要在所有三個廣告中針對每個廣告事件進行廣告

  廣告PDU:藍牙接入需要使用如下廣告PDU中的一個:ADV_IND;ADV_NOCONN_IND;ADV_SCAN_IND.

其中ADV_DIRECT_IND不推薦使用。

  廣告數據:由藍牙接入發送的廣告信息至少應該包含藍牙4.0標准中包含的如下信息:Flags;TX Power Level;Local Name;Services。如果需要降低電量消耗或者並不是所有的廣告數據都適合放入到廣告PDU中的時候,接入點可能將Local Name 和TX Power Level 數據方知道SCAN_RSP PDU中。需要注意的是根據它的狀態,蘋果產品可能不會總是執行激活掃描。主要的服務應該總是放在廣告PDU中進行廣告。次要的服務不應該進行廣告。對於接入點不重要的服務信息可能會因為廣告PDU中的空間不足而被忽略。廣告數據和SCAN_PDU中的掃描響應數據應該遵循藍牙4.0標准中的格式。

  廣告間隔:藍牙接入的廣告間隔應該慎重考慮,因為他會影響到發現和鏈接的性能。對於低功耗的接入,電池資源也應該被考慮在內。為了能夠被蘋果產品發現,藍牙接入應該首先使用推薦的廣告間隔20ms,並持續至少30s。如果這30s內沒有被發現,那么接入點可能會選擇節省電池電量然后增加廣告間隔,蘋果推薦使用如下依次延長的事件間隔來發現藍牙接入點:645ms;768ms;961ms;1065ms;1294ms;

  連接參數:藍牙接入負責用來LE連接的連接參數。接入點需要請求合適的鏈接參數來在合適的時候發送一個L2AP連接參數跟新請求。如果他沒有符合如下規則,那么連接參數請求可能會被拒絕:Interval Max *(Slave Latency+1)<=2seconds;Interval Min>=20ms;Interval Min + 20ms <=Interval Max;Slave Latency<=4;connSupervisionTimeout<=6 s 以及Interval Max* (Slave Latency+1)*3<connSupervisionTimeout。蘋果設備不會讀取或者使用Peripheral preferred Connection Parameters特性中的參數。

  隱私:藍牙接入應該在任何情況下都能夠滿足Resolve Private Address。因為隱私方面的考慮,蘋果設備將會使用藍牙4.0標准中定義的隨機設備地址。

  配對:藍牙接入不應該請求配對。如果處於安全考慮,接入點需要與中心建立綁定關系,外圍可以使用Insufficient Authentication錯誤碼在必要的時候拒絕ATT請求。因此蘋果設備可能會需要按照既定的流程來執行過程。配對節能需要機遇蘋果產品的MFI用戶認證。

  服務:

  通用接入描述服務:藍牙接入應該實現按照藍牙標准4.0中的Device Name特性。

  通用屬性描述服務:只有當接入有能力在生命周期內更改他的服務的時候,該接入點才需要實現Service change 特性。蘋果產品可以使用Service Change服務特性來決定它是否可以使用之前讀取的或者緩存的來自設備的信息。

  設備信息服務:藍牙接入應該實現設備信息服務,服務的UUID不應該包含在廣告數據中。如下的特性需要被支持:manufacture Name String;Model Number String;Firmware Revision String;Software Revision String。

 

4,IOS APP開發的藍牙操縱API

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

任何免提的藍牙耳機都可以在IOS設備的狀態欄中顯示一個用來標識它電池電量的圖標。這個特性被所有的IOS設備所支持,包括iPhone,iPod,iPad。耳機的藍牙只是通過兩個IOS藍牙HFP AT:HFP Command AT+XAPL

 

HFP命令AT+XAPL

1)描述:允許通過耳機自定義AT命令

2)發起者:耳機

3)格式:AT+XAPL=[vendorID]-[productID]-[version],[features]

4)參數:

  a、vendorID:標識生產商的vendorID的十六進制表示,但是沒有0x前綴

  b、productID:表示生產生的product ID的十六進制表示,但是沒有0x前綴

  c、version:軟件的版本

  d、features:用十進制標識的位標識:

    1=耳機支持電池電量報告

    2=耳機暫停或正在充電

    其他值保留

  例子:AT+XAPL=ABCD-1234-0100,3

  響應:+XAPL=iPhone,[features]

HFP命令AT+IPHONEACCEV

1)描述:報告耳機的狀態變更

2)發起者:耳機

3)格式:AT+IPHONEACCEV=[Number of key/value pairs ],[key1 ],[value1 ],[key2 ],[value2 ],。。。

4)參數:

  a、Number of key/value pairs:接下來參數的數量

  b、key:被報告狀態變化的類型

      1=電量等級

      2=暫停狀態

  c、val:更改的值

      Battery events:0-9之間數字的字符串 A string value between '0'-'9'.

      Dock state:0 = undocked,1=docked。

(五)硬件接口

一般藍牙芯片通過UART、USB、SDIO、I2S、PcCard和主控芯片通信。如下圖所示,通過UART和主控芯片通信。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM