偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

原理解析之藍牙協(xié)議棧和語音網(wǎng)關(guān)

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
文章中,我們針對藍牙協(xié)議棧和語音網(wǎng)關(guān)的內(nèi)容,闡述了藍牙耳機等相關(guān)產(chǎn)品的工作原理。那么就請大家瀏覽文章來詳細(xì)了解一下吧。

對于藍牙產(chǎn)品,我們知道的有藍牙耳機,藍牙鼠標(biāo)等等內(nèi)容。單以藍牙耳機而言,大家是否知道它的工作原理呢?這里我們就針對藍牙協(xié)議棧和語音網(wǎng)關(guān)的內(nèi)容,來向大家闡述一下藍牙耳機的原理。

◆藍牙技術(shù)的特點

1 藍牙協(xié)議棧體系結(jié)構(gòu)

整個藍牙協(xié)議體系結(jié)構(gòu)可分為底層硬件模塊、中間協(xié)議層和高端應(yīng)用層三大部分.鏈路管理層(LMP)、基帶層(BBP)和藍牙無線電信道構(gòu)成藍牙的底層模塊.BBP層負(fù)責(zé)跳頻和藍牙數(shù)據(jù)及信息幀的傳輸.LMP層負(fù)責(zé)連接的建立和拆除以及鏈路的安全和控制,它們?yōu)樯蠈榆浖K提供了不同的訪問人口,但是兩個模塊接口之間的消息和數(shù)據(jù)傳遞必須通過藍牙主機控制器接口的解釋才能進行.也就是說,中間協(xié)議層包括邏輯鏈路控制與適配協(xié)議(L2CAP)、服務(wù)發(fā)現(xiàn)協(xié)議(SDP)、串口仿真協(xié)議(RFCOMM)和電話控制協(xié)議規(guī)范(TCS).L2CAP完成數(shù)據(jù)拆裝、服務(wù)質(zhì)量控制、協(xié)議復(fù)用和組提取等功能,是其他上層協(xié)議實現(xiàn)的基礎(chǔ),因此也是藍牙協(xié)議棧的核心部分.SDP為上層應(yīng)用程序提供一種機制來發(fā)現(xiàn)網(wǎng)絡(luò)中可用的服務(wù)及其特性.在藍牙協(xié)議棧的最上部是高端應(yīng)用層,它對應(yīng)于各種應(yīng)用模型的剖面,是剖面的一部分.目前定義了13種剖面.

2 藍牙低層模塊

藍牙的低層模塊是藍牙技術(shù)的核心,是任何藍牙設(shè)備都必須包括的部分.

藍牙工作在2.4GHZ的ISM頻段.采用了藍牙結(jié)束的設(shè)備講能夠提供高達720kbit/s 的數(shù)據(jù)交換速率.

藍牙支持電路交換和分組交換兩種技術(shù),分別定義了兩種鏈路類型,即面向連接的同步鏈路(SCO)和面向無連接的異步鏈路(ACL).

為了在很低的功率狀態(tài)下也能使藍牙設(shè)備處于連接狀態(tài),藍牙規(guī)定了三種節(jié)能狀態(tài),即停等(Park)狀態(tài)、保持(Hold)狀態(tài)和呼吸(Sniff)狀態(tài).這幾種工作模式按照節(jié)能效率以升序排依次是:Sniff模式、Hold模式、Park模式.

藍牙采用三種糾錯方案:1/3前向糾錯(FEC)、2/3前向糾錯和自動重發(fā)(ARQ).前向糾錯的目的是減少重發(fā)的可能性,但同時也增加了額外開銷.然而在一個合理的無錯誤率環(huán)境中,多余的投標(biāo)會減少輸出,故分組定義的本身也保持靈活的方式,因此,在軟件中可定義是否采用FEC.一般而言,在信道的噪聲干擾比較大時藍牙系統(tǒng)會使用前向糾錯方案,以保證通信質(zhì)量:對于SCO鏈路,使用1/3前向糾錯;對于ACL鏈路,使用2/3前向糾錯.在無編號的自動請求重發(fā)方案中,一個時隙傳送的數(shù)據(jù)必須在下一個時隙得到收到的確認(rèn).只有數(shù)據(jù)在收端通過了報頭錯誤檢測和循環(huán)冗余校驗(CRC)后認(rèn)為無錯時,才向發(fā)端發(fā)回確認(rèn)消息,否則返回一個錯誤消息.

