久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux下Bluez的编程实现

發(fā)布時間:2023/12/15 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux下Bluez的编程实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>


藍(lán)牙的各個協(xié)議棧的簡介?2

1.1、藍(lán)牙技術(shù)?2

1.1、藍(lán)牙協(xié)議棧?2

1.2、藍(lán)牙技術(shù)的特點?4

1.2.1、藍(lán)牙協(xié)議棧體系結(jié)構(gòu)?4

1.2.2、藍(lán)牙協(xié)議棧低層模塊?5

1.2.3、軟件模塊?5

1.3、藍(lán)牙的一些Profile 6

2BluezD-Bus 8

2.1BluezD-Bus體系結(jié)構(gòu)?8

2.2D-Bus介紹?10

2.3Bluez的安全接口?14

2.4Bluez適配器接口?19

2.5Bluez配對?19

2.6Bluez綁定?20

3Bluez編程實現(xiàn)?21

3.1、藍(lán)牙開發(fā)關(guān)鍵技術(shù)剖析?21

3.1.1、連接機(jī)制分析?21

3.1.2、自動連接?21

3.1.3、時鐘設(shè)計?22

3.1.4、配對列表管理?23

3.1.5、藍(lán)牙文件傳輸模式?23

3.2hci層介紹?23

3.2.1hci層介紹?23

3.2.2hci層編程?24

3.3L2CAP層編程?28

3.3.1L2CAP協(xié)議簡介?28

3.3.2L2CAP編程方法?29

3.4SDP協(xié)議簡介?30

4Openobex 31

4.1Openobex簡介?31

4.2Openobexbluez編程實現(xiàn)?33

Obexftp 35

5.1obexftp簡介?35

5.2、基于Obexftp的應(yīng)用程序開發(fā)?35

6、參考資料?35

?

藍(lán)牙的各個協(xié)議棧的簡介

1.1、藍(lán)牙技術(shù)

??藍(lán)牙(Bluetooth)技術(shù)是由EricssonIBMIntelNokiaToshiba公司于19985月共同提出開發(fā)的,并聯(lián)合成立了藍(lán)牙特殊利益小組(SIG),負(fù)責(zé)開發(fā)無線協(xié)議規(guī)范并設(shè)定交互操作的需求。其本質(zhì)是設(shè)備間的無線鏈接,意在于代替有線電纜。

1.1、藍(lán)牙協(xié)議棧

協(xié)議棧是指一組協(xié)議的集合,舉個例子,把大象裝到冰箱里,總共要3步。每步就是一個協(xié)議,3步組成一個協(xié)議棧。把應(yīng)用層數(shù)據(jù)包發(fā)出去,也要好幾步,TCP/UDP頭,IP頭,ether頭,每步也是一個協(xié)議。另外每層都有一些特殊的協(xié)議。所有這些統(tǒng)稱協(xié)議棧。藍(lán)牙協(xié)議棧就是SIG定義的一組協(xié)議的規(guī)范,目標(biāo)是允許遵循規(guī)范的藍(lán)牙應(yīng)用能夠進(jìn)行相互間操作,如圖1.1藍(lán)牙協(xié)議棧

?

1.1?藍(lán)牙協(xié)議棧

在藍(lán)牙協(xié)議體系中,底層、中間層、應(yīng)用層按序排列構(gòu)成了藍(lán)牙協(xié)議棧,如左圖所示。底層(硬件層)和中間協(xié)議層(軟件層)之間?的接口使用主機(jī)控制器接口(HCI)HCI是軟硬件之間必不可少的接口,其功能是解釋并傳遞兩層之間的消息和數(shù)據(jù)。軟件通過HCI調(diào)用底層LMP/BBRF等硬件。HCI以下的功能由藍(lán)牙設(shè)備實施;HCI以上的功能由軟件運(yùn)行,在主機(jī)上實現(xiàn)。HCI對于上、下兩層數(shù)據(jù)的傳輸都是透明的。

在藍(lán)牙協(xié)議棧中,最主要的是藍(lán)牙核心協(xié)議,包括基帶協(xié)議(BP)、鏈路管理協(xié)議(LMP)、鏈接控制和適配協(xié)議(L2CAP)、服務(wù)發(fā)現(xiàn)協(xié)議(SDP)等。藍(lán)牙設(shè)備基本上都需要核心協(xié)議,其他協(xié)議則按藍(lán)牙設(shè)備的需要而選定。

?

1.2、藍(lán)牙技術(shù)的特點

1.2.1、藍(lán)牙協(xié)議棧體系結(jié)構(gòu)

整個藍(lán)牙協(xié)議體系結(jié)構(gòu)可分為底層硬件模塊、中間協(xié)議層和高端應(yīng)用層三大部分。鏈路管理層(LMP)、基帶層(BBP)和藍(lán)牙無線電信道構(gòu)成藍(lán)牙的底層模塊。BBP層負(fù)責(zé)跳頻和藍(lán)牙數(shù)據(jù)及信息幀的傳輸。

LMP層:負(fù)責(zé)連接的建立和拆除以及鏈路的安全和控制,它們?yōu)樯蠈榆浖K提供了不同的訪問人口,但是兩個模塊接口之間的消息和數(shù)據(jù)傳遞必須通過藍(lán)牙主機(jī)控制器接口的解釋才能進(jìn)行。也就是說,中間協(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ǔ),因此也是藍(lán)牙協(xié)議棧的核心部分。

SDP:為上層應(yīng)用程序提供一種機(jī)制來發(fā)現(xiàn)網(wǎng)絡(luò)中可用的服務(wù)及其特性。在藍(lán)牙協(xié)議棧的最上部是高端應(yīng)用層,它對應(yīng)于各種應(yīng)用模型的剖面,是剖面的一部分。目前定義了13種剖面。

1.2.2藍(lán)牙協(xié)議棧低層模塊

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

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

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

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

  藍(lán)牙采用三種糾錯方案:1/3前向糾錯(FEC)2/3前向糾錯和自動重發(fā)(ARQ)。前向糾錯的目的是減少重發(fā)的可能性,但同時也增加了額外開銷。然而在一個合理的無錯誤率環(huán)境中,多余的投標(biāo)會減少輸出,故分組定義的本身也保持靈活的方式,因此,在軟件中可定義是否采用FEC。一般而言,在信道的噪聲干擾比較大時藍(lán)牙系統(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)消息,否則返回一個錯誤消息。

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

1.2.3、軟件模塊

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

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

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

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

1.3、藍(lán)牙的一些Profile

藍(lán)牙里面profile的定義,profile既是配置文件,配置文件定義了可能的應(yīng)用,藍(lán)牙配置文件表達(dá)了一般行為,藍(lán)牙設(shè)備可以通過這些行為與其它設(shè)備進(jìn)行通信。藍(lán)牙技術(shù)定義了廣泛的配置文件,描述了許多不同類型的使用案例。按照藍(lán)牙規(guī)格中提供的指導(dǎo),開發(fā)商可以創(chuàng)建應(yīng)用程序以與其它符合藍(lán)牙規(guī)格的設(shè)備協(xié)同工作。 到目前為止,藍(lán)牙一共有22profile,在www.bluetooth.com§上有詳細(xì)的文檔說明。

已經(jīng)實現(xiàn)了的協(xié)議棧:

Widcomm:?第一個windows上的協(xié)議棧,由Widcomm公司開發(fā),也就是現(xiàn)在的Broadcom .

Microsoft Windows stack: Windows XP SP2中包括了這個內(nèi)建的協(xié)議棧,開發(fā)者也可以調(diào)用其API開發(fā)第三方軟件。

Toshiba stack:?它也是基于Windows的,不支持第三方開發(fā),但它把協(xié)議棧授權(quán)給一些laptop商)。它支持的Profile有:?SPP, DUN, FAX, LAP, OPP, FTP, HID, HCRP, PAN, BIP, HSP, HFP , A2DP, AVRCP, GAVDP

BlueSoleil:?著名的IVT公司的產(chǎn)品,這個應(yīng)該是個中國公司。該產(chǎn)品可以用于桌面和嵌入式,他也支持第三方開發(fā),DUN, FAX, HFP, HSP, LAP, OBEX, OPP, PAN SPP, AV, BIP, FTP, GAP, HID, SDAP, and SYNC

Bluez: Linux官方協(xié)議棧,該協(xié)議棧的上層用Socket封裝,便于開發(fā)者使用,通過DBUS與其它應(yīng)用程序通信。

Affix: NOKIA公司的協(xié)議棧,在Symbian系統(tǒng)上運(yùn)行。

BlueDragon:東軟公司產(chǎn)品,支持的ProfileSDPSerial-DevBAVCTPAVRCP-ControllerAVRCP-TargetHeadset-AGHeadset-HSOPP-ClientOPP-ServerCT-GWCT-TermIntercomFT-ServerFT-ClientGAPSDAPSerial-DevAAVDTPGAVDPA2DP-SourceA2DP-Sink

BlueMagic:美國Open Interface?公司for portable embedded divce的協(xié)議棧,iphone(apple)nav-u(sony)等很多電子產(chǎn)品都用該商業(yè)的協(xié)議棧,BlueMagic 3.0是第一個通過bluetooth?協(xié)議棧1.1認(rèn)證的協(xié)議棧,那么我現(xiàn)在就在用它,那么該棧用起來簡單,API清晰明了。實現(xiàn)了的profile:HCI,L2CAP,RFCOMM,A/V,Remote,Control,A/V,Streaming,BIP,BPP,DUN,FAX,FTP,GAP,Hands-Free,and,Headset,HCRP,HID,OBEX,OPP,PAN,BNEP,PBAP,SAP,SPP,Synchronization,SyncML,Telephony,XML.

BCHS-Bluecore Host Software:?藍(lán)牙芯片CSR的協(xié)議棧,同時他也提供了一些上層應(yīng)用的Profile的庫。

Windows CE:微軟給Windows CE開發(fā)的協(xié)議棧,但是windows ce本身也支持其它的協(xié)議棧。

BlueLetIVT公司for embedded product的清量級協(xié)議棧。

2BluezD-Bus

2.1BluezD-Bus體系結(jié)構(gòu)

?

The?BlueZ?D-Bus?interfaces aim to provide seamless Bluetooth technology integration into the desktop. A central Bluetooth daemon "hcid"(planned to be renamed to bluetoothd) is responsible for take care of all tasks that can’t or shouldn’t be handled inside the Linux kernel. These jobs include PIN code and link key management for the authentication and encryption, caching of device names and services and also central control of the Bluetooth hardware. The interface exported allows to abstract the internals of GNOME, KDE,Maemo,?OpenMoko, ... applications from any technical details of the Bluetooth specification. Even other application will get access to the Bluetooth technology without any hassle.

BluezD-bus接口,提供了藍(lán)牙技術(shù)和桌面系統(tǒng)的完美集成。藍(lán)牙的中心守護(hù)進(jìn)程hcid的職責(zé)就是處理那些不能被linux內(nèi)核處理的任務(wù),包括處理為鑒權(quán)和加密過程中需要的PIN碼和密鑰、緩存設(shè)備的名稱和服務(wù)類型,同時也是藍(lán)牙硬件的控制中心。

The BlueZ?D-Bus?services are exported through the system message bus. Every D-Bus enabled desktop has a system message bus instance running. This bus is used to broadcast system events, such as new hardware devices, network connection status, and so forth. The session message bus is not suitable for this architecture since the Bluetooth hardware/connections are shared by all desktop sessions.

BluezD-bus服務(wù)通過系統(tǒng)消息總線提供。每個D - Bus使桌面有一個系統(tǒng)消息總線實例運(yùn)行。這個bus是用來廣播系統(tǒng)時間,如新的硬件設(shè)備、網(wǎng)絡(luò)連接狀態(tài)等等。會話消息總線對這種體系結(jié)構(gòu)是不適合的,因為藍(lán)牙硬件/連接被所有桌面會話共享。

The BlueZ D-Bus Architecture goal are:

  • Abstract Bluetooth HCI commands/events

  • Provide an easy interface to setup Bluetooth adapter and manage the services

BluezD-bus體系結(jié)構(gòu)的目標(biāo):

  • 抽象hci層命令和事件。

  • 提供簡單的接口來啟動藍(lán)牙適配器和管理藍(lán)牙服務(wù)。

The hcid is the main entity of the architecture. It implements methods to setup the Bluetooth adapters, retrieve remote device properties, control the pairing procedure and control the services registration/searches. The following figure shows a high level relationship between the entities.

Hcid是該體系結(jié)構(gòu)的主體。它實現(xiàn)啟動藍(lán)牙適配器的方法、獲取遠(yuǎn)端設(shè)備屬性、控制配對過程和控制服務(wù)的注冊和搜索。下圖顯示了一個高層次的實體之間的關(guān)系。

?

2.2D-Bus介紹

什么是D-Bus

