基于linux藍(lán)牙層協(xié)議實(shí)現(xiàn)_第1頁(yè)
基于linux藍(lán)牙層協(xié)議實(shí)現(xiàn)_第2頁(yè)
基于linux藍(lán)牙層協(xié)議實(shí)現(xiàn)_第3頁(yè)
基于linux藍(lán)牙層協(xié)議實(shí)現(xiàn)_第4頁(yè)
基于linux藍(lán)牙層協(xié)議實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

ofofBluetoothonLinuxTheM面N鋤AssociateHu粕ofwirelessmobilecommunicationInyears,thewitheachandday;what’sincessantly.InsomanycorrespondencedistancewirelesscommuIlicationisusedmoreauldmorewidelyinourAsaourwirelessandismoresuitabletobethewaytothewirelessbecauseofit’sofhighreliability,lowofofBluetoothonLinuxTheM面N鋤AssociateHu粕ofwirelessmobilecommunicationInyears,thewitheachandday;what’sincessantly.InsomanycorrespondencedistancewirelesscommuIlicationisusedmoreauldmorewidelyinourAsaourwirelessandismoresuitabletobethewaytothewirelessbecauseofit’sofhighreliability,lowloss.TheproVided.Theexcellemfhnctionsmakeuse允lalldhasathathaspracticalValueandmarkettheoperating m髓ithastremendousvaluesinma呔InasaWifeless向LocalWLAN(、thatwintechnology】onthewholesomefr鋤eworktobasedonnomalasuⅣeyoftheapproachdevelopsthe andthesisoperating孤exch孤kefnel—space,users—tocharacteristicofdiVidedintopans,initialization姐controlmoduleaIldIiIII【fo加ofthecomm鋤ds,eVentsaIlddata,andfora鑼ninitializingBluetoothequipment,inquiringcreateco衄ectiontoother齟aIyzedinofHCIprotocol獅dthelast,itofinitializingBluetoothequipment,inquiringcreateco衄ectiontoother齟aIyzedinofHCIprotocol獅dthelast,itofco加【thesisdiscoursesaboveandsometroubleandsolutionthepfocessduringthedesignprocess,缸thatthethisprotocolwen,whichperfbnnedourm原創(chuàng)性本人鄭重聲原創(chuàng)性本人鄭重聲日期:砂留年£月g學(xué)位論文使用授權(quán)學(xué)位論文使用授權(quán)學(xué)位論文作者簽名導(dǎo)師簽名日期:矽g第l章緒第1章近年來(lái),藍(lán)牙技術(shù)在無(wú)線通第l章緒第1章近年來(lái),藍(lán)牙技術(shù)在無(wú)線通信技術(shù)中已經(jīng)占有一個(gè)相當(dāng)重要的地位,不但數(shù)據(jù)傳輸速率越來(lái)越快,安全性、易操作性等方面都得到了相當(dāng)大的改善。同時(shí),藍(lán)牙片的體積不斷的縮小,價(jià)格也已經(jīng)下降到3美元,使得它成為了眾多手嵌入式設(shè)備首選的近距離無(wú)線通信或移動(dòng)設(shè)備的通信環(huán)境提供特別連接的通信技藍(lán)牙技術(shù)由愛立信公司開始最初的研究。1999年,藍(lán)牙1.0技術(shù)規(guī)范發(fā)錯(cuò)編碼技術(shù)和基帶協(xié)議。經(jīng)過幾年迅猛的發(fā)展,愛立信公司與諾基亞(Nokia)、用。后來(lái)該組織又陸續(xù)吸納了微軟(MicrosoR)、朗訊(Lucem)、摩托羅拉(Motorola3Com等知名廠商。至今為止,藍(lán)牙SIG已經(jīng)擁有7000多家成員公司2005年,藍(lán)牙2.O技術(shù)【4J誕生,不但速度提升為1.x版的3倍,電源消耗理上也將降低2/3。2006年,藍(lán)牙技術(shù)得到真正廣泛的發(fā)揮,特別是通訊行業(yè)【5J,技術(shù)從研發(fā)轉(zhuǎn)向普及的光明期值得注意的是,藍(lán)牙在手機(jī)中的普及會(huì)促進(jìn)藍(lán)牙在其他電子設(shè)備上的應(yīng)用【前的無(wú)線解決方案中只有藍(lán)牙技術(shù)和工業(yè)領(lǐng)域上的ZigBee成本最低,因此在日生活中藍(lán)牙普及的概率將大幅度增加而關(guān)于LinuX系統(tǒng)的應(yīng)用現(xiàn)狀和發(fā)展前景【7。8】:自1991年到現(xiàn)在,經(jīng)過了多年的積累改進(jìn)和技術(shù)革新,Linux已經(jīng)從一個(gè)學(xué)生的玩具演變成一個(gè)成熟而穩(wěn)定的操作系統(tǒng)內(nèi)核,他不僅擁有龐大的用戶群,還受到IBM、H、S眥、Intel、AMD、Sony等IT巨頭的青睞。各大軟件公司如CA、Veritas、BEA、0racle、SAP、Borl鋤等也相繼地成為了uX的支持者。這些公司都確認(rèn)“iX已經(jīng)完全適合于企業(yè)級(jí)應(yīng)用"。在系統(tǒng)平臺(tái)領(lǐng)域,ux已經(jīng)成為全球第二大操作系統(tǒng)。以往開放源代等也相繼地成為了uX的支持者。這些公司都確認(rèn)“iX已經(jīng)完全適合于企業(yè)級(jí)應(yīng)用"。在系統(tǒng)平臺(tái)領(lǐng)域,ux已經(jīng)成為全球第二大操作系統(tǒng)。以往開放源代社區(qū)。經(jīng)歷16年來(lái),Linux操作系統(tǒng)以驚人的速度在網(wǎng)絡(luò)服務(wù)器和桌面系統(tǒng)發(fā)展中獲得了成功,占據(jù)了大量份額,這已經(jīng)是不LinXxLinxGNU可權(quán)限下免費(fèi)獲得的,能從Intemet上免費(fèi)下載安裝。Linux的源代碼是開放的,任何人都能進(jìn)行修改,LinuxLinuXLinuX在技術(shù)上說(shuō)是世界上最棒的操作系統(tǒng)據(jù)統(tǒng)計(jì),LinuX可以幫助終端廠商節(jié)省超過50%的軟件成本,使他們能場(chǎng)提供更具價(jià)格優(yōu)勢(shì)的終端產(chǎn)品。除此之外,Linux所具有的豐富的開發(fā)資源和中小規(guī)模的終端廠商尤其重要1C1以LinuxLinux,針對(duì)無(wú)線通信藍(lán)牙技術(shù)無(wú)限廣闊的應(yīng)用前景,本實(shí)驗(yàn)室結(jié)合實(shí)際情況,致力無(wú)線通信技術(shù)的研究與所以,本課題正是在上述的背景下根據(jù)市場(chǎng)研究機(jī)構(gòu)MillwardBrown連續(xù)四年的獨(dú)立調(diào)查11lJ,Bluetooth(藍(lán)牙)無(wú)線技術(shù)的認(rèn)知、態(tài)度和應(yīng)用狀況。調(diào)查訪問了2100名年齡介乎歲至70歲,并來(lái)自日本、美國(guó)、英國(guó)及德國(guó)的消費(fèi)者。從這些受訪國(guó)家顯示他們對(duì)Bluetooth無(wú)線技術(shù)的平均認(rèn)知度由2004年的60%上升至今年的73正是因?yàn)槿绱?,藍(lán)牙技術(shù)已成為當(dāng)今世界上的投資熱點(diǎn)。據(jù)統(tǒng)計(jì),己有數(shù)以億美元的資金投向了藍(lán)牙芯片及產(chǎn)品開發(fā),數(shù)以千計(jì)的廠家在全力以赴地開赴2第2章總體設(shè)第2章總體設(shè)計(jì)方制定了藍(lán)牙技術(shù)規(guī)范,方便開發(fā)第2章總體設(shè)第2章總體設(shè)計(jì)方制定了藍(lán)牙技術(shù)規(guī)范,方便開發(fā)基于具有可互操作的無(wú)線模塊和交互式服務(wù)應(yīng)用為了實(shí)現(xiàn)互操作,在遠(yuǎn)程設(shè)備上的對(duì)應(yīng)應(yīng)用程序必須運(yùn)行在相同的協(xié)議棧上。不同的應(yīng)用可運(yùn)行于不同協(xié)議棧。并不是所有的應(yīng)用程序都使用全部的協(xié)議。相反,OS層體系結(jié)構(gòu)藍(lán)牙技術(shù)標(biāo)準(zhǔn)的開放性使設(shè)備制造商的應(yīng)用程序可以方便地使用遵守藍(lán)牙由地實(shí)現(xiàn)他們自己的或是通用的應(yīng)用協(xié)議。完整的協(xié)議棧層次結(jié)構(gòu)如圖2.1所示語(yǔ)立日I江LMP鏈路管理協(xié)HCI(主機(jī)控制接口BaLseb觚d(基帶RF圖2.1藍(lán)牙協(xié)議5第2章總體設(shè)計(jì)方lHcI∑;指事—●輸令件弋I圖HCl信息交換示意圖2.4第2章總體設(shè)計(jì)方lHcI∑;指事—●輸令件弋I圖HCl信息交換示意圖2.4HCl分組示意圖2.3和圖2.4介紹I信息交換和數(shù)據(jù)分組的情況。在I類型的數(shù)據(jù)包用于主機(jī)的I層與藍(lán)牙模塊中主機(jī)控制器之間的信息交換。指令(command)類的數(shù)據(jù)包攜帶從HCI層發(fā)往主機(jī)控制器的控制和管理信息,事件(event)類的數(shù)據(jù)包攜帶從主機(jī)控制器發(fā)往HCI層的控制和管理信息,數(shù)據(jù)(data)AC和AC和,在后面有更詳細(xì)的論述其它層驅(qū)il一lI鏈路固件lI篁堡物理l物理總線固HCI驅(qū)I物理線驅(qū)物理總線固件圖HCI的數(shù)據(jù)傳輸模9第3章Lin憾下的藍(lán)牙驅(qū)動(dòng)程U————SI囂H熬H鏈鬻理BuaD'Y巾l~ Il數(shù)接口設(shè)備第3章Lin憾下的藍(lán)牙驅(qū)動(dòng)程U————SI囂H熬H鏈鬻理BuaD'Y巾l~ Il數(shù)接口設(shè)備訪Y網(wǎng)絡(luò)子系統(tǒng):j軟件:圖3.3基于USB的藍(lán)牙模塊框 疊 :.:I萋由圖3.3顯示了藍(lán)牙設(shè)通過USo蘭蓁蓁蓁壅蘑饕||需囂鬢一鬻i糍蒸荔攀荔爨鬻辮攀菇鬻霪羹融鏨蕾酴蘭蓁霧菰關(guān)望卿菇荔囂募??_。二j荔豢i薹豢囊豢囊磊魏i纛k?。:一。。 ,i網(wǎng)絡(luò)接口■硬▲▲▲內(nèi)磁盤和圖3—2系統(tǒng)資源關(guān)nux何nix的一個(gè)特點(diǎn)就是把所有的東西都看作是文件【201。而設(shè)備驅(qū)動(dòng)程“Linux中扮演一個(gè)非常重要的角色,幾乎所有系統(tǒng)可用的設(shè)備都需要各圖3-4USB設(shè)備概USB通信【圖3-4USB設(shè)備概USB通信【25】最基本的形式是端點(diǎn)。USB端點(diǎn)只能往一個(gè)方向傳送數(shù)據(jù)機(jī)到設(shè)備(輸出端點(diǎn))或者從設(shè)備到主機(jī)(輸入端點(diǎn))。端點(diǎn)可以看作是、逗USB6】。USBUSUSB一個(gè)USB鍵盤用于按鍵和一個(gè)USB音頻流。因?yàn)閁SB接口代表了一個(gè)基本功能,不同的方式控制同一個(gè)設(shè)備的端點(diǎn)USB接口被捆綁為配置。一個(gè)USB設(shè)備可以有多個(gè)配置,而且間切換以改變?cè)O(shè)備的狀概言之,USB設(shè)備是非常復(fù)雜的,由許多不同的邏輯單元組成邏輯單元之間的關(guān)系的把握,可以產(chǎn)生不同的方法去控制同一個(gè)設(shè)備前面兩節(jié)講述了在Linux系統(tǒng)下進(jìn)行內(nèi)核程序開發(fā)的一些基礎(chǔ)以及藍(lán)的USB驅(qū)動(dòng)開發(fā)概要,本節(jié)將介紹對(duì)USB藍(lán)牙設(shè)備驅(qū)動(dòng)改寫中的技術(shù)細(xì)節(jié),包括I第3章Lin暇下的藍(lán)牙驅(qū)動(dòng)程信技巧驅(qū)動(dòng)程序的第3章Lin暇下的藍(lán)牙驅(qū)動(dòng)程信技巧驅(qū)動(dòng)程序的主要數(shù)據(jù)結(jié)對(duì)于一個(gè)USB的設(shè)備驅(qū)動(dòng)來(lái)說(shuō),他必須實(shí)現(xiàn)若干個(gè)系統(tǒng)已經(jīng)定stmctusb—.driVerhci—usb—//結(jié)瞄吲捌球藕冀耄匡一?垂妻;薹手蓁。薹|譬蹩鐾薹一耋莖|薹要霎囊l囊省氍誦落蕈毽璺薹;;菱q垂孝喜霞一冀霧j鎏』霧萋蘿霉冀囂薹霪l≤薪若軸鬣簍;墼蠶莖霧譽(yù)萋一薹翼i羹耋莖麥毒囂薹硼彗薹涸璀進(jìn)萋:翼:冀矍雩主|≯氫i一蓄曩薹掌吲一重!墾鬟萋蠹毒塞第3章Linux下的藍(lán)牙驅(qū)動(dòng)程 空間;I?驅(qū)第3章Linux下的藍(lán)牙驅(qū)動(dòng)程 空間;I?驅(qū)hci檢查id協(xié)匹配驅(qū)動(dòng)上Il開始讀寫處hci—或出k苗IHhcLllsb-‘關(guān)閉設(shè)備,結(jié)束讀處l。hcI—uSb』檢查idRemove————(拔出I。蒜thciuSbe)【注銷設(shè)備驅(qū)圖3.5驅(qū)動(dòng)程序的函數(shù)調(diào)用關(guān)系及流圖3.5是驅(qū)動(dòng)程序的大致結(jié)構(gòu),它闡述了圖3.5是驅(qū)動(dòng)程序的大致結(jié)構(gòu),它闡述了程序中各個(gè)主要接口的觸發(fā)并霧篁妻蓁雒甚炭匭型霧葺健既蠶簍冀雌西匿蠢薹譬孽鏨。望嘉拆爭(zhēng)劉副蠢慧藩廈嫂;淫攥鐾霧霧霽戴載搿型蠹薹;矧螢帚摩型霸罐戮邊鬻豎;的bulk數(shù)據(jù)傳輸,同步數(shù)據(jù)通過USB的等時(shí)通道傳輸這些都USB規(guī)范中定在具體實(shí)現(xiàn)對(duì)藍(lán)牙適配器模塊控制前,必須先使藍(lán)牙模塊恢復(fù)到正常承接第二章的簡(jiǎn)單介紹,下面將詳細(xì)分析HCI各個(gè)信息分組。藍(lán)牙規(guī)范定義了HCI命令格式,如圖4.2所示。HCI是通過包的方式來(lái)傳數(shù)據(jù)、命令和事件的,所有在主機(jī)和主機(jī)控制器之間的通信都是以包的形式進(jìn)行HCI命令分組用于主機(jī)發(fā)送命令到主機(jī)控制器第3章Lin呱下的藍(lán)牙驅(qū)動(dòng)程阻缺省情況下,文件描述第3章Lin呱下的藍(lán)牙驅(qū)動(dòng)程阻缺省情況下,文件描述符處于阻塞實(shí)現(xiàn)阻塞型的I/O,我們通常需要用到休眠和異步事件。在LinuX休眠首先要初始化一個(gè)的等待隊(duì)列,該操作可以通過DECLARE—WrAIT—QUEUE—HEAD(n砌靜態(tài)地進(jìn)行,或者API調(diào)用動(dòng)態(tài)地進(jìn)wait—queue-headjmy二wait-init_wait.queue_head(&my—當(dāng)我們需要等待某個(gè)事件發(fā)生時(shí),我們可以調(diào)用下列其中一個(gè)函數(shù)來(lái)使例程眠wait-休眠的另一部分是喚醒,主要通過下面兩個(gè)函本章重點(diǎn)闡述了藍(lán)牙I協(xié)議的基礎(chǔ)一一底層協(xié)議棧,即物理驅(qū)動(dòng)程序。首先介紹Linux的網(wǎng)絡(luò)驅(qū)動(dòng)程序的結(jié)構(gòu)和層次,以及如何實(shí)現(xiàn),包括硬件架構(gòu),驅(qū)動(dòng)程序的基本概念和基本方法;在這個(gè)基礎(chǔ)上,對(duì)藍(lán)牙設(shè)備及其協(xié)議進(jìn)行分析,討論了藍(lán)牙設(shè)備的工作方式和底層協(xié)議。接著介紹USB藍(lán)牙設(shè)備的驅(qū)動(dòng)程序的設(shè)計(jì)過I/O操作,使得用戶空間的程序可以通過標(biāo)準(zhǔn)的文件操作系統(tǒng)調(diào)用對(duì)設(shè)備進(jìn)行訪問的難度,另一方面加快代碼開發(fā)的這一部分工作是實(shí)驗(yàn)室往屆人員的成果,但是本課題所要實(shí)現(xiàn)的HCI但是,本驅(qū)動(dòng)程序只能夠正確響應(yīng)單設(shè)備的命令,需要繼續(xù)編寫高一才對(duì)藍(lán)牙才對(duì)藍(lán)牙設(shè)備進(jìn)行控制和連接操作,所以,接下來(lái)將講述本課題的重點(diǎn)一一如現(xiàn)HcI第4章HCI協(xié)議的主機(jī)控制模塊及實(shí)表4—HcI指令分組各段定值名oGF占用6位oX00~oX3FOCF占用lO位:0】所有第4章HCI協(xié)議的主機(jī)控制模塊及實(shí)表4—HcI指令分組各段定值名oGF占用6位oX00~oX3FOCF占用lO位:0】所有數(shù)據(jù)分組中的參數(shù)總長(zhǎng)以字節(jié)0)D參數(shù)主機(jī)控制器利用HCI事件分組在事件發(fā)生時(shí)通知主機(jī)。HCI事件分組格式所示O48事件參數(shù)事件參數(shù)事件參數(shù)事件參數(shù)事件參數(shù)圖4-3HCI命令事件包的事件類型碼用來(lái)區(qū)分不同的事件包,參數(shù)總長(zhǎng)與命令碼中的同,表示所帶參數(shù)的長(zhǎng)度,以字節(jié)數(shù)為單位,隨后就是所帶的參數(shù)列表HCI事件分組各段定名值OGF占用6位所有數(shù)據(jù)分組中的參數(shù)總長(zhǎng)以字節(jié)度量參數(shù)0-O)【 總的來(lái)說(shuō),命令包分為六種類型【30信息命令狀態(tài)命令測(cè)試命事件包也可分為三種類通用事件,包括命令完成包(Col姍信息命令狀態(tài)命令測(cè)試命事件包也可分為三種類通用事件,包括命令完成包(Col姍 Complete)和命測(cè)試事件出錯(cuò)返回事件,如未知的HCI指令或者鏈接超時(shí)藍(lán)牙設(shè)備初始化是向主機(jī)控制器發(fā)送一系列指令分組,發(fā)送后,每一條指組都會(huì)返回至少一個(gè)事件分組,可以通過判斷事件分組的狀態(tài)位來(lái)確定指令的情況。下面一小節(jié)介紹關(guān)鍵的初始化指令,剖析其發(fā)送過程和相應(yīng)返HCI協(xié)議中主要的初始化指令及其相指令修改本地設(shè)備的行為,下面先介紹HCI控制和基帶指令,OGF為Ox03該指令復(fù)位藍(lán)牙主機(jī)控制器、鏈路管理器和無(wú)線射頻設(shè)備,而且放棄當(dāng)前的表Reset事件分組各指s訛s(oxoo表示指令成功接收,將執(zhí)行Set該指令用來(lái)指定不同的事件過濾器,指令描述如表“所示。對(duì)于同類事濾器或不同類事件過濾器,主機(jī)可多次發(fā)送各種鏈接申請(qǐng)。事件過濾器通過主定有關(guān)的對(duì)象,這些對(duì)象允許主機(jī)控制器只發(fā)送與主機(jī)有關(guān)的事件。僅由一部S嫩畦的參數(shù)值說(shuō)明同樣適用于下面的指令,接下來(lái)不再說(shuō)明。另外,錯(cuò)誤值說(shuō)明將在下文補(bǔ)充說(shuō)明第4章HCI協(xié)議的主機(jī)控制模塊及實(shí)件具有事件過濾器。默認(rèn)(開機(jī)和復(fù)位后)方式無(wú)過濾器設(shè)置,而且自動(dòng)識(shí)別標(biāo)關(guān)閉。每次從主機(jī)發(fā)送該命令時(shí),都加入事件表ev印第4章HCI協(xié)議的主機(jī)控制模塊及實(shí)件具有事件過濾器。默認(rèn)(開機(jī)和復(fù)位后)方式無(wú)過濾器設(shè)置,而且自動(dòng)識(shí)別標(biāo)關(guān)閉。每次從主機(jī)發(fā)送該命令時(shí),都加入事件表ev印t丘lter事件分組各段lHcLset-EVerlt-Fil鈀Type,F(xiàn)ilter..ConditionO)【(3)Ⅵ能te/ReadscanSc鋤Enable參數(shù)控制藍(lán)牙設(shè)備是否周期性地掃描其他藍(lán)牙設(shè)備或查詢申請(qǐng)。scan scanenable分別是寫入和讀出參數(shù)值。指令述如表和5所示,寫入的命令參數(shù)和讀取返回參數(shù)描述如表4.6所示表sc觚如able事件分組各段設(shè)HCLWrite_Scan-Sta_tus;Sc蛆Scan』I均表HCIWrite瓜eadsc躚en曲le值參數(shù)指令成功發(fā)送,主機(jī)控制器將執(zhí)行無(wú)掃描允許1字Sc1字如果Page—Scan允許,則設(shè)備將基于相關(guān)時(shí)間間隔設(shè)置進(jìn)入呼叫掃描模果Inquiry-Scan允許,則設(shè)備將基于相關(guān)時(shí)間間隔設(shè)置進(jìn)入查詢掃描模(4)Write瓜eadauthentication Enable參數(shù)控制是否由本地設(shè)備申請(qǐng)?jiān)阪溄釉O(shè)命令或引入ACL鏈接的接收而且符合鏈接完成事件)下鑒權(quán)遠(yuǎn)程設(shè)備。在鏈接Enable參數(shù)允許的設(shè)備可期望鑒權(quán)其他的設(shè)分別是寫入和讀authentication Authentication_Enable的參數(shù)值,指令描述如表4—7所示,參數(shù)描述如表4-8表 HCIWHte瓜eadaumenticationenable事件分組各段設(shè)指Ss;A劬eicaionStaHCLRead-Autllentication』HCI刪Aumentication』HCIWHte/Reada岫enticationenable事件分組參數(shù)表Sk表 HCIWHte瓜eadaumenticationenable事件分組各段設(shè)指Ss;A劬eicaionStaHCLRead-Autllentication』HCI刪Aumentication』HCIWHte/Reada岫enticationenable事件分組參數(shù)表Sk(1字節(jié)值參數(shù)說(shuō)保(1字節(jié)0x02—(5)Write瓜connectionacc印tCo衄Timeout定義為從當(dāng)主機(jī)控制器發(fā)出鏈接申請(qǐng)事件起到機(jī)控制器自動(dòng)拒絕引入鏈接止的時(shí)間間隔。在指定周期已出現(xiàn)且新的鏈接還沒別的時(shí)候,該參數(shù)允許藍(lán)牙硬件自動(dòng)地拒絕鏈接申請(qǐng)。timeout/ReadconIlectionaccepttimeout分別是寫入和讀出這個(gè)參數(shù)值。指令表4—9所示,寫入的命令參數(shù)和讀取返回參數(shù)描述如表4.10所示表HCLRe俎-Co衄e嘶—?jiǎng)?lì)HCLW訂夠.Co加e娟面w五tiIneout事件分組各段co衄Co肌SkCo衄ection』cc印t-J一蚰c0衄e嘶onaclcepttilneout表和1HClwHte瓜參(1字節(jié)值指令失敗,具體錯(cuò)誤請(qǐng)查看錯(cuò)誤0x0l—))【N=o)(=℃在基帶時(shí)隙的鏈接識(shí)別超時(shí)最大超時(shí)=N牟N的范圍:0)【時(shí)間范圍0.625ms~29(6)W矗Page—Timeout結(jié)構(gòu)參數(shù)定義本地鏈路管理器等待基帶呼叫響應(yīng)的最大第4章HCI協(xié)議的主機(jī)控制模塊及實(shí)第4章HCI協(xié)議的主機(jī)控制模塊及實(shí)寫入的命令參數(shù)和讀取返回參數(shù)描述如表4.12Wnte瓜∞dthlleout事件分組各段設(shè)表4-1指HCI—Read_r珊HCLWnte_Page幣 Pag山Page啊表4-1HClwnte瓜值在基帶時(shí)隙的鏈接識(shí)別超(1字節(jié)Ox01~0)【(1字節(jié)N=O】【最大超時(shí)=N宰N的范圍時(shí)間范圍O.625ms~29Hostbuf.fer該指令用于主機(jī)通知主機(jī)控制器有關(guān)控制器到主機(jī)HCIL和SCO發(fā)送的數(shù)據(jù)部分的最大長(zhǎng)度。根據(jù)長(zhǎng)度設(shè)置,主機(jī)控制器將分段傳輸?shù)竭@些數(shù)據(jù),數(shù)據(jù)緩沖區(qū)的HCIACL和SCO數(shù)據(jù)分組的總數(shù)。其指令及其參數(shù)bu斷size事件分組參數(shù)表4-指HCI_.host』u位r-St乏TcI切】Num_』cL-Dat硅-hostT0ta】Nunl_SC0』主機(jī)發(fā)布,這意味著主機(jī)控制器可隨意使用任何長(zhǎng)度發(fā)送HCI數(shù)據(jù)分組到主機(jī)時(shí)可假設(shè)數(shù)據(jù)緩沖區(qū)是無(wú)限的。如果從主機(jī)控制器到主機(jī)的流控制是打開Host-Bu雎r-Size命令Host-Number_Of_Completed_Packed(4’命令發(fā)送前發(fā)送4該指令用于由主機(jī)指出主機(jī)控制器完成每次鏈接句柄的HcI數(shù)據(jù)分組數(shù),指示主機(jī)里的相應(yīng)緩沖區(qū)已經(jīng)釋放HostACLDataL2CAP段的長(zhǎng)度,該分組從主機(jī)控制器傳送到主機(jī)。HostDataLen垂參數(shù)用來(lái)確定SCOHostACLDataL2CAP段的長(zhǎng)度,該分組從主機(jī)控制器傳送到主機(jī)。HostDataLen垂參數(shù)用來(lái)確定SCO數(shù)據(jù)分組的最大容量。主機(jī)和主機(jī)控制器雙方都必須Host—T0tal_Num—ACL—Data-Packets參數(shù)包含有可存儲(chǔ)在主機(jī)數(shù)據(jù)緩沖ACL數(shù)據(jù)分組總數(shù)。主機(jī)控制器可確定在不同鏈接句柄間緩沖區(qū)如何劃host-T0tal—.N啪—.HCO—Data-Packets參數(shù)給出SCO數(shù)據(jù)分組的同樣信息接下來(lái)是讀取藍(lán)牙設(shè)備信息參數(shù)的指令,這些信息參數(shù)是由硬件制造商的,主機(jī)不能修改這些參數(shù)的任何東西。其中OGF為0x04Readbufrer該指令用來(lái)讀出從主機(jī)到主機(jī)控制器發(fā)送ACL和SCO數(shù)據(jù)分組的數(shù)據(jù)分最大值。主機(jī)根據(jù)這些分組大小,分段從主機(jī)傳輸?shù)街骺刂破?,以便HCI數(shù)分組包含這類大小的數(shù)Readbu舵rsize事件分組參數(shù)描表4-指Ihost_-ACL-.DataJacket_】Lengm(2字節(jié)hosLSCO_-Da協(xié)-Pack吐-Lengm(1字節(jié)hostjrotal—N岫一ACL-D疵IJackets(2說(shuō)明:Ox04表示HCI事件分組;evt:e,即OxOE事件碼,表示該返回事件為指事件:plen:c,即0x04,表示返回事件分組的參數(shù)長(zhǎng)度為12:下一行“eventis”的第一參數(shù)1表示當(dāng)前可以從主機(jī)發(fā)往主機(jī)控制器的指令分組數(shù)目為一個(gè);第二和第三個(gè)參Size的操作碼;ox00表示指令返回的Ox0510為指令的OpCode,對(duì)應(yīng)Data— Length,實(shí)際值為0x00cO,表示允的ACL分組的最大長(zhǎng)度為192(十六進(jìn)制為cO):Ox40表示Length,示允許的sco分組的最大長(zhǎng)度為64;后面連續(xù)兩個(gè)Ox0800表示主機(jī)控制器緩沖區(qū)允許受的ACL分組和SCO分組數(shù)量均為8第4章HCI協(xié)議的主機(jī)控制模塊及實(shí)bu腩其中這四個(gè)返回參數(shù)跟上文第size的描述一樣,這里述該指令讀出本地藍(lán)牙設(shè)備版本信息值,其指令及其描述如表4.15和4.16所示。版本信息由2個(gè)參數(shù)組成:版本和修正參數(shù)。版本參數(shù)定義了藍(lán)牙硬件的主要硬件版本。當(dāng)藍(lán)牙硬件新版本為新的藍(lán)牙SIG說(shuō)明生產(chǎn)時(shí),只有版本參數(shù)改變。版本數(shù)由SIG控制,修訂參數(shù)由制造上控制,當(dāng)需要時(shí),可以修表4_1第4章HCI協(xié)議的主機(jī)控制模塊及實(shí)bu腩其中這四個(gè)返回參數(shù)跟上文第size的描述一樣,這里述該指令讀出本地藍(lán)牙設(shè)備版本信息值,其指令及其描述如表4.15和4.16所示。版本信息由2個(gè)參數(shù)組成:版本和修正參數(shù)。版本參數(shù)定義了藍(lán)牙硬件的主要硬件版本。當(dāng)藍(lán)牙硬件新版本為新的藍(lán)牙SIG說(shuō)明生產(chǎn)時(shí),只有版本參數(shù)改變。版本數(shù)由SIG控制,修訂參數(shù)由制造上控制,當(dāng)需要時(shí),可以修表4_1Inf0皿ation事件分組各段設(shè)指HCIj己ead-Jocal‰i伽inf0珊吼ltuS;HCIverSion;LMPM鋤uh吐urerj呵鋤表4-1Inf0肋ation事件分組參數(shù)描Read-10c副V酏值參當(dāng)前藍(lán)牙硬件的HCI版St2咖(1字節(jié)Ox0l—(1字節(jié)HCI0)【當(dāng)前藍(lán)牙硬件的HcI的修訂版當(dāng)前藍(lán)牙硬件的L御版當(dāng)前藍(lán)牙硬件的LMP子版Revision(20)Lh但Version(1字節(jié)M鋤uf砬turerN鋤e(2字節(jié)0)【0戈5CLMP(2字節(jié)11hci—info—READ—LOCAL—VERSIONREAD—BUFFER—SIZEREAD—LOCAL—READ—BD—hci—infO—receilap1c O ll4l4說(shuō)明:0x04表示HCI事件分組;evt:e,即0xOE事件碼,表示該返回事件為指令完事件;lec,即0041“evnti1Ox0110為指令的OpCode,對(duì)應(yīng)localinformation的操作碼;0x00表示指令回的Status,取值0表示執(zhí)行正確。0x01表示當(dāng)前HcI版本為1.0:0x6004件的HI的修訂版本;Ox1表示當(dāng)前LP版本為1.O;oxOA00表示藍(lán)牙硬件制造商名;4表示當(dāng)前藍(lán)牙硬件LMP子版本Read—local—Supported—該指令為本地設(shè)備支持特征表。該指令返回LMP特征表,其指表和1Read_10Cal-supponed』e孤鵬s事件分組各段設(shè)指HcUReadjoc趄—Suppomd』ean鵬表4-1Read-10cal-s印poned-Fea£ureS事件分組參數(shù)描參值參數(shù)說(shuō)S指令成功發(fā)送Read—local—Supported—該指令為本地設(shè)備支持特征表。該指令返回LMP特征表,其指表和1Read_10Cal-supponed』e孤鵬s事件分組各段設(shè)指HcUReadjoc趄—Suppomd』ean鵬表4-1Read-10cal-s印poned-Fea£ureS事件分組參數(shù)描參值參數(shù)說(shuō)S指令成功發(fā)送,主機(jī)控制器將執(zhí)指令失敗,具體錯(cuò)誤請(qǐng)查看錯(cuò)誤L御特征的位屏Ox01加(1字LM—Fea_tul(8字節(jié)23hci—info—READ—LOCAL—VERS工READ—LOCAL—I3.READ—BUFFER—5.4.READ—BD—hci—info—apacke乞c O 000O說(shuō)明:Ox04表示HCI事件分組;evt:e,即0x0E事件碼,表示該返回事件為指令完事件;plen:c,即Ox04,表示返回事件分組的參數(shù)長(zhǎng)度為12;下一行“eventis”的第一參數(shù)1表示當(dāng)前可以從主機(jī)發(fā)往主機(jī)控制器的指令分組數(shù)目為一個(gè);第二和第三0x0310為指令的OpCode,對(duì)應(yīng)Read_local—Supporteo—Features的操作碼;Ox00表示指回的Status,取值O表示執(zhí)行正確。0FOO000000表示LMP特征的位屏蔽表該指令讀取BD_ADDR參數(shù)值。BD—ADDR是48位藍(lán)牙設(shè)備的唯一標(biāo)識(shí)當(dāng)該命令完成時(shí),命令完成事件產(chǎn)生。其指令描述如表4.19和4.20所示第4章Ha協(xié)議的主機(jī)控制模塊及實(shí)表4-1R朗指值表參數(shù)說(shuō)參(1字節(jié)0x01^一0妯(6字節(jié)4hci—info—第4章Ha協(xié)議的主機(jī)控制模塊及實(shí)表4-1R朗指值表參數(shù)說(shuō)參(1字節(jié)0x01^一0妯(6字節(jié)4hci—info—1.READ—LOCAL—2.READ—LOCAL—4.READ—BD—5.hci—info—aa O Odevent說(shuō)明:0x04表示HcI事件分組;evt:e,即0xoE事件碼,表示該返回事件為指is”事件;plen:c,即0x04,表示返回事件分組的參數(shù)長(zhǎng)度為12;下一行個(gè)參數(shù)1表示當(dāng)前可以從主機(jī)發(fā)往主機(jī)控制器的指令分組數(shù)目為一個(gè);第二和第三個(gè)參0x0910為指令的OpCode,對(duì)應(yīng)Re加一BD—ADDR的操作碼;0x00表示指令返回的取值O表示執(zhí)行正確。此后17Ol18由于本課題的主要對(duì)象并沒有涉及加密機(jī)制,所以這里不介紹加密的HCI令設(shè)(6位),OCF為0x003(10位),根據(jù)十六進(jìn)制的位運(yùn)算【鰳,OGF和OCF合起來(lái)操作碼是030C。而按照藍(lán)牙標(biāo)準(zhǔn),所有參數(shù)值的發(fā)送和接收都使用(端格式),即發(fā)送時(shí)先發(fā)送Ox03,再發(fā)送0x0C;0x00為指令參數(shù)長(zhǎng)度該指令沒有任何參數(shù)(6位),OCF為0x003(10位),根據(jù)十六進(jìn)制的位運(yùn)算【鰳,OGF和OCF合起來(lái)操作碼是030C。而按照藍(lán)牙標(biāo)準(zhǔn),所有參數(shù)值的發(fā)送和接收都使用(端格式),即發(fā)送時(shí)先發(fā)送Ox03,再發(fā)送0x0C;0x00為指令參數(shù)長(zhǎng)度該指令沒有任何參數(shù),所以參數(shù)長(zhǎng)度為O0x04是HCI傳輸層的分組指示器(下同),表明為HCI分組;0x0E為事件碼,表示該返回事件為指令完成事件;0x04是參返回的參數(shù)長(zhǎng)度為4字節(jié);0xol為HCIPacktes,表示當(dāng)前允許送到主機(jī)控制器的HCI命令的分組數(shù)為一個(gè);Ox030C為指令OpCode,00C(ees(2)SetEventFil指令分組0C00040C00eada e, ventj冀15圖4—Finer的返回事指令分組說(shuō)明:0xOl表明為HCI指令分組合起來(lái)的操作碼0x0C05;Ox01指令所帶參數(shù)的長(zhǎng)度:0xoo為指令參數(shù)FilteLType,取0表示清除所有事件過器事件分組說(shuō)明:0x04表示HCI事件分組;見圖4.6,evt:e,即0x0E事碼,表示該返回事件為指令完成事件;plen:4,即0x04,表示返回事件分組的數(shù)長(zhǎng)度為4;下一行is’’的第一個(gè)參數(shù)l表示當(dāng)前可以從主機(jī)發(fā)往主機(jī)控器的指令分組數(shù)目為~個(gè);第二和第三個(gè)參數(shù)0x050C為指令的OpCode,對(duì)Set_EVenLFilter的操作碼;Ox00表示指令返回的Status,取值0(3)W五_t|e_Sc指令分組00OO040llA5合并運(yùn)算具體的C語(yǔ)言實(shí)現(xiàn)代碼:((ocf&O喲仃)l(o酊第4章Ha協(xié)議的主機(jī)控制模塊及實(shí)ead ae。 l1 圖4— wn鈀Sc鋤Enable的返回事指令分組說(shuō)明:Oxol表明為HCI指令分組 嘶te第4章Ha協(xié)議的主機(jī)控制模塊及實(shí)ead ae。 l1 圖4— wn鈀Sc鋤Enable的返回事指令分組說(shuō)明:Oxol表明為HCI指令分組 嘶teSc舳Enable是主機(jī)控合起來(lái)的操作碼Ox01為指令所帶參數(shù)的長(zhǎng)度;0x03為指令參數(shù)Sc鋤Enable,取3表示尋呼掃描事件分組說(shuō)明:Ox04表示HCI事件分組;見圖4.7,evt:e,即0x0E事碼,表示該返回事件為指令完成事件;plen:4,即Ox04,表示返回事件分組的參數(shù)長(zhǎng)度為4;下一行“eetis”的第一個(gè)參數(shù)1表示當(dāng)前可以從主機(jī)發(fā)往主機(jī)控制器的指令分組數(shù)目為一個(gè);第二和第三個(gè)參數(shù)0xlAOC為指令的OpCode,對(duì)Write—Scan—Enable的操作碼;0xoo表示指令返回的Status,取值0(4)Wme!CoIulection』cc印16OC027904011600eada4 l 圖4-WHte-ScalUenable的返回事Co皿指令分組說(shuō)明:0xol表明為HCI指令分是主機(jī)控制指令,OGF為Ox03(6位),OCF為Ox016(10合起來(lái)的操作Ox0C16;Ox02為指令所帶參數(shù)的長(zhǎng)度;Ox0079代表指令中的參數(shù)Co皿timeout為0x7900,該參數(shù)的十進(jìn)制值乘以得到的連接超時(shí)時(shí)間為19事件分組說(shuō)明:0x04表示HCI事件分組;見圖4.8,evt:e,即0xOE事碼,表示該返回事件為指令完成事件;plen:4,即0x04,表示返回事件分組的參數(shù)長(zhǎng)度為4evet"的第一個(gè)參數(shù)1器的指令分組數(shù)目為一個(gè);第二和第三個(gè)參數(shù)Oxl60C為指令的OpCode,對(duì)Write—Connection—Accept-Timeout的操作碼;0x00表示指令返回的Status,取值l80C02指令分組80040110C006apackete, ll 圖4-Timeout的返回事Wnte-刪指令分組說(shuō)明:Ox01表明為HCITimeoutOx02l80C02指令分組80040110C006apackete, ll 圖4-Timeout的返回事Wnte-刪指令分組說(shuō)明:Ox01表明為HCITimeoutOx02為指令所帶參數(shù)的長(zhǎng)度;Ox0080代表合起來(lái)的操作碼PageTimeoutTimeout為0x8000,該參數(shù)的十進(jìn)制值乘以O(shè).625ms得到連接超時(shí)時(shí)間為秒事件分組說(shuō)明:Ox04表示HCI事件分組;見圖4.9,evt:e,即Ox0E事碼,表示該返回事件為指令完成事件;plen:4,即0x04,表示返回?cái)?shù)長(zhǎng)度為4;下一行“eventis"的第一個(gè)參數(shù)l表示當(dāng)前可以從主機(jī)發(fā)往主機(jī)控制Write_Page—Timeout的操作碼;Ox00表示指令返回的Statlls,取值0Scaneada l013c說(shuō)明:evt:e,即OxOE事件碼,表示該返回事件為指令完成事件;plen:5,示返回事件分組的參數(shù)長(zhǎng)度為5:下一行“eventis”的第一個(gè)參數(shù)1表示當(dāng)前以從主機(jī)發(fā)往主機(jī)控制器的分組數(shù)目為一個(gè);第二和第三個(gè)參數(shù)0x190CEnable操作碼;0xOO表示指令返回的Status,取值OOpCode,對(duì)應(yīng)Re加示執(zhí)行正確。0x03為指令參數(shù)Sc粕Enable,取3表示尋呼掃描、查詢掃●Readc0衄Accept幣ead6apacket1 1O第4章HCI協(xié)議的主機(jī)控制模塊及實(shí)說(shuō)明:evt:e,即OxOE事件碼,表示該返回事件為指令完成事件;plen:5,5eetis主機(jī)發(fā)往主機(jī)控制器的指令分組數(shù)目為一個(gè);第二和第三個(gè)第4章HCI協(xié)議的主機(jī)控制模塊及實(shí)說(shuō)明:evt:e,即OxOE事件碼,表示該返回事件為指令完成事件;plen:5,5eetis主機(jī)發(fā)往主機(jī)控制器的指令分組數(shù)目為一個(gè);第二和第三個(gè)參數(shù)Oxl50C為指令Timeout的操作碼;Ox00OpC6de,對(duì)應(yīng)Status,取值0表示執(zhí)行正確。0x7900為Co衄Timeouteada6e, ll O說(shuō)明:e、,t:e,即0xOE事件碼,表示該返回事件為指令完成事件表示返回事件分組的參數(shù)長(zhǎng)度為5;下一行“eventis”的第一個(gè)參數(shù)1以從主機(jī)發(fā)往主機(jī)控制器的指令分組數(shù)目為一個(gè);第二和第三個(gè)參數(shù)0x170C為Timeout的操作碼;0x00表示指令返回的令的OpCode,對(duì)應(yīng)ReadTimeout參數(shù),與上文所設(shè)置的相符取值O表示執(zhí)行正確。0x8000為(8)Hci幽p娥吼(讀取藍(lán)牙設(shè)備的預(yù)設(shè)信息,見本章第二節(jié)的表格和圖IbadBDADDR本章重點(diǎn)闡述了藍(lán)牙設(shè)備的初始化一主機(jī)控制模塊,針對(duì)藍(lán)牙設(shè)備的物理信屬性、分組方式、配置流程等規(guī)范,并給出解決方案。實(shí)現(xiàn)藍(lán)牙設(shè)備而相關(guān)的截圖中的數(shù)據(jù)都是藍(lán)牙設(shè)備初始化流程里面的關(guān)鍵分組數(shù)據(jù),這些數(shù)據(jù)都是基于本人在進(jìn)行藍(lán)牙點(diǎn)對(duì)點(diǎn)實(shí)驗(yàn)所得出的,只有這些指令能正確執(zhí)行,才能進(jìn)行接下來(lái)的藍(lán)牙點(diǎn)對(duì)點(diǎn)連接,當(dāng)然這個(gè)連接是基于B讀取本地藍(lán)牙設(shè)備地址BDADDR等,接著就進(jìn)入連接管理部分【361,在下一章進(jìn)第5章HCI協(xié)議的連接控第5章HCI協(xié)議的連接控制模塊及實(shí)根據(jù)第二章總體設(shè)計(jì)方案,連接控制模塊主要完成藍(lán)牙鏈路的管理和數(shù)據(jù)的打包和拆包等功能。連接控制模塊㈣允許主機(jī)控制器控制與其它設(shè)備的連接。其中包括以下指令:鏈路管理器(LM)創(chuàng)建和修改與藍(lán)牙遠(yuǎn)程設(shè)備的鏈路層的連接,查詢有效范圍內(nèi)的其它藍(lán)牙設(shè)備,以及執(zhí)行其他的鏈路管理器協(xié)議(LMP)中的指令‘3引承接上一章的圖4.4設(shè)備初始化流程圖的連接階段,下圖為連程圖5—1藍(lán)牙設(shè)備連接叫查詢模式,即隨時(shí)偵聽其他藍(lán)牙設(shè)備建立連接的請(qǐng)求;同時(shí),另一端模塊根第5章HCI協(xié)議的連接控制模塊及實(shí)機(jī)的命令進(jìn)行查詢,進(jìn)而請(qǐng)求建立連接。通過這一雙方主機(jī)、模塊間的協(xié)調(diào)工作第5章HCI協(xié)議的連接控制模塊及實(shí)機(jī)的命令進(jìn)行查詢,進(jìn)而請(qǐng)求建立連接。通過這一雙方主機(jī)、模塊間的協(xié)調(diào)工作才能建立起最初的連接間最多只能有七條活動(dòng)的ACL鏈路(每個(gè)活動(dòng)的從屬設(shè)備有一條)。ACL的基礎(chǔ),沒有ACL物理鏈路的建立,就無(wú)法進(jìn)一步建立高層的邏輯信道【40】,發(fā)所以下面兩小節(jié)將介紹兩個(gè)藍(lán)牙設(shè)備進(jìn)行最簡(jiǎn)單的點(diǎn)對(duì)點(diǎn)ACL數(shù)據(jù)通信的程:查詢、建立鏈路、進(jìn)行數(shù)據(jù)通信和斷開鏈對(duì)于鏈路控制指令,OGF設(shè)為Ox01查詢(Inqu主設(shè)備在與其它藍(lán)牙設(shè)備創(chuàng)建連接之前使用查詢指令來(lái)搜索鄰近是否存在它藍(lán)牙設(shè)備,指令描述如表5.1所示,寫入的命令參數(shù)和讀取返回參數(shù)描述如5.2所示。其中,而不同的接入碼類型有不同的運(yùn)行模式,LAP類型的低地址部分;InquiryLength參數(shù)指定查詢模式的持續(xù)時(shí)間,超終止Response參數(shù)指定查詢終止前能收到的應(yīng)答數(shù)如果查詢到其他藍(lán)牙設(shè)備,就獲取對(duì)方的設(shè)備地址以及遠(yuǎn)端設(shè)備與主設(shè)備鐘偏差,有了設(shè)備地址和時(shí)鐘偏差,就可以為下一步快速創(chuàng)建ACL鏈接和時(shí)鐘同表5—1Inquhy指令分組各段設(shè)指 Inqui叫eng電NuInjtesporHCI111qu時(shí)指令分組參數(shù)表5—參N啪.1tespo鵬值代表開始接入進(jìn)程時(shí)的接入識(shí)別碼查詢最長(zhǎng)持續(xù)時(shí)從查詢開始的最大應(yīng)答次范圍:0xol~O)【01)【9E8BOO—注意:如果遠(yuǎn)端節(jié)點(diǎn)的主機(jī)沒有運(yùn)行WHte—Sc如』}nable指令,設(shè)置描允許,則主節(jié)點(diǎn)的主機(jī)不會(huì)收到查詢結(jié)果事件,也就是查詢不到目標(biāo)設(shè)注意:如果遠(yuǎn)端節(jié)點(diǎn)的主機(jī)沒有運(yùn)行WHte—Sc如』}nable指令,設(shè)置描允許,則主節(jié)點(diǎn)的主機(jī)不會(huì)收到查詢結(jié)果事件,也就是查詢不到目標(biāo)設(shè)備鏈路建立(Create.-本指令將使鏈路管理器創(chuàng)建與指令參數(shù)BDADDR(程序里面用全局變量建鏈路層鏈接,鏈路管理器將確定新的ACL鏈接如何建立。指令如表5—3所示Sc鋤Mode參數(shù)指定BDADDRRepetionMode和ADDR所代表的遠(yuǎn)端設(shè)備時(shí)鐘叫掃描模式,Clockoffset參數(shù)是本地時(shí)鐘與Switch參數(shù)說(shuō)明當(dāng)遠(yuǎn)端設(shè)備在鏈接初始化過程表5— HCICre舭c∞ne嘶0n分組各段設(shè)c他ame—So衄ADDR,Packete.—Page——scan—Repetion—Page_Scan-Mode,ClocK-o凰注意:如果遠(yuǎn)端節(jié)點(diǎn)的主機(jī)沒有運(yùn)行Wtite—Sc鋤一Enable指令,設(shè)置成查描允許,則即時(shí)主節(jié)點(diǎn)發(fā)送創(chuàng)建連接指令,目標(biāo)節(jié)點(diǎn)也不會(huì)收到連接請(qǐng)求分組,節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)都會(huì)收到一個(gè)連接接受連接請(qǐng)求(ACcept-.co衄ecti如果收到連接請(qǐng)求,目標(biāo)節(jié)點(diǎn)也同意建立連接,則可以使用該指令來(lái)接受請(qǐng)求該指令使鏈路管理器確定如何建立新的連接。它通過Role參數(shù)來(lái)決定是否讓鏈管理器執(zhí)行主從轉(zhuǎn)換以及是否成為連接的主設(shè)當(dāng)鏈路管理器確認(rèn)鏈路已建立時(shí),連接的兩藍(lán)牙設(shè)備的主機(jī)控制器將向各自機(jī)返回連接完成事件。如果指令執(zhí)行成功,則連接完成事件將包括連接句柄表5-指Accept..co衄ectioru妯q嘴第5章HCI協(xié)議的連接控制模塊及實(shí)由于HCI協(xié)議主要的功能是把主機(jī)的信息封裝成統(tǒng)一的規(guī)格,HcI主機(jī)控制指令和連接管理指令,而編輯或者讀取ACL或者SCO數(shù)據(jù)不第5章HCI協(xié)議的連接控制模塊及實(shí)由于HCI協(xié)議主要的功能是把主機(jī)的信息封裝成統(tǒng)一的規(guī)格,HcI主機(jī)控制指令和連接管理指令,而編輯或者讀取ACL或者SCO數(shù)據(jù)不是HCI協(xié)的任務(wù),換言之,HCl只負(fù)責(zé)把更高層傳輸過來(lái)的數(shù)據(jù)傳給藍(lán)牙設(shè)備的主機(jī)控制器,而這些數(shù)據(jù)主要是L和SCO數(shù)據(jù)。這里簡(jiǎn)單演示L數(shù)據(jù)的傳輸有兩個(gè)原因,第一是為了驗(yàn)證本課題所實(shí)現(xiàn)的HCI牙協(xié)議棧的繼續(xù)開發(fā)設(shè)計(jì)作一個(gè)啟發(fā)ACL數(shù)據(jù)分組格式為表5—HCIAccept..Co衄ectionjteq∞st分組各段O481lerC0姍ectJI鋤 主設(shè)備和從設(shè)備都可以通過該指令終止現(xiàn)有鏈接,當(dāng)主機(jī)控制DiscoIlnect指令時(shí),它將向主機(jī)返回指令狀態(tài)事件分組和斷開連接完成事件兩個(gè)組HcIAccept.rC咖e嘶onj己equest分組各段設(shè)表5—lI指Co徹ectionJHaJldle,Re嬲Accept-connectioru髓該錯(cuò)誤原因碼(Reason)用于指示鏈接斷開原因。當(dāng)主單元發(fā)出拆除鏈接指時(shí),將把一個(gè)錯(cuò)誤原因碼作為參數(shù)使用。其中Ox05表示驗(yàn)證或匹配失敗;Oxl3示其他終端的用戶主動(dòng)拆除鏈路;Oxl4表示其他終端因資源限制而拆除鏈路表示其他終端的設(shè)備關(guān)機(jī)而拆除鏈路程序流程見本章第一小節(jié)圖5.1,下面介紹程序代碼的幾個(gè)關(guān)鍵步1設(shè)備,會(huì)返回對(duì)方的程序流程見本章第一小節(jié)圖5.1,下面介紹程序代碼的幾個(gè)關(guān)鍵步1設(shè)備,會(huì)返回對(duì)方的48位設(shè)備地址,所以這里采用包含一個(gè)數(shù)t結(jié)構(gòu)變量—b[6>——attributeL一2.定義一個(gè)全局變量保存連接旬柄,鏈路連接完成的事件會(huì)返回一個(gè)連接旬柄,以便主機(jī)能夠判定本次指令完成事件屬于哪個(gè)設(shè)備實(shí)例,以后發(fā)送的HCI數(shù)據(jù)包都用這個(gè)連接句柄標(biāo)識(shí)遠(yuǎn)3.通過下面結(jié)構(gòu)體來(lái)傳遞查詢指令的參數(shù)(具體成員的含義與表5.2的介一一對(duì)應(yīng)structhcl—cp—l印【3】—n啪>一撕ribute一4.通過下面結(jié)構(gòu)體來(lái)傳遞鏈路建立指令的參數(shù)(具體成員的含義與表5.3structhcl—cp—create—bdaddIj一psc觚-一1一—-clock-o紙第5章HCI協(xié)議的連接控制模塊及實(shí)5.通過下面結(jié)構(gòu)體來(lái)傳輸鏈路斷開指令的參數(shù)(具體成員的含義與表5.5hcl—cp—disco仰h躚—)一attribute一下面簡(jiǎn)單介紹這些鏈路控制指令的第5章HCI協(xié)議的連接控制模塊及實(shí)5.通過下面結(jié)構(gòu)體來(lái)傳輸鏈路斷開指令的參數(shù)(具體成員的含義與表5.5hcl—cp—disco仰h躚—)一attribute一下面簡(jiǎn)單介紹這些鏈路控制指令的(1)查詢0l0405338B9E00指令狀態(tài)事件分組:【0F04000104查詢結(jié)果事件分組:【020F01651C01180DOO01020004021A36查詢完成事件分組00圖5.2查詢指令的返回事指令分組說(shuō)明:Ox01表明為HCI指令分組WriteEnable是主合起來(lái)的操作碼Ox05為指令所帶參數(shù)的長(zhǎng)度 Length參數(shù),標(biāo)識(shí)查詢所允許的時(shí)間,范圍Ox01~Ox30;Ox00為參Response參數(shù)的缺省值,表示不限指令狀態(tài)事件分組說(shuō)明:0x04表示HCI事件分組;見圖5.2,evt:f’即事件碼,表示該返回事件為指令狀態(tài)事件;plen:4,即0x04,表示返回事件分組的參數(shù)長(zhǎng)度為4;evet”的第一個(gè)參數(shù)O表示當(dāng)前指令接收成功;下一個(gè)參數(shù)為1兩個(gè)參數(shù)Ox0104為指令的OpCode,對(duì)應(yīng)指令I(lǐng)nquiry的操作查詢結(jié)果事件分組說(shuō)明:0x04表示HCI事件分組;0x02為事件碼,表示該回事件為查詢結(jié)果事件分組;0xOF代表返回HCI事件分組的長(zhǎng)度;Ox01為參651C0118OD00Response,表示有一個(gè)設(shè)備應(yīng)答;此后設(shè)備的六字節(jié)藍(lán)牙地址BD-ADDR;此后分別是Page—sc觚一Repetion【0x01025A和兩字節(jié)的查詢結(jié)果事件分組說(shuō)明:0x04表示HCI事件分組;0x02為事件碼,表示該回事件為查詢結(jié)果事件分組;0xOF代表返回HCI事件分組的長(zhǎng)度;Ox01為參651C0118OD00Response,表示有一個(gè)設(shè)備應(yīng)答;此后設(shè)備的六字節(jié)藍(lán)牙地址BD-ADDR;此后分別是Page—sc觚一Repetion【0x01025A和兩字節(jié)的of.fset參數(shù)[OxD959查詢完成事件分組說(shuō)明:devicenumber為1表示查詢到一個(gè)(2)鏈路0504OD651C0118OD000800OOoo00Ol指令狀態(tài)事件分組OF04ooOl04與此同時(shí),遠(yuǎn)端設(shè)備也會(huì)收到連接請(qǐng)求,如果答應(yīng)請(qǐng)求030B0029oo651C01180D連接完成事件分組:【00eadaf, Ol54 a conn—handl1 lOO bda:65:l eadreceiveda1 l Oeadreceiveda1b, 圖5—3鏈路建立的返回指令分組說(shuō)明:Ox01表明為HCI指令分組;Ox0504為指令所帶參數(shù)的長(zhǎng)度;后面六個(gè)參數(shù)oo為要與之建立連接 0118藍(lán)牙設(shè)備的六位地00表示傳送的分組類型為尋呼查詢重復(fù)模式;接著的Ox00表示尋呼查詢模式為強(qiáng)制性的;再接下來(lái)的0指令狀態(tài)事件分組說(shuō)明:Ox04表示HCI事件分組;見圖5—,evt:f,第5章}ICI協(xié)議的連接控制模塊及實(shí)0xOF事件碼,表示該返回事件為指令狀態(tài)事件;plen:4,即0x04,分組的參數(shù)長(zhǎng)度為4;“evnt1,下來(lái)兩個(gè)參數(shù)0x0105為指令的OpCode,對(duì)應(yīng)指令Cre第5章}ICI協(xié)議的連接控制模塊及實(shí)0xOF事件碼,表示該返回事件為指令狀態(tài)事件;plen:4,即0x04,分組的參數(shù)長(zhǎng)度為4;“evnt1,下來(lái)兩個(gè)參數(shù)0x0105為指令的OpCode,對(duì)應(yīng)指令CreatILCo皿ection的操作碼連接完成事件分組說(shuō)明:0x04表示HCI事件分組;Ox03為事件碼,表示該回事件為查詢結(jié)果事件分組;0xOB代表返回HCI事件分組的長(zhǎng)度;OxOO表示命成功,即已成功建立連接;Ox2900為連接句柄,此后65lC0118節(jié)點(diǎn)的藍(lán)牙設(shè)備的六字節(jié)藍(lán)牙地址ADDR;0x01表示連接類型為ACL連接最后一個(gè)字節(jié)表示加密模式,取值Ox00表示圖中后面兩個(gè)事件0x20和0x1B,表示兩設(shè)備設(shè)置的交互過程,經(jīng)過這的協(xié)商設(shè)置之后,雙方就可正常通訊(3)接受連接請(qǐng)首先接收到遠(yuǎn)端設(shè)備的連接請(qǐng)求,相應(yīng)的事件連接請(qǐng)求事件:【0A651C010000OD接著,本設(shè)備開始應(yīng)答請(qǐng)求,發(fā)送的指令和接收到的事件090407651C0118oo01指令狀態(tài)事件分組:【0F04000104(與此同時(shí),遠(yuǎn)端設(shè)備也會(huì)收到應(yīng)答連接請(qǐng)求的031800連接完成事件分組:【002900eada4, OOO1O1sen乞ACCEPUO賦—9ogf:readaf, 0l94read1ba even乞 eada4, OOO1O1sen乞ACCEPUO賦—9ogf:readaf, 0l94read1ba even乞 OldOconn-connected圖5.4鏈路建立的返回連接請(qǐng)求事件說(shuō)明:見圖5.4中的第一行,evt:4表示該事件為連接請(qǐng)求件,因?yàn)樵撌录腛CF碼為Ox04;長(zhǎng)度為a,十字節(jié)的參數(shù)長(zhǎng)度。下一分別表示六字節(jié)的BDADDR,三字節(jié)的 Device和一字節(jié)的Type下一行則顯示了發(fā)送連接請(qǐng)求的設(shè)指令分組說(shuō)明:0x01表明為HCI指令分組;0x09041C01180D00為要與之建立連接為指令所帶參數(shù)的長(zhǎng)度;后面六個(gè)參數(shù)藍(lán)牙設(shè)備的六位地址;0x01表示在連接建立時(shí)不接受由目標(biāo)設(shè)備請(qǐng)求的指令狀態(tài)事件分組說(shuō)明:Ox04表示HCI事件分組;見圖5.4,evt:f,即F事件碼,表示該返回事件為指令狀態(tài)事件;plen:4,即Ox04,表示返回事件分組的參數(shù)長(zhǎng)度為4;下一行“event”的第一個(gè)參數(shù)O表示當(dāng)前指令接收成功;下一個(gè)參數(shù)為1,表示當(dāng)前可以從主機(jī)發(fā)往主機(jī)控制器的指令分組數(shù)目為一Co肌兩個(gè)參數(shù)0x0904為指令的OpCode,對(duì)應(yīng)指令Request連接完成事件分組說(shuō)明:Ox04表示HCI事件分組;Ox03為事件碼,表示該回事件為查詢結(jié)果事件分組;Ox0B代表返回HCI事件分組的長(zhǎng)度;0x00表示命成功,即已成功建立連接;Ox2900為連接句柄,此后00為目1C0118節(jié)點(diǎn)的藍(lán)牙設(shè)備的六字節(jié)藍(lán)牙地址BDADDR;0x01表示連接類型為ACL連接最后一個(gè)字節(jié)表示加密模式,取值0xoo表示第5章HCI協(xié)議的連接控制模塊及實(shí)(4)讀取對(duì)方設(shè)備信經(jīng)過了上面幾個(gè)步驟之后,兩設(shè)備已經(jīng)建立連接,可以進(jìn)行數(shù)據(jù)的傳輸和互查詢對(duì)方的信息的操作,下面簡(jiǎn)單介紹讀取對(duì)方設(shè)備信息●讀取遠(yuǎn)端設(shè)備的支持特性:Re∞第5章HCI協(xié)議的連接控制模塊及實(shí)(4)讀取對(duì)方設(shè)備信經(jīng)過了上面幾個(gè)步驟之后,兩設(shè)備已經(jīng)建立連接,可以進(jìn)行數(shù)據(jù)的傳輸和互查詢對(duì)方的信息的操作,下面簡(jiǎn)單介紹讀取對(duì)方設(shè)備信息●讀取遠(yuǎn)端設(shè)備的支持特性:Re∞一Remote—Supported_Feature過把連接句柄作為參數(shù),即可得到對(duì)方設(shè)備的信息,相應(yīng)的返回事件eadabb,OO OfOOOOis:0x00表示指令成功,2900表示連接句柄,后面8個(gè)字節(jié)表示(LMP屏蔽位列表)??蓪?duì)照上一章表4—18,跟初始化時(shí)的數(shù)RemoteVersionInfo姍ation讀取遠(yuǎn)端設(shè)備版本信息●樣只需把連接句柄作為參數(shù),即可得到對(duì)方設(shè)備的信息,相應(yīng)的返回事件如下圖ead8c,a OOl 4eventis:0xoo表示指令成功,2900表示連接句柄,0x01表示表示制造商名字,Ox6004表示LMPSubversion??蓪?duì)照上一章表4—16,跟數(shù)據(jù)傳ACL數(shù)據(jù)分組格式:【2901020034說(shuō)明:0x02表示ACL數(shù)據(jù)包;在上面的連接中生成的連接句柄為0x2900中12位有意義),其中PB和BC標(biāo)志位是用于對(duì)高一層的接口,這里設(shè)為BC=00,則按照ACL數(shù)據(jù)包格式,連接句柄和兩個(gè)標(biāo)志位合并起來(lái)表示成【6】Ox0129。0x0002表示數(shù)據(jù)長(zhǎng)度,占用兩個(gè)字節(jié);Oxl234HCI定,復(fù)字節(jié)參數(shù)在發(fā)送時(shí)要進(jìn)行字節(jié)反序,即按照先后順序發(fā)送Ox290x01和OxOO發(fā)送ACL事件分組說(shuō)明:見下圖,其中evt:13,表示本次事件是Packetsevent,指示自從前一個(gè)ACL數(shù)據(jù)發(fā)送后,本主機(jī)對(duì)相應(yīng)連接柄又發(fā)送了多少個(gè)HCI數(shù)據(jù)分組。其中返回參數(shù)長(zhǎng)度為5個(gè)字節(jié)。下一句event合并運(yùn)算具體的C語(yǔ)言實(shí)現(xiàn)代碼:hcUl鋤dle_pa呶II,汕16)((h&0xo甜)l(f則表示本次對(duì)多少個(gè)連接句柄發(fā)送ACL數(shù)據(jù),為一個(gè)鏈路;0x2900表示該連接柄,Ox0100,表示已完成一組HCI數(shù)據(jù)的發(fā)送.SEND。DaC則表示本次對(duì)多少個(gè)連接句柄發(fā)送ACL數(shù)據(jù),為一個(gè)鏈路;0x2900表示該連接柄,Ox0100,表示已完成一組HCI數(shù)據(jù)的發(fā)送.SEND。DaCa O1l接收ACL數(shù)據(jù)的分組說(shuō)明:見下圖,其中系統(tǒng)提示接收到6個(gè)字節(jié),本次據(jù)包是ACL數(shù)據(jù)包,除去相應(yīng)的包頭標(biāo)志位,實(shí)際ACL數(shù)據(jù)長(zhǎng)度為20x3412,與上文所發(fā)送的數(shù)據(jù)向吻合,驗(yàn)證了HCI協(xié)議的有eadreceivedaACLl拆除鏈0604032913指令狀態(tài)事件分組說(shuō)OF040604拆除鏈路事件分組說(shuō)0504290016指令分組說(shuō)明:0x01表示HCI指令分組;Ox0604為拆除鏈路的指令操作碼0x03為參數(shù)長(zhǎng)度,Ox2900為連接句柄;0x13為斷開連接原因指令狀態(tài)事件分組說(shuō)明:Ox04表示HCI事件分組;Ox0F表示該事件為指令態(tài)事件;004Ox00;Ox0Ox00Ox控連接的原因碼,這里為0x13本章剖析了藍(lán)牙HCI協(xié)議中的連接控制模塊,與上一章結(jié)構(gòu)類似,本包括藍(lán)牙邏輯鏈路控制規(guī)范的概述、鏈路管理器協(xié)議、建立連接的操作以及相原語(yǔ),并結(jié)合實(shí)例進(jìn)行分析說(shuō)明,最后探討了模塊運(yùn)行結(jié)果,即對(duì)藍(lán)牙鏈路管第5章Ha協(xié)議第5章Ha協(xié)議的連接控制模塊及實(shí)進(jìn)行控制的實(shí)現(xiàn),使得兩PC機(jī)可通過藍(lán)牙適配器建立連通過ACL鏈路的建立,就可以在次基礎(chǔ)上建立SCO鏈路,向上開發(fā)第6章實(shí)際操作過程與本課第6章實(shí)際操作過程與本課題在相關(guān)實(shí)現(xiàn)時(shí)分為硬件和軟件兩個(gè)部分。在硬件,也就是設(shè)備的選用面,因?yàn)榧嫒菪院蛿U(kuò)展性是本課題的首要考慮因素,所以使用的是電腦市場(chǎng)上常普遍的藍(lán)牙適配器。其制造商是英國(guó)的SiliconRadio(CSR)公司PSSX因?yàn)楸緦?shí)驗(yàn)是點(diǎn)對(duì)點(diǎn)的連接,所以需要兩臺(tái)電腦和兩個(gè)藍(lán)牙設(shè)備,具況如下圖無(wú)線射圖6.1鏈路建立的返回事當(dāng)設(shè)備準(zhǔn)備好以后,就可以進(jìn)行實(shí)(1)通過Linux系統(tǒng)的insmod命令加載藍(lán)牙模塊的USB驅(qū)動(dòng)程序,以實(shí)現(xiàn)對(duì)隨后插進(jìn)的藍(lán)牙適配器的控制;把藍(lán)牙適配器插進(jìn)兩臺(tái)C主機(jī)的B斷開,以實(shí)現(xiàn)系統(tǒng)里面的devie文件夾出現(xiàn)相應(yīng)的文件操作符,以代表藍(lán)牙設(shè)備,隨后對(duì)這個(gè)文件操作符運(yùn)行HCI協(xié)議,以實(shí)現(xiàn)對(duì)藍(lán)牙設(shè)備的指令操作第6章實(shí)際操作過程與改(2)兩個(gè)PC(3(4協(xié)議完成的,不需要PC端的用戶手工操作。這里把這一端定為從節(jié)(5第6章實(shí)際操作過程與改(2)兩個(gè)PC(3(4協(xié)議完成的,不需要PC端的用戶手工操作。這里把這一端定為從節(jié)(5(6(7)傳輸ACL數(shù)據(jù),查詢對(duì)方(8相應(yīng)的圖示說(shuō)明可參見圖3.3,圖4.I,圖4.4,圖5.1首先介紹本課題所開發(fā)的I協(xié)議的界面,雖然I屬于藍(lán)牙協(xié)議棧中的底層協(xié)議,但是它完成了指令和數(shù)據(jù)封裝工作,所以同時(shí)也屬于面向用戶的協(xié)議,在操作界面上如何實(shí)現(xiàn)人和機(jī)器的高效互動(dòng)是必須考慮的部分。在界面的設(shè)計(jì)上,基擔(dān);保持界面的一致性;有清晰的針對(duì)性的信所以從下面四幅圖可看到的操作界面都是基于這些原則設(shè)■■罨■●,■■●一■,舉■,■■■●■■冪■■■●●■■■■●●摹●■曩■■■■■■■摹■■●■-簪 STARTREADI}1.OPENFI·CONTRO7.STOP9.8.CLOSE上圖是HCI協(xié)議運(yùn)行后的出現(xiàn)第一個(gè)界面,即主界面,從1.9是打開設(shè)備、新建一個(gè)線程以讀數(shù)據(jù)、切換到查看設(shè)備信息的菜單、切換到主制指令的菜單、切換到鏈路策略指令的菜單、切換到鏈路控制指令的菜單、釋的線程、關(guān)閉文件、退出HCI協(xié)議hci—info—I2.4. BDi—info—上圖是查看設(shè)備信息的界面,在主界面選擇3即可進(jìn)入該制指令的菜單、切換到鏈路策略指令的菜單、切換到鏈路控制指令的菜單、釋的線程、關(guān)閉文件、退出HCI協(xié)議hci—info—I2.4. BDi—info—上圖是查看設(shè)備信息的界面,在主界面選擇3即可進(jìn)入該界面。從1.5+十十十一卜呻葉葉-+_叫叫H卜卜卜卜+一+_+-十+++++++’呻一+-卜OGF—王|oST—CTL十++十++一卜斗呻葉-+_十_叫叫 叫1叫叫11—十1.2.SET—E、-EXT—FLT—C4.WRITEJAGEJI躚6.WRlTE—.SCAN—+++3.WRITE_cO脯一ACCEPTjI躚5.WRITE—PAGE—SCAK—十十十SET—E、’EXT—WRITE—CLASS—OF—WRITE—ENCRYPT—十豫ITE—AUTOⅪATIC—FLOSlL.TI§誣+TE_sCO-FLOW_cTRL』十11.WRITEj’OICE_s盱TI+3.SEI且CTRL_2jlosI-FLo鄴l4.HOST』0FFER_slZE+1++十++十+十+什H州科悄州葉葉州州州呻葉葉+oGF—HoSI-CTL++什十++十++什+++十十++十十+++十+++上圖是主機(jī)控制指令的界面,在主界面選擇4即可進(jìn)入該界面。從1.6的選項(xiàng)說(shuō)明依次是重置本地設(shè)備、清除事件過濾器、設(shè)置連接超時(shí)、設(shè)置呼叫相應(yīng)超時(shí)、設(shè)置呼叫掃描間隔和呼叫掃描區(qū)間、設(shè)置掃描允許、設(shè)置事件過濾器、設(shè)置加密模式、設(shè)置本地設(shè)備類參數(shù)、設(shè)置刷新超時(shí)(針對(duì)指定的連接句柄)、設(shè)置話音鏈路、設(shè)置SCO流控制允許、設(shè)置流控制(用于主機(jī)控制器直接打開或關(guān)閉主機(jī)控制器到主機(jī)的流控制)、設(shè)置主機(jī)控制器的ACL和SCO數(shù)據(jù)緩沖區(qū)的大小、返回主界CREATE—2.ACCEpT—:CONN—AETHENT王CATION—REQCESTEDREAD』LocK_oFFS5SHOWSEXDACL—91jin量co口第6章實(shí)際操作過程與改上圖是鏈路控制指令的界面,在主界面選擇6即可進(jìn)入該界面。從1.1第6章實(shí)際操作過程與改上圖是鏈路控制指令的界面,在主界面選擇6即可進(jìn)入該界面。從1.11項(xiàng)說(shuō)明依次是新建鏈路、接受連接請(qǐng)求、斷開現(xiàn)有連接、查詢、顯示當(dāng)前的連接句柄、建立身份鑒權(quán)(與制定連接句柄)、發(fā)送預(yù)設(shè)的L返回主界面 HCI協(xié)議具備接收和發(fā)送數(shù)據(jù)的功能,但是,如何在面向用戶的情況下,實(shí)現(xiàn)數(shù)據(jù)信息在本地設(shè)備上的進(jìn)出情況,并清晰有效地顯示呢?這時(shí),跟第三章采用多線程的機(jī)制【42】【431接下來(lái)通過對(duì)開發(fā)過程中遇到的并發(fā)事件的分析,討論如何通過多線理藍(lán)牙每個(gè)指令的運(yùn)行時(shí)間都可以設(shè)置成各不相同,而每發(fā)送一個(gè)指令,藍(lán)備都會(huì)返回一個(gè)指令完成事件(有時(shí)還有指令狀態(tài)事件),這時(shí),必須通備文件符來(lái)讀取這些事件。而多線程機(jī)制正是處理這種情況的理想選按照標(biāo)準(zhǔn)定義,進(jìn)程(pfocess)是資源管理器的最小單位,線程(thread)是程序行的最小單位。在不同的操作系統(tǒng),兩者定義會(huì)不同。但無(wú)論按照怎樣的分法,一個(gè)進(jìn)程至少需要一個(gè)線程作為它的指令執(zhí)行體。一個(gè)進(jìn)程可以擁有多個(gè)線程,此時(shí),如果進(jìn)程運(yùn)行在多處理器的機(jī)器上,它就可以同時(shí)使用多個(gè)cpu來(lái)執(zhí)行各個(gè)即時(shí)是在單cpu的機(jī)器上,采用多線程模型來(lái)設(shè)計(jì)程序有很多好·有些問題可以通過將其分解從而改善整個(gè)程序進(jìn)程的吞吐量。在只有個(gè)控制線程的情況下,單個(gè)進(jìn)程需要完成多個(gè)任務(wù)時(shí),需要把這些任串行化;有了多個(gè)控制線程,相互獨(dú)立的任務(wù)的處理就可以交叉進(jìn)行需要為每個(gè)任務(wù)分配一個(gè)單獨(dú)的線程·交互的程序可以通過多線程實(shí)現(xiàn)響應(yīng)時(shí)間的改善,把程序中處理用戶每次運(yùn)行HCI協(xié)議對(duì)藍(lán)牙設(shè)備進(jìn)行操作,cpu都新建一個(gè)進(jìn)程,作為這個(gè)的運(yùn)行實(shí)例。一般來(lái)講,在向文件讀寫時(shí),這個(gè)進(jìn)程有可能在讀寫處阻塞,直到個(gè)時(shí)候,讀調(diào)用就會(huì)一個(gè)時(shí)候,讀調(diào)用就會(huì)一直等待,直到有數(shù)據(jù)可讀,嚴(yán)重影響了主機(jī)端對(duì)設(shè)備的指所以我們通過創(chuàng)建一個(gè)讀的線程來(lái)進(jìn)行對(duì)藍(lán)牙設(shè)備獲取到的遠(yuǎn)端信息因此,多線程機(jī)制使得本設(shè)計(jì)更簡(jiǎn)潔、功能更完備,程序的執(zhí)行效率/proc/kmsg"查看內(nèi)核的運(yùn)行信息£刪,過程中會(huì)顯示所有在內(nèi)核空間里運(yùn)行的程序牙設(shè)備。命令成功運(yùn)行后,在剛剛新建的終端會(huì)顯示“有新的USB設(shè)備的"內(nèi)信息。同時(shí)在/dev下面會(huì)自動(dòng)生成一個(gè)文件符usbO,代表本地藍(lán)牙設(shè)備運(yùn)行本論文所實(shí)現(xiàn)的HCI協(xié)議,對(duì)hciusbO進(jìn)行HCI指令操作。當(dāng)看到主面后,可以進(jìn)行打開設(shè)備、新建讀線程、查看本地設(shè)備信息等操作,而每一個(gè)指操作都會(huì)生成相應(yīng)的內(nèi)核信息當(dāng)兩個(gè)設(shè)備都初始化,可以正常工作后,可以進(jìn)入設(shè)備的連接階段。面的菜單選擇進(jìn)入control子菜單。將任意~個(gè)設(shè)備定為主設(shè)備出查詢指令,當(dāng)有遠(yuǎn)端藍(lán)牙設(shè)備響應(yīng)之后,會(huì)返回相應(yīng)事件,隨之可以進(jìn)行“建連接"指令。作為從設(shè)備響應(yīng)了主設(shè)備查詢后,會(huì)一直等待主設(shè)備來(lái)建立連接,旦收到連接請(qǐng)求,即可答應(yīng)。這時(shí)雙方即可成建立連接后,雙方都可以進(jìn)行查詢對(duì)方信息、發(fā)送ACL數(shù)據(jù)、斷開等操作在查看內(nèi)核信息的終端上可以觀察到數(shù)據(jù)的讀寫、緩沖區(qū)的操作等信usbO),退出HCI協(xié)議,這時(shí)即可拔出設(shè)備,同時(shí)會(huì)出現(xiàn)相應(yīng)的內(nèi)核信實(shí)驗(yàn)證明,藍(lán)牙設(shè)備的初始化、查找、連接、傳輸?shù)倪^程準(zhǔn)確無(wú)誤表明了本課題所實(shí)現(xiàn)的HCI協(xié)議能夠正常工作6.4因?yàn)橄到y(tǒng)測(cè)試是系統(tǒng)質(zhì)量保證的關(guān)鍵,本章重點(diǎn)描述了本論文所實(shí)現(xiàn)第6議在Linux第6議在Linux這個(gè)解決方案是通過采用Linll)本課題在兩個(gè)C主機(jī)上完成。在各自完成初始化工作后,將其中一個(gè)主機(jī)設(shè)設(shè)備信息,也能夠?qū)?shù)據(jù)發(fā)送到從設(shè)備。初始化、查找、連接、傳輸?shù)倪^程準(zhǔn)確無(wú)誤,這些現(xiàn)象表明了本課題所實(shí)現(xiàn)的HCI協(xié)議能夠正常工作,這也與撰寫論文初期對(duì)本論文定下的實(shí)驗(yàn)預(yù)期結(jié)果相吻合第7章結(jié)本文主要從藍(lán)牙協(xié)議棧的分層結(jié)構(gòu)入手,先介紹了基于Linux序,接著具體介紹了HCI等,然后通過實(shí)驗(yàn)第7章結(jié)本文主要從藍(lán)牙協(xié)議棧的分層結(jié)構(gòu)入手,先介紹了基于Linux序,接著具體介紹了HCI等,然后通過實(shí)驗(yàn)驗(yàn)證,實(shí)現(xiàn)了預(yù)期目標(biāo)。本課題取得的主要研究成1.分析目前Linu)【用戶空間和內(nèi)核空間數(shù)據(jù)交換的方式,來(lái)建立用戶空間和內(nèi)2.開發(fā)出對(duì)藍(lán)牙規(guī)范兼容的基于嵌入式系統(tǒng)的藍(lán)牙協(xié)議棧,在上一屆研究人員實(shí)現(xiàn)x系統(tǒng)內(nèi)核空間下的B藍(lán)牙設(shè)備驅(qū)動(dòng)程序的基礎(chǔ)上,在用戶空間實(shí)I通訊的目的3.在對(duì)HCI人員進(jìn)行更高一層協(xié)議的研究和討論,以使得協(xié)議棧開發(fā)工作得以無(wú)◆本課題研究1.本課題將要實(shí)現(xiàn)的藍(lán)牙通訊程序具有良好的擴(kuò)展性與工程應(yīng)用前景??稍诖嘶A(chǔ)上建立CO連接發(fā)送語(yǔ)音信息;從設(shè)備配置數(shù)據(jù)采集板卡后,即可建立基前景2.就目前的發(fā)展情況來(lái)看,藍(lán)牙技術(shù)在手機(jī)、耳機(jī)、PDA、數(shù)碼相機(jī)和機(jī)等設(shè)備上都有應(yīng)用。由于手機(jī)的普及率較高,因此藍(lán)牙手機(jī)成為目前藍(lán)牙術(shù)的主要應(yīng)用,所以應(yīng)用者可以通過本文將要實(shí)現(xiàn)的協(xié)議,建立起個(gè).3.由于本課題采用Linu)【系統(tǒng),而LinuX憑著靈活的可裁剪特性、高度的4義,其所需投入很少,一般實(shí)驗(yàn)室都有能力承擔(dān)開發(fā)成本。4義,其所需投入很少,一般實(shí)驗(yàn)室都有能力承擔(dān)開發(fā)成本。普通工程人員對(duì)本課題所開發(fā)的協(xié)議略作修改,以根據(jù)不同功能要求實(shí)現(xiàn)產(chǎn)品的藍(lán)牙無(wú)線通訊化,對(duì)于普及藍(lán)牙技術(shù)進(jìn)行產(chǎn)品應(yīng)用開發(fā)具有重要的指導(dǎo)作用和現(xiàn)義不足之處:由于時(shí)間關(guān)系,實(shí)現(xiàn)了HCI協(xié)議中大概65%的服務(wù)原語(yǔ),雖然當(dāng)今藍(lán)牙規(guī)范的版本已到2.O,而本論文所使用的是與藍(lán)牙規(guī)范1.2片,其特點(diǎn)與藍(lán)牙規(guī)范v2.O有顯著的區(qū)別,最大的區(qū)別是傳輸?shù)乃俾省T诋?dāng)今突速率意味著更高的性能【491所以下一步的工作有以1.繼續(xù)完善藍(lán)牙協(xié)議棧:由于HCI的流程框架,但并沒有考慮到某些細(xì)節(jié)。所以一方面要完善好本課題的協(xié)議,另一方面繼續(xù)根據(jù)藍(lán)牙協(xié)議棧進(jìn)行更高層協(xié)議的實(shí)現(xiàn)工作,將的藍(lán)牙協(xié)議應(yīng)用起來(lái),以達(dá)到最優(yōu)化整個(gè)系統(tǒng),充分使用資源的目2.密切關(guān)注藍(lán)牙技術(shù)發(fā)展動(dòng)態(tài),盡可能使用最新技術(shù)產(chǎn)品【50首先可以把原來(lái)的與藍(lán)牙規(guī)范v1.2兼容的芯片換成與藍(lán)牙規(guī)范v2.O兼的芯片,則可以大大提高傳輸速率,并且提高穩(wěn)定性和可參考文參考文【ll單鵬,唐宏,龍薇,趙全軍.劃時(shí)代藍(lán)牙通信的研究與探索參考文參考文【ll單鵬,唐宏,龍薇,趙全軍.劃時(shí)代藍(lán)牙通信的研究與探索陰.通信技7(40):53—【2】h印:/^棚兩【3】h卸:?。bluetooⅡ1.o唱【41張祿林.藍(lán)牙協(xié)議及其實(shí)現(xiàn)【M】.北京:人民郵電出版【5l雙魚.溝通從“牙"開始漸入佳境的藍(lán)牙技術(shù)陰.現(xiàn)代計(jì)算機(jī),2007,3:44-【6l劉繼州.藍(lán)牙技術(shù)分析及應(yīng)用前景預(yù)i貝0【J】.科技咨詢導(dǎo)報(bào),2007,3:20一【7 鄭孟.L曲lx一網(wǎng)絡(luò)時(shí)代的操作系統(tǒng)[J】.計(jì)算機(jī)與信息技術(shù),2007,13:69-【8 張鐵強(qiáng).Linu)【操作系統(tǒng)的發(fā)展優(yōu)勢(shì)川.遼寧教育行政學(xué)院學(xué)報(bào)【9 2001,27(12),33—【10】郭鍇任娜.基于嵌入式L曲u】【的網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序的開發(fā)陰.電子科【1ll通信世界網(wǎng).h卸:肌m吼【12】Blu烈ootllSpecialSPECIFIC皿oNVe裙ion王婷,楊莉譯.藍(lán)牙應(yīng)用開發(fā)指南一近程互聯(lián)解決方案[M】.北京:科學(xué)出社St印henA.Rago著,尤晉元,張亞英,戚正偉譯.1烈114】【15l楊宇音,李志淮.LinlⅨ中用戶空間與內(nèi)核空間的通信實(shí)現(xiàn)【J】.微機(jī)發(fā)展75-【16】金純,林金朝,萬(wàn)寶紅著.藍(lán)牙協(xié)議及其源代碼分析【M【171內(nèi)核之旅.h卸:∥k鋤【參考文Corb吒舢ess觚dr0Rubilli,(hg‰all-Harlmn著,魏永明,耿岳,Jona橢書毅譯.Lin_u)【設(shè)備驅(qū)動(dòng)程序(第三版)【M】.北參考文Corb吒舢ess觚dr0Rubilli,(hg‰all-Harlmn著,魏永明,耿岳,Jona橢書毅譯.Lin_u)【設(shè)備驅(qū)動(dòng)程序(第三版)【M】.北京:中國(guó)電力出版【21】W.對(duì)chardSteVe璐.Adv觚cedProg均瑚mjngillmeI肘ⅨEnv拍nment【MAddisionWesl%1【22lW.mchardStcvens.UNIXN酣ⅣorkPr0蹦珊IIlillg[M】.P砌mcHall,1Ma嘶J.BaCh.1kDesi鰓oftlleUNⅨOper{越ngSystem[M】.Pre】mc【【24】Jomtb趾Cofbet,趟Kroab-H硎m趾.LiIIu)【DfiVer[MMem如125】btqp:肌咧w.usb.o叫【261王云飛.USB系統(tǒng)研究.清華大學(xué)工學(xué)碩士學(xué)位論文[D】,2001:14—S肌Microstst鋤s.編程接口指南[P】【2004,6:9):283-【30】馬建倉(cāng),羅亞軍,趙玉婷.藍(lán)牙核心技術(shù)及應(yīng)用口咽.北京:科學(xué)出版【33】衛(wèi)耀輝,鄭之光.L訕u)【系統(tǒng)下藍(lán)牙設(shè)備驅(qū)動(dòng)程序研究和實(shí)現(xiàn)【J].計(jì)算機(jī)應(yīng)用究【35】陸佳煒.藍(lán)牙主控制器接口簡(jiǎn)析川.半導(dǎo)體技術(shù),2003,28(3):54-【36】張?jiān)?,黃小瑩.基于藍(lán)牙技術(shù)的無(wú)線數(shù)據(jù)傳輸系統(tǒng)的設(shè)計(jì)明.杭州電子工業(yè)院學(xué)報(bào)【37】Bl喊oo啦SpecialInterestG幻up.Pe啪nalA陀aN麗釉d!【ingProfile【J【39】馬斌,羅漢文,郭環(huán)球.藍(lán)牙散射網(wǎng)網(wǎng)間通信問題的研究【J】.中國(guó)電子商情參考文通信市場(chǎng),2005,8:38-【40】宋明中,候思祖,馬昕霞.基于藍(lán)牙技參考文通信市場(chǎng),2005,8:38-【40】宋明中,候思祖,馬昕霞.基于藍(lán)牙技術(shù)的PC機(jī)間數(shù)據(jù)通信接口設(shè)計(jì)與14lJ周麗雅,任志考,郭忠文.基于設(shè)備實(shí)際性能的藍(lán)牙散列網(wǎng)構(gòu)建算法們機(jī)工程【42l楊志文.深入LiIlu)【建構(gòu)與管理[M】.北京:人民郵電出版社【43】毛德操,胡希明.L證u)【內(nèi)核源代碼情景分析【M】.杭州:浙江大學(xué)出版K.w址l,M.Walso瑪M.WKtis著,王勇,王一川,林花軍,甘泉譯.GNU九姍u)【編程指南[M【45】赫芳,鄭志蓉.藍(lán)牙安全技術(shù)研究【J】.計(jì)算機(jī)與網(wǎng)2003,27(2):24-學(xué)報(bào)【48】張晶,李鐵盤.藍(lán)牙HCI傳輸層流量控制的研究【J】.計(jì)算機(jī)工程與設(shè)27(23):4500-【49l藍(lán)牙中國(guó)網(wǎng).h:ttp:∥蚋帆blueto礎(chǔ)Chm.co面150】SunMicrosyste螂.h郇://docs.slm腳致首先,我深深地感謝黃曉致首先,我深深地感謝黃曉老師!黃老師淵博的學(xué)識(shí),嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,以身作則傳身教,使我在這一段求學(xué)期間,理論知識(shí)水平和科研實(shí)踐能力有了本質(zhì)的提高以后的工作和學(xué)習(xí)都受益非淺。在論文撰寫過程中,黃老師嚴(yán)格要求,在理論推導(dǎo)和方設(shè)計(jì)等方面提出了許多寶貴的意見和建議,使得論文順利完成實(shí)驗(yàn)室就像一個(gè)溫暖的家,系里的同學(xué)和師兄弟在我的學(xué)業(yè)和生活方面給了我很的幫助,我衷心感謝潘練鋒、余杰文、徐博、蔡錦周同學(xué),無(wú)論在設(shè)計(jì)或者調(diào)試過程中他們都給予了寶貴的建議和指導(dǎo),從他們身上我學(xué)到了很多東西在這篇論文即將完成的時(shí)候,我對(duì)所有向本文及作者直接或間接提供過幫助的老基于Linux的藍(lán)牙HCI層協(xié)議的作者學(xué)位授予單位湯1.學(xué)位論文臧雨霖?zé)o線通信在智能交通系統(tǒng)中的應(yīng)用與研究。本文對(duì)現(xiàn)有公交車輛管理系統(tǒng)中的幾種通信方式進(jìn)行對(duì)比,提出了利用移動(dòng)通信的GPRS網(wǎng)絡(luò),GPS本文首先提出了城市智能公交監(jiān)控系統(tǒng)的總體設(shè)計(jì)方案,然后以車載端硬件平臺(tái)的構(gòu)建和軟件設(shè)計(jì)為主要內(nèi)容,對(duì)GPS模塊、GPRS平臺(tái)的構(gòu)建進(jìn)行了詳細(xì)的設(shè)計(jì)和模塊的調(diào)試。對(duì)于定位模塊的選擇,設(shè)計(jì)選用了GARMIN公司的GPS25基于Linux的藍(lán)牙HCI層協(xié)議的作者學(xué)位授予單位湯1.學(xué)位論文臧雨霖?zé)o線通信在智能交通系統(tǒng)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論