藍牙系統(tǒng)的移動性和開放性使得安全問題變得及其重要.雖然藍牙系統(tǒng)所采用的調(diào)頻技術(shù)就已經(jīng)提供了一定的安全保障,但是藍牙系統(tǒng)仍然需要鏈路層和應(yīng)用層的安全管理.在鏈路層中,藍牙系統(tǒng)提供了認(rèn)證、加密和密鑰管理等功能.每個用戶都有一個個人標(biāo)識碼(PIN),它會被譯成128bit的鏈路密鑰(Link Key)來進行單雙向認(rèn)證.一旦認(rèn)證完畢,鏈路就會以不同長度的密碼(Encryphon Key)來加密(此密碼以shit為單位增減,最大的長度為128bit)鏈路層安全機制提供了大量的認(rèn)證方案和一個靈活的加密方案(即允許協(xié)商密碼的長度).當(dāng)來自不同國家的設(shè)備互相通信時,這種機制是極其重要的,因為某些國家會指定最大密碼長度.藍牙系統(tǒng)會選取微微網(wǎng)中各個設(shè)備的最小的最大允許密碼長度.例如,美國允許128bit的密碼長度,而西班牙僅允許48bit,這樣當(dāng)兩國的設(shè)備互通時,將選擇48bit來加密.藍牙系統(tǒng)也支持高層協(xié)議棧的不同應(yīng)用體內(nèi)的特殊的安全機制.例如兩臺計算機在進行商業(yè)卡信息交流時,一臺計算機就只能訪問另一臺計算機的該項業(yè)務(wù),而無權(quán)訪問其他業(yè)務(wù).藍牙安全機制依賴PIN在設(shè)備間建立信任關(guān)系,一旦這種關(guān)系建立起來了,這些PIN就可以存儲在設(shè)備中以便將來更快捷地連接.

3 軟件模塊

L2CAP是數(shù)據(jù)鏈路層的一部分,位于基帶協(xié)議之上.L2CAP向上層提供面向連接的和無連接的數(shù)據(jù)服務(wù),它的功能包括:協(xié)議的復(fù)用能力、分組的分割和重新組裝(Segmentation And Reaassembly)以及提取(Group Abstraction).L2CAP允許高層協(xié)議和應(yīng)用發(fā)送和接受高達64K Byte的數(shù)據(jù)分組.

SDP為應(yīng)用提供了一個發(fā)現(xiàn)可用協(xié)議和決定這些可用協(xié)議的特性的方法.藍牙環(huán)境下的服務(wù)發(fā)現(xiàn)與傳統(tǒng)的網(wǎng)絡(luò)環(huán)境下的服務(wù)發(fā)現(xiàn)有很大的不同,在藍牙環(huán)境下,移動的RF環(huán)境變化很大,因此業(yè)務(wù)的參數(shù)也是不斷變換的.SDP將強調(diào)藍牙環(huán)境的獨特的特性.藍牙使用基于客戶/服務(wù)器機制定義了根據(jù)藍牙服務(wù)類型和屬性發(fā)現(xiàn)服務(wù)的方法,還提供了服務(wù)瀏覽的方法.

RFCOMM是射頻通信協(xié)議,它可以仿真串行電纜接口協(xié)議,符合ETSI0710串口仿真協(xié)議.通過RFCOMM,藍牙可以在無線環(huán)境下實現(xiàn)對高層協(xié)議,如PPP、TCP/IP、WAP等的支持.另外,RFCOMM可以支持AT命令集,從而可以實現(xiàn)移動電話機和傳真機及調(diào)制解調(diào)器之間的無線連接.

藍牙對語音的支持是它與WLAN相區(qū)別的一個重要的標(biāo)志.藍牙電話控制規(guī)范是一個基于ITU-T建議Q.931的采用面向比特的洗衣,它定義了用于藍牙設(shè)備間建立語音和數(shù)據(jù)呼叫的呼叫控制信令以及用于處理藍牙TCS設(shè)備的移動性管理過程.

藍牙協(xié)議棧我們就介紹到這里,下面我們看一下語音網(wǎng)關(guān)的內(nèi)容。#p#

◆語音網(wǎng)關(guān)(Audio Gate)

Windows Embedded CE supports Headset Profile and the Hands-Free Profile by providing the Audio Gateway (AG) service that links Bluetooth devices by using the Winsock interface to the Bluetooth Protocol Stack. This service provides the functionality to interface with TAPI to control a cellular phone and route audio to the Bluetooth chip.

The AG service is implemented as a DLL, Btagsvc.dll that resides in Services.exe and can be controlled by external modules through IOCTLs provided by Services.exe.

The AG service supports audio routing by using the audio driver message, WODM_BT_SCO_AUDIO_CONTROL, that routes audio to the Bluetooth chip.

Headset and Hands-free Profiles架構(gòu)圖:

由此可見,微軟已經(jīng)提供了語音網(wǎng)關(guān)服務(wù)來支持藍牙耳機,所以,我們要做的也就是將語音網(wǎng)關(guān)服務(wù)(AG)Enable.#p#

◆藍牙耳機的工作原理

下面重點講述下藍牙耳機的工作原理:

關(guān)于音頻流的藍牙傳輸可以通過兩個方式:

1) 通過PCM接口來傳送

2)通過模擬UART來傳送

下面分別來講述:

1)通過PCM接口來傳送