D-BUS?是一種進(jìn)程間通信的方式,從架構(gòu)上來說,分為三層:

  • 一個庫,libdbus,允許2個進(jìn)程間交換信息。

  • 一個消息總線守護(hù)進(jìn)程, 它使用libdbus庫。其他進(jìn)程都可以與它連接。它可以將消息從一個進(jìn)程發(fā)給另外任意數(shù)量的其他進(jìn)程。現(xiàn)在有一些基于特定應(yīng)用框架的dbus庫函數(shù)封裝,例如libdbus-glib?libdbus-qt,也有與一些語言綁定的形式,例如Python等。這些封裝的API旨在令D-BUS編程更加簡單,libdbus傾向于提供更低層次的調(diào)用。很多libdbus API只在綁定的組件中可用。

  • libdbus僅支持一對一的連接,就像原始?socket通訊方式一樣。但它傳遞的不是以字節(jié)為單位的數(shù)據(jù)流,而是具有一定意義的消息包。消息的消息頭部表示消息種類,消息體用來裝載數(shù)據(jù)。Libdbus也可以允許實現(xiàn)特定的傳輸通道,從而來完成比如像認(rèn)證之類的應(yīng)用細(xì)節(jié)(libdbus also abstracts the exact transport used (sockets vs. whatever else), and handles details such as authentication.)。

  • 消息總線守護(hù)進(jìn)程將D-bus上連接的所有程序構(gòu)成一個輪形hubLibdbus為中心,它和應(yīng)用程序建立一對一的連接。每個應(yīng)用程序通過通道發(fā)送消息到消息總線,然后總線進(jìn)程將消息轉(zhuǎn)發(fā)到其他連接到hub的應(yīng)用程序。可以把消息總線理解為一個路由器。Dbus服務(wù)在一個操作系統(tǒng)中存在多個進(jìn)程。第一個進(jìn)程是一個全局進(jìn)程,就如sendmail?Apache?的系統(tǒng)守護(hù)進(jìn)程一樣。這個進(jìn)程具有高度的安全限制,一般用于系統(tǒng)進(jìn)程間的通訊。其他的dbus進(jìn)程都是用戶進(jìn)程,針對于每個登錄的用戶建立。這些實例允許用戶會話中的應(yīng)用程序相互通信。Dbus全局進(jìn)程和用戶進(jìn)程是相互獨(dú)立的,他們并沒有內(nèi)在的依賴關(guān)系。

    D-Bus應(yīng)用

    有很多種IPC或者網(wǎng)絡(luò)通信系統(tǒng),如:CORBADCEDCOMDCOPXML-RPCSOAPMBUSICE等。Dbus的目的主要是下面兩點:

  • 在同一個桌面會話中,進(jìn)行桌面應(yīng)用程序之間的通訊。

  • 桌面程序和內(nèi)核或者守護(hù)進(jìn)程之間通信。

  • D-Bus概念

    對象路徑(Native Objects and Object Paths):D-Bus的底層接口,和libdbus相關(guān),它提供一種叫對象路徑(object path),用于讓高層接口綁定到各個對象中去,允許遠(yuǎn)端應(yīng)用程序指向他們。Object path就像一個文件路徑。

    方法和信號(Methods and Signals):每個對象都有一些成員,有兩種成員:方法(methods)和信號(signals),在對象中,方法可以被調(diào)用。信號會被廣播,感興趣的對象可以處理這個信號,同時信號中也可以帶有相關(guān)的數(shù)據(jù)。

    接口(Interfaces):每個對象都有一個或者多個接口,一個接口就是多個方法和信號的集合。這個概念和Glib, Qt或者Java中的是一致的。接口定義了對象實例的類型。dbus使用簡單的命名空間字符串來表示接口,如org.freedesktop.Introspectable。可以說dbus接口相當(dāng)于C++中的純虛類。

    代理(Proxies):使用代理對象就是讓調(diào)用者感覺在直接使用遠(yuǎn)程對象一樣。d-bus的底層接口完成了一些比較低級和繁瑣的調(diào)用過程,比如必須先調(diào)用創(chuàng)建方法形成消息包,然后發(fā)送,然后等待接受和處理返回的消息。所以,高層的接口就可以使用代理對象提供的接口屏蔽這些細(xì)節(jié)。所以,當(dāng)調(diào)用代理對象的方法時,代理內(nèi)部會轉(zhuǎn)換成dbus的方法調(diào)用,等待消息返回,對返回結(jié)果解包,返回給相應(yīng)的方法。可以看看下面的例子,使用dbus底層接口編寫的代碼:

    Message message = new Message(”/remote/object/path”, “MethodName”, arg1, arg2);
    Connection connection = getBusConnection();
    connection.send(message);
    Message reply = connection.waitForReply(message);
    if (reply.isError()) {

    } else {
    Object returnValue = reply.getReturnValue();
    }

    使用代理對象編寫的代碼:

    Proxy proxy = new Proxy(getBusConnection(), “/remote/object/path”);
    Object returnValue = proxy.MethodName(arg1, arg2);

    客戶端代碼減少很多。

    總線名稱(Bus Names):當(dāng)一個應(yīng)用程序連接上bus daemon時,daemon會分配一個唯一的名字給它。以冒號(:)開始,這些名字在daemon的生命周期中是不會改變的,可以認(rèn)為這些名字就是一個?IP地址。當(dāng)這個名字映射到應(yīng)用程序的連接上時,應(yīng)用程序可以說擁有這個名字。同時應(yīng)用可以聲明額外的容易理解的名字,比如可以取一個名字?com.mycompany.TextEditor,可以認(rèn)為這些名字就是一個域名。其他應(yīng)用程序可以往這個名字發(fā)送消息,執(zhí)行各種方法。

    名字還有第二個重要的用途,可以用于跟蹤應(yīng)用程序的生命周期。當(dāng)應(yīng)用退出(或者崩潰)時,與bus的連接將被OS內(nèi)核關(guān)掉,bus將會發(fā)送通知,告訴剩余的應(yīng)用程序,該程序已經(jīng)丟失了它的名字。名字還可以檢測應(yīng)用是否已經(jīng)啟動,這可以用來實現(xiàn)單實例啟動程序。

    地址(Addresses):使用d-bus的應(yīng)用程序既可以是server也可以是clientserver監(jiān)聽到來的連接,client連接到server,一旦連接建立,消息就可以流轉(zhuǎn)。如果使用dbus daemon,所有的應(yīng)用程序都是clientdaemon監(jiān)聽所有的連接,應(yīng)用程序初始化連接到daemondbus地址指明server將要監(jiān)聽的地方,client將要連接的地方,例如,地址:unix:path=/tmp/abcdef表明?server將在/tmp/abcdef路徑下監(jiān)聽unix域的socketclient也將連接到這個socket。一個地址也可以指明是TCP /IPsocket,或者是其他的。

    當(dāng)使用bus daemon時,libdbus會從環(huán)境變量中(DBUS_SESSION_BUS_ADDRESS)自動認(rèn)識“會話daemon”的地址。如果是系統(tǒng)?daemon,它會檢查指定的socket路徑獲得地址,也可以使用環(huán)境變量(DBUS_SESSION_BUS_ADDRESS)進(jìn)行設(shè)定。當(dāng)dbus中不使用daemon時,需要定義哪一個應(yīng)用是server,哪一個應(yīng)用是client,同時要指明server的地址,這不是很通常的做法。

    D-bus工作原理

    Calling a Method – Behind the Scenes
    dbus中調(diào)用一個方法包含了兩條消息,進(jìn)程A向進(jìn)程B發(fā)送方法調(diào)用消息,進(jìn)程B向進(jìn)程A發(fā)送應(yīng)答消息。所有的消息都由daemon進(jìn)行分派,每個調(diào)用的消息都有一個不同的序列號,返回消息包含這個序列號,以方便調(diào)用者匹配調(diào)用消息與應(yīng)答消息。調(diào)用消息包含一些參數(shù),應(yīng)答消息可能包含錯誤標(biāo)識,或者包含方法的返回數(shù)據(jù)。

    方法調(diào)用的一般流程:

    1.使用不同語言綁定的dbus高層接口,都提供了一些代理對象,調(diào)用其他進(jìn)程里面的遠(yuǎn)端對象就像是在本地進(jìn)程中的調(diào)用一樣。應(yīng)用調(diào)用代理上的方法,代理將構(gòu)造一個方法調(diào)用消息給遠(yuǎn)端的進(jìn)程。

    2.DBUS的底層接口中,應(yīng)用需要自己構(gòu)造方法調(diào)用消息(method call message),而不能使用代理。

    3.方法調(diào)用消息里面的內(nèi)容有:目的進(jìn)程的bus name,方法的名字,方法的參數(shù),目的進(jìn)程的對象路徑,以及可選的接口名稱。

    4.方法調(diào)用消息是發(fā)送到bus daemon中的。

    5.bus daemon查找目標(biāo)的bus name,如果找到,就把這個方法發(fā)送到該進(jìn)程中,否則,daemon會產(chǎn)生錯誤消息,作為應(yīng)答消息給發(fā)送進(jìn)程。

    6.目標(biāo)進(jìn)程解開消息,在dbus底層接口中,會立即調(diào)用方法,然后發(fā)送方法的應(yīng)答消息給daemon。在dbus高層接口中,會先檢測對象路徑,接口,方法名稱,然后把它轉(zhuǎn)換成對應(yīng)的對象(如GObjectQT中的QObject等)的方法,然后再將應(yīng)答結(jié)果轉(zhuǎn)換成應(yīng)答消息發(fā)給daemon

    7.bus daemon接受到應(yīng)答消息,將把應(yīng)答消息直接發(fā)給發(fā)出調(diào)用消息的進(jìn)程。

    8.應(yīng)答消息中可以包容很多返回值,也可以標(biāo)識一個錯誤發(fā)生,當(dāng)使用綁定時,應(yīng)答消息將轉(zhuǎn)換為代理對象的返回值,或者進(jìn)入異常。

    bus daemon不對消息重新排序,如果發(fā)送了兩條消息到同一個進(jìn)程,他們將按照發(fā)送順序接受到。接受進(jìn)程并需要按照順序發(fā)出應(yīng)答消息,例如在多線程中處理這些消息,應(yīng)答消息的發(fā)出是沒有順序的。消息都有一個序列號可以與應(yīng)答消息進(jìn)行配對。

    Emitting a Signal – Behind the Scenes
    dbus中一個信號包含一條信號消息,一個進(jìn)程發(fā)給多個進(jìn)程。也就是說,信號是單向的廣播。信號可以包含一些參數(shù),但是作為廣播,它是沒有返回值的。

    信號觸發(fā)者是不了解信號接受者的,接受者向daemon注冊感興趣的信號,注冊規(guī)則是”match rules”,記錄觸發(fā)者名字和信號名字。daemon只向注冊了這個信號的進(jìn)程發(fā)送信號。

    信號的一般流程如下:

  • 當(dāng)使用dbus底層接口時,信號需要應(yīng)用自己創(chuàng)建和發(fā)送到daemon,使用dbus高層接口時,可以使用相關(guān)對象進(jìn)行發(fā)送,如Glib里面提供的信號觸發(fā)機(jī)制。

  • 信號包含的內(nèi)容有:信號的接口名稱,信號名稱,發(fā)送進(jìn)程的bus name,以及其他參數(shù)。

  • 任何進(jìn)程都可以依據(jù)”match rules”注冊相關(guān)的信號,daemon有一張注冊的列表。

  • daemon檢測信號,決定哪些進(jìn)程對這個信號感興趣,然后把信號發(fā)送給這些進(jìn)程

  • 每個進(jìn)程收到信號后,如果是使用了dbus高層接口,可以選擇觸發(fā)代理對象上的信號。如果是dbus底層接口,需要檢查發(fā)送者名稱和信號名稱,然后決定怎么做。

  • 2.3Bluez的安全接口

    pin_helper concept has been removed starting with bluez-utils 3.X. and has been replaced with a feature called passkey agents. An application that wants to handle passkey requests must use the "hcid" security interface to register a passkey agent. Currently, two types of passkey agents are supported: default and device specific. A "specific" passkey agent handles all passkey requests for a given remote device while a default handles all requests for which a specific agent was not found. "specific" passkey agents are useful to address pre-defined passkey values or environments where the user interaction is not allowed/difficult.

    When the?CreateBonding?method is called the "hcid" daemon will verify if there is a link key stored in the file system. If it is available an error is returned, and if not, a D-Bus message is sent to the registered passkey agent asking for a passkey.

    Each Passkey Agent is represented by a D-Bus object path. The "hcid" distinguishes the agents based on their unique bus names and their object paths.

    Pin_help的理念在bluez-util 3.x時已經(jīng)被移除,并被密鑰代理所代替。任何想處理密鑰請求的應(yīng)用程序必須使用hcid安全接口來注冊密鑰代理。現(xiàn)在支持兩種類型的密鑰代理:默認(rèn)和設(shè)備特定。一個"特定"的密鑰代理處理所有遠(yuǎn)端的密鑰請求,一個默認(rèn)的密鑰代理,處理特定的代理所沒有發(fā)現(xiàn)的所有密鑰請求。"特定"的密鑰代理對處理那些和用戶交互困難或者不允許用戶交互的設(shè)備的預(yù)定義的密鑰值或環(huán)境非常有用。

    當(dāng)CreateBonding方法被調(diào)用時,hcid守護(hù)進(jìn)程將確認(rèn)當(dāng)前的文件系統(tǒng)中是否保存了鏈接密鑰,若可以找到,就返回一個錯誤。若找不到,D-Bus消息將被發(fā)出來為密鑰請求的設(shè)備,注冊一個密鑰代理。每個密鑰代理被D-Bus對象路徑所體現(xiàn),hcid依據(jù)唯一的總線名稱和對象路徑來區(qū)分代理。

    Architecture

    • Step 1: Represents the passkey agent registration

    • Step 2: Represents a client calling?CreateBonding

    • Step 3: Represents the hcid asking for a passkey valu

    體系結(jié)構(gòu)

    • 第一步:表示密鑰代理注冊

    • 第二步:表示客戶調(diào)用CreateBonding

    • 第三步:代表hcid請求密鑰值。


    Message Flow

    In the following figure, the "CreateBonding" method call is hidden. The "PIN Request" HCI event is generated when there is not a link available in the file system. In this case "Link Key Request Negative Reply" command is sent triggering the "Pin Request" event.

    在下面得圖表中,CreateBonding方法的調(diào)用被隱藏。當(dāng)沒有一個可用鏈接時,"PIN Request"HCI層事件被產(chǎn)生,在這種情況下,"Link Key Request Negative Reply"命令被發(fā)送來回應(yīng)"Pin Request"?事件。

    • Step 1: Represents the D-Bus message sent to register the default/device specific passkey agent.

    • Step 2: Represents the HCI "PIN Request" event sent by the Bluetooth Host Controller.

    • Step 3: Represents the D-Bus message sent to the default/device speficic passkey agent requesting a passkey.

    • Step 4: Represents the "Auth Complete" event where the status contains "LMP Response Timeout"(The remote didn't type the passkey).

    • Step 5: Represents the "hcid" issuing a "Cancel" to a previous Request call.

    • Step 6: Represents the D-Bus message sent to release the passkey agent: basically sent when the hcid exits.

    • 第一步:D-Bus發(fā)送消息來注冊默認(rèn)的或者特定的密鑰代理。

    • 第二步:藍(lán)牙主機(jī)控制器發(fā)送HCI?"PIN Request"事件。

    • 第三步:D-Bus發(fā)送消息到默認(rèn)的或者特定的密鑰代理,請求密鑰。

    • 第四步:"Auth Complete"完成事件,如果這種狀態(tài)包含"LMP Response Timeout"

    • 第五步:hcid發(fā)出“Cancel”命令給D-Bus

    • 第六步:當(dāng)hcid退出時,D - Bus的信息發(fā)送到釋放密鑰代理


    2.4Bluez適配器接口

    Description?

    The "Adapter" interface provides methods to setup the local adapter(s), search remote devices, pairing and search for services.

    This interface is considered stable and no change is planned.

    For each available adapter the hcid register an adapter object instance provided in the path "/org/bluez/hci{0, 1, 2, ...}".

    適配器接口提供,啟動適配器、搜索設(shè)別、配對、和搜索服務(wù)的方法。這個接口被認(rèn)為是穩(wěn)定的,沒有改變計劃。對每個可用的適配器,hcid為其注冊一個適配器對象實例,在路徑?"/org/bluez/hci{0, 1, 2, ...}"里。

    2.5Bluez配對

    Description

    Services that need ask the user to accept/reject an operation such as accept OBEX objects or accept an incoming connection can use the?Security?API to request the userspace registered authorization agent responsible.

    Development warnings/recommendations

  • Just one Authorization request per time is allowed.

  • NotConnected error is returned if a connection is not found between the devices is not found.

  • Trusted Devices

    The BlueZ daemon keeps a list of trusted devices. Trusted means that authorization is not required to accept incoming connections or other operations that need the user response. Once a given device is added to the list, the BlueZ daemon will reply authorized without call the Authorization agent.

    Authorization Agent

    Authorization agents are applications responsible for address authorization requests. For more information check the BlueZ D-Bus API and implementation references:

    • utils/daemon/auth-agent.c is a authorization agent implementation able to handle device specific and default

    • bluez-gnome?passkey/authorization agent implementation distributed by the BlueZ community

    Canceling

    For security reason, only the requestor can cancel a pending authorization operation.

    2.6Bluez綁定

    Description

    The purpose of bonding is to create a relation between two Bluetooth devices based on a common link key (a bond). The link key is created and exchanged(pairing) during the bonding procedure and is expected to be stored by both Bluetooth devices, to be used for future authentication[definition from Bluetooth Core Spec].

    The Bonding procedure is done through the BlueZ?Adapter?interface.

    Development warnings/recommendations

  • Just one Bonding request per time is allowed.

  • Bonding is not allowed if there is a discovery running.

  • Pending remote name is canceled if a CreateBonding message is received.

  • The Bonding takes some seconds, therefore it is recommended set a D-Bus callback to handle the message reply for this operation.

  • Passkey Agent

    Currently, two types of passkey agents are supported:

  • Device Specific: handles all passkey requests for a given remote device

  • Default: Handles the remaining requests(not addressed by device specific agents)

  • For more information check the BlueZ D-Bus API and implementation references:

    • utils/daemon/passkey-agent.c is a passkey agent implementation able to handle device specific and default

    • bluez-gnome?passkey agent implementation distributed by the BlueZ community=

    3Bluez編程實現(xiàn)

    3.1、藍(lán)牙開發(fā)關(guān)鍵技術(shù)剖析

    3.1.1、連接機(jī)制分析

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

    主從設(shè)備建立連接的過程就是建立相同匹克網(wǎng)信道的過程,該過程確保主從設(shè)備以同樣的定時和次序進(jìn)行載波頻率的跳變,進(jìn)行數(shù)據(jù)傳輸,同時可以根據(jù)匹克網(wǎng)接入碼和幀頭編碼進(jìn)行數(shù)據(jù)過濾和解析,避免和其他設(shè)備在同一個頻段上的相撞。

    尋呼掃描物理信道(page scan physical channel)用于主設(shè)備尋呼從設(shè)備,是設(shè)備建立連接的必經(jīng)階段。尋呼掃描跳頻序列和尋呼請求幀的設(shè)備接入碼(DAC)是由從設(shè)備物理地址運(yùn)算,處于可被連接模式的從設(shè)備以固定的周期(page scan interval決定)在一個固定的時間窗(page scan window決定)內(nèi)以某個跳頻頻率監(jiān)聽主設(shè)備的尋呼請求。

    3.1.2、自動連接

    為了方便用戶的使用,大多藍(lán)牙設(shè)備都實現(xiàn)了自動連接功能,根據(jù)以上對藍(lán)牙連接機(jī)制的分析,設(shè)計自動連接方案時必須考慮設(shè)備在不同的工作狀態(tài)下采用不同的物理信道和跳頻序列,而不能按照人為的邏輯隨意設(shè)置,否則會給用戶帶來不便。

    以車載免提裝置為例,上電自動連接對駕駛員來說可以提高使用車載免提的自覺性,降低行車期間通話帶來的風(fēng)險。采用搜索方式判斷設(shè)備是否在有效范圍內(nèi),按照優(yōu)先級從低到高連接,最后一次連接的手機(jī)為優(yōu)先級最高的,然后按照配對列表的逆序而優(yōu)先級依次降低。鏈路丟失后的自動連接只針對最后一部手機(jī),這樣可以實現(xiàn)服務(wù)的連續(xù)性。

    3.1.3、時鐘設(shè)計

    藍(lán)牙核心規(guī)范要求時鐘頻率精度為±20ppm,如果載波頻率不穩(wěn)定,則會發(fā)生“過零點”錯誤(zero-cross)。載波頻率由本地時鐘(晶振)做為PLL的參考時鐘倍頻產(chǎn)生。一般說來,藍(lán)牙設(shè)備的時鐘設(shè)計便是指晶振電路的設(shè)計及微調(diào)。決定晶振工作精度的兩個重要參數(shù)是制造公差和溫度穩(wěn)定度,如果選擇有源晶振作為本地時鐘,需要滿足:制造公差+溫度穩(wěn)定度≤±20ppm,有源晶振內(nèi)部集成晶體和相應(yīng)的振蕩電路,匹配精確,頻率穩(wěn)定性高,而且抗干擾性能好,缺點是成本較高。§
    1?????震蕩電路設(shè)計

    本文自行設(shè)計的振蕩電路如圖1所示。

    選擇溫度穩(wěn)定性高、制造公差低的高精度晶體,通過振蕩電路設(shè)計實現(xiàn)諧振頻率的精確調(diào)整,這是由晶體負(fù)載電容的匹配及可調(diào)實現(xiàn)的。負(fù)載電容是指CRY_INCRY_OUT兩端的電容值,在晶體的CRY_IN引腳上并聯(lián)一個可調(diào)電容,調(diào)整該電容便可以對諧振頻率進(jìn)行精密微調(diào)。晶體負(fù)載電容計算公式如下:
    Cload=Cint+(Cin+Ctrim)×Cout/(Cin+Ctrim+Cout)

    Cint包括IC內(nèi)部電容(一般為固定值)以及PCB雜散電容(3pF~5pF)

    3.1.4、配對列表管理

    為了保證鏈路級的安全,藍(lán)牙通信要求設(shè)備在連接建立前進(jìn)行“雙向認(rèn)證”。認(rèn)證成功的前提是設(shè)備雙方存儲了相同的鏈路密鑰Kab,配對是產(chǎn)生初始密鑰Kint的階段,KintPIN碼、從設(shè)備藍(lán)牙地址和主設(shè)備發(fā)給從設(shè)備的一個隨機(jī)數(shù)由一套固定的算法計算出來,只要PIN碼一致,主從設(shè)備生成的的Kint也是一致的。鏈路密鑰的輸入是主從設(shè)備的藍(lán)牙地址和主從設(shè)備各一隨機(jī)數(shù),只要主從設(shè)備能互換隨機(jī)數(shù),便能得到一致的Kab。主設(shè)備將隨機(jī)數(shù)RandAKint異或的結(jié)果發(fā)給從設(shè)備,從設(shè)備只將該結(jié)果與Kint異或便得到RandA,即
    §

    配對列表的管理包括添加、替代及刪除,添加配對設(shè)備是在非易失性存儲中存儲該設(shè)備的藍(lán)牙地址及Kab。刪除配對設(shè)備需要謹(jǐn)慎處理,如果存在連接,需要先斷開連接然后刪除,因為如果刪掉該設(shè)備而有一種應(yīng)用的連接沒有斷開,會存在臨時密鑰用于當(dāng)前應(yīng)用,這時不經(jīng)配對也可以連接上其他應(yīng)用,違反了藍(lán)牙安全性要求

    3.1.5、藍(lán)牙文件傳輸模式

    文件傳輸?shù)哪康氖鞘箖蓚€終端之間的數(shù)據(jù)交換成為可能,傳輸時使用的協(xié)議如圖3.1所示,可傳送的文件有docjpgpptxlswav等文件,還包括遠(yuǎn)端文件夾瀏覽功能。傳輸文件的設(shè)備可歸結(jié)成C/S結(jié)構(gòu)。客戶可從服務(wù)器下載文件,或向服務(wù)器上傳文件。服務(wù)器是一種使用對象交換協(xié)議(OBEX)文件夾列表格式的遠(yuǎn)端藍(lán)牙設(shè)備,其支持目標(biāo)交換服務(wù)、文件夾瀏覽功能,還允許客戶修改、創(chuàng)建文件或文件夾。

    3.2hci層介紹

    3.2.1hci層介紹

    Host Controller Interface(HCI)?就是用來溝通HostModuleHost通常就是PC,?Module則是以各種物理連接形式(USB,serial,pc-card等)連接到PC上的bluetooth DongleHCI則比較特殊,它一部分在軟件中實現(xiàn),用來給上層協(xié)議和程序提供訪問接口(Bluez,hci.c hci_usb.chci_sock.c等).另一部分也是在Firmware中實現(xiàn),用來將軟件部分的指令等用底層協(xié)議明白的方式傳遞給底層。

    居于PC的上層程序與協(xié)議和居于Modules的下層協(xié)議之間通過HCI溝通,有4種不同形式的傳輸:Commands, Event, ACL Data, SCO/eSCO Data.

    HCI CommandHCI CommandHostModules發(fā)送命令的一種方式。

    HCI EventModulesHost發(fā)送一些信息,使用HCI Event

    3.2.2hci層編程

    對本地dongle進(jìn)行操作:

  • 得到Host上插入Dongle數(shù)目以及Dongle信息

  • 實現(xiàn)步驟如下:

    // 0.?分配一個空間給?hci_dev_list_req。這里面將放所有Dongle信息。

    struct hci_dev_list_req *dl;

    struct hci_dev_req *dr;

    struct hci_dev_info di;

    int i;

    if (!(dl = malloc(HCI_MAX_DEV * sizeof(struct hci_dev_req) + sizeof(uint16_t)))) {

    perror("Can't allocate memory");

    exit(1);

    }

    dl->dev_num = HCI_MAX_DEV;

    dr = dl->dev_req;

    //1.?打開一個HCI socket.

    if ((ctl = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI)) < 0) {

    perror("Can't open HCI socket.");

    exit(1);

    }

    // 2.?使用HCIGETDEVLIST,得到所有dongleDevice ID。存放在dl中。

    if (ioctl(ctl, HCIGETDEVLIST, (void *) dl) < 0) {

    perror("Can't get device list");

    exit(1);

    }

    // 3?使用HCIGETDEVINFO,得到對應(yīng)Device IDDongle信息。

    di.dev_id = (dr+i)->dev_id;

    ioctl(ctl, HCIGETDEVINFO, (void *) &di)

    這樣就能得到所有Dongle信息。

    ?

    struct hci_dev_info {

    uint16_t dev_id; //dongle Device ID

    char name[8]; //Dongle name

    ?

    bdaddr_t bdaddr; //Dongle bdaddr

    ?

    uint32_t flags; //Dongle Flags:如:UPRUNINGDown等。

    uint8_t type; //Dongle連接方式:如USBPC CardUARTRS232等。

    ?

    uint8_t features[8];

    ?

    uint32_t pkt_type;

    uint32_t link_policy;

    uint32_t link_mode;

    ?

    uint16_t acl_mtu;

    uint16_t acl_pkts;

    uint16_t sco_mtu;

    uint16_t sco_pkts;

    ?

    struct hci_dev_stats stat; //Dongle的數(shù)據(jù)信息,如發(fā)送多少個ACL Packet,正確多少,錯誤多少,等等。

    };

  • 打開一個HCI Socket---int hci_open_dev(int dev_id)

  • 這個function用來打開一個HCI Socket。它首先打開一個HCI protocolSocket(房間),并將此Socketdevice ID=參數(shù)dev_idDongle綁定起來。只有bind后,它才將Socket句柄與Dongle對應(yīng)起來

    注意,所有的HCI Command發(fā)送之前,都需要使用?hci_open_dev打開并綁定

  • 關(guān)閉一個HCI Socket

  • int hci_close_dev(int dd) //簡單的關(guān)閉使用hci_open_dev打開的Socket

  • HCI Socket(對應(yīng)一個Dongle)發(fā)送?request

  • int hci_send_req(int dd, struct hci_request *r, int to)

    BlueZ提供這個function非常有用,它可以實現(xiàn)一切HostModules發(fā)送Command的功能。

    參數(shù)1HCI Socket

    參數(shù)2Command內(nèi)容。

    參數(shù)3:以milliseconds為單位的timeout.

    下面詳細(xì)解釋此function和用法:

    當(dāng)應(yīng)用程序需要向Dongle(對應(yīng)為一個bind后的Socket)發(fā)送Command時,調(diào)用此function.

    其中,參數(shù)一dd對應(yīng)一個使用hci_open_dev()打開的SocketDongle)。

    參數(shù)三to則為等待Dongle執(zhí)行并回復(fù)命令結(jié)果的timeout.以毫秒為單位。

    參數(shù)二hci_request * r?最為重要,首先看它的結(jié)構(gòu):

    struct hci_request {

    uint16_t ogf; //Opcode Group

    uint16_t ocf; //Opcode Command

    int event; //Command產(chǎn)生的Event類型。

    void *cparam; //Command?參數(shù)

    int clen; //Command參數(shù)長度

    void *rparam; //Response?參數(shù)

    int rlen; //Response?參數(shù)長度

    };

    ogf,ocf不用多說,對應(yīng)前面的圖就明白這是Group CodeCommand Code。這兩項先確定下來,然后可以查HCI Spec。察看輸入?yún)?shù)(cparam)以及輸出參數(shù)(rparam)含義。至于他們的結(jié)構(gòu)以及參數(shù)長度,則在~/include/net/bluetooth/hci.h中有定義。

    ?

    1:得到某個連接的Policy Setting.

    HCI Spec以及~/include/net/bluetooth/hci.h中均可看到,OGF=OGF_LINK_POLICY(0x02). OCF=OCF_READ_LINK_POLICY(0x0C).

    因為這個Command用來讀取某個ACL連接的Policy Setting。所以輸入?yún)?shù)即為此連接Handle.

    返回參數(shù)則包含3部分,statusCommand是否順利執(zhí)行),?handle(連接Handle)。?policy(得到的policy值)

    這就又引入了一個新問題,如何得到某個ACL連接的Handle

    可以使用ioctl HCIGETCONNINFO得到ACL?連接Handle

    ioctl(dd, HCIGETCONNINFO, (unsigned long) cr)

    Connect_handle = htobs(cr->conn_info->handle);

    所以完整的過程如下:

    ?

    struct hci_request HCI_Request;

    read_link_policy_cp Command_Param;

    read_link_policy_rp Response_Param;

    // 1.得到ACL Connect Handle

    if (ioctl(dd, HCIGETCONNINFO, (unsigned long) cr) < 0)

    {

    return -1

    }

    Connect_handle = htobs(cr->conn_info->handle);

    memset(&HCI_Request, 0, sizeof(HCI_Request));

    memset(&Command_Param, 0 , sizeof(Command_Param));

    memset(&Response_Param, 0 , sizeof(Response_Param));

    // 2.填寫Command輸入?yún)?shù)

    Command_Param.handle = Connect_handle;

    HCI_Request.ogf = OGF_LINK_POLICY; //CommandID

    HCI_Request.ocf = OCF_READ_LINK_POLICY; //Command ID

    HCI_Request.cparam = &Command_Param;

    HCI_Request.clen = READ_LINK_POLICY_CP_SIZE;

    HCI_Request.rparam = &Response_Param;

    HCI_Request.rlen = READ_LINK_POLICY_RP_SIZE;

    if (hci_send_req(dd, &HCI_Request, to) < 0)

    {

    perror("\nhci_send_req()");

    return -1;

    }

    //如果返回值狀態(tài)不對

    if (Response_Param.status) {

    return -1;

    }

    //得到當(dāng)前policy

    *policy = Response_Param.policy;

  • 幾個更基礎(chǔ)的function

  • static inline void bacpy(bdaddr_t *dst, const bdaddr_t *src) //bdaddr copy

    static inline int bacmp(const bdaddr_t *ba1, const bdaddr_t *ba2)//bdaddr?比較

  • 得到指定Dongle BDAddr

  • int hci_read_bd_addr(int dd, bdaddr_t *bdaddr, int to)

    參數(shù)1HCI Socket,使用hci_open_dev()打開的SocketDongle)。

    參數(shù)2:輸出參數(shù),其中會放置bdaddr.

    參數(shù)3:以milliseconds為單位的timeout.

  • 讀寫Dongle Name

  • int hci_read_local_name(int dd, int len, char *name, int to)

    int hci_write_local_name(int dd, const char *name, int to)

    參數(shù)1HCI Socket,使用hci_open_dev()打開的SocketDongle)。

    參數(shù)2:讀取或設(shè)置Name

    參數(shù)3:以milliseconds為單位的timeout.

    注意:這里的NameIOCTL HCIGETDEVINFO?得到hci_dev_info中的name不同

  • 得到HCI Version

  • int hci_read_local_version(int dd, struct hci_version *ver, int to)

  • 得到已經(jīng)UPDongle BDaddr

  • int hci_devba(int dev_id, bdaddr_t *bdaddr)

    dev_id: Dongle Device ID.

    bdaddr:輸出參數(shù),指定Dongle如果UP, 則放置其BDAddr

  • 得到BDADDR不等于參數(shù)bdaddrDongle Device ID

  • int hci_get_route(bdaddr_t *bdaddr)

    ?

    查找Dongle,發(fā)現(xiàn)Dongle Bdaddr不等于參數(shù)bdaddr的第一個Dongle,則返回此Dongle Device ID

    ?

    所以,如果: int hci_get_route(NULL),則得到第一個可用的Dongle Device ID

  • BDADDR轉(zhuǎn)換為字符串

  • int ba2str(const bdaddr_t *ba, char *str)

    對遠(yuǎn)程dongle進(jìn)行操作:

  • inquiry?遠(yuǎn)程Bluetooth Device

  • int hci_inquiry(int dev_id, int len, int nrsp, const uint8_t *lap, inquiry_info **ii, long flags)

    hci_inquiry()用來命令指定的Dongle去搜索周圍所有bluetooth device.并將搜索到的Bluetooth Device bdaddr?傳遞回來。

    參數(shù)1dev_id:指定Dongle Device ID。如果此值小于0,則會使用第一個可用的Dongle

    參數(shù)2len:?此次inquiry的時間長度(每增加1,則增加1.25秒時間)

    參數(shù)3nrsp:此次搜索最大搜索數(shù)量,如果給0。則此值會取255

    參數(shù)4lap:BDADDRLAP部分,Inquiry時這塊值缺省為0X9E8B33.通常使用NULL。則自動設(shè)置。

    參數(shù)5ii:存放搜索到Bluetooth Device的地方。給一個存放inquiry_info指針的地址,它會自動分配空間。并把那個空間頭地址放到其中。

    參數(shù)6flags:搜索flags.使用IREQ_CACHE_FLUSH,則會真正重新inquiry。否則可能會傳回上次的結(jié)果。

    返回值是這次Inquiry到的Bluetooth Device?數(shù)目。

    注意:如果*ii不是自己分配的,而是讓hci_inquiry()自己分配的,則需要調(diào)用bt_free()來幫它釋放空間。

  • 得到指定BDAddrreomte device Name

  • int hci_read_remote_name(int dd, const bdaddr_t *bdaddr, int len, char *name, int to)

    參數(shù)1:使用hci_open_dev()打開的Socket

    參數(shù)2:對方BDAddr.

    參數(shù)3name?長度。

    參數(shù)4(out)放置name的位置。

    參數(shù)5:等待時間。

  • 讀取連接的信號強(qiáng)度

  • int hci_read_rssi(int dd, uint16_t handle, int8_t *rssi, int to)

    注意,所有對連接的操作,都會有一個參數(shù),handle.這個參數(shù)是連接的Handle?前面講過如何得到連接Handle的。

    3.3L2CAP層編程

    3.3.1L2CAP協(xié)議簡介

    Logical Link Control and Adaptation Protocol(L2CAP)邏輯連接控制和適配協(xié)議為上層協(xié)議提供面向連接和無連接的數(shù)據(jù)服務(wù),并提供多協(xié)議功能和分割重組操作。L2CAP?充許上層協(xié)議和應(yīng)用軟件傳輸和接收最大長度為?64K?L2CAP?數(shù)據(jù)包。

    L2CAP?基于通道(channel)?的概念。 通道?(Channel)?是位于基帶?(baseband)?連接之上的邏輯連接。每個通道以多對一的方式綁定一個單一協(xié)議?(single protocol)。多個通道可以綁定同一個協(xié)議,但一個通道不可以綁定多個協(xié)議。 每個在通道里接收到的?L2CAP?數(shù)據(jù)包被傳到相應(yīng)的上層協(xié)議。 多個通道可共享同一個基帶連接。也就是說,所有L2CAP數(shù)據(jù)均通過HCI傳輸?shù)?span style="line-height:1.8;font-family:'DejaVu Serif', serif;">Remote Device。且上層協(xié)議的數(shù)據(jù),大都也通過L2CAP來傳送。L2CAP可以發(fā)送Command。例如連接,斷連等等。

    3.3.2L2CAP編程方法

    L2CAP編程非常重要,它和HCI基本就是Linux Bluetooth編程的基礎(chǔ)了。幾乎所有協(xié)議的連接,斷連,讀寫都是用L2CAP連接來做的。

    1.創(chuàng)建L2CAP Socket

    socket(PF_BLUETOOTH, SOCK_RAW, BTPROTO_L2CAP);

    domain=PF_BLUETOOTH, type可以是多種類型。protocol=BTPROTO_L2CAP.

    2.綁定:

    // Bind to local address

    memset(&addr, 0, sizeof(addr));

    addr.l2_family = AF_BLUETOOTH;

    bacpy(&addr.l2_bdaddr, &bdaddr); //bdaddr為本地Dongle BDAddr

    if (bind(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {

    perror("Can't bind socket");

    goto error;

    }

    3.連接

    ?

    memset(&addr, 0, sizeof(addr));

    addr.l2_family = AF_BLUETOOTH;

    bacpy(addr.l2_bdaddr, src);

    addr.l2_psm = xxx;

    if (connect(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {

    perror("Can't connect");

    goto error;

    }

    ?

    注意:

    struct sockaddr_l2 {

    sa_family_t l2_family; //必須為?AF_BLUETOOTH

    unsigned short l2_psm; //與前面PSM對應(yīng),這一項很重要

    bdaddr_t l2_bdaddr; //Remote Device BDADDR

    unsigned short l2_cid;

    };

    4.?發(fā)送數(shù)據(jù)到Remote Device

    send()write()都可以。

    5.?接收數(shù)據(jù):

    revc()?read()

    以下為實例:

    注:在Bluetooth下,主動去連接的一端作為主機(jī)端。被動等別人連接的作為Client端。

    背景知識1Bluetooth設(shè)備的狀態(tài)

    之前HCI編程時,是用?ioctl(HCIGETDEVINFO)得到某個Device Infohci_dev_info).其中flags當(dāng)時解釋的很簡單。其實它存放著Bluetooth Device(例如:USB Bluetooth Dongle)的當(dāng)前狀態(tài):

    其中,UP,Down狀態(tài)表示此Device是否啟動起來。可以使用ioctl(HCIDEVUP)等修改這些狀態(tài)。

    另外:就是Inquiry Scan, PAGE Scan這些狀態(tài):Inquiry Scan狀態(tài)表示設(shè)備可被inquiry. Page Scan狀態(tài)表示設(shè)備可被連接。

    參考:L2CAP編程,http://blog.csdn.net/baozhongchao/archive/2009/10/26/4728751.aspx

    3.4SDP協(xié)議簡介

    Service Discovery Protocol(SDP)提供一種能力,讓應(yīng)用程序有方法發(fā)現(xiàn)哪種服務(wù)可用以及這種服務(wù)的特性。服務(wù)發(fā)現(xiàn)協(xié)議(SDPBluetooth SDP)在藍(lán)牙協(xié)議棧中對藍(lán)牙環(huán)境中的應(yīng)用程序有特殊的含意,發(fā)現(xiàn)哪個服務(wù)是可用的和確定這些可用服務(wù)的特征。SDP定義了bluetooth client發(fā)現(xiàn)可用bluetooth server服務(wù)和它們的特征的方法。這個協(xié)議定義了客戶如何能夠?qū)ふ一谔囟▽傩缘姆?wù)而不讓客戶知道可用服務(wù)的任何知識。SDP提供發(fā)現(xiàn)新服務(wù)的方法,在當(dāng)客戶登錄到正在操作的藍(lán)牙服務(wù)器的一個區(qū)域時是可用的時。

    Service discovery機(jī)制提供client應(yīng)用程序偵測server應(yīng)用程序提供的服務(wù)的能力,并且能夠得到服務(wù)的特性。服務(wù)的品質(zhì)包含服務(wù)type或服務(wù)classSDP也提供SDP serverSDP client之間的通訊。SDP server維護(hù)著一個服務(wù)條目(service record)列表.每個服務(wù)條目描述一個單獨(dú)的服務(wù)屬性。?SDP client可以通過發(fā)送SDP request來得到服務(wù)條目。如果一個client或者依附于client之上的應(yīng)用程序決定使用某個service.?它創(chuàng)建一個單獨(dú)的連接到service提供者。?SDP?只提供偵測Service的機(jī)制,但不提供如何利用這些Service的機(jī)制。這里其實是說:SDP只提供偵測Service的辦法,但如何用,SDP不管。每個Bluetooth Device最多只能擁有一個SDP Server。如果一個Bluetooth Device只擔(dān)任Client,那它不需要SDP Server。但一個Bluetooth Device可以同時擔(dān)當(dāng)SDP ServerSDP client.

    Service Record(Service?條目)

    一個service是一個實體為另一個實體提供信息,執(zhí)行動作或控制資源。一個service可以由軟件,硬件或軟硬件結(jié)合提供。所有的Service信息都包含于一個Service Record內(nèi)。一個Service Record?包含一個Service attribute(Service屬性) list在一個SDP Server內(nèi),每個Service Record擁有一個32-bit的唯一性數(shù)據(jù)。通常,這個唯一性只是在每個SDP Server內(nèi)部。 如果SDP Server S1?SDP Server S2擁有同樣的一個Service Record。那他們在不同SDP Sever內(nèi)的獨(dú)特數(shù)值并不一定相同。SDPSDP Server增加或減少Service Record時,并不會通知SDP client.

    Service Attribute(Service?屬性)

    每個Service屬性描述servcie的特性.一個Service Attribute2部分:

    Attribute ID + Attribute Value

    Attribute ID16-bit無符號整數(shù),用于區(qū)別一個Service Record內(nèi)的其它屬性。

    Attribute ValueAttribute值。

    Service Class

    每個Service?都是某個Service Class的實例. Service Class定義了Service Record中包含的Service?屬性。屬性ID,屬性值都被定義好了。每個Service Class也有一個獨(dú)特ID。這個Service Class標(biāo)識符包含在屬性值ServiceClassIDList屬性中。并描繪為UUID。自從Service Record中的屬性格式以及含義依賴于Service Class后,ServiceClassIDList屬性變得非常重要。

    Searching For Service:

    Service Search transaction(事務(wù)?)允許client得到Service Record Handle。一旦SDP Client得到Service Record Handle,它就可以請求這個Record內(nèi)具體屬性的值。

    如果某個屬性值UUID,則可以通過查找UUID查到這個屬性。

    UUID:?universally unique identifier.(唯一性標(biāo)識符)

    SDP協(xié)議棧使用request/response模式工作,每個傳輸過程包括一個request protocol data unit(PDU)和一個response PDU. SDP使用L2CAP連接傳輸數(shù)據(jù)。在發(fā)送Request PDU但未收到Response PDU之前,不能向同一個server再發(fā)送Request PDU

    PDUprotocol Data unit

    PDU ID:用來識別PDU

    TransactionID:

    用來識別Request PUD以及Response PUD。并用來對比某個Response PUD是否對應(yīng)著Request PUD

    4Openobex

    4.1Openobex簡介

    Welcome to the Open OBEX project. The overall goal of this project is to make an open source implementation of the Object Exchange (OBEX) protocol. OBEX is a session protocol and can best be described as a binary HTTP protocol. OBEX is optimised for ad-hoc wireless links and can be used to exchange all kind of objects like files, pictures, calendar entries (vCal) and business cards (vCard).

    OBEX was specified by the IrDA? (Infrared Data Association), and although the protocol is very good for Infrared connections, it is not limited to it. In fact OBEX does not specify the top or bottom API making it very flexible and can run over most transports like TCP/IP and Bluetooth. Therefore OBEX is also called IrOBEX when used over the Infrared medium. There are some transport modules for serial links (cable OBEX) too.

    Today, OBEX is builtin in many devices e.g. PDA's like the?Palm§?Pilot, and mobile phones like theSony Ericsson§?R320, R520, T68, T610, T630, K700 and many later phones,?Siemens§?S25, S35, S45, S55, S65?Nokia§?NM207 and Nokia 9110 Communicator. The HP?Scanner?§?CapShare 920 can also talk OBEX in addition to JetSend.?Microsoft§?Windows2000 has also builtin OBEX support.

    Link types currently supported by OpenOBEX are:

    INFRARED DATA ASSOCIATION ? (IrDA)?http://www.irda.org§

    USB-IF, Inc.?http://www.usb.org§

    Bluetooth(TM)?http://www.bluetooth.com§

    Support for TCP/IP links, file descriptors and custom transports is also provided.

    OBEX全稱為Object Exchange,中文對象交換,所以稱之為對象交換協(xié)議。它在此軟件當(dāng)中有著核心地位,文件傳輸和IrMC同步都會使用到它。OBEX協(xié)議構(gòu)建在IrDA架構(gòu)的上層. OBEX協(xié)議通過簡單的使用“PUT”和“GET”命令實現(xiàn)在不同的設(shè)備、不同的平臺之間方便、高效的交換信息。支持的設(shè)備廣泛,例如PCPDA,電話,攝像頭,自動答錄機(jī),計算器,數(shù)據(jù)采集器,手表等等。OBEX協(xié)議定義了一種柔性的概念——objects。也即是對象。這些對象可以包括文件,診斷信息,電子商務(wù)卡片,銀行的存款等等。Objects在這里沒有高級的技術(shù)含義,而是視你的應(yīng)用而定。OBEX協(xié)議小到可作“命令和控制”功能,例如對電視機(jī),錄像機(jī)等的操作。大道可以做很復(fù)雜的操作,例如數(shù)據(jù)庫的事務(wù)處理和同步。

    OBEX能夠具有以下幾個特點:

    1、??友好的應(yīng)用——可實現(xiàn)快速開發(fā)。

    2、??緊縮——可用在資源有限的小型設(shè)備上。

    3、??跨平臺

    4、??柔性的數(shù)據(jù)支持。

    5、??方便的作為其他Internet傳輸協(xié)議的上層協(xié)議。

    6、??可擴(kuò)展性——提供了對未來需求的擴(kuò)充支持而不影響以存在的實現(xiàn)。例如可擴(kuò)展安全,數(shù)據(jù)壓縮等。

    7、? 可測試可調(diào)試。

    4.2Openobexbluez編程實現(xiàn)

    如下表:基于OBEXBlueZ的數(shù)據(jù)傳輸?shù)牟襟E

    步驟

    函數(shù)

    意義

    1

    OBEX_Init()

    用于初始化一個obex instance handle

    arg1:OBEX_TRANS_BLUETOOTH用于聲明傳輸協(xié)議為bluetooth

    arg2:callback function

    arg3:flag=OBEX_FL_KEEPSERVER,接收到請求后,服務(wù)器可以繼續(xù)接收其他客戶端的請求;

    2

    OBEX_SetUserData()

    設(shè)置用戶自己的變量,該函數(shù)的使用完全取決于用戶自己;

    3

    BtOBEX_ServerRegister()

    一個專用于藍(lán)牙協(xié)議的服務(wù)端函數(shù),用于監(jiān)聽客戶端發(fā)送的請求。該函數(shù)內(nèi)部創(chuàng)建了一個?socket(調(diào)用socket(AF_BLUETOOTH,SOCK_STREAM,BTPROTO_RFCOMM)),bindsocket到本地藍(lán)牙地址,將該socket轉(zhuǎn)化為監(jiān)聽sockt,之后該socket才能夠監(jiān)聽端口上來自客戶端的連接請求;

    4

    OBEX_HandleInput()

    函數(shù)用于讀取并處理接收到的數(shù)據(jù),如果沒有數(shù)據(jù)到達(dá),該函數(shù)將會阻塞;該函數(shù)內(nèi)部調(diào)用了selet()函數(shù),向系統(tǒng)登記了參數(shù)handle的客戶端sockt與服務(wù)端sockt,讓系

    ?

    統(tǒng)監(jiān)聽socket上的事件,如果是服務(wù)端socket上有數(shù)據(jù)到達(dá),則調(diào)用accept()函數(shù)為客戶端創(chuàng)建一個新的sockt,如果OBEX_Init()flag不是設(shè)置為OBEX_FL_KEEPSERVER,則關(guān)掉服務(wù)端socket,禁止其他客戶端的連接請求;

    5

    CALLBACK?

    (OBEX_EV_ACCEPTHINT)

    ?

    6

    OBEX_ServerAccept()

    該函數(shù)返回上述客戶端的socket

    函數(shù)內(nèi)部重新創(chuàng)建了一個obex instance handle,并將上述服務(wù)器handle的參數(shù)復(fù)制到該handle,獲得服務(wù)器handlefdaccept為客戶端創(chuàng)建的socket)后,清除服務(wù)器本身的fd

    該函數(shù)同時也為新創(chuàng)建的obex instance handle設(shè)置callback functionUserdata;至此,已經(jīng)為客戶端創(chuàng)建了一個與服務(wù)端完全獨(dú)立的obex instance handle,此后該服務(wù)端的操作都由該handle標(biāo)識,而服務(wù)器的socket則繼續(xù)監(jiān)聽其他客戶端的連接請求。

    7

    CALLBACK?

    OBEX_EV_REQDONE

    OBEX_CMD_CONNECT

    8

    CALLBACK?

    OBEX_EV_REQHINT

    一個請求即將到來。

    調(diào)用OBEX_ObjectSetRsp(object,OBEX_RSP_CONTINUE,OBEX_RSP_SUCCESS)設(shè)置響應(yīng)操作碼

    9

    CALLBACK?

    OBEX_EV_REQCHECK

    第一個接收到的請求包已經(jīng)被解析

    10

    CALLBACK?

    OBEX_EV_PROGRESS

    收到n個此事件,說明客戶端正在傳輸文件內(nèi)容

    11

    CALLBACK?

    OBEX_EV_REQ

    OBEX_CMD_PUT

    OBEX_ObjectSetRsp(object,OBEX_RSP_CONTINUE,OBEX_RSP_SUCCESS)設(shè)置響應(yīng)操作碼;此時,客戶端文件傳輸完畢,需進(jìn)行處理:

    OBEX_ObjectGetNextHeader()分別取得文件的名稱與內(nèi)容;

    12

    CALLBACK?

    OBEX_EV_REQDONE

    OBEX_CMD_PUT

    13

    CALLBACK?

    OBEX_EV_REQHINT

    一個請求即將到來

    14

    CALLBACK?

    OBEX_EV_REQ

    OBEX_CMD_DISCONNECT

    OBEX_ObjectSetRsp(object,OBEX_RSP_SUCCESS,OBEX_RSP_SUCCESS)設(shè)置響應(yīng)操作碼

    15

    CALLBACK?

    OBEX_EV_REQDONE

    OBEX_CMD_DISCONNECT;

    OBEX_TransportDisconnect(handle)斷開連接;

    注意:該函數(shù)只是將socket關(guān)閉,并沒有釋放handle所占用的資源,所以在應(yīng)用時需要釋放handle占用的資源;

    16

    OBEX_Cleanup()

    關(guān)掉obex handle并釋放該handle占用的資源。

    (該函數(shù)同樣關(guān)閉了客戶端及服務(wù)端socket

    ?

    如下表:OpenOBEX的代碼說明:

    ?

    文件編號

    文件名

    作用

    1

    obex_connect.c/.h

    處理CONNECT PDU,打包和解包

    2

    obex_header.c/.h

    PDU處理的公共函數(shù)及數(shù)據(jù)類型定義

    3

    obex_object.c/.h

    對象處理函數(shù),客戶端和服務(wù)器公用代碼

    4

    obex_server.c/.h

    服務(wù)器端處理代碼

    5

    obex_client.c/.h

    客戶端處理代碼

    6

    obex_transport.c/.h

    傳輸接口的抽象

    7

    irobex.c/.h

    基于紅外的傳輸方式

    8

    usbobex.c/.h

    基于USB的傳輸方式

    9

    inobex.c/.h

    基于TCP/IP的傳輸方式

    10

    btobex.c/.h

    基于藍(lán)牙的傳輸方式

    ?

    Obexftp

    5.1obexftp簡介

    The main goal of this project is to make mobile devices that feature the OBEX protocol and that adhere to the OBEX FTP standard accessible using an open source implementation.

    ObexFTP is a library bundling everything needed for OBEX transfers and exposing it via a simple interface. Quite a number of language bindings are provided using SWIG or other means. There is a sample command line client "obexftp" and a server "obexftpd" included. Besides FTP the ObexFTP library provides access to the PUSH, GOEP and SYNCH services. It runs on Linux, FreeBSD, NetBSD and Win32.

    5.2、基于Obexftp的應(yīng)用程序開發(fā)

    參考代碼

    6、參考資料

    D-bus官網(wǎng),http://dbus.freedesktop.org/doc/dbus-tutorial.html§

    D-bus中文介紹http://blog.sina.com.cn/s/blog_5412ede60100eml7.html§

    Bluetooth官網(wǎng)www.bluetooth.com§

    Openobex官網(wǎng),http://dev.zuckschwerdt.org/openobex/wiki/ObexIntroduction§

    Openobex APIhttp://dev.zuckschwerdt.org/openobex/doxygen/

    轉(zhuǎn)載于:https://my.oschina.net/u/994235/blog/113213

    總結(jié)

    以上是生活随笔為你收集整理的Linux下Bluez的编程实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    色偷偷人人澡人人爽人人模 | 日日碰狠狠丁香久燥 | 亚洲欧美综合区丁香五月小说 | 美女黄网站人色视频免费国产 | 国产成人亚洲综合无码 | 中文字幕无码乱人伦 | 国产精品自产拍在线观看 | 国产精品无套呻吟在线 | 狠狠cao日日穞夜夜穞av | 国产国产精品人在线视 | 亚洲精品国产精品乱码视色 | 久久天天躁狠狠躁夜夜免费观看 | 中文字幕人成乱码熟女app | 精品国产成人一区二区三区 | 成熟妇人a片免费看网站 | 成人欧美一区二区三区黑人 | 国模大胆一区二区三区 | 成人综合网亚洲伊人 | 成人女人看片免费视频放人 | 日韩精品一区二区av在线 | 国产无套粉嫩白浆在线 | 亚洲人成人无码网www国产 | 国产猛烈高潮尖叫视频免费 | 日韩人妻无码中文字幕视频 | 性开放的女人aaa片 | 麻豆md0077饥渴少妇 | 欧美真人作爱免费视频 | 一个人看的www免费视频在线观看 | 清纯唯美经典一区二区 | 天天综合网天天综合色 | 人人超人人超碰超国产 | 精品无码成人片一区二区98 | 亚洲午夜福利在线观看 | 天天拍夜夜添久久精品大 | 国产网红无码精品视频 | 亚洲呦女专区 | 亚洲中文字幕无码中文字在线 | 国产av一区二区精品久久凹凸 | 久久精品无码一区二区三区 | 午夜福利电影 | 漂亮人妻洗澡被公强 日日躁 | 国产黄在线观看免费观看不卡 | 免费人成在线视频无码 | 国产精品毛片一区二区 | 久久伊人色av天堂九九小黄鸭 | 久久久婷婷五月亚洲97号色 | 日韩人妻少妇一区二区三区 | 成人片黄网站色大片免费观看 | 波多野42部无码喷潮在线 | 国产乱码精品一品二品 | 一本加勒比波多野结衣 | 美女张开腿让人桶 | 人妻少妇精品视频专区 | 成人精品一区二区三区中文字幕 | 中文字幕无码av波多野吉衣 | 久久99精品国产麻豆蜜芽 | 国产亚洲日韩欧美另类第八页 | 欧美黑人乱大交 | 国产精华av午夜在线观看 | 精品午夜福利在线观看 | 成年美女黄网站色大免费全看 | 国产av一区二区精品久久凹凸 | 国産精品久久久久久久 | 国产口爆吞精在线视频 | 天天燥日日燥 | 久久精品无码一区二区三区 | 国产精品无码久久av | 亚洲精品一区三区三区在线观看 | 亚洲国产av精品一区二区蜜芽 | 无码国产乱人伦偷精品视频 | 亚洲国产av精品一区二区蜜芽 | 久久精品中文闷骚内射 | 久久综合久久自在自线精品自 | 成人精品一区二区三区中文字幕 | 免费中文字幕日韩欧美 | 国产亚洲精品久久久久久 | 亚洲精品美女久久久久久久 | 亚洲一区二区三区香蕉 | 精品夜夜澡人妻无码av蜜桃 | 无码av岛国片在线播放 | 无码人妻精品一区二区三区下载 | 久久精品国产精品国产精品污 | 国产亚洲精品久久久ai换 | 欧美精品国产综合久久 | 日韩成人一区二区三区在线观看 | 亚洲 欧美 激情 小说 另类 | 国产超级va在线观看视频 | 天天av天天av天天透 | 亚洲中文字幕在线无码一区二区 | 99精品国产综合久久久久五月天 | 久久精品国产一区二区三区肥胖 | 男人扒开女人内裤强吻桶进去 | 亚洲 另类 在线 欧美 制服 | 国产av无码专区亚洲awww | 久久综合九色综合97网 | 人人妻人人藻人人爽欧美一区 | 亚洲第一网站男人都懂 | 无码国内精品人妻少妇 | 草草网站影院白丝内射 | 中文字幕人成乱码熟女app | 六十路熟妇乱子伦 | 精品亚洲韩国一区二区三区 | 精品人妻中文字幕有码在线 | 欧美人与禽猛交狂配 | 亚洲精品国产a久久久久久 | 青春草在线视频免费观看 | 丝袜美腿亚洲一区二区 | 国产特级毛片aaaaaa高潮流水 | 日本爽爽爽爽爽爽在线观看免 | 日日摸日日碰夜夜爽av | 熟女少妇在线视频播放 | 又紧又大又爽精品一区二区 | 久久综合色之久久综合 | 18禁黄网站男男禁片免费观看 | a在线亚洲男人的天堂 | 永久免费观看国产裸体美女 | 精品欧美一区二区三区久久久 | 男女猛烈xx00免费视频试看 | 成人三级无码视频在线观看 | 国产美女精品一区二区三区 | 国产性生交xxxxx无码 | 2020最新国产自产精品 | 国产97在线 | 亚洲 | 熟女俱乐部五十路六十路av | 亚洲中文字幕无码中字 | 国产精品久久精品三级 | 欧洲美熟女乱又伦 | 亚洲人成影院在线观看 | 伊人久久大香线焦av综合影院 | 亚洲欧美日韩国产精品一区二区 | 亚洲成熟女人毛毛耸耸多 | 日韩精品一区二区av在线 | 国产欧美熟妇另类久久久 | 人人妻人人澡人人爽精品欧美 | 日产国产精品亚洲系列 | 国产精品无码一区二区三区不卡 | 女人色极品影院 | 精品人妻人人做人人爽 | 精品 日韩 国产 欧美 视频 | 亚洲 欧美 激情 小说 另类 | 国产一区二区三区四区五区加勒比 | 性色欲情网站iwww九文堂 | 免费无码午夜福利片69 | 熟妇人妻中文av无码 | 老子影院午夜精品无码 | 成人性做爰aaa片免费看 | 久久亚洲日韩精品一区二区三区 | 亚洲国产精品毛片av不卡在线 | 女人和拘做爰正片视频 | 国产成人综合在线女婷五月99播放 | 欧洲精品码一区二区三区免费看 | 免费网站看v片在线18禁无码 | 正在播放老肥熟妇露脸 | 熟女少妇在线视频播放 | 无码精品人妻一区二区三区av | 少妇太爽了在线观看 | 亚洲一区二区三区播放 | 在线欧美精品一区二区三区 | 亚洲精品午夜国产va久久成人 | 国产欧美精品一区二区三区 | 久久久中文久久久无码 | 伊人久久大香线焦av综合影院 | 国产高清av在线播放 | 亚洲成av人综合在线观看 | 久久zyz资源站无码中文动漫 | 天天av天天av天天透 | 色婷婷久久一区二区三区麻豆 | 蜜桃视频韩日免费播放 | 亚洲第一网站男人都懂 | 青春草在线视频免费观看 | 亚洲国产一区二区三区在线观看 | 国产成人人人97超碰超爽8 | 国产人妻大战黑人第1集 | 国产精品自产拍在线观看 | 久久人人爽人人爽人人片ⅴ | 真人与拘做受免费视频 | 国产真人无遮挡作爱免费视频 | 精品一区二区不卡无码av | 天堂а√在线中文在线 | 美女扒开屁股让男人桶 | 欧美成人家庭影院 | 中文字幕人成乱码熟女app | 一二三四社区在线中文视频 | 东京无码熟妇人妻av在线网址 | 国产精品第一区揄拍无码 | 99久久无码一区人妻 | 国产精品久久久久影院嫩草 | 九月婷婷人人澡人人添人人爽 | 国产尤物精品视频 | 免费视频欧美无人区码 | 婷婷综合久久中文字幕蜜桃三电影 | 国产人成高清在线视频99最全资源 | 午夜不卡av免费 一本久久a久久精品vr综合 | 一本色道久久综合狠狠躁 | 久久综合给久久狠狠97色 | 无遮无挡爽爽免费视频 | 中文精品久久久久人妻不卡 | 中文字幕日产无线码一区 | 亚洲国产精品毛片av不卡在线 | 国产又粗又硬又大爽黄老大爷视 | 日本熟妇乱子伦xxxx | 久久亚洲中文字幕精品一区 | 99精品视频在线观看免费 | 麻豆国产人妻欲求不满谁演的 | 天堂亚洲2017在线观看 | 性生交大片免费看女人按摩摩 | 国产黄在线观看免费观看不卡 | 国产深夜福利视频在线 | 亚洲人成无码网www | 成人免费视频视频在线观看 免费 | 麻豆md0077饥渴少妇 | 夜精品a片一区二区三区无码白浆 | 国产亚洲精品久久久久久国模美 | 天堂亚洲2017在线观看 | 九月婷婷人人澡人人添人人爽 | 国产 浪潮av性色四虎 | 亚洲精品一区二区三区大桥未久 | 无码午夜成人1000部免费视频 | 天堂一区人妻无码 | 天天躁夜夜躁狠狠是什么心态 | 成人欧美一区二区三区黑人免费 | 人妻少妇被猛烈进入中文字幕 | 俺去俺来也www色官网 | 久久午夜夜伦鲁鲁片无码免费 | 亚洲一区二区三区在线观看网站 | 成人免费无码大片a毛片 | 日韩av无码中文无码电影 | 男女作爱免费网站 | 国产va免费精品观看 | 国产艳妇av在线观看果冻传媒 | 人妻天天爽夜夜爽一区二区 | 日本在线高清不卡免费播放 | 天堂在线观看www | 在线精品国产一区二区三区 | 亚洲国产精品一区二区美利坚 | 国产无套内射久久久国产 | 欧美变态另类xxxx | 一本色道婷婷久久欧美 | 国产成人精品视频ⅴa片软件竹菊 | 国产成人综合在线女婷五月99播放 | 中文字幕色婷婷在线视频 | 久久久成人毛片无码 | 天天综合网天天综合色 | 一个人看的www免费视频在线观看 | 丝袜足控一区二区三区 | 国产精品igao视频网 | 色一情一乱一伦一视频免费看 | 久久成人a毛片免费观看网站 | 5858s亚洲色大成网站www | 狠狠色色综合网站 | 人人澡人人妻人人爽人人蜜桃 | 欧美精品在线观看 | 久久精品99久久香蕉国产色戒 | 暴力强奷在线播放无码 | 亚洲最大成人网站 | 内射巨臀欧美在线视频 | 人妻插b视频一区二区三区 | 欧美xxxx黑人又粗又长 | 免费人成网站视频在线观看 | 精品久久久中文字幕人妻 | аⅴ资源天堂资源库在线 | 99视频精品全部免费免费观看 | 草草网站影院白丝内射 | 7777奇米四色成人眼影 | 精品亚洲韩国一区二区三区 | 中文毛片无遮挡高清免费 | 高清国产亚洲精品自在久久 | 久久zyz资源站无码中文动漫 | 中文字幕日产无线码一区 | 少妇人妻偷人精品无码视频 | 国内精品久久毛片一区二区 | 波多野结衣av在线观看 | 大乳丰满人妻中文字幕日本 | 无码免费一区二区三区 | 人妻插b视频一区二区三区 | 玩弄人妻少妇500系列视频 | 欧美变态另类xxxx | 性欧美videos高清精品 | 国产精品无码mv在线观看 | 国产成人久久精品流白浆 | 永久免费精品精品永久-夜色 | 国产片av国语在线观看 | 在线观看免费人成视频 | 东北女人啪啪对白 | 全黄性性激高免费视频 | 麻豆国产人妻欲求不满 | 日韩无码专区 | 久久精品视频在线看15 | 波多野结衣一区二区三区av免费 | 内射老妇bbwx0c0ck | 蜜臀av在线播放 久久综合激激的五月天 | 日韩视频 中文字幕 视频一区 | 天天av天天av天天透 | 国产婷婷色一区二区三区在线 | 四虎国产精品一区二区 | 国产成人无码a区在线观看视频app | 色一情一乱一伦一区二区三欧美 | 久久亚洲精品成人无码 | 骚片av蜜桃精品一区 | 日日碰狠狠躁久久躁蜜桃 | 红桃av一区二区三区在线无码av | 青青草原综合久久大伊人精品 | 亚洲日本va中文字幕 | 对白脏话肉麻粗话av | 中文久久乱码一区二区 | 97夜夜澡人人爽人人喊中国片 | 久久国产36精品色熟妇 | 国产人妻人伦精品1国产丝袜 | 大屁股大乳丰满人妻 | 日本饥渴人妻欲求不满 | 无遮挡国产高潮视频免费观看 | 2019午夜福利不卡片在线 | 国产精品久久久久久亚洲影视内衣 | 55夜色66夜色国产精品视频 | 少妇性l交大片欧洲热妇乱xxx | 国产极品视觉盛宴 | 日产精品99久久久久久 | 丰满妇女强制高潮18xxxx | 天堂а√在线地址中文在线 | 高潮毛片无遮挡高清免费视频 | 国产尤物精品视频 | 亚洲色欲色欲天天天www | 国产精品igao视频网 | 日产国产精品亚洲系列 | 精品欧美一区二区三区久久久 | 久久天天躁狠狠躁夜夜免费观看 | 亚洲自偷精品视频自拍 | 四虎影视成人永久免费观看视频 | 日韩精品成人一区二区三区 | 日韩精品a片一区二区三区妖精 | 精品少妇爆乳无码av无码专区 | 亚洲精品久久久久中文第一幕 | 精品国产av色一区二区深夜久久 | 国产无套内射久久久国产 | 人人爽人人澡人人高潮 | 亚洲一区二区三区香蕉 | 又紧又大又爽精品一区二区 | 日韩欧美成人免费观看 | 亚洲春色在线视频 | 国产精品国产自线拍免费软件 | 欧美激情一区二区三区成人 | 久久久久成人精品免费播放动漫 | 成人无码精品一区二区三区 | 国产精品无码久久av | 欧美日韩一区二区免费视频 | 精品国产一区二区三区四区 | 国产9 9在线 | 中文 | 美女极度色诱视频国产 | 精品国精品国产自在久国产87 | 99久久人妻精品免费二区 | 伊在人天堂亚洲香蕉精品区 | 日日夜夜撸啊撸 | 天天躁日日躁狠狠躁免费麻豆 | 日本精品人妻无码免费大全 | 丝袜人妻一区二区三区 | 亚洲精品www久久久 | 无套内谢的新婚少妇国语播放 | 99精品久久毛片a片 | 大肉大捧一进一出好爽视频 | 玩弄中年熟妇正在播放 | 亚洲中文字幕无码中字 | 国产亚洲精品精品国产亚洲综合 | 中文毛片无遮挡高清免费 | yw尤物av无码国产在线观看 | 夜精品a片一区二区三区无码白浆 | a在线亚洲男人的天堂 | 成人一在线视频日韩国产 | 正在播放老肥熟妇露脸 | 又湿又紧又大又爽a视频国产 | yw尤物av无码国产在线观看 | 精品国产一区二区三区四区 | 一本加勒比波多野结衣 | 成人亚洲精品久久久久软件 | 天海翼激烈高潮到腰振不止 | 极品尤物被啪到呻吟喷水 | 久久久www成人免费毛片 | 熟女少妇人妻中文字幕 | 亚洲午夜久久久影院 | 丰满人妻精品国产99aⅴ | 最新国产麻豆aⅴ精品无码 | 99riav国产精品视频 | 日本成熟视频免费视频 | 日本熟妇人妻xxxxx人hd | 中文字幕色婷婷在线视频 | 国产精品无码一区二区桃花视频 | 7777奇米四色成人眼影 | 99精品无人区乱码1区2区3区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 中文字幕无码日韩专区 | 国产av无码专区亚洲a∨毛片 | 亚洲日韩av片在线观看 | 欧美人与禽猛交狂配 | 纯爱无遮挡h肉动漫在线播放 | 久久99久久99精品中文字幕 | 亚洲欧美国产精品久久 | 精品人妻人人做人人爽 | 玩弄人妻少妇500系列视频 | 无码乱肉视频免费大全合集 | 精品国产aⅴ无码一区二区 | 亚洲爆乳无码专区 | 人人妻人人澡人人爽欧美一区九九 | 在线观看国产一区二区三区 | 亚洲日韩精品欧美一区二区 | 又大又紧又粉嫩18p少妇 | 国产又爽又黄又刺激的视频 | 亚洲自偷精品视频自拍 | 国产一区二区不卡老阿姨 | 色欲久久久天天天综合网精品 | 丁香啪啪综合成人亚洲 | 永久免费精品精品永久-夜色 | 欧洲精品码一区二区三区免费看 | 国内丰满熟女出轨videos | 成人毛片一区二区 | 亚洲人成影院在线无码按摩店 | 亚洲日本一区二区三区在线 | 欧美国产日韩久久mv | 十八禁视频网站在线观看 | 国精产品一品二品国精品69xx | 最新国产乱人伦偷精品免费网站 | 国内丰满熟女出轨videos | 亚洲精品中文字幕久久久久 | 色综合久久久无码网中文 | 狠狠亚洲超碰狼人久久 | www国产精品内射老师 | 日本一区二区三区免费高清 | 亚洲日本在线电影 | 永久免费观看国产裸体美女 | 中文字幕日产无线码一区 | 少妇性荡欲午夜性开放视频剧场 | 十八禁真人啪啪免费网站 | 免费中文字幕日韩欧美 | 东京无码熟妇人妻av在线网址 | 性色欲网站人妻丰满中文久久不卡 | 亚洲 a v无 码免 费 成 人 a v | 纯爱无遮挡h肉动漫在线播放 | 国产 精品 自在自线 | 九九综合va免费看 | 狂野欧美性猛交免费视频 | 澳门永久av免费网站 | 亚洲狠狠色丁香婷婷综合 | 无码人妻黑人中文字幕 | 国产无遮挡又黄又爽又色 | 最近的中文字幕在线看视频 | 永久免费观看美女裸体的网站 | 国产综合久久久久鬼色 | 动漫av一区二区在线观看 | 噜噜噜亚洲色成人网站 | 激情亚洲一区国产精品 | 亚洲爆乳精品无码一区二区三区 | 国产后入清纯学生妹 | 少妇性俱乐部纵欲狂欢电影 | 人人妻人人澡人人爽欧美一区九九 | 国产激情艳情在线看视频 | 无码人妻av免费一区二区三区 | 性生交片免费无码看人 | 欧美日韩一区二区免费视频 | 99精品国产综合久久久久五月天 | 1000部啪啪未满十八勿入下载 | 久久国产自偷自偷免费一区调 | 亚洲精品中文字幕乱码 | 少妇人妻偷人精品无码视频 | 亚洲精品一区二区三区在线 | 中文字幕中文有码在线 | 麻豆人妻少妇精品无码专区 | 久久综合网欧美色妞网 | 国产又爽又黄又刺激的视频 | 狂野欧美性猛xxxx乱大交 | 99视频精品全部免费免费观看 | 国产亚洲精品久久久久久国模美 | 国产超级va在线观看视频 | 中文字幕乱妇无码av在线 | 正在播放老肥熟妇露脸 | 无码乱肉视频免费大全合集 | 久久这里只有精品视频9 | 国产艳妇av在线观看果冻传媒 | 少妇被粗大的猛进出69影院 | 纯爱无遮挡h肉动漫在线播放 | 思思久久99热只有频精品66 | 综合激情五月综合激情五月激情1 | 波多野结衣av一区二区全免费观看 | 午夜理论片yy44880影院 | 国产婷婷色一区二区三区在线 | 四十如虎的丰满熟妇啪啪 | 国产另类ts人妖一区二区 | 精品久久久久久亚洲精品 | 乌克兰少妇xxxx做受 | 熟女俱乐部五十路六十路av | 久久久久se色偷偷亚洲精品av | 自拍偷自拍亚洲精品10p | 亚洲色成人中文字幕网站 | 久久国产精品二国产精品 | 国产人妻人伦精品 | 亚洲精品综合一区二区三区在线 | 国产亚洲欧美在线专区 | 97色伦图片97综合影院 | 纯爱无遮挡h肉动漫在线播放 | 乱中年女人伦av三区 | 久久精品国产99精品亚洲 | 性开放的女人aaa片 | 99riav国产精品视频 | 久久成人a毛片免费观看网站 | 波多野结衣一区二区三区av免费 | 99在线 | 亚洲 | 色一情一乱一伦一区二区三欧美 | 人人妻人人澡人人爽欧美精品 | 图片区 小说区 区 亚洲五月 | 国产精品无码一区二区桃花视频 | 少妇的肉体aa片免费 | 国产区女主播在线观看 | 激情内射亚州一区二区三区爱妻 | 欧美精品国产综合久久 | 欧美熟妇另类久久久久久多毛 | 婷婷五月综合激情中文字幕 | 国产成人无码av片在线观看不卡 | 少妇无码av无码专区在线观看 | 人人妻人人澡人人爽精品欧美 | 亚洲aⅴ无码成人网站国产app | 国产亚洲精品久久久ai换 | 一二三四在线观看免费视频 | 狠狠cao日日穞夜夜穞av | 99视频精品全部免费免费观看 | 少妇人妻大乳在线视频 | 秋霞特色aa大片 | 国产午夜视频在线观看 | 国产精品国产三级国产专播 | 在线观看国产午夜福利片 | 国产特级毛片aaaaaa高潮流水 | 狠狠色欧美亚洲狠狠色www | ass日本丰满熟妇pics | 午夜精品一区二区三区的区别 | 婷婷丁香六月激情综合啪 | 色欲久久久天天天综合网精品 | 六月丁香婷婷色狠狠久久 | 麻豆成人精品国产免费 | 欧美高清在线精品一区 | 久久国语露脸国产精品电影 | 老头边吃奶边弄进去呻吟 | 亚洲中文字幕在线观看 | 人妻有码中文字幕在线 | 精品国产一区二区三区四区 | 国产乱子伦视频在线播放 | 亚洲国产av美女网站 | 中文字幕 人妻熟女 | 亚洲精品国产a久久久久久 | 国产精品久久久久久亚洲影视内衣 | 熟妇人妻激情偷爽文 | 久久久国产一区二区三区 | 丝袜 中出 制服 人妻 美腿 | 精品一区二区三区无码免费视频 | 大肉大捧一进一出视频出来呀 | 亚洲成a人片在线观看日本 | 一本一道久久综合久久 | 日日干夜夜干 | 亚无码乱人伦一区二区 | 特大黑人娇小亚洲女 | 国产成人无码a区在线观看视频app | 精品人妻人人做人人爽夜夜爽 | 最新国产麻豆aⅴ精品无码 | 亚洲日韩精品欧美一区二区 | 国产激情精品一区二区三区 | 免费观看又污又黄的网站 | 熟女俱乐部五十路六十路av | 俺去俺来也在线www色官网 | 日韩av激情在线观看 | 天海翼激烈高潮到腰振不止 | 日韩欧美中文字幕公布 | 无码人妻av免费一区二区三区 | 18禁止看的免费污网站 | 色欲av亚洲一区无码少妇 | 高潮喷水的毛片 | 少女韩国电视剧在线观看完整 | 亚洲中文字幕无码中字 | 精品一区二区三区波多野结衣 | 久久国产精品偷任你爽任你 | 色五月丁香五月综合五月 | 88国产精品欧美一区二区三区 | 国产一区二区三区四区五区加勒比 | 欧美日韩一区二区综合 | 亚洲精品午夜无码电影网 | 亚洲日本va午夜在线电影 | 丝袜人妻一区二区三区 | 亚欧洲精品在线视频免费观看 | 女人高潮内射99精品 | 亚洲成av人在线观看网址 | 疯狂三人交性欧美 | 成人无码精品1区2区3区免费看 | 黑人大群体交免费视频 | 牲交欧美兽交欧美 | 欧美性猛交内射兽交老熟妇 | 欧美熟妇另类久久久久久多毛 | 久久精品国产99精品亚洲 | 日本大乳高潮视频在线观看 | 欧美人与禽猛交狂配 | 美女黄网站人色视频免费国产 | 亚洲欧洲日本综合aⅴ在线 | 欧美黑人性暴力猛交喷水 | 久久人妻内射无码一区三区 | 少妇人妻偷人精品无码视频 | 精品国产一区二区三区av 性色 | 久久综合九色综合欧美狠狠 | 久精品国产欧美亚洲色aⅴ大片 | 一二三四社区在线中文视频 | 婷婷五月综合激情中文字幕 | 国产又爽又黄又刺激的视频 | 日日天干夜夜狠狠爱 | 人人爽人人澡人人人妻 | 免费无码肉片在线观看 | 人妻aⅴ无码一区二区三区 | 亚洲综合色区中文字幕 | 日韩精品成人一区二区三区 | 综合激情五月综合激情五月激情1 | 六月丁香婷婷色狠狠久久 | 日本精品高清一区二区 | 色婷婷综合中文久久一本 | 在线播放无码字幕亚洲 | 国产精品久久久久9999小说 | 亚洲综合无码一区二区三区 | 色欲久久久天天天综合网精品 | 大地资源网第二页免费观看 | 色爱情人网站 | 日本爽爽爽爽爽爽在线观看免 | 久久zyz资源站无码中文动漫 | 又粗又大又硬毛片免费看 | 国产人妖乱国产精品人妖 | 中文字幕乱码人妻无码久久 | 任你躁国产自任一区二区三区 | 久久精品国产一区二区三区肥胖 | 欧美日韩视频无码一区二区三 | 成人试看120秒体验区 | 激情内射亚州一区二区三区爱妻 | 2020最新国产自产精品 | 亚洲成av人片天堂网无码】 | 少妇被粗大的猛进出69影院 | 亚洲爆乳精品无码一区二区三区 | 久久亚洲中文字幕精品一区 | 亚洲精品国产第一综合99久久 | 人妻无码久久精品人妻 | 大肉大捧一进一出好爽视频 | 亚洲欧美日韩综合久久久 | 极品尤物被啪到呻吟喷水 | 伊人久久大香线焦av综合影院 | 日日橹狠狠爱欧美视频 | 鲁一鲁av2019在线 | 无码人妻黑人中文字幕 | 无码人妻丰满熟妇区毛片18 | 欧美zoozzooz性欧美 | 久久人人爽人人人人片 | 97久久国产亚洲精品超碰热 | 国产精品亚洲五月天高清 | 麻豆成人精品国产免费 | 国产在线aaa片一区二区99 | 亚洲小说图区综合在线 | 久久人人爽人人爽人人片ⅴ | 未满成年国产在线观看 | 亚洲性无码av中文字幕 | 欧美丰满熟妇xxxx性ppx人交 | 一个人免费观看的www视频 | 亚洲の无码国产の无码影院 | 国产精品.xx视频.xxtv | 国内综合精品午夜久久资源 | 成 人 网 站国产免费观看 | 欧洲vodafone精品性 | 日韩精品一区二区av在线 | 久久综合激激的五月天 | av香港经典三级级 在线 | 久久精品中文字幕大胸 | 老子影院午夜伦不卡 | 欧美老妇交乱视频在线观看 | aⅴ亚洲 日韩 色 图网站 播放 | 久久久亚洲欧洲日产国码αv | 中文字幕 亚洲精品 第1页 | 亚洲 a v无 码免 费 成 人 a v | 高潮毛片无遮挡高清免费 | 婷婷综合久久中文字幕蜜桃三电影 | 特黄特色大片免费播放器图片 | 乱码av麻豆丝袜熟女系列 | 亚洲午夜久久久影院 | 久在线观看福利视频 | 国产高清不卡无码视频 | 76少妇精品导航 | 日本www一道久久久免费榴莲 | 激情国产av做激情国产爱 | 国产精品无码一区二区桃花视频 | 无套内谢老熟女 | 久久精品无码一区二区三区 | 国产尤物精品视频 | 亚欧洲精品在线视频免费观看 | 国内丰满熟女出轨videos | 国产一区二区不卡老阿姨 | 女人被男人爽到呻吟的视频 | 中文字幕无码热在线视频 | 人妻少妇精品视频专区 | 欧美zoozzooz性欧美 | 久久精品中文闷骚内射 | 又大又黄又粗又爽的免费视频 | 欧美 亚洲 国产 另类 | 青草视频在线播放 | 亚洲精品一区二区三区大桥未久 | 99久久精品国产一区二区蜜芽 | 天干天干啦夜天干天2017 | 国产午夜福利100集发布 | 99国产精品白浆在线观看免费 | 精品无码一区二区三区的天堂 | 天堂久久天堂av色综合 | 2019nv天堂香蕉在线观看 | 在线看片无码永久免费视频 | 亚洲国产精品久久久天堂 | 午夜无码区在线观看 | 久久精品中文字幕一区 | 四虎4hu永久免费 | 国产精品久久国产精品99 | 丁香啪啪综合成人亚洲 | 大肉大捧一进一出好爽视频 | 免费观看又污又黄的网站 | 成熟人妻av无码专区 | 成人欧美一区二区三区黑人免费 | 2019nv天堂香蕉在线观看 | 在线看片无码永久免费视频 | 无遮挡国产高潮视频免费观看 | 波多野结衣高清一区二区三区 | 啦啦啦www在线观看免费视频 | 日日摸日日碰夜夜爽av | 无码纯肉视频在线观看 | 国产内射爽爽大片视频社区在线 | 国产精品久久久午夜夜伦鲁鲁 | 女人被男人躁得好爽免费视频 | 无码国产激情在线观看 | 黑人巨大精品欧美黑寡妇 | 日韩成人一区二区三区在线观看 | 久久国产36精品色熟妇 | 欧美日韩视频无码一区二区三 | 少妇性l交大片欧洲热妇乱xxx | 日本护士xxxxhd少妇 | 欧美性猛交xxxx富婆 | 1000部夫妻午夜免费 | 无码毛片视频一区二区本码 | 亚洲精品无码人妻无码 | 荫蒂被男人添的好舒服爽免费视频 | 成人欧美一区二区三区黑人免费 | 99视频精品全部免费免费观看 | 无码人妻精品一区二区三区不卡 | 亚洲成a人片在线观看无码 | 沈阳熟女露脸对白视频 | 在线а√天堂中文官网 | 国内精品一区二区三区不卡 | 草草网站影院白丝内射 | 中文字幕+乱码+中文字幕一区 | 亚洲精品中文字幕 | 国产亚洲视频中文字幕97精品 | 亚洲日韩av一区二区三区中文 | 高清不卡一区二区三区 | 少妇性l交大片 | 国产精品福利视频导航 | 成人免费视频一区二区 | 国产美女极度色诱视频www | 色综合久久中文娱乐网 | 99精品国产综合久久久久五月天 | 国产精品无码永久免费888 | 欧美精品一区二区精品久久 | 在线精品国产一区二区三区 | a片免费视频在线观看 | 久久综合香蕉国产蜜臀av | 无码国内精品人妻少妇 | 亚洲码国产精品高潮在线 | 国产人妖乱国产精品人妖 | 蜜桃视频插满18在线观看 | 熟妇人妻激情偷爽文 | 国产精品高潮呻吟av久久4虎 | 久久综合九色综合欧美狠狠 | 丰满人妻翻云覆雨呻吟视频 | 国产人妖乱国产精品人妖 | 国精产品一品二品国精品69xx | 狠狠噜狠狠狠狠丁香五月 | 国内丰满熟女出轨videos | 2020最新国产自产精品 | 7777奇米四色成人眼影 | 乱人伦人妻中文字幕无码久久网 | 一本色道婷婷久久欧美 | 高潮毛片无遮挡高清免费 | 真人与拘做受免费视频一 | 无码人妻精品一区二区三区不卡 | 日本www一道久久久免费榴莲 | 四虎影视成人永久免费观看视频 | 蜜桃av抽搐高潮一区二区 | 色婷婷综合激情综在线播放 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 内射爽无广熟女亚洲 | 国产麻豆精品精东影业av网站 | 国产精品理论片在线观看 | 中文无码成人免费视频在线观看 | 午夜福利电影 | 无码av最新清无码专区吞精 | 久久精品99久久香蕉国产色戒 | 亚洲aⅴ无码成人网站国产app | 一本久道久久综合狠狠爱 | 日韩精品a片一区二区三区妖精 | 久久人人97超碰a片精品 | 日本熟妇大屁股人妻 | 欧美老熟妇乱xxxxx | 亚洲国产精品无码久久久久高潮 | 色爱情人网站 | 亚洲精品中文字幕久久久久 | av香港经典三级级 在线 | 人妻中文无码久热丝袜 | 精品国精品国产自在久国产87 | 2019午夜福利不卡片在线 | av人摸人人人澡人人超碰下载 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲中文字幕无码一久久区 | 国产在线精品一区二区三区直播 | 强伦人妻一区二区三区视频18 | 最近免费中文字幕中文高清百度 | 国产凸凹视频一区二区 | 极品嫩模高潮叫床 | 水蜜桃亚洲一二三四在线 | 又色又爽又黄的美女裸体网站 | 特级做a爰片毛片免费69 | 正在播放东北夫妻内射 | 中文字幕人妻丝袜二区 | 亚洲熟妇色xxxxx亚洲 | 大肉大捧一进一出视频出来呀 | 日本精品人妻无码77777 天堂一区人妻无码 | 老头边吃奶边弄进去呻吟 | 日韩av无码一区二区三区不卡 | 国产精品理论片在线观看 | 老司机亚洲精品影院 | 国产 精品 自在自线 | 国产一区二区三区精品视频 | 天堂久久天堂av色综合 | 午夜福利试看120秒体验区 | 在线播放免费人成毛片乱码 | 成 人 网 站国产免费观看 | 亚洲阿v天堂在线 | 亚洲精品综合一区二区三区在线 | 色诱久久久久综合网ywww | 男女下面进入的视频免费午夜 | 国产成人无码a区在线观看视频app | 超碰97人人射妻 | 中文字幕日韩精品一区二区三区 | 亚洲熟悉妇女xxx妇女av | 无码精品人妻一区二区三区av | 双乳奶水饱满少妇呻吟 | 草草网站影院白丝内射 | 亲嘴扒胸摸屁股激烈网站 | 丰满肥臀大屁股熟妇激情视频 | 精品久久久中文字幕人妻 | 强开小婷嫩苞又嫩又紧视频 | 理论片87福利理论电影 | 俺去俺来也在线www色官网 | 综合激情五月综合激情五月激情1 | 蜜臀aⅴ国产精品久久久国产老师 | 乱码午夜-极国产极内射 | 欧美阿v高清资源不卡在线播放 | 两性色午夜视频免费播放 | 国产又爽又黄又刺激的视频 | 欧美日本日韩 | 欧美乱妇无乱码大黄a片 | 无码精品国产va在线观看dvd | 亚洲自偷精品视频自拍 | 成人性做爰aaa片免费看 | 国产亚洲人成a在线v网站 | 成人试看120秒体验区 | 亚洲欧洲无卡二区视頻 | 丰满人妻一区二区三区免费视频 | 久久综合激激的五月天 | 国产精品久久国产三级国 | 国产色在线 | 国产 | 久久国产精品萌白酱免费 | 中文字幕人成乱码熟女app | 人妻无码久久精品人妻 | 国产免费久久久久久无码 | 夜精品a片一区二区三区无码白浆 | 国产精品资源一区二区 | 亚洲一区二区三区播放 | 欧美日本免费一区二区三区 | 久久精品99久久香蕉国产色戒 | 国产激情无码一区二区 | 精品一区二区三区无码免费视频 | 呦交小u女精品视频 | 中文字幕av日韩精品一区二区 | 免费观看黄网站 | 玩弄中年熟妇正在播放 | 美女毛片一区二区三区四区 | 永久免费观看国产裸体美女 | 国产精品-区区久久久狼 | 国产精品毛片一区二区 | 国产精品久久久 | 色诱久久久久综合网ywww | 亚洲熟女一区二区三区 | 好男人社区资源 | 亚洲日韩精品欧美一区二区 | 岛国片人妻三上悠亚 | 噜噜噜亚洲色成人网站 | 精品人妻中文字幕有码在线 | 18精品久久久无码午夜福利 | 一区二区三区高清视频一 | 亚洲gv猛男gv无码男同 | 亚洲精品久久久久久一区二区 | 麻豆国产人妻欲求不满 | 98国产精品综合一区二区三区 | 国产9 9在线 | 中文 | 亚洲国产成人a精品不卡在线 | 久久综合激激的五月天 | 国产97人人超碰caoprom | 亲嘴扒胸摸屁股激烈网站 | 国产午夜手机精彩视频 | 日韩 欧美 动漫 国产 制服 | 国产成人久久精品流白浆 | 欧美高清在线精品一区 | 精品久久久久香蕉网 | 国产亚洲人成a在线v网站 | 婷婷五月综合激情中文字幕 | 大肉大捧一进一出好爽视频 | 亚洲欧美日韩综合久久久 | 亚洲精品一区二区三区大桥未久 | 国产深夜福利视频在线 | 亚洲一区二区三区偷拍女厕 | 天天摸天天碰天天添 | 4hu四虎永久在线观看 | 无码午夜成人1000部免费视频 | 国产精品二区一区二区aⅴ污介绍 | 九九在线中文字幕无码 | 久久久久国色av免费观看性色 | 婷婷色婷婷开心五月四房播播 | 亚洲天堂2017无码 | 国内丰满熟女出轨videos | 国产乱人无码伦av在线a | 国产成人无码午夜视频在线观看 | 中文字幕无码av波多野吉衣 | 亚洲一区二区三区在线观看网站 | 狠狠躁日日躁夜夜躁2020 | 免费中文字幕日韩欧美 | 国产成人无码午夜视频在线观看 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产精品毛片一区二区 | 国内精品久久久久久中文字幕 | 丰满肥臀大屁股熟妇激情视频 | 女人被男人躁得好爽免费视频 | 色欲人妻aaaaaaa无码 | 午夜精品一区二区三区的区别 | 亚洲国产成人av在线观看 | 永久黄网站色视频免费直播 | 国产莉萝无码av在线播放 | 大色综合色综合网站 | 亚洲色偷偷偷综合网 | 亚洲中文字幕成人无码 | 高潮毛片无遮挡高清免费视频 | 国产乱人伦av在线无码 | 亚洲欧洲中文日韩av乱码 | 色综合视频一区二区三区 | 性色av无码免费一区二区三区 | 欧美亚洲国产一区二区三区 | 四虎国产精品一区二区 | 天堂亚洲免费视频 | 一区二区三区高清视频一 | av人摸人人人澡人人超碰下载 | 精品国产aⅴ无码一区二区 | 国产精品亚洲专区无码不卡 | 国产成人一区二区三区别 | 青青久在线视频免费观看 | 成人欧美一区二区三区黑人 | 永久免费观看国产裸体美女 | 夜精品a片一区二区三区无码白浆 | 精品一区二区三区波多野结衣 | 97无码免费人妻超级碰碰夜夜 | 亚洲成av人综合在线观看 | 999久久久国产精品消防器材 | 中文字幕乱码亚洲无线三区 | 中文字幕日产无线码一区 | 1000部夫妻午夜免费 | 大肉大捧一进一出视频出来呀 | 又大又硬又爽免费视频 | 国产两女互慰高潮视频在线观看 | 少妇太爽了在线观看 | 亚洲中文字幕成人无码 | 精品一二三区久久aaa片 | 国产色xx群视频射精 | 无码国内精品人妻少妇 | av香港经典三级级 在线 | 少妇无码av无码专区在线观看 | 狠狠色色综合网站 | 欧美日韩综合一区二区三区 | 性史性农村dvd毛片 | 精品久久久无码中文字幕 | 成在人线av无码免费 | 少女韩国电视剧在线观看完整 | 国产午夜亚洲精品不卡 | 国产精品亚洲一区二区三区喷水 | 亚洲日韩精品欧美一区二区 | 成人性做爰aaa片免费看不忠 | 亚洲va欧美va天堂v国产综合 | 精品国偷自产在线 | 日本xxxx色视频在线观看免费 | 亚洲国产精品无码一区二区三区 | av无码电影一区二区三区 | 精品无人区无码乱码毛片国产 | 精品熟女少妇av免费观看 | 日韩欧美中文字幕在线三区 | 国产精品手机免费 | 国产精品人人爽人人做我的可爱 | 九九久久精品国产免费看小说 | 亚洲一区二区三区含羞草 | 呦交小u女精品视频 | 精品国产一区二区三区四区 | 国产凸凹视频一区二区 | 好男人www社区 | 亚洲成av人片在线观看无码不卡 | 荡女精品导航 | 午夜丰满少妇性开放视频 | 夜夜躁日日躁狠狠久久av | 免费无码av一区二区 | 嫩b人妻精品一区二区三区 | 午夜精品一区二区三区在线观看 | 奇米影视7777久久精品 | 日韩精品成人一区二区三区 | 久久成人a毛片免费观看网站 | 图片小说视频一区二区 | 玩弄人妻少妇500系列视频 | 精品国产aⅴ无码一区二区 | 又大又硬又黄的免费视频 | 国产激情一区二区三区 | 国内丰满熟女出轨videos | 国产色精品久久人妻 | 精品久久久久香蕉网 | 久久亚洲a片com人成 | 日本饥渴人妻欲求不满 | 亚洲中文无码av永久不收费 | 国产免费久久久久久无码 | 人人妻人人澡人人爽人人精品 | 精品一区二区三区波多野结衣 | 亚洲午夜无码久久 | 亚洲精品成人福利网站 | 丰满人妻被黑人猛烈进入 | 女人被男人爽到呻吟的视频 | 亚洲乱码日产精品bd | 欧美精品免费观看二区 | 久久亚洲精品中文字幕无男同 | a国产一区二区免费入口 | 亚洲理论电影在线观看 | 久久综合色之久久综合 | 精品熟女少妇av免费观看 | 妺妺窝人体色www在线小说 | 婷婷色婷婷开心五月四房播播 | 精品一二三区久久aaa片 | 亚洲精品鲁一鲁一区二区三区 | 思思久久99热只有频精品66 | 2020久久香蕉国产线看观看 | 欧美三级a做爰在线观看 | 国产精品99久久精品爆乳 | 免费国产黄网站在线观看 | 国产真人无遮挡作爱免费视频 | 沈阳熟女露脸对白视频 | 性啪啪chinese东北女人 | 天堂亚洲2017在线观看 | 国产日产欧产精品精品app | 久久国产精品偷任你爽任你 | 又大又硬又爽免费视频 | 无码帝国www无码专区色综合 | 久久人人爽人人人人片 | 99精品视频在线观看免费 | 图片小说视频一区二区 | 国产av无码专区亚洲a∨毛片 | 国产精品久久久久久久9999 | 两性色午夜视频免费播放 | 娇妻被黑人粗大高潮白浆 | 中文字幕无码av波多野吉衣 | 亚洲精品久久久久中文第一幕 | 亚洲日韩乱码中文无码蜜桃臀网站 | 性欧美videos高清精品 | 性欧美牲交xxxxx视频 | 日本又色又爽又黄的a片18禁 | 亚洲国产精品无码久久久久高潮 | 人妻天天爽夜夜爽一区二区 | 亚洲日韩中文字幕在线播放 | 国产又爽又黄又刺激的视频 | v一区无码内射国产 | 国产精品久久久久9999小说 | 欧美乱妇无乱码大黄a片 | 日韩亚洲欧美中文高清在线 | 国产乡下妇女做爰 | 日本精品少妇一区二区三区 | 日日摸夜夜摸狠狠摸婷婷 | 亚洲综合色区中文字幕 | 激情人妻另类人妻伦 | 最新国产麻豆aⅴ精品无码 | 国产一区二区三区精品视频 | 免费中文字幕日韩欧美 | 久久精品无码一区二区三区 | 玩弄少妇高潮ⅹxxxyw | 中文字幕无码日韩欧毛 | 亚洲国产精华液网站w | 精品久久久久久人妻无码中文字幕 | 国产一区二区不卡老阿姨 | 日本在线高清不卡免费播放 | 色欲综合久久中文字幕网 | 亚洲中文字幕在线观看 | 亚洲精品一区二区三区在线观看 | 中文字幕无码免费久久99 | yw尤物av无码国产在线观看 | 国产美女极度色诱视频www | 亚洲午夜福利在线观看 | 理论片87福利理论电影 | 亚洲精品久久久久久久久久久 | 人妻少妇精品无码专区二区 | 夜夜夜高潮夜夜爽夜夜爰爰 | 精品人妻中文字幕有码在线 | 67194成是人免费无码 | 久久久久久九九精品久 | 久久久久久久久888 | 伊在人天堂亚洲香蕉精品区 | 无码人妻精品一区二区三区不卡 | 少妇邻居内射在线 | 成人动漫在线观看 | 久久久国产精品无码免费专区 | 水蜜桃亚洲一二三四在线 | 国产精品亚洲а∨无码播放麻豆 | 日本大乳高潮视频在线观看 | 婷婷五月综合缴情在线视频 | 久久久无码中文字幕久... | 亚洲成av人片在线观看无码不卡 | 国语精品一区二区三区 | 大肉大捧一进一出视频出来呀 | 久久无码中文字幕免费影院蜜桃 | 日韩人妻无码中文字幕视频 | 国产凸凹视频一区二区 | 欧美丰满熟妇xxxx性ppx人交 | 蜜桃臀无码内射一区二区三区 | 国产九九九九九九九a片 | 亚洲最大成人网站 | 学生妹亚洲一区二区 | 国产一精品一av一免费 | 无码人妻丰满熟妇区毛片18 | 99麻豆久久久国产精品免费 | 又大又黄又粗又爽的免费视频 | 欧美人与牲动交xxxx | 老熟女重囗味hdxx69 | 久久99国产综合精品 | 亚洲国精产品一二二线 | 国产激情艳情在线看视频 | 午夜熟女插插xx免费视频 | 无码任你躁久久久久久久 | 国产suv精品一区二区五 | 特黄特色大片免费播放器图片 | 领导边摸边吃奶边做爽在线观看 | 中文字幕无码日韩专区 | 国产特级毛片aaaaaa高潮流水 | 精品久久久无码人妻字幂 | 少妇无套内谢久久久久 | 无码人妻丰满熟妇区毛片18 | 一本久道久久综合婷婷五月 | 精品久久久久久人妻无码中文字幕 | 日本va欧美va欧美va精品 | 亚洲成熟女人毛毛耸耸多 | 国产精品igao视频网 | 久久午夜夜伦鲁鲁片无码免费 | 日韩少妇白浆无码系列 | 乱人伦人妻中文字幕无码久久网 | 大屁股大乳丰满人妻 | 亚洲国产精品无码久久久久高潮 | 丝袜足控一区二区三区 | 99久久精品国产一区二区蜜芽 | 欧美自拍另类欧美综合图片区 | 国产av一区二区三区最新精品 | 亚洲日本va午夜在线电影 | 精品国产一区av天美传媒 | 老子影院午夜精品无码 | 久久综合九色综合欧美狠狠 | 天天拍夜夜添久久精品 | 香港三级日本三级妇三级 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产黑色丝袜在线播放 | 久久精品国产99精品亚洲 | 亚洲中文字幕无码中文字在线 | 四虎永久在线精品免费网址 | 夜先锋av资源网站 | 国产亚洲精品久久久久久久 | 久久国产精品二国产精品 | 国产无遮挡吃胸膜奶免费看 | 国产福利视频一区二区 | 麻豆人妻少妇精品无码专区 | av无码电影一区二区三区 | 国产香蕉尹人综合在线观看 | 国产内射爽爽大片视频社区在线 | 激情综合激情五月俺也去 | 激情内射日本一区二区三区 | 一本久久a久久精品vr综合 | 中文字幕亚洲情99在线 | 九九在线中文字幕无码 | 日本一卡二卡不卡视频查询 | 无码中文字幕色专区 | 少妇人妻大乳在线视频 | 国产精品无码成人午夜电影 | 白嫩日本少妇做爰 | 国产国产精品人在线视 | 麻豆国产人妻欲求不满 | 欧美人与牲动交xxxx | 亚洲国精产品一二二线 | 国产 精品 自在自线 | 国产精品久久久久影院嫩草 | 国产精品无码成人午夜电影 | 天堂а√在线地址中文在线 | 97夜夜澡人人爽人人喊中国片 | 国产免费无码一区二区视频 | 午夜福利试看120秒体验区 | 亚洲综合久久一区二区 | 久久精品国产精品国产精品污 | 国产又粗又硬又大爽黄老大爷视 | 在线 国产 欧美 亚洲 天堂 | 国产精品高潮呻吟av久久4虎 | 色婷婷久久一区二区三区麻豆 | 亚洲国产欧美日韩精品一区二区三区 | 久久人人97超碰a片精品 | 久热国产vs视频在线观看 | 天海翼激烈高潮到腰振不止 | 色婷婷综合中文久久一本 | 麻花豆传媒剧国产免费mv在线 | 日韩精品乱码av一区二区 | 亚洲国产成人av在线观看 | 一本大道久久东京热无码av | 99久久久国产精品无码免费 | 亚洲欧美日韩综合久久久 | 天堂亚洲免费视频 | 亚洲性无码av中文字幕 | 亚洲精品国产第一综合99久久 | 精品欧洲av无码一区二区三区 | 97久久精品无码一区二区 | 国产成人精品视频ⅴa片软件竹菊 | 黄网在线观看免费网站 | 正在播放老肥熟妇露脸 | 国产人妻大战黑人第1集 | 国产亚洲精品久久久久久久久动漫 | 精品国产福利一区二区 | 国产精品人人爽人人做我的可爱 | 蜜桃视频韩日免费播放 | 正在播放老肥熟妇露脸 | 国产色xx群视频射精 | 77777熟女视频在线观看 а天堂中文在线官网 | 午夜福利电影 | 久久亚洲日韩精品一区二区三区 | 午夜无码人妻av大片色欲 | 国产网红无码精品视频 | 大地资源网第二页免费观看 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产真实夫妇视频 | 日日天日日夜日日摸 | 色综合视频一区二区三区 | 亚洲精品久久久久久久久久久 | 国产成人一区二区三区在线观看 | 一个人看的www免费视频在线观看 | 免费国产黄网站在线观看 | 蜜臀av在线播放 久久综合激激的五月天 | 玩弄少妇高潮ⅹxxxyw | 亚洲日韩av一区二区三区中文 | 综合激情五月综合激情五月激情1 | 双乳奶水饱满少妇呻吟 | 无码成人精品区在线观看 | 欧美精品国产综合久久 | 无码帝国www无码专区色综合 | √8天堂资源地址中文在线 | 成人无码影片精品久久久 | 少妇激情av一区二区 | 高清不卡一区二区三区 | 日本饥渴人妻欲求不满 | 色窝窝无码一区二区三区色欲 | 51国偷自产一区二区三区 | 久久久久久久久蜜桃 | 人妻尝试又大又粗久久 | 国产三级久久久精品麻豆三级 | 国产精品美女久久久网av | 国产欧美亚洲精品a | 国产亚洲tv在线观看 | 无码人妻久久一区二区三区不卡 | 国产激情艳情在线看视频 | 搡女人真爽免费视频大全 | 亚洲中文字幕在线无码一区二区 | 久久人人97超碰a片精品 | 欧美成人午夜精品久久久 | 野狼第一精品社区 | 国产熟妇高潮叫床视频播放 | 国产一区二区三区精品视频 | 一本精品99久久精品77 | 精品人妻中文字幕有码在线 | 六十路熟妇乱子伦 | 少妇激情av一区二区 | 国产麻豆精品精东影业av网站 | 粗大的内捧猛烈进出视频 | 成熟女人特级毛片www免费 | 国产特级毛片aaaaaaa高清 | 亚洲一区二区三区含羞草 | 最新版天堂资源中文官网 | 在教室伦流澡到高潮hnp视频 | 野狼第一精品社区 | 香港三级日本三级妇三级 | 成年美女黄网站色大免费视频 | 人人澡人人妻人人爽人人蜜桃 | 红桃av一区二区三区在线无码av | 蜜桃av抽搐高潮一区二区 | 999久久久国产精品消防器材 | 国产成人av免费观看 | 领导边摸边吃奶边做爽在线观看 | 国产麻豆精品一区二区三区v视界 | 欧美人妻一区二区三区 | 无码人妻少妇伦在线电影 | 亚洲日本一区二区三区在线 | 东京热无码av男人的天堂 | 国产精品无套呻吟在线 | 天堂久久天堂av色综合 | 国产99久久精品一区二区 | 我要看www免费看插插视频 | 老子影院午夜精品无码 | 99精品久久毛片a片 | 狠狠综合久久久久综合网 | 蜜桃视频插满18在线观看 | 国模大胆一区二区三区 | 牲欲强的熟妇农村老妇女 | 一本无码人妻在中文字幕免费 | 18禁止看的免费污网站 | 精品国精品国产自在久国产87 | 高潮喷水的毛片 | 夜夜躁日日躁狠狠久久av | 欧美自拍另类欧美综合图片区 | 精品aⅴ一区二区三区 | 亚洲日韩av片在线观看 | 精品久久久久香蕉网 | 欧美人与物videos另类 | 国产成人人人97超碰超爽8 | 狠狠躁日日躁夜夜躁2020 | 久久久国产精品无码免费专区 | 兔费看少妇性l交大片免费 | 婷婷五月综合缴情在线视频 | 高清不卡一区二区三区 | 亚洲精品鲁一鲁一区二区三区 | 日韩精品无码一本二本三本色 | 欧美老人巨大xxxx做受 | 鲁一鲁av2019在线 | 国内老熟妇对白xxxxhd | 亚洲乱码中文字幕在线 | 少妇性俱乐部纵欲狂欢电影 | 精品偷自拍另类在线观看 | 色婷婷av一区二区三区之红樱桃 | 亚洲一区二区三区无码久久 | 精品国产青草久久久久福利 | 无码人妻久久一区二区三区不卡 | 六十路熟妇乱子伦 | 亚洲精品一区二区三区在线 | 亚洲精品国产精品乱码不卡 | 国产精品理论片在线观看 | 亚洲国产精品一区二区第一页 | 麻豆国产97在线 | 欧洲 | 性生交大片免费看l | 欧美老妇与禽交 | 中文毛片无遮挡高清免费 | 精品少妇爆乳无码av无码专区 | 日韩欧美群交p片內射中文 | 老头边吃奶边弄进去呻吟 | 久久精品国产一区二区三区肥胖 | 国产激情无码一区二区app | 亚洲精品午夜无码电影网 | 无码人妻av免费一区二区三区 | 女人被男人躁得好爽免费视频 | 97人妻精品一区二区三区 | 日本欧美一区二区三区乱码 | 无码播放一区二区三区 | 中文字幕久久久久人妻 | 5858s亚洲色大成网站www | 久久综合网欧美色妞网 | a片在线免费观看 | 亚洲熟妇色xxxxx亚洲 | 精品人妻人人做人人爽 | 无码吃奶揉捏奶头高潮视频 | 国产激情艳情在线看视频 | 久久国产36精品色熟妇 | 国产香蕉尹人视频在线 | 成人aaa片一区国产精品 | 色窝窝无码一区二区三区色欲 | 玩弄人妻少妇500系列视频 | 亚洲无人区午夜福利码高清完整版 | 鲁鲁鲁爽爽爽在线视频观看 | 999久久久国产精品消防器材 | 精品人人妻人人澡人人爽人人 | 激情内射亚州一区二区三区爱妻 | 男女猛烈xx00免费视频试看 | 麻豆国产丝袜白领秘书在线观看 | 亚洲日本va中文字幕 | 九一九色国产 | 蜜桃视频插满18在线观看 | 永久免费观看美女裸体的网站 | 久久无码中文字幕免费影院蜜桃 | 亚洲爆乳无码专区 | 少妇性荡欲午夜性开放视频剧场 | 澳门永久av免费网站 | 国产亚洲精品久久久ai换 | 妺妺窝人体色www婷婷 | 成人无码视频免费播放 | 免费乱码人妻系列无码专区 | 国产精品内射视频免费 | a在线观看免费网站大全 | 99久久久无码国产精品免费 | 久久久精品456亚洲影院 | 国产又爽又黄又刺激的视频 | 一区二区三区高清视频一 | 欧美性黑人极品hd | 国产激情精品一区二区三区 | 国产成人精品久久亚洲高清不卡 | 国产亚洲日韩欧美另类第八页 | 亚洲国产日韩a在线播放 | 亚洲综合在线一区二区三区 | 亚洲色在线无码国产精品不卡 | 亚洲成色在线综合网站 | 国产色xx群视频射精 | 久久久久久av无码免费看大片 | 日本一区二区更新不卡 | 牲欲强的熟妇农村老妇女 | 国产成人精品优优av | 鲁鲁鲁爽爽爽在线视频观看 | 婷婷色婷婷开心五月四房播播 | 色综合久久久久综合一本到桃花网 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 久久久久久九九精品久 | 国产精品久免费的黄网站 | 在线观看免费人成视频 | 日本熟妇浓毛 | 麻花豆传媒剧国产免费mv在线 | 久青草影院在线观看国产 | 高潮毛片无遮挡高清免费视频 | 欧美变态另类xxxx | 成人精品视频一区二区 | 男女猛烈xx00免费视频试看 | 精品无码国产自产拍在线观看蜜 | 少妇被黑人到高潮喷出白浆 | 天海翼激烈高潮到腰振不止 | 无码av岛国片在线播放 | 麻豆国产丝袜白领秘书在线观看 | 日韩人妻系列无码专区 | 乱码av麻豆丝袜熟女系列 | 曰本女人与公拘交酡免费视频 | 午夜精品久久久久久久 | 日本精品久久久久中文字幕 | 国产精品美女久久久网av | 在线亚洲高清揄拍自拍一品区 | 亚洲中文无码av永久不收费 | 久久成人a毛片免费观看网站 | 亚洲午夜无码久久 | 久久久久久国产精品无码下载 | 无码播放一区二区三区 | 一个人看的www免费视频在线观看 | 动漫av一区二区在线观看 | 国产午夜无码视频在线观看 | 又色又爽又黄的美女裸体网站 | 无码人妻丰满熟妇区五十路百度 | 日韩 欧美 动漫 国产 制服 | 精品熟女少妇av免费观看 | 国内少妇偷人精品视频 | 色欲久久久天天天综合网精品 | 亚洲日本va午夜在线电影 | 亚洲国产日韩a在线播放 | 亚洲中文字幕无码一久久区 | 久青草影院在线观看国产 | 欧美熟妇另类久久久久久不卡 | 全球成人中文在线 | 久久久久人妻一区精品色欧美 | 中文字幕乱码人妻二区三区 | 99久久精品午夜一区二区 | 日韩欧美中文字幕公布 | 色偷偷人人澡人人爽人人模 | 97资源共享在线视频 | 日韩人妻无码一区二区三区久久99 | 伊人久久大香线蕉亚洲 | 亚洲精品美女久久久久久久 | 色婷婷综合中文久久一本 | 欧美精品在线观看 | 国产又爽又猛又粗的视频a片 | 亚洲va欧美va天堂v国产综合 | 亚洲一区二区三区在线观看网站 | 亚洲中文字幕乱码av波多ji | 久久久久人妻一区精品色欧美 | 亚洲国产一区二区三区在线观看 | 国产午夜无码精品免费看 | 国产亚洲视频中文字幕97精品 | 丰满岳乱妇在线观看中字无码 | 国产精品二区一区二区aⅴ污介绍 | 国产真实伦对白全集 | 国产乱人偷精品人妻a片 | aa片在线观看视频在线播放 | 久久人人爽人人人人片 | 精品水蜜桃久久久久久久 | 中文字幕无码免费久久99 | 成人女人看片免费视频放人 | 夜夜高潮次次欢爽av女 | 丰满少妇人妻久久久久久 | 无遮挡国产高潮视频免费观看 | 99久久精品日本一区二区免费 | 欧美人与牲动交xxxx | 一本久久a久久精品亚洲 | 精品国产乱码久久久久乱码 | 午夜免费福利小电影 | 鲁鲁鲁爽爽爽在线视频观看 | 老司机亚洲精品影院 | 久久久久久亚洲精品a片成人 | 亚洲大尺度无码无码专区 | 夜精品a片一区二区三区无码白浆 | 色窝窝无码一区二区三区色欲 | 偷窥日本少妇撒尿chinese | 人人妻人人澡人人爽人人精品浪潮 | 人妻少妇精品无码专区二区 | 黄网在线观看免费网站 | 久久久久久久女国产乱让韩 | 图片小说视频一区二区 | 国产性生交xxxxx无码 | 精品无码一区二区三区爱欲 | 国产亚洲视频中文字幕97精品 | 无遮挡啪啪摇乳动态图 | 无码福利日韩神码福利片 | 少妇高潮喷潮久久久影院 | 国产精华av午夜在线观看 | 国产精品福利视频导航 | 国产口爆吞精在线视频 | 男人和女人高潮免费网站 | 无码国产乱人伦偷精品视频 | 澳门永久av免费网站 | 国产猛烈高潮尖叫视频免费 | 国产亚洲欧美日韩亚洲中文色 | 国产乡下妇女做爰 | 亚洲成a人一区二区三区 | 无码人妻精品一区二区三区不卡 | 久久97精品久久久久久久不卡 | 久久无码专区国产精品s | 麻豆md0077饥渴少妇 | 精品久久综合1区2区3区激情 | 亚洲无人区一区二区三区 | 欧美国产日韩亚洲中文 | 无码毛片视频一区二区本码 | 久久无码专区国产精品s | 亚洲熟妇色xxxxx欧美老妇y | 色偷偷人人澡人人爽人人模 | 久久国产精品精品国产色婷婷 | 亚洲国产午夜精品理论片 | 丁香花在线影院观看在线播放 | 国产sm调教视频在线观看 | 波多野结衣一区二区三区av免费 | 精品久久8x国产免费观看 | 东北女人啪啪对白 | 国产精品久免费的黄网站 | 麻豆国产人妻欲求不满谁演的 | 亚洲精品国产精品乱码视色 | 国产精品国产三级国产专播 | 亚洲自偷精品视频自拍 | 最近中文2019字幕第二页 | 精品一区二区三区波多野结衣 | 国模大胆一区二区三区 | 亚洲中文字幕在线观看 | 免费国产黄网站在线观看 | 成人动漫在线观看 | 桃花色综合影院 | 亚洲中文字幕av在天堂 | 国产精品亚洲五月天高清 | 日本护士毛茸茸高潮 | 性生交大片免费看l | 在线亚洲高清揄拍自拍一品区 | 亚洲人成网站色7799 | 强开小婷嫩苞又嫩又紧视频 | 欧美精品一区二区精品久久 | a国产一区二区免费入口 | 欧美丰满熟妇xxxx | 99久久久无码国产精品免费 | 99久久精品午夜一区二区 | 无码人妻精品一区二区三区下载 | 亚洲a无码综合a国产av中文 | 亚洲精品国产第一综合99久久 | 久久99精品久久久久久动态图 | 无码人妻黑人中文字幕 | 麻豆果冻传媒2021精品传媒一区下载 | 少妇无套内谢久久久久 | 日韩无码专区 | 18无码粉嫩小泬无套在线观看 | 久久亚洲日韩精品一区二区三区 | 国产亚洲精品久久久久久大师 | a片在线免费观看 | 亚洲国产精华液网站w | 日本一区二区三区免费播放 | 久久久久av无码免费网 | 中文字幕乱妇无码av在线 | 欧美人与禽猛交狂配 | 亚洲色大成网站www国产 | 亚洲中文字幕va福利 | 亚洲国产成人av在线观看 | 99精品视频在线观看免费 | 国产精品高潮呻吟av久久 | 76少妇精品导航 | 国产成人久久精品流白浆 | 亚洲欧洲日本无在线码 | 男女性色大片免费网站 | 久青草影院在线观看国产 | 亚洲精品一区三区三区在线观看 | 精品国产一区av天美传媒 | 久久亚洲a片com人成 | 无码精品国产va在线观看dvd | 人妻无码αv中文字幕久久琪琪布 | 乱人伦中文视频在线观看 | 久久综合九色综合97网 | 国产人妻人伦精品 | 人人澡人摸人人添 | 熟妇人妻激情偷爽文 | 四十如虎的丰满熟妇啪啪 | 亚洲热妇无码av在线播放 | 99久久精品午夜一区二区 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 久久人人爽人人爽人人片av高清 | 日韩精品一区二区av在线 | 日韩成人一区二区三区在线观看 | 高清不卡一区二区三区 | 性欧美熟妇videofreesex | 国产熟妇高潮叫床视频播放 | 欧美自拍另类欧美综合图片区 | 欧美性黑人极品hd | 国产超碰人人爽人人做人人添 | 强伦人妻一区二区三区视频18 | 午夜精品一区二区三区在线观看 | 国产三级久久久精品麻豆三级 | 国内揄拍国内精品人妻 | 熟女少妇人妻中文字幕 | 3d动漫精品啪啪一区二区中 | 疯狂三人交性欧美 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲精品无码人妻无码 | 亚拍精品一区二区三区探花 | 久久精品女人天堂av免费观看 | 欧美亚洲国产一区二区三区 | 伊人色综合久久天天小片 | 欧美日韩久久久精品a片 | 色欲综合久久中文字幕网 | 久久久中文久久久无码 | 亚洲国产精品无码久久久久高潮 | 天天拍夜夜添久久精品 | 日韩欧美中文字幕在线三区 | 无码毛片视频一区二区本码 | 免费网站看v片在线18禁无码 | 野狼第一精品社区 | 免费无码一区二区三区蜜桃大 | 久久精品中文字幕一区 | 亚洲国产精品成人久久蜜臀 | 国产av一区二区精品久久凹凸 | 久久99久久99精品中文字幕 | 亚洲欧美日韩国产精品一区二区 | 国产内射爽爽大片视频社区在线 | a国产一区二区免费入口 | 色婷婷欧美在线播放内射 | 欧美精品在线观看 | 无码乱肉视频免费大全合集 | 又粗又大又硬又长又爽 | 欧美精品免费观看二区 | 色综合久久中文娱乐网 | 成在人线av无码免费 | 免费观看的无遮挡av | 日韩 欧美 动漫 国产 制服 | 小sao货水好多真紧h无码视频 | 大屁股大乳丰满人妻 | 天干天干啦夜天干天2017 | 少妇性l交大片欧洲热妇乱xxx | 国产精品无码一区二区三区不卡 | 久久99热只有频精品8 | 奇米影视888欧美在线观看 | 伊人久久大香线蕉亚洲 | 亚洲精品综合五月久久小说 | √天堂资源地址中文在线 | 国产午夜视频在线观看 | 水蜜桃色314在线观看 | 久久久www成人免费毛片 | 未满小14洗澡无码视频网站 | 兔费看少妇性l交大片免费 | 99er热精品视频 | 青青青手机频在线观看 | 国产亚洲精品久久久久久国模美 | 97资源共享在线视频 | 欧美精品一区二区精品久久 | 蜜臀av在线播放 久久综合激激的五月天 |