日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 芯聞號 > 充電吧
[導讀]作者: Sam(甄峰)?sam_code@hotmail.com ? Linux下Bluetooth協(xié)議棧的實現(xiàn).Linux下開放的藍牙協(xié)議棧主要包括IBM公司的BlueDrekar,Nokia公司的

作者: Sam(甄峰)?sam_code@hotmail.com

?

Linux下Bluetooth協(xié)議棧的實現(xiàn).Linux下開放的藍牙協(xié)議棧主要包括IBM公司的BlueDrekar,Nokia公司的Affix,Axis公司的OpenBT和官方協(xié)議棧BlueZ。我們主要面對Bluez來探討。

?

BlueZ基礎代碼均是由MaximKrasnyansky完成的。包括:HCI,L2CAP,RFCOMM和基本socket的實現(xiàn)。他就職于Qualcomm(高通)。MarcelHoltmann開發(fā)層的協(xié)議和應用,包括:BNEP, CMTP等。當然,這些中也有MaximKrasnyansky的參預。有部分代碼由Nokia提供的。

Bluez是如何實現(xiàn)Bluetooth協(xié)議棧的呢? 它分2部分實現(xiàn):

?

1.Kernel層實現(xiàn):

正如上一篇所談到的,bluetooth協(xié)議棧有多層結構,最底層的硬件協(xié)議在硬件中就已經(jīng)實現(xiàn)了。(例如broadcom的芯片中,底層硬件協(xié)議已經(jīng)包含于芯片之中了)。軟件級別的協(xié)議實現(xiàn),從HCI這一層起就可以了。BlueZ對各層協(xié)議的實現(xiàn)是依托于Socket的。BlueZ首先創(chuàng)建了一個新的Socket中的協(xié)議--PF_BLUETOOTH?(AF_BLUETOOTH=31).(也就是說,Socket()的第一個參數(shù):domain必須是:PF_BLUETOOTH?)。這也意味著,地址類型需要使用Bluetooth所定義的。

?

其實很簡單,就是在net_families(網(wǎng)絡協(xié)議列表)中添加了PF_BLUETOOTH這一項。如果對LinuxKernel有了解的話,就知道這個注冊動作一定在Bluetooth init部分作的。

同樣,各個協(xié)議層(如:HCI,L2CAP,HID等)都將自己的行為規(guī)范添加到PF_BLUETOOTH協(xié)議中。

?

2.應用程序?qū)訉崿F(xiàn):

雖然Kernel層已經(jīng)將Bluetooth協(xié)議棧完全實現(xiàn)了,但如果要使用起來,還是非常不方便的。畢竟應用程序與kernel最方便的交流通道就是ioctl().這非常不直觀。于是,BlueZ又提供了一套API,這個API幫助開發(fā)者方便的與Kernel層協(xié)議打交道。當然,這些API底層的實現(xiàn)其就是是ioctl.

?

BlueZ的時間,基本就是這樣了。下面咱們具體研究如何使用BlueZ所提供的這套API。


本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