小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

藍(lán)牙連接的建立過程

 昵稱5169677 2016-06-19

物理信道(physical channel)是藍(lán)牙系統(tǒng)的最底層結(jié)構(gòu),它以一偽隨機(jī)跳頻序列、特定的發(fā)送時(shí)槽定時(shí)、接入碼及幀頭編碼來(lái)表征。藍(lán)牙定義了一系列物理信道用于不同的應(yīng)用,包括用于匹克網(wǎng)內(nèi)設(shè)備通信的匹克網(wǎng)物理信道,用于查找設(shè)備的查找掃描物理信道和用于尋呼設(shè)備的尋呼掃描物理信道。兩臺(tái)設(shè)備必須采用相同的物理信道才能進(jìn)行通信。主從設(shè)備建立連接的過程就是建立相同的匹克網(wǎng)信道的過程,這樣主從設(shè)備才能以同樣的定時(shí)和次序進(jìn)行載波頻率的跳變,進(jìn)行數(shù)據(jù)傳輸,

同時(shí)可以根據(jù)匹克網(wǎng)接入碼和幀頭編碼進(jìn)行數(shù)據(jù)過濾和解析,避免和其他設(shè)備在同一個(gè)頻段上的偶爾的相撞。


1.查詢掃描過程


2.尋呼掃描過程

尋呼掃描物理信道(page scan physical channel)用于主設(shè)備尋呼從設(shè)備,是設(shè)備建立連接的必經(jīng)階段,主從設(shè)備是匹克網(wǎng)內(nèi)設(shè)備的概念,這里用來(lái)指發(fā)起尋呼的設(shè)備和尋呼掃描設(shè)備。尋呼掃描跳頻序列和尋呼請(qǐng)求幀的設(shè)備接入碼-DAC是由從設(shè)備物理地址運(yùn)算出來(lái)的,主設(shè)備以該跳頻序列進(jìn)行載波頻率的跳變并在發(fā)送時(shí)間槽內(nèi)發(fā)送尋呼請(qǐng)求,處于可被連接模式的從設(shè)備以固定的周期(由page scan interval決定)在一個(gè)固定的時(shí)間窗(由page scan window決定)內(nèi)以某個(gè)跳頻頻率監(jiān)聽主設(shè)備的尋呼請(qǐng)求,監(jiān)聽到請(qǐng)求便在下個(gè)時(shí)間槽立即發(fā)送從設(shè)備尋呼響應(yīng)(slave page response),主設(shè)備在收到從設(shè)備尋呼響應(yīng)的下個(gè)時(shí)間槽發(fā)送主設(shè)備尋呼響應(yīng)(master page response),該響應(yīng)中包含了由主設(shè)備地址運(yùn)算出來(lái)的跳頻序列信息和時(shí)鐘相位,從設(shè)備接收到這些信息便進(jìn)入連接狀態(tài)并自動(dòng)成為匹克網(wǎng)的從設(shè)備,并再次返回從設(shè)備尋呼響應(yīng),主設(shè)備收到該響應(yīng)后進(jìn)入連接狀態(tài)并自動(dòng)成為匹克網(wǎng)的主設(shè)備。


應(yīng)用層的連接是建立在匹克網(wǎng)物理信道之上的邏輯連接,主設(shè)備通過SDP查詢從設(shè)備相應(yīng)服務(wù)的邏輯通道號(hào),依據(jù)該通道建立應(yīng)用

層級(jí)的連接。


協(xié)議棧已經(jīng)有了,使用藍(lán)牙是非常簡(jiǎn)單的事情。

    (1)找到藍(lán)牙設(shè)備,這是HCI層負(fù)責(zé)的,使用bluez-utils包提供的hcitool來(lái)找到藍(lán)牙設(shè)備。

    (2)找到服務(wù),RFCOMM是通過不同的頻道(channel)來(lái)提供不同的Profile的,所以需要找到要用的服務(wù)在設(shè)備上的哪個(gè)頻道上,這是通過同一個(gè)軟件包里的sdptool來(lái)完成的,就是SDP,服務(wù)發(fā)現(xiàn)協(xié)議。

    (3)連接恰當(dāng)?shù)姆?wù)并使用。

    藍(lán)牙的特點(diǎn)就是如上所述的那些了,而用戶態(tài)的工具所要完成的任務(wù)就是發(fā)現(xiàn)服務(wù)和使用服務(wù)了。