通過音頻播放器(eg: Media Player)來打開音頻文件,調(diào)用Audio驅(qū)動,音頻文件通過解碼后,由PCM輸出到Host端藍牙模塊的PCM輸入端,接著,經(jīng)過藍牙模塊的處理后,由RF無線模塊發(fā)送給Client 端藍牙設(shè)備.

Client 端藍牙設(shè)備經(jīng)由無線接收模塊后,濾波,穩(wěn)壓,經(jīng)微處理芯片處理后,直接由Speaker播放.

2)通過模擬UART來傳送

通過設(shè)置注冊表【HKEY_LOCAL_MACHINE\Services\BTAGSVC】   IsEnabled =1 使得系統(tǒng)引導(dǎo)時自動加載語音網(wǎng)關(guān)(AG)服務(wù).

首先,通過手動配置建立Host端藍牙設(shè)備與Client端藍牙設(shè)備ACL鏈接(面向無連接的異步鏈路),接著在Applicaiton或Audio Driver中調(diào)用 IOCTL_AG_OPEN_AUDIO,重新建立Host端藍牙設(shè)備與Client端藍牙設(shè)備SCO鏈接(面向連接的同步鏈路),接著AG自動發(fā)送waveOutMessage((HWAVEOUT)i, WODM_BT_SCO_AUDIO_CONTROL, 0, TRUE); 從而建立了Audio至藍牙芯片之間的通道,也即,實現(xiàn)了音頻流到藍牙模塊的傳送.

然后,經(jīng)由主機端藍牙模塊將音頻流打包經(jīng)由RF模塊發(fā)送出去.

客戶端藍牙耳機接收到無線音頻包后,濾波,穩(wěn)壓,經(jīng)微處理芯片處理后,由PCM傳送給音頻編解碼器芯片,最后,由Speaker播放.

下面這段段碼是建立Host端藍牙設(shè)備與Client端藍牙設(shè)備SCO鏈路

  1. HANDLE h = CreateFile(L"BAG0:",0,0,NULL,OPEN_EXISTING,0,NULL);  
  2.     if (INVALID_HANDLE_VALUE == h) {  
  3.         wprintf(L"Error calling CreateFile on Audio Gateway.\r\n");  
  4.         return 0;  
  5.     }  
  6.  
  7. if (onaudio==1) {  
  8.                 wprintf(L"Opening Bluetooth audio...\n");  
  9.                   
  10.                 BOOL fStatus = DeviceIoControl(h,IOCTL_AG_OPEN_AUDIO,NULL,0,NULL,0,NULL,NULL);  
  11.                 if (FALSE == fStatus) {  
  12.                     wprintf(L"Operation failed: %d.\n", GetLastError());  
  13.                 }  
  14.                 else {  
  15.                     wprintf(L"Operation successful.\n");      
  16.                 }  
  17.               
  18.                 CloseHandle(h);  
  19.                 return 0;  
  20.             }  
  21.             else if (onaudio==0) {  
  22.                 wprintf(L"Closing Bluetooth audio...\n");  
  23.                   
  24.                 BOOL fStatus = DeviceIoControl(h,IOCTL_AG_CLOSE_AUDIO,NULL,0,NULL,0,NULL,NULL);  
  25.                 if (FALSE == fStatus) {  
  26.                     wprintf(L"Operation failed: %d.\n", GetLastError());  
  27.                 }  
  28.                 else {  
  29.                     wprintf(L"Operation successful.\n");      
  30.                 }  
  31.                   
  32.                 CloseHandle(h);  
  33.                 return 0;  
  34.             } 

到這里,相信大家對藍牙協(xié)議棧和語音網(wǎng)關(guān)的相關(guān)知識都有所掌握了,那么希望本文的總結(jié),對大家能夠有所幫助。

責(zé)任編輯:佟健 來源: hi.baidu.com
相關(guān)推薦

2010-09-08 11:59:38

藍牙協(xié)議棧

2010-09-08 09:49:28

藍牙協(xié)議棧

2010-09-08 12:16:18

2010-09-08 14:59:27

藍牙協(xié)議棧

2010-09-08 15:06:26

藍牙協(xié)議棧

2020-07-09 08:14:43

TCPIP協(xié)議棧

2022-08-04 08:44:31

Android系統(tǒng)攻擊鏈

2024-06-27 08:26:10

LooperAndroid內(nèi)存

2023-02-28 09:07:18

ChatGPTAI

2010-09-08 14:49:09

藍牙協(xié)議棧

2024-08-14 18:18:47

2021-07-05 07:51:43

JVM底層Python

2019-12-06 10:59:20

JavaScript運行引擎

2021-07-12 09:45:36

NameServer 核心Conusmer

2021-01-12 14:46:34

Kubernetes開發(fā)存儲

2010-09-10 09:29:29

藍牙IVT Bluelet協(xié)議棧

2010-07-08 14:54:30

BitTorrent協(xié)

2010-09-08 15:15:12

TCP IP協(xié)議棧

2017-09-14 14:43:07

NLP入門模型

2021-12-01 18:36:35

屬性
點贊
收藏

51CTO技術(shù)棧公眾號