版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、TI單模式藍牙(BLE)片上系統(tǒng)CC2540低能耗的內幕 一、概述1、BLE藍牙協(xié)議棧結構附圖6 BLE藍牙協(xié)議棧結構圖分為兩部分:控制器和主機。對于4.0以前的藍牙,這兩部分是分開的。所有profile(姑且稱為劇本吧,用來定義設備或組件的角色)和應用都建構在GAP或GATT之上。下面由結構圖的底層組件開始介紹。 · PHY層,工作車間,1Mbps自適應跳頻GFSK(高斯頻移鍵控),運行在免證的2.4GHz· LL層為RF控制器,控制室,控制設備處于準備(standby)、廣播、監(jiān)聽/掃描(scan)、初始化、連接,這五種狀態(tài)中一種。五種狀態(tài)切換描述為:未連接時,設備廣播
2、信息(向周圍鄰居講“我來了”),另外一個設備一直監(jiān)聽或按需掃描(看看有沒有街坊鄰居家常里短可聊,打招呼“哈,你來啦”),兩個設備連接初始化(搬幾把椅子到院子),設備連接上了(開聊)。發(fā)起聊天的設備為主設備,接受聊天的設備為從設備,同一次聊天只能有一個意見領袖,即主設備和從設備不能切換。· HCI層,為接口層,通信部,向上為主機提供軟件應用程序接口(API),對外為外部硬件控制接口,可以通過串口、SPI、USB來實現(xiàn)設備控制。· L2CAP層,物流部,行李打包盒拆封處,提供數(shù)據(jù)封裝服務· SM層,保衛(wèi)處,提供配對和密匙分發(fā),實現(xiàn)安全連接和數(shù)據(jù)交換· ATT
3、層,庫房,負責數(shù)據(jù)檢索· GATT層,出納/庫房前臺,出納負責處理向上與應用打交道,而庫房前臺負責向下把檢索任務子進程交給ATT庫房去做,其關鍵工作是把為檢索工作提供合適的profile結構,而profile由檢索關鍵詞(characteristics)組成。· GAP層,秘書處,對上級,提供應用程序接口,對下級,管理各級職能部門,尤其是指示LL層控制室五種狀態(tài)切換,指導保衛(wèi)處做好機要工作。TI的這款CC2540器件可以單芯片實現(xiàn)BLE藍牙協(xié)議棧結構圖的所有組件,包括應用程序。 2、任務調度-OSAL操作系統(tǒng)抽象層正如一個公司為了實現(xiàn)擴大產(chǎn)能和產(chǎn)品多樣化,建立了多個辦公室和
4、工廠一樣,藍牙為了實現(xiàn)同多個設備相連,或實現(xiàn)多功能,也實現(xiàn)了功能擴充,這就產(chǎn)生了調度問題。因為,雖然軟件和協(xié)議??蓴U充,但終究最底層的執(zhí)行部門只有一個。為了實現(xiàn)多事件和多任務切換,需要把事件和任務對應的應用,以及其相關的提供支撐“辦公室”和“工廠”打包起來,并起一個名字OSAL操作系統(tǒng)抽象層,類似于集團公司以下的子公司。 3、設備改造-HAL硬件抽象層如果實現(xiàn)軟件和硬件的低耦合,使軟件不經(jīng)改動或很少改動即可應用在另外的硬件上,這樣就方便硬件改造、升級、遷移后,軟件的移植。HAL硬件抽象層正是用來抽象各種硬件的資源,告知給軟件。其作用類似于嵌入式系統(tǒng)設備驅動的定義硬件資源的h頭文件。其角色類似于
5、現(xiàn)代工廠的設備管理部。 4、BLE低功耗藍牙系統(tǒng)架構附圖7 BLE低功耗藍牙系統(tǒng)架構圖,圖中的Task用附圖6BLE藍牙協(xié)議棧結構圖來描述BLE低功耗藍牙軟件有2個主要組成: OSAL操作系統(tǒng)抽象層和 HAL硬件抽象層,多個Task任務和事件在OSAL管理下工作,而每個任務和事件又包括3個組成:BLE 協(xié)議棧,profiles和應用程序。附圖7同樣可以用現(xiàn)代工廠模式來類比,如附圖8。附圖8 BLE低功耗藍牙軟件5個主要組成用現(xiàn)代工廠架構來類比。有了上面的簡介,下面對OSAL、HAL和BLE進行稍微深入的介紹。 二、OSAL操作系統(tǒng)抽象層 1、軟件功能由OSAL管理下的事件來實現(xiàn)OSAL作為調度
6、核心,BLE協(xié)議棧、profile定義、所有的應用都圍繞它來實現(xiàn)。OSAL不是傳統(tǒng)大家使用的操作系統(tǒng),而是一個允許軟件建立和執(zhí)行事件的循環(huán)。軟件功能是由任務事件來實現(xiàn)的,創(chuàng)建一個任務事件需要以下工作:· 創(chuàng)建task identifier任務ID;· 編寫任務初始化(task initialization routine)進程,并需要添加到OSAL初始化進程中,這就是說系統(tǒng)啟動后不能動態(tài)添加功能;· 編寫任務處理程序;· 如有需要提供消息服務。BLE協(xié)議棧的各層都是以OSAL任務方式實現(xiàn),由于LL控制室的時間要求最為迫切,所以其任務優(yōu)先級最高。為了實現(xiàn)任
7、務管理,OSAL通過消息處理(messageprocess),存儲管理,計時器定時等附加服務實現(xiàn)。 2、系統(tǒng)啟動流程為了使用OSAL,在main函數(shù)的最后要啟動一個名叫osal_start_system的進程,該進程會調用由特定應用決定的啟動函數(shù)osalInitTasks(來啟動系統(tǒng))。osalInitTasks逐個調用BLE協(xié)議棧各層的啟動進程來初始化協(xié)議棧。隨后,設置一個任務的8bit任務ID(task ID),跳入循環(huán)等待執(zhí)行任務,系統(tǒng)啟動完成。 3、任務事件與事件處理進程優(yōu)先級和任務ID· 任務優(yōu)先級決定于任務ID,任務ID越小,優(yōu)先級越高· BLE協(xié)議棧各層的任務
8、優(yōu)先級比應用程序的高· 初始化協(xié)議棧后,越早調入的任務,任務ID越高,優(yōu)先級越低,即系統(tǒng)傾向于處理新到的任務事件變量和旗語每個事件任務由對應的16bit事件變量來標示,事件狀態(tài)由旗號(taskflag)來標示。如果事件處理程序已經(jīng)完成,但其旗號并沒有移除,OSAL會認為事情還沒有完成而繼續(xù)在該程序中不返回。比如,在SimpleBLEPeripheral實例工程中,當事件START_DEVICE_EVT發(fā)生,其處理函數(shù)SimpleBLEPeripheral_ProcessEvent就運行,結束后返回16bit事件變量,并清除旗語SBP_START_DEVICE_EVT。事件處理表單每當
9、OSAL事件檢測到了有任務事件,其相應的處理進程將被添加到由處理進程指針構成的事件處理表單中,該表單名叫taskArr(taskarray)。taskArr中各個事件進程的順序和osalInitTasks初始化函數(shù)中任務ID的順序是對應的。事件調度的方法有兩種,最簡單的方法是使用osal_set_event函數(shù)(函數(shù)原型在OSAL.h文件中),在這個函數(shù)中,用戶可以像定義函數(shù)參數(shù)一樣設置任務ID和事件旗語。第二種方法是使用osal_start_timerEx函數(shù)(函數(shù)原型在OSAL_Timers.h文件中),使用方法同osal_set_event函數(shù),而第三個以毫秒為單位的參數(shù)osal_sta
10、rt_timerEx則指示該事件處理必須要在這個限定時間內,通過定時器來為事件處理計時。 4、存儲管理類似于Linux嵌入式系統(tǒng)內存分配C函數(shù)mem_alloc,OSAL利用osal_mem_alloc提供基本的存儲管理,但osal_mem_alloc只有一個用于定義byte數(shù)的參數(shù)。對應的內存釋放函數(shù)為osal_mem_free。 5、進程間通信通過消息機制實現(xiàn)不同的子系統(tǒng)通過OSAL的消息機制通信。消息即為數(shù)據(jù),數(shù)據(jù)種類和長度都不限定。消息收發(fā)過程描述如下:接收信息,調用函數(shù)osal_msg_allocate創(chuàng)建消息占用內存空間(已經(jīng)包含了osal_mem_alloc函數(shù)功能),需要為該函
11、數(shù)指定空間大小,該函數(shù)返回內存空間地址指針,利用該指針就可把所需數(shù)據(jù)拷貝到該空間。發(fā)送數(shù)據(jù),調用函數(shù)osal_msg_send,需為該函數(shù)指定發(fā)送目標任務,OSAL通過旗語SYS_EVENT_MSG告知目標任務,目標任務的處理函數(shù)調用osal_msg_receive來接收發(fā)來的數(shù)據(jù)。建議每個OSAL任務都有一個消息處理函數(shù),每當任務收到一個消息后,通過消息的種類來確定需要本任務做相應處理。消息接收并處理完成,調用函數(shù)osal_msg_deallocate來釋放內存(已經(jīng)包含了osal_mem_free函數(shù)功能)。 三、硬件抽象層HAL 當新的硬件平臺做好后,只需修改HAL,而不需修改HAL之上
12、的協(xié)議棧的其他組件和應用程序。 四、BLE低功耗藍牙協(xié)議棧 1、BLE庫文件TI藍牙協(xié)議棧是以單獨一個庫文件提供的,并沒有提供源代碼,因此不做深入說明。對于TI的BLE實例應用,這個單獨庫文件已經(jīng)夠用,列出了所有的庫文件。附圖9 BLE庫文件由于GAP和GATT與用戶程序直接交互,因此下文對庫文件中GAP和GATT一一講解。 2、GAP秘書處2.1角色(即服務,功能)GAP運行在如下四種角色的一種:· Broadcaster 廣播員我在,但只可遠觀,不可連接。· Observer 觀察員看看誰在,但我只遠觀,不連接。· Peripheral 外設(從機)我在,誰要
13、我就跟誰走,協(xié)議棧單層連接。· Central 核心(主機)看看誰在,并且愿意跟我走我就帶她/他走,協(xié)議棧單層或多層連接,目前最多支持3個同時連接。雖然指標顯示BLE可以同時扮演多個角色,但是在TI提供的BLE實例應用中缺省只支持外設角色。每一種角色都由一個劇本(role profile)來定義。2.2連接主從機連接過程一個典型的低功耗藍牙系統(tǒng)同時包含外設和核心(主機),兩者的連接過程如下:外設角色向外發(fā)送自己的信息(設備地址、名字等),主機收到外設廣播信息后,發(fā)送掃描請求(scanrequest)給外設,外設響應主機的請求,連接建立完成。連接參數(shù)主要有通信間隙(connection
14、interval)、外設鄙視(slavelatency)、最大耐心等待時間(supervisiontimeout)等,下面簡單說明。· 通信間隙藍牙通信是間斷的、跳頻的,每次連接都可能選擇不同的子頻帶。跳頻的好處是避免頻道擁塞,間斷連接的好處是節(jié)省功耗,通信間隙就是指兩次連接之間的時間間隔。這個間隔以1.25ms為基本單位,最小6單位,最大3200單位,間隙越小通信越及時,間隙越大功耗越低。· 外設鄙視外設與主機建立連接以后,沒事的時候主機總會定期發(fā)送問候信息到外設,外設懶得搭理,這些主機發(fā)送的信息就浮云般飄過??梢院雎缘倪B接事件個數(shù)從0到499個,最多不超過32秒。有效連
15、接間隙= 連接間隙x (1+ 外設鄙視).· 最大耐心等待時間指的是為了創(chuàng)建一個連接,主機允許的最大等候時間,在這個時間內,不停的嘗試連接。范圍是10個3200個通信間隙基本單位(1.25ms)。以上三參數(shù)大小設置優(yōu)劣是顯而易見的,在此也飄過。連接參數(shù)的設置請參看后文“5.1GAP外設劇本”小節(jié)。連接異常處理舉例說明連接異常,如主機采用從機并不舒坦的參數(shù)來請求連接,有如主從機已經(jīng)連接了,但從機有想法了,要改參數(shù)條約。通過“連接參數(shù)更新請求(ConnectionParameter Update Request)”來解決問題,交由L2CAP“收發(fā)室物流處”處理。連接參數(shù)上文已經(jīng)說了,不再
16、敘述。加密處理利用配對實現(xiàn),利用密匙來加密授權連接。典型的過程是:外設向主機請求口令一個(passkey)以便進行配對,待主機發(fā)送了正確的口令之后,連接通信通過主從機互換密碼來校驗。由于藍牙通信是間斷通信,如果一個應用需要經(jīng)常通信,而每次通信都要重新申請連接,那將是勞神費力的,為此GAP安全衛(wèi)士(SM,security profile)提供了一種長期簽證(long-termset of keys),叫做綁定(bonding),這樣每次建立連接通關流程就簡便快捷了。 3、出納GATTGATT負責兩個設備間通信的數(shù)據(jù)交互。共有兩種角色:出納員(GATTClient)和銀行(GATTServer),
17、銀行提供資金,出納從銀行存取款。銀行可以同時面對多個出納員。這兩種角色和主從機等角色是無關的。GATT把工作拆分成幾部分來實現(xiàn):讀關鍵詞(CharacteristicValue)和描述符(CharacteristicDescriptor),用來去庫房查找提取數(shù)據(jù)。寫讀關鍵詞和描述符。GATT銀行(GATTServer)的業(yè)務部門(API)主要提供兩個主要的功能:一是服務功能,注冊或銷毀服務(service Attribute),并作為回調函數(shù)(callback function);二是管理功能,添加或刪除GATT銀行業(yè)務。一個角色定義的劇本可以同時定義多個角色,每個角色的服務、關鍵詞、關鍵值、
18、描述符(service,characteristic, characteristic value and descriptors)都以句柄(attributes)形式保存在角色提供的服務上。所有的服務都是一個gattAttribute_t類型的array,在文件gatt.h.中定義。 4、調用GAP和GATT的一般過程· API調用· 協(xié)議棧響應并返回· 協(xié)議棧發(fā)送一個OSAL消息(數(shù)據(jù))去調用相應任務事件· 調用任務去接收和處理消息· 消息清除以設備初始化為GAP外設角色來舉例說明,外設角色由其劇本(GAPperipheral role pr
19、ofile)來決定,實例程序在文件peripheral.c內。· 調用API函數(shù)GAP_DeviceInit。· GAP檢查了一下說,好,可以初始化,返回值為SUCCESS (0x00),并通知BLE干活。· BLE協(xié)議棧發(fā)送OSAL消息給外設角色劇本(peripheral roleprofile),消息內容包括要干什么(eventvalue)GAP_MSG_EVENT和指標是什么(opcodevalue,參數(shù))。· 角色劇本的服務任務就收到了事件請求SYS_EVENT_MSG,表示有消息來了。· 角色劇本接收消息,并拆看到底是什么事,接著把消
20、息數(shù)據(jù)轉換(cast)成具體要干事情,并完成相應的工作(這里為gapDeviceInitDoneEvent_t)。· 角色劇本清除消息并返回。再舉一個例子:GATT客戶端設備想從GATT服務器端讀取數(shù)據(jù),即GATT出納想從GATT銀行那邊取點錢出來· 應用程序調用GATT子進程API函數(shù)GATT_ReadCharValue,傳遞的參數(shù)為連接句柄、關鍵詞句柄和自身任務的ID。· GATT答應了這個請求,返回值為SUCCESS (0x00),向下告知BLE有活干了。· BLE協(xié)議棧在下次建立藍牙連接時,發(fā)送取錢的指令給銀行,當銀行說好,我們正好有柜員沒事在干
21、剪指甲,于是把錢取出來交給了BLE。· BLE接著就把取到的錢包成消息(OSAL message),通過出納GATT返回給了應用程序。消息內包含GATT_MSG_EVENT和修改了的ATT_READ_RSP。· 應用程序接收到了從OSAL來的SYS_EVENT_MSG事件,表示錢可能到了· 應用程序接收消息,拆包檢查,并把需要的錢拿走。· 最后,應用程序把包裝袋銷毀,沒事了,返回。 5、GAP角色劇本profiles在TI的BLE實例應用中提供了3中GAP角色劇本,保衛(wèi)處角色,和幾種GATT出納/庫管示例程序服務角色。5.1 GAP外設劇本其API函數(shù)在
22、peripheral.h中定義,包括:· GAPROLE_ADVERT_ENABLED廣播使能。· GAPROLE_ADVERT_DATA包含在廣播里的信息。· GAPROLE_SCAN_RSP_DATA外設用于回復主機掃描請求的信息。· GAPROLE_ADVERT_OFF_TIME表示外設關閉廣播持續(xù)時間,該值為零表示無限期關閉廣播直到下一次廣播使能信號到來。· GAPROLE_PARAM_UPDATE_ENABLE使能自動更新連接參數(shù),可以讓外設連接失敗時自動調整連接參數(shù)以便重新連接。· GAPROLE_MIN_CONN_INT
23、ERVAL設置最小連接間隙,缺省值為80個單位(每單位1.25ms)。· GAPROLE_MIN_CONN_INTERVAL設置最大連接間隙,缺省值為3200個單位。· GAPROLE_SLAVE_LATENCY外設鄙視參數(shù),缺省為零。· GAPROLE_TIMEOUT_MULTIPLIER-最大耐心等待時間,缺省為1000個單位。GAPRole_StartDevice函數(shù)用來初始化GAP外設角色,其唯一的參數(shù)是gapRolesCBs_t,這個參數(shù)是一個包含兩個函數(shù)指針的結構體,這兩函數(shù)是pfnStateChange和pfnRssiRead,前者標示狀態(tài),后者標示
24、RSSI已經(jīng)被讀走了。5.2 多角色同時扮演前文5.1中設備配置為外設,這里以設備同時為外設和廣播員兩種角色。方法為:去除前文外設的定義劇本peripheral.c和peripheral.h,添加新的劇本peripheralBroadcaster.c和peripheralBroadcaster.h;定義處理器值(preprocessorvalue)PLUS_BROADCASTER。5.3 GAP主機劇本與外設劇本相似,主機劇本的API函數(shù)在central.h中定義,包括GAPCentralRole_GetParameter和GAPCentralRole_SetParameter以及其他。如GA
25、PROLE_PARAM_UPDATE_ENABLE連接參數(shù)自動更新使能的功能,跟外設角色的一樣。GAPCentralRole_StartDevice函數(shù)用來初始化GAP主機角色,其唯一的參數(shù)是gapCentralRolesCBs_t,,這個參數(shù)是一個包含兩個函數(shù)指針的結構體,這兩函數(shù)是eventCB和rssiCB,每次GAP時間發(fā)生,前者都會被調用,后者標示RSSI已經(jīng)被讀走。5.4 GAP綁定管理器劇本用于保持長期的連接。同時支持外設配置和主機配置。當建立了配對連接后,如果綁定使能,綁定管理器就維護這個連接。主要參數(shù)有:GAPBOND_PAIRING_MODE,GAPBOND_MITM_PR
26、OTECTION,GAPBOND_IO_CAPABILITIES,GAPBOND_IO_CAP_DISPLAY_ONLY,GAPBOND_BONDING_ENABLEDGAPBondMgr_Register函數(shù)用來初始化GAP主機角色,其唯一的參數(shù)是gapBondCBs_t,,這個參數(shù)是一個包含兩個函數(shù)指針的結構體,這兩函數(shù)是pairStateCB和passcodeCB,前者返回狀態(tài),后者用于配對時產(chǎn)生6為數(shù)字口令(passcode)。5.5怎樣編寫一個劇本來創(chuàng)建(定義)新的角色(功能、服務)以SimpleGATT Profile為劇本名稱,包含兩個文件simpleGATTProfile.c和
27、simpleGATTProfile.h。包含如下主要API函數(shù):· SimpleProfile_AddService用于初始化的進程,作用是添加服務句柄(serviceattributes)到句柄組(attributetable)內,寄存器讀取和回寫。· SimpleProfile_SetParameter設置劇本(profile)關鍵詞(characteristics)· SimpleProfile_GetParameter獲取獲取設置劇本關鍵詞· SimpleProfile_RegisterAppCBs· simpleProfile_Rea
28、dAttrCB· simpleProfile_WriteAttrCB· simpleProfile_HandleConnStatusCB這個實例劇本共有5個關鍵詞:· SIMPLEPROFILE_CHAR1· · SIMPLEPROFILE_CHAR5一、整體1.TI的藍牙平臺支持2種協(xié)議棧/應用配置:單一設備配置、網(wǎng)絡處理器配置2.協(xié)議棧最頂層2個通用profile: GAP 通用訪問配置文件層 Generic Access ProfileGATT 通用屬性配置文件層 Generic Attribute Profile3. GAP:處理設備的
29、接入方式及接入過程:設備發(fā)現(xiàn) 鏈路建立 鏈路終止 啟動安全功能 設備配置(主要是連接參數(shù)配置) GATT:完成服務器與客戶端之間通信的相關子過程4.BLE支持40個信道的跳頻機制,其中3個通道用于Advertise,剩下的用于數(shù)據(jù)通信5.OS抽象層:疑問 如何配置一個新的任務,任務的優(yōu)先級,事件觸發(fā)機制,消息的傳遞6.主要用于實現(xiàn)的是2個代碼文件: OSAL_SimpleBLEPeripheral.c 任務回調函數(shù)數(shù)據(jù)的定義 和 任務初始化函數(shù)定義 作為OSAL的外部全局變量 SimpleBLEPeripheral.c BLE應用程序的實現(xiàn)代碼,該源文件調用一系列的BLE API函數(shù),完成復雜
30、的藍牙協(xié)議 通過 const pTaskEventHandleFn tasksArr 數(shù)組來存儲要調用的函數(shù) simpleBLEPeripheral.h 一些常量的定義,和藍牙應用程序任務初始化和任務回調函數(shù)聲明。7.LL層任務函數(shù)優(yōu)先級 最高, 而應用程序函數(shù)的優(yōu)先級最低8.OSAL為每個任務分配了1個16位的Event,每一位代表一個事件,最高位代表SYS_EVENT_MSG,這個事件被OSAL系統(tǒng)保留9.main()函數(shù)中最后進入的 void osal_run_system( void ),這個函數(shù)就是看相應任務有沒有事件發(fā)生,有時間發(fā)生就跳轉到相應的函數(shù)10.任務間通信,一般通過 事件
31、 和 消息 進行,每當任務間有消息傳遞,都會觸發(fā)SYS_EVENT_MSG事件,并且每次處理完事件后,都要清空標志位。 osal_set_event() OSAL.h中 該函數(shù)會直接調度一個事件 osal_start_timerEx() OSAL_Timers.h中 需要掩飾觸發(fā)的事件,調用這個函數(shù)11.Heap Manager(堆棧管理),函數(shù)osal_mem_alloc,給函數(shù)分配需要的字節(jié)數(shù),osal_mem_free()用來釋放內存。二、OSAL( 操作系統(tǒng)抽象層 Operate System Abstraction Layer )1.OSAL中的消息: 發(fā)送消息前,用osal_msg
32、_allocate()函數(shù)分配內存空間,填充數(shù)據(jù),調用osal_msg_send()將消息發(fā)送到指定的函數(shù)中去。然后置位該函數(shù)的SYS_EVENT_MSG,然后接收端使用osal_mem_receive()將消息接收過來,接收完成后,使用osal_mem_deallocate()函數(shù)來回收當前消息所占用的內存。OSAL推薦在任務中使用獨立的消息接收函數(shù)來處理消息,例如: simpleBLEPeripheral_ProcessOSALMsg()函數(shù)。2.GAP (通用訪問配置文件層 Generic Access Profile ) 連接過程:設備發(fā)現(xiàn) 鏈路建立 鏈路終止 啟動安全功能 設備配置(
33、主要是連接參數(shù)配置) GAP層總是工作在以下角色中的1種: Broadcaster 廣播員,表明我在,但是你們只能看到我,不可以連接我 Observer 觀察者,看看誰在,我只觀察,不連接 Peripheral 外設,我存在,設想連我,我就連誰 Centeral 中心,看看誰在,工作在單層或多層的連接3.連接過程: Peripheral向外廣播->Centeral接收到向從機發(fā)送“Scan”命令->Peripheral以“ScanResp”命令回應->Centeral發(fā)送連接請求4.Connect Interval 通信間隙 每個間隔1.25ms為基本單位,最小6單位7.5mS,最大3200單位4.0S。5.Slave Latency 從機延時 表示Peripheral可以連續(xù)忽略的連接數(shù),最大不能超過499個,最長不能超過32S。6.Supervision Timeout 監(jiān)管超時 2個成功連接事件之間的最大間隔。7.Profile 一種規(guī)范 ; Service 一個服務 ; Characteristic 特征值 ; UUID 統(tǒng)一標識碼(Service,Characteristic都需要),Centeral與Peripheral間的通信,均通過Characteristic實現(xiàn)8.發(fā)送數(shù)據(jù) 主->從 Client調用G
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高校與企業(yè)合作協(xié)議教授聘請合同范本3篇
- 2025版木門企業(yè)安全生產(chǎn)責任書合同范本2篇
- 2025年分期付款運動服裝合同
- 2025年分期室內設計服務合同
- 跨國集團2025年度全球營銷戰(zhàn)略合同2篇
- 2025年版?zhèn)€人汽車買賣合同示范文本3篇
- 2025年汽車配件贈與協(xié)議
- 二零二五年敬老院養(yǎng)老用品銷售與售后服務合同規(guī)范3篇
- 2025版教育培訓機構合作協(xié)議樣本3篇
- 2025版學生實訓基地實習就業(yè)保障服務合同3篇
- 《社會工作實務》全冊配套完整課件3
- 單位違反會風會書檢討書
- 2024年4月自考00832英語詞匯學試題
- 《電力用直流電源系統(tǒng)蓄電池組遠程充放電技術規(guī)范》
- 《哪吒之魔童降世》中的哪吒形象分析
- 信息化運維服務信息化運維方案
- 汽車修理廠員工守則
- 公安交通管理行政處罰決定書式樣
- 10.《運動技能學習與控制》李強
- 冀教版數(shù)學七年級下冊綜合訓練100題含答案
- 1神經(jīng)外科分級護理制度
評論
0/150
提交評論