連接的建立:

藍(lán)牙系統(tǒng)有三種主要狀態(tài):待機(jī)狀態(tài),連接狀態(tài)和節(jié)能狀態(tài)。從待機(jī)狀態(tài)向連接狀態(tài)轉(zhuǎn)變的過程中,有7個(gè)子狀態(tài):尋呼、尋呼掃描、查詢、查詢掃描、主響應(yīng)、從響應(yīng)、查詢響應(yīng)。


1.啟動(dòng)HCI設(shè)備
    首先,用戶需要啟動(dòng)hcid,讓HCI層的通信可以進(jìn)行。對(duì)于Debian用戶來(lái)說,需要安裝bluez-utils包,并啟動(dòng)hcid。如果已經(jīng)運(yùn)行了bluetooth服務(wù),插入U(xiǎn)SB適配器后,hcid就已經(jīng)在運(yùn)行了,看看相關(guān)信息,見清單15.2。

清單15.2  HCI接口信息

1    inspiration :/ etc/ bluetooth # hciconfig -a

hci 0:  Type : USB

3            BD Address : 11:11:11:11:11:11 ACL MTU: 678:8 SCO MTU: 48:10

        UP RUNNING PSCAN ISCAN

5            RX bytes :413 acl :0 sco :0 events :19 errors :0

        TX bytes :323 acl :0 sco :0 commands :19 errors :0

7            Features : 0xbf 0xfe 0x8d 0x78 0x08 0x18 0x00 0x00

        Packet type : DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3

9            Link policy : RSWITCH HOLD SNIFF PARK

        Link mode : MASTER

11           Name : 'inspiration -0'

        Class : 0x3e 0100

13           Service Classes : Networking , Rendering , Capturing , Object Transfer , Audio

        Device Class : Computer , Uncategorized

15           HCI Ver : 1.2 (0x2) HCI Rev : 0x1fe LMP Ver : 1.2 (0x2) LMP Subver : 0x1fe

             Manufacturer : Integrated System Solution Corp . (57)

    這個(gè)過程是自動(dòng)的,當(dāng)然也可以用hciconfig(8)來(lái)手工控制。hcid的配置文件位于/etc/bluetooth/hcid.conf, 通常使用軟件包附帶的版本就可以了,如果希望不用每次連接都在計(jì)算機(jī)這里確認(rèn)一次PIN碼的話,可以設(shè)置其中的security字段為auto,這樣,每 次連接就會(huì)使用passkey設(shè)置的PIN碼了。


2.尋找藍(lán)牙設(shè)備
    HCI已經(jīng)啟動(dòng)了,現(xiàn)在就可以用它來(lái)尋找藍(lán)牙設(shè)備了,當(dāng)然,一定要先開啟藍(lán)牙設(shè)備的藍(lán)牙功能,這個(gè)不是廢話,手機(jī)的藍(lán)牙是 默認(rèn)關(guān)閉的,只有在手動(dòng)控制之下才會(huì)發(fā)送信號(hào),允許被掃描到,不過設(shè)備的個(gè)體差異性太大,這里沒法介紹,作者假設(shè)讀者已經(jīng)自己摸索或參照說明書打開了設(shè)備 的藍(lán)牙電源。尋找藍(lán)牙設(shè)備如清單15.3所示。

清單15.3  尋找藍(lán)牙設(shè)備

inspiration :/ home / gnawux # hcitool scan

18   Scanning ...

        00:17:00:7 B :18: B8         Motorola SLVR

之后藍(lán)牙設(shè)備就會(huì)被順利地找到,當(dāng)然,前提是不要忘了打開手機(jī)的藍(lán)牙開關(guān),并允許被找,這個(gè)功能平時(shí)最好不要打開,以防在公共場(chǎng)合遇到安全問題。


3.查看設(shè)備提供的服務(wù)
利用SDP協(xié)議,用戶還可以查看每個(gè)設(shè)備都有功能,能提供什么服務(wù),每種基于RFCOMM的服務(wù)都使用某種協(xié)議,占據(jù)一個(gè)“頻道(channel)”,這是使用藍(lán)牙服務(wù)時(shí)的一個(gè)重要參數(shù)。

下面是例子,先看看本機(jī),見清單15.4。

清單15.4  本機(jī)提供的藍(lán)牙服務(wù)

20   gnawux@inspiration :~$ sdptool browse local

Browsing FF:FF:FF :00:00:00 ...

22   Service Name : OBEX Object Push

Service RecHandle : 0x10000

24   Service Class ID List :

  " OBEX Object Push " (0x1105)

26   Protocol Descriptor List :

  "L2CAP" (0x0100)

28     "RFCOMM " (0x0003)

    Channel : 9

30     " OBEX " (0x0008)

Profile Descriptor List :

32     " OBEX Object Push " (0x1105)

     Version : 0x0100

然后可以看看關(guān)心的設(shè)備提供的服務(wù),手機(jī)提供的服務(wù)種類比較多,首先是SDP服務(wù)器,也就是服務(wù)發(fā)現(xiàn)服務(wù)器,有了這個(gè)服務(wù),就可以接下來(lái)發(fā)現(xiàn)其他服務(wù)功能了,見清單15.5。

清單15.5  手機(jī)提供的SDP功能

34   gnawux@inspiration :~$ sdptool browse 00:17:00:7 B :18: B8

Browsing 00:17:00:7 B :18: B8 ...

36   Service RecHandle : 0x0

Service Class ID List :

38    "SDP Server " (0x 1000)

Protocol Descriptor List :

40    "L2CAP" (0x 0100)

       "SDP" (0x 0001)

42   Profile Descriptor List :

  "SDP Server " (0x 1000)

44       Version : 0x 0100

手機(jī)的最基本功能就是用于(電話或網(wǎng)絡(luò))撥號(hào),這里列出的第一項(xiàng)服務(wù)也是“撥號(hào)網(wǎng)絡(luò)網(wǎng)關(guān)”,標(biāo)識(shí)服務(wù)具體類型的字段是“Service Class ID”,它所在的頻道是RFCOMM的頻道1,如清單15.6所示。

清單15.6  手機(jī)提供的撥號(hào)網(wǎng)絡(luò)功能

Service Name : Dialup Networking Gateway

46   Service Description : Dialup Networking Gateway

Service Provider : Motorola

48   Service RecHandle : 0x 10001

Service Class ID List :

50    " Dialup Networking " (0x 1103)

Protocol Descriptor List :

52    "L2CAP" (0x 0100)

       " RFCOMM " (0x 0003)

54        Channel : 1

Language Base Attr List :

56    code _ ISO 639: 0x 656e

 encoding :     0x6a

58    base _ offset : 0x 100

 code _ ISO 639: 0x7a68

60    encoding :     0x6a

 base _ offset : 0xc 800

62  Profile Descriptor List :

 " Dialup Networking " (0x 1103)

64        Version : 0x 0100

除了撥號(hào)網(wǎng)絡(luò)服務(wù)的頻道位置相對(duì)固定之外,其他服務(wù)在不同手機(jī)上的頻道通常是不同的,手機(jī)一般支持的其他服務(wù)包括音頻/耳機(jī)服務(wù)、車載免提服務(wù)、 OBEX對(duì)象推送服務(wù)、OBEX文件傳輸服務(wù)以及圖片推送服務(wù)等,利用這些服務(wù),可以利用手機(jī)撥號(hào)上網(wǎng)或是與手機(jī)交換圖片、音樂等文件。


15.2.4  使用藍(lán)牙
    首先介紹如何利用藍(lán)牙取代手機(jī)數(shù)據(jù)線,以便進(jìn)行撥號(hào)等工作。之后介紹利用藍(lán)牙傳送文件的幾個(gè)用法,都是借助于前面提到的OBEX協(xié)議。

1.用藍(lán)牙代替串口
    大家知道,藍(lán)牙的一個(gè)基本功能就是模仿串口,而串口的重要作用之一(可能是最重要的了)就是撥號(hào),傳統(tǒng)的DTE也就是Modem。實(shí)際上,通過RFCOMM,藍(lán)牙連接可以反映在/dev/rfcomm0這樣的字符設(shè)備上,像串口一樣操作。當(dāng)然,最好先定義/etc /bluetooth/ rfcomm.conf,里面根據(jù)手機(jī)的設(shè)備號(hào)和頻道號(hào)寫上相應(yīng)設(shè)置,見清單15.7。

清單15.7  rfcomm設(shè)置

rfcomm 0 {

66          # Automatically bind the device at startup

    bind yes ;

68

        # Bluetooth address of the device

70      device 00:17:00:7 B :18: B8;

72          # RFCOMM channel for the connection

    channel 1;

74

        # Description of the connection

76      comment " Motorola SLVR L7";

}

    這樣,在啟動(dòng)bluetooth服務(wù)的時(shí)候,就已經(jīng)自動(dòng)連接上了,而不需要使用rfcomm(1)命令自己費(fèi)力氣了?,F(xiàn)在,可以使用任意一個(gè)喜歡的串口程序(minicom、gtkterm等等)來(lái)對(duì)/dev/rfcomm0進(jìn)行操作了,當(dāng)然也可以使用pppd建立撥號(hào)網(wǎng)絡(luò)。


2.利用OBEX推送文件
    這是使用手機(jī)或計(jì)算機(jī)提供的“OBEX Object Push”(0x1105)服務(wù),由另一方向其推送如文件。使用的工具是openobex-apps包里的obex test工具。首先是利用手機(jī)的Push服務(wù)向手機(jī)推送,對(duì)于本例中的手機(jī),這是通過清單15.5所使用的sdptool命令得到的結(jié)果的一部分,清單 15.8所示。

清單15.8  手機(jī)提供的對(duì)象推送功能

78   Service Name : OBEX Object Push

Service Description : OBEX Object Push

80   Service Provider : Motorola

Service RecHandle : 0x 10008

82   Service Class ID List :

        " OBEX Object Push " (0x 1105)

84   Protocol Descriptor List :

        "L2CAP" (0x 0100)

86      " RFCOMM " (0x 0003)

       Channel : 8

88      " OBEX " (0x 0008)

可以看到,推送服務(wù)位于頻道8,現(xiàn)在,在obex_test的命令行里指定設(shè)備和頻道,如清單15.9所示。

清單15.9  向手機(jī)推送文件

gnawux@inspiration :~$ obex _ test -b 00:17:00:7 B :18: B8 8

90   Using Bluetooth RFCOMM transport

OBEX Interactive test client / server .

92  > c

Connect OK!

94   Version : 0x10. Flags : 0x00

> p wangxu . jpg me. jpg

96   PUT file (local , remote )> name = wangxu .jpg , size =34177

Going to send 34177 bytes

98   Made some progress ...

Made some progress ...

100  Made some progress ...

Made some progress ...

102  Made some progress ...

PUT successful !

104  > q

執(zhí)行完obex-test之后,進(jìn)入一個(gè)交互狀態(tài),首先建立連接,然后傳送文件(本地文件名是wangxu.jpg,存在手機(jī)上叫me.jpg(這個(gè)是隨意取的),最后退出。這個(gè)過程需要看著手機(jī)屏幕,可能要確認(rèn)是否連接,文件存放在哪里,這個(gè)和手機(jī)有關(guān)。

現(xiàn)在也可以看看手機(jī)向計(jì)算機(jī)推送,首先應(yīng)該讓計(jì)算機(jī)進(jìn)入接收狀態(tài),如果本地沒有啟動(dòng)Object PUSH服務(wù),可以利用sdptool把它加上,如清單15.10所示。

清單15.10  給計(jì)算機(jī)加上Object Push服務(wù)

gnawux@inspiration :~$ sdptool add OPUSH

106  OBEX Object Push service registered

現(xiàn)在進(jìn)入接收狀態(tài),注意要使用計(jì)算機(jī)(local)的地址和頻道號(hào),這些信息可以通過清單15.4所示方法得到,見清單15.11。

清單15.11  接收手機(jī)推送的文件

gnawux@inspiration :~$ obex _ test -b FF:FF:FF :00:00:00 9

108  Using Bluetooth RFCOMM transport

OBEX Interactive test client / server .

110  > s

現(xiàn)在,計(jì)算機(jī)進(jìn)入了接收模式,在手機(jī)側(cè)發(fā)送文件到計(jì)算機(jī)就可以了。


3.使用obexftp上傳下載
    使用“OBEX File Transfer”(0x1106)服務(wù)的obexftp是一個(gè)方便的工具,利用它可以查看手機(jī)上的內(nèi)容,并進(jìn)行上傳下載,對(duì)于本例,對(duì)應(yīng)的頻道是9。先來(lái)查看一下有哪些目錄,見清單15.12。

清單15.12  obexftp列目錄清單

 gnawux@inspiration :~$ obexftp -b 00:17:00:7 B :18: B8 -B 9 -l

112  Browsing 00:17:00:7 B :18: B8 ...

 Channel : 9

114  Connecting ... done

 Receiving "( null )"...|

116  

 

118  

 <="" p="">

 - perm =" RW" />

120        <="" p="">

      user - perm =" RW" />

 <="" p="">

 user - perm =" RW" />

121              000000 Z"      user - perm =" RW"

124    done

  Disconnecting ... done

可以看到,有4個(gè)有讀寫(RW)權(quán)限的目錄,再看看audio里面有什么,見清單15.13。

清單15.13  obexftp查看audio目錄

126  gnawux@inspiration :~$ obexftp -b 00:17:00:7 B :18: B8 -B 9 -l audio

 Browsing 00:17:00:7 B :18: B8 ...

128   Channel : 9

 Connecting ... done

130   Receiving " audio "...|

 

132  

 

134              Z" user   - perm =" RW"

136   done

 Disconnecting ... done

可以看到,這里有一個(gè)MP3文件,把它取下來(lái),如清單15.14所示。

清單15.14  obexftp下載

138   gnawux@inspiration :~$ obexftp -b 00:17:00:7 B :18: B8 -B 9 -c audio -g a.mp3

 Browsing 00:17:00:7 B :18: B8 ...

140   Channel : 9

 Connecting ... done

142   Sending " audio "... done

 Receiving "a.mp3"... - done

144   Disconnecting ... done

經(jīng)過一段漫長(zhǎng)的等待,傳送終于完成了。再把wangxu.jpg放到picture目錄去,如清單15.15所示。

清單15.15  obexftp下載

gnawux@inspiration :~$ obexftp -b 00:17:00:7 B :18: B8 -B 9 -c picture -p wangxu .jpg

146  Browsing 00:17:00:7 B :18: B8 ...

Channel : 9

148  Connecting ... done

Sending " picture "... done

150  Sending " wangxu .jpg "...\ done

Disconnecting ... done

這些就是obexftp的基本用法,更復(fù)雜的用法可以參考它的手冊(cè)頁(yè)obexftp(1)。此外,還有obexserver、qobex(基于QT的圖形化界面工具)等工具,此處不一一介紹。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多