日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

HarmonyOS USB DDK助你轻松实现USB驱动开发

發(fā)布時(shí)間:2023/12/14 编程问答 82 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HarmonyOS USB DDK助你轻松实现USB驱动开发 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Python微信訂餐小程序課程視頻

https://edu.csdn.net/course/detail/36074

Python實(shí)戰(zhàn)量化交易理財(cái)系統(tǒng)

https://edu.csdn.net/course/detail/35475
HDF(Hardware Driver Foundation)驅(qū)動(dòng)框架是HarmonyOS硬件生態(tài)開放的基礎(chǔ),為開發(fā)者提供了驅(qū)動(dòng)加載、驅(qū)動(dòng)服務(wù)管理和驅(qū)動(dòng)消息機(jī)制等驅(qū)動(dòng)能力,讓開發(fā)者能精準(zhǔn)且高效地開發(fā)驅(qū)動(dòng)程序。

本期,我們將為大家?guī)?lái)HDF驅(qū)動(dòng)框架中USB DDK的解析與指導(dǎo)。

一、USB DDK介紹

USB(Universal Serial Bus)通用串行總線,用于規(guī)范電腦與外部設(shè)備的連接和通訊,包含了主機(jī)端(Host)和設(shè)備端(Device)。其中,主機(jī)端負(fù)責(zé)USB總線中的數(shù)據(jù)傳輸及端口管理,設(shè)備端則可以連接各種外設(shè),所以USB驅(qū)動(dòng)開發(fā)又分為主機(jī)端驅(qū)動(dòng)開發(fā)和設(shè)備端驅(qū)動(dòng)開發(fā)。

由于基于內(nèi)核態(tài)開發(fā)的USB驅(qū)動(dòng)功能擴(kuò)展性較差,目前開發(fā)者通常選擇Libusb庫(kù)進(jìn)行USB驅(qū)動(dòng)開發(fā)。該庫(kù)是一種跨平臺(tái)的用戶態(tài)開源USB通信庫(kù),可以滿足開發(fā)者基于用戶態(tài)開發(fā)功能驅(qū)動(dòng)的需求。但是,由于Libusb庫(kù)是完全按照USB協(xié)議來(lái)封裝接口的,所以需要開發(fā)者對(duì)USB協(xié)議要有較深的了解才能很好的使用,對(duì)開發(fā)者的要求相對(duì)較高,讓很多比較初級(jí)的開發(fā)者望而卻步。為了讓更多的開發(fā)者都能進(jìn)行基于用戶態(tài)的USB驅(qū)動(dòng)開發(fā),HDF引入了USB DDK開發(fā)套件。

USB DDK(USB DriverDevelop Kit)是HDF驅(qū)動(dòng)框架為開發(fā)者提供的USB驅(qū)動(dòng)程序開發(fā)套件,包括USB Host DDK及USB Device DDK兩部分,支持基于用戶態(tài)開發(fā)USB設(shè)備驅(qū)動(dòng)的同時(shí),還提供了豐富的USB驅(qū)動(dòng)開發(fā)能力,讓廣大開發(fā)者能精準(zhǔn)且高效的開發(fā)USB驅(qū)動(dòng)程序。

下面,我們將一一道來(lái)。

1)USB Host DDK

USB Host DDK給開發(fā)者提供了主機(jī)端USB驅(qū)動(dòng)開發(fā)能力,按照功能分類三大類,分別是DDK初始化類、interface對(duì)象操作類及request對(duì)象操作類。并為開發(fā)者提供了普通模式和專家模式兩種開發(fā)模式。普通模式下,開發(fā)者可通過USBDDK API直接完成相關(guān)USB數(shù)據(jù)讀寫操作,不需要過多關(guān)注底層傳輸細(xì)節(jié)。

專家模式下,開發(fā)者通過USB RAW API直接訪問OS平臺(tái)USB通道的接口,自定義實(shí)現(xiàn)更加復(fù)雜的功能。目的是給驅(qū)動(dòng)層留有更靈活,更強(qiáng)大的擴(kuò)展方案,同時(shí)也能夠兼容現(xiàn)有驅(qū)動(dòng),便于移植。USBHost DDK架構(gòu)如圖1所示:

圖1 USB Host DDK架構(gòu)

(1)USB Interface Pool負(fù)責(zé)USBInterface管理。提供USB Interface申請(qǐng)和回收,USB Interface記錄設(shè)備端口信息以及資源。USB Interface Pool按照USB Port對(duì)USB Interface進(jìn)行分類管理。同時(shí),此模塊還提供了USB DDK API,方便開發(fā)者USB數(shù)據(jù)讀寫操作。

(2)USB Protocol Layer提供USB協(xié)議封裝,根據(jù)USB協(xié)議對(duì)設(shè)備IO/控制命令的“翻譯/解析”,同時(shí)負(fù)責(zé)設(shè)備描述符的管理,根據(jù)USB Device上報(bào)的枚舉信息,匹配對(duì)應(yīng)的描述符,并構(gòu)建對(duì)應(yīng)的USB Interface,并加入到USB Interface Pool中管理。

(3)Device IO Manager負(fù)責(zé)USBIO請(qǐng)求管理,提供了同步IO和異步IO管理機(jī)制,對(duì)于異步IO,IO Manager負(fù)責(zé)將該請(qǐng)求記錄下來(lái),然后通過Raw API Library提供的接口依次處理待發(fā)送的IO請(qǐng)求;當(dāng)收到USB控制器應(yīng)答的處理結(jié)果后,IO接收線程負(fù)責(zé)解析并上報(bào)處理結(jié)果給上層調(diào)用者。

(4)Raw API Library抽象了底層OS能力,定義了統(tǒng)一的OS能力接口,對(duì)外提供了USB RAW API,讓開發(fā)者自定義實(shí)現(xiàn)更加復(fù)雜的驅(qū)動(dòng)功能。

(5)OS Adapter用于封裝與平臺(tái)(Linux和LiteOS)相關(guān)的操作,根據(jù)不同平臺(tái)配置編譯對(duì)應(yīng)平臺(tái)的封裝接口。在Linux平臺(tái)上,訪問USBFS的操作,全部都封裝在這個(gè)模塊中;而在LiteOS平臺(tái)上,基于FreeBSD USB框架的設(shè)備訪問操作,對(duì)應(yīng)的也都全部封裝在這個(gè)模塊中。

(6)PNP Notify用于動(dòng)態(tài)監(jiān)測(cè)USB狀態(tài)變化,當(dāng)有新設(shè)備添加/移除時(shí),變化設(shè)備信息。同時(shí)將所有USB設(shè)備信息都通過KHDF上報(bào)給UHDF側(cè)的PNPNotify Manager模塊來(lái)完成加載/卸載第三方功能驅(qū)動(dòng)。

2)USB Device DDK

USB Device DDK給開發(fā)者提供了設(shè)備端USB驅(qū)動(dòng)開發(fā)能力。例如,USB端口動(dòng)態(tài)注冊(cè)和去注冊(cè)能力,開發(fā)者可以基于能力實(shí)現(xiàn)USB端口的動(dòng)態(tài)添加和組合;動(dòng)態(tài)實(shí)例化能力,支持根據(jù)動(dòng)態(tài)下發(fā)設(shè)備、配置、接口及端點(diǎn)描述符創(chuàng)建設(shè)備實(shí)例及傳輸通道;用戶態(tài)的數(shù)據(jù)發(fā)送及接收能力,支持用戶態(tài)下發(fā)送及接收數(shù)據(jù);復(fù)合設(shè)備能力,支持一個(gè)物理設(shè)備上多個(gè)邏輯設(shè)備,實(shí)現(xiàn)多個(gè)邏輯設(shè)備間隔離,并支持不同邏輯設(shè)備同時(shí)被不同的應(yīng)用進(jìn)程訪問。

USB Device DDK架構(gòu)如圖2所示:

圖2 USB Device DDK架構(gòu)

(1)SDK IF負(fù)責(zé)將USB設(shè)備按照設(shè)備、接口、管道進(jìn)行邏輯劃分,對(duì)配置管理、設(shè)備管理、IO管理進(jìn)行封裝。此模塊還向開發(fā)者提供了設(shè)備創(chuàng)建、獲取接口、接收Event事件、收發(fā)數(shù)據(jù)等設(shè)備測(cè)驅(qū)動(dòng)開發(fā)的能力接口。

(2)Configuration Manager負(fù)責(zé)解析HCS文件描述的USB描述符信息,得到的USB描述符信息用于設(shè)備創(chuàng)建,同時(shí)模塊還提供了自定義屬性的讀取、創(chuàng)建、刪除、修改等操作。

(3)Device Manager負(fù)責(zé)根據(jù)配置模塊解析的USB描述符,并根據(jù)USB描述符創(chuàng)建設(shè)備。同時(shí)模塊還負(fù)責(zé)獲取設(shè)備、刪除設(shè)備、獲取設(shè)備狀態(tài),獲取設(shè)備上面接口信息。

(4)IO Manager負(fù)責(zé)數(shù)據(jù)的讀寫,包括Events事件、數(shù)據(jù)讀寫完成事件的接受,支持同步和異步模式數(shù)據(jù)讀寫。

(5)Adapter IF主要是對(duì)復(fù)合設(shè)備配置驅(qū)動(dòng)及通用功能驅(qū)動(dòng)設(shè)備節(jié)點(diǎn)操作進(jìn)行封裝,為上層提供統(tǒng)一的設(shè)備管理接口。

(6)Adapter該模塊由復(fù)合設(shè)備配置驅(qū)動(dòng)及通用功能驅(qū)動(dòng)提供。

二、USB DDK開發(fā)指導(dǎo)

相信大家已對(duì)USB DDK已經(jīng)有了一定的認(rèn)識(shí)。下面,我們來(lái)看看如何使用USB DDK來(lái)開發(fā)USB Host和USB Device驅(qū)動(dòng)程序吧。

1)USB Host的開發(fā)

USB Host(主機(jī)端驅(qū)動(dòng))主要完成協(xié)議封裝、設(shè)備管理、驅(qū)動(dòng)安裝與卸載等。通過上文的介紹,開發(fā)者可通過USB DDK API和USB RAW API來(lái)實(shí)現(xiàn)主機(jī)端驅(qū)動(dòng)。

1. USB DDK API的使用

USB DDK API主要實(shí)現(xiàn)主機(jī)端USB數(shù)據(jù)讀寫操作,如圖3所示,是USB DDK API提供的部分接口。

圖3 USB DDK API部分接口

使用步驟如下:

(1) 配置驅(qū)動(dòng)匹配表,完成主機(jī)端驅(qū)動(dòng)總體信息的配置,具體如下:

struct UsbPnpMatchIdTable { //驅(qū)動(dòng)模塊名,該字段的值必須和驅(qū)動(dòng)入口結(jié)構(gòu)的moduleName一致 const char *moduleName; //驅(qū)動(dòng)對(duì)外發(fā)布服務(wù)的名稱,必須唯一 const char *serviceName; //驅(qū)動(dòng)私有數(shù)據(jù)匹配關(guān)鍵字 const char *deviceMatchAttr; //從該字段開始(包含該字段)之后數(shù)據(jù)長(zhǎng)度,以byte為單位 uint8\_t length; //USB驅(qū)動(dòng)匹配規(guī)則 uint16\_t matchFlag; //廠商編號(hào) uint16\_t vendorId; //產(chǎn)品編號(hào) uint16\_t productId; //設(shè)備出廠編號(hào),低16位 uint16\_t bcdDeviceLow; //設(shè)備出廠編號(hào),高16位 uint16\_t bcdDeviceHigh; //USB分配的設(shè)備類代碼 uint8\_t deviceClass; //USB分配的子類代碼 uint8\_t deviceSubClass; //USB分配的設(shè)備協(xié)議代碼 uint8\_t deviceProtocol; //接口類型,根據(jù)實(shí)際需要可填寫多個(gè) uint8\_t interfaceClass[USB\_PNP\_INFO\_MAX\_INTERFACES]; //接口子類型,根據(jù)實(shí)際需要可填寫多個(gè) uint8\_t interfaceSubClass[USB\_PNP\_INFO\_MAX\_INTERFACES]; //接口所遵循的協(xié)議,根據(jù)實(shí)際需要可填寫多個(gè) uint8\_t interfaceProtocol[USB\_PNP\_INFO\_MAX\_INTERFACES]; //接口的編號(hào),根據(jù)實(shí)際需要可填寫多個(gè) uint8\_t interfaceNumber[USB\_PNP\_INFO\_MAX\_INTERFACES]; };

其中matchFlag表示驅(qū)動(dòng)匹配規(guī)則,每個(gè)bit表示一種匹配方式,其取值如下:

enum {USB\_PNP\_NOTIFY\_MATCH\_VENDOR = 0x0001,USB\_PNP\_NOTIFY\_MATCH\_PRODUCT = 0x0002,USB\_PNP\_NOTIFY\_MATCH\_DEV\_LOW = 0x0004,USB\_PNP\_NOTIFY\_MATCH\_DEV\_HIGH = 0x0008,USB\_PNP\_NOTIFY\_MATCH\_DEV\_CLASS = 0x0010,USB\_PNP\_NOTIFY\_MATCH\_DEV\_SUBCLASS = 0x0020,USB\_PNP\_NOTIFY\_MATCH\_DEV\_PROTOCOL = 0x0040,USB\_PNP\_NOTIFY\_MATCH\_INT\_CLASS = 0x0080,USB\_PNP\_NOTIFY\_MATCH\_INT\_SUBCLASS = 0x0100,USB\_PNP\_NOTIFY\_MATCH\_INT\_PROTOCOL = 0x0200,USB\_PNP\_NOTIFY\_MATCH\_INT\_NUMBER = 0x0400, };

(2) USB主機(jī)端驅(qū)動(dòng)開發(fā)工具包初始化,使用如下接口:

int32\_t UsbInitHostSdk(struct UsbSession **session)

(3) 待步驟2初始化完后獲取UsbInterface對(duì)象,使用如下接口:

const struct UsbInterface *UsbClaimInterface(const struct UsbSession *session, uint8\_t busNum, uint8\_t usbAddr, uint8\_t interfaceIndex);

(4) 打開步驟3獲取到的UsbInterface接口對(duì)象,獲取對(duì)應(yīng)接口的UsbInterfaceHandle對(duì)象,使用如下接口:

UsbInterfaceHandle *UsbOpenInterface(const struct UsbInterface *interfaceObj);

(5) 根據(jù)步驟4獲取到的UsbInterfaceHandle對(duì)象,獲取指定索引為pinpeIndex的pipeInfo信息,使用如下接口:

int32\_t UsbGetPipeInfo(const UsbInterfaceHandle *interfaceHandle, uint8\_t settingIndex, uint8\_t pipeId, struct UsbPipeInfo *pipeInfo);

(6) 為步驟4獲取到的UsbInterfaceHandle預(yù)先分配待發(fā)送的IO Request對(duì)象,使用如下接口:

struct UsbRequest *UsbAllocRequest(const UsbInterfaceHandle *interfaceHandle, int isoPackets, int length);

(7) 根據(jù)輸入?yún)?shù)params填充步驟6預(yù)先分配的IO Request,使用如下接口:

int32\_t UsbFillRequest(const struct UsbRequest *request, const UsbInterfaceHandle *interfaceHandle, const struct UsbRequestParams *params);

(8) 提交IO Request對(duì)象,可以選擇同步或異步兩種模式,使用如下接口:

int32\_t UsbSubmitRequestSync(const struct UsbRequest *request);//發(fā)送同步IO請(qǐng)求 int32\_t UsbSubmitRequestAsync(const struct UsbRequest *request);//發(fā)送異步IO請(qǐng)求

2. USB RAW API 的使用

USB RAW API主要實(shí)現(xiàn)USB更加復(fù)雜的功能,如獲取描述符信息、獲取設(shè)備指針、復(fù)位設(shè)備、提交傳輸請(qǐng)求等,如圖4所示,是USB RAW API提供的部分接口。

圖4 USB RAW API

使用步驟如下:

(1) 同USB DDK API的步驟1一樣,需先進(jìn)行驅(qū)動(dòng)匹配表配置。

(2) 初始化Host RAW,使用如下接口:

int32\_t UsbRawInit(struct UsbSession **session);

(3) 待步驟2完成后打開USB設(shè)備,使用如下接口:

UsbRawHandle *UsbRawOpenDevice(const struct UsbSession *session, uint8\_t busNum, uint8\_t usbAddr);

(4) 待步驟3完成后獲取描述符,通過描述符獲取接口、端點(diǎn)信息,使用如下接口:

int32\_t UsbRawGetConfigDescriptor(const UsbRawDevice *rawDev, uint8\_t configIndex, struct UsbRawConfigDescriptor **config);

(5) 分配Request,并根據(jù)不同的傳輸類型使用相應(yīng)的接口對(duì)Request進(jìn)行填充:

int32\_t UsbRawFillBulkRequest(const struct UsbRawRequest *request, const UsbRawHandle *devHandle, const struct UsbRawFillRequestData *fillData);// 填充用于批量傳輸?shù)恼?qǐng)求 int32\_t UsbRawFillControlSetup(const unsigned char *setup, const struct UsbControlRequestData *requestData); int32\_t UsbRawFillControlRequest(const struct UsbRawRequest *request, const UsbRawHandle *devHandle, const struct UsbRawFillRequestData *fillData);// 填充用于控制傳輸?shù)恼?qǐng)求 int32\_t UsbRawFillInterruptRequest(const struct UsbRawRequest *request, const UsbRawHandle *devHandle, const struct UsbRawFillRequestData *fillData);// 填充用于中斷傳輸?shù)恼?qǐng)求 int32\_t UsbRawFillIsoRequest(const struct UsbRawRequest *request, const UsbRawHandle *devHandle, const struct UsbRawFillRequestData *fillData);// 填充用于同步傳輸?shù)恼?qǐng)求

(6) 提交IO Request對(duì)象,可以選擇同步或異步兩種模式,分別使用如下接口:

int32\_t UsbRawSendControlRequest(const struct UsbRawRequest *request, const UsbRawHandle *devHandle, const struct UsbControlRequestData *requestData);//發(fā)送同步USB控制傳輸請(qǐng)求 int32\_t UsbRawSendBulkRequest(const struct UsbRawRequest *request, const UsbRawHandle *devHandle, const struct UsbRequestData *requestData);//發(fā)送同步USB批量傳輸請(qǐng)求 int32\_t UsbRawSendInterruptRequest(const struct UsbRawRequest *request, const UsbRawHandle *devHandle, const struct UsbRequestData *requestData);//發(fā)送同步執(zhí)行USB中斷傳輸請(qǐng)求 int32\_t UsbRawSubmitRequest(const struct UsbRawRequest *request);//提交異步IO請(qǐng)求

感興趣的小伙伴可點(diǎn)擊下方鏈接查看完整的USB Host開發(fā)代碼:

https://gitee.com/openharmony/drivers_peripheral/tree/master/usb/serial/src

2)USB Device的開發(fā)

USB Device(設(shè)備端驅(qū)動(dòng))主要實(shí)現(xiàn)設(shè)備管理、配置管理、IO管理、數(shù)據(jù)通信等。USB Deivce DDK給開發(fā)者提供了設(shè)備創(chuàng)建、獲取接口、接收Event事件、收發(fā)數(shù)據(jù)等驅(qū)動(dòng)能力接口,如圖5所示:

圖5 USB Device DDK開放的API

下面,我們將根據(jù)USB Deivce DDK提供的驅(qū)動(dòng)能力接口來(lái)開發(fā)設(shè)備端驅(qū)動(dòng)。

1. 構(gòu)造描述符

首先,需構(gòu)造描述符來(lái)說(shuō)明設(shè)備的總體信息。開發(fā)者可以通過設(shè)備功能代碼及設(shè)備私有數(shù)據(jù)HCS兩種途徑進(jìn)行配置,下面將分別介紹。

(1) 在設(shè)備功能代碼中配置描述符,配置代碼如下:

static struct UsbFnFunction g\_acmFunction = {//功能描述符.enable = true,.funcName = "f\_generic.a",.strings = g\_acmStrings,.fsDescriptors = g\_acmFsFunction,.hsDescriptors = g\_acmHsFunction,.ssDescriptors = g\_acmSsFunction, .sspDescriptors = NULL, }; struct UsbFnFunction *g\_functions[] = { #ifdef CDC\_ECM&g\_ecmFunction, #endif #ifdef CDC\_ACM&g\_acmFunction, #endif NULL }; static struct UsbFnConfiguration g\_masterConfig = {//配置描述符.configurationValue = 1,.iConfiguration = USB\_FUNC\_CONFIG\_IDX,.attributes = USB\_CFG\_BUS\_POWERED,.maxPower = POWER,.functions = g\_functions, }; static struct UsbFnConfiguration *g\_configs[] = {&g\_masterConfig,NULL, }; static struct UsbDeviceDescriptor g\_cdcMasterDeviceDesc = {//設(shè)備描述符.bLength = sizeof(g\_cdcMasterDeviceDesc),.bDescriptorType = USB\_DDK\_DT\_DEVICE,.bcdUSB = CpuToLe16(BCD\_USB),.bDeviceClass = 0,.bDeviceSubClass = 0,.bDeviceProtocol = 0,.bMaxPacketSize0 = USB\_MAX\_PACKET\_SIZE,.idVendor = CpuToLe16(DEVICE\_VENDOR\_ID),.idProduct = CpuToLe16(DEVICE\_PRODUCT\_ID),.bcdDevice = CpuToLe16(DEVICE\_VERSION),.iManufacturer = USB\_FUNC\_MANUFACTURER\_IDX,.iProduct = USB\_FUNC\_PRODUCT\_IDX,.iSerialNumber = USB\_FUNC\_SERIAL\_IDX,.bNumConfigurations = 1, }; static struct UsbFnDeviceDesc g\_masterFuncDevice = {//描述符入口.deviceDesc = &g\_cdcMasterDeviceDesc,.deviceStrings = g\_devStrings,.configs = g\_configs, };

(2) 在設(shè)備私有數(shù)據(jù)HCS中配置,配置代碼如下:

root {module = "master"; master\_config {match\_attr = "usbfn\_master\_driver";//該字段與device中deviceMatchAttr保持一致,否則無(wú)法找到的這個(gè)節(jié)點(diǎn)的信息。use\_hcs = 1; //用戶可以用該值決定是否使用hcs配置信息udc\_name = "100e0000.hidwc3\_0"; //UDC的名字usb\_dev\_desc = "UsbDeviceDescriptor";//設(shè)備描述符的節(jié)點(diǎn)UsbDeviceDescriptorusb\_dev\_string = "UsbDeviceStrings"; //設(shè)備字符串的節(jié)點(diǎn)為UsbDeviceStringsusb\_configuration = "UsbConfigs"; //配置描述符的節(jié)點(diǎn)為UsbConfigs...} }

設(shè)備描述符的節(jié)點(diǎn)為UsbDeviceDescriptor,配置如下:

UsbDeviceDescriptor {bLength = 18;bDescriptorType = 0x01;bcdUSB = 0x0200;bDeviceClass = 0;bDeviceSubClass = 0;bDeviceProtocol = 0;bMaxPacketSize0 = 0x40;idVendor = 0x0525;idProduct = 0xA4A7;bcdDevice = 0x0100;manufacturer = 0;product = 1;serialnumber = 2;numConfigurations = 1; }

2. 創(chuàng)建設(shè)備

描述符構(gòu)造完成后,使用UsbFnDeviceCreate函數(shù)創(chuàng)建一個(gè)USB設(shè)備,并傳入U(xiǎn)DC控制器名和UsbFnDescriptorData結(jié)構(gòu)體。實(shí)現(xiàn)代碼如下:

if (useHcs == 0) {//使用代碼編寫的描述符descData.type = USBFN\_DESC\_DATA\_TYPE\_DESC;descData.descriptor = &g\_acmFuncDevice;} else { //使用hcs編寫的描述符descData.type = USBFN\_DESC\_DATA\_TYPE\_PROP;descData.property = acm->device->property; }//創(chuàng)建設(shè)備fnDev = (struct UsbFnDevice *) UsbFnCreateDevice(acm->udcName, &descData);

3.獲取接口

設(shè)備創(chuàng)建后,使用UsbFnDeviceGetInterface函數(shù)獲取UsbInterface接口對(duì)象,并通過UsbFnGetInterfacePipeInfo函數(shù)獲取USB管道信息,實(shí)現(xiàn)代碼如下:

//獲取接口 fnIface = (struct UsbFnInterface *)UsbFnGetInterface(fnDev, i); //獲取Pipe信息 UsbFnGetInterfacePipeInfo(fnIface, i, &pipeInfo); //獲取Handle handle = UsbFnOpenInterface(fnIface); //獲取控制(EP0)Request req = UsbFnAllocCtrlRequest(acm->ctrlIface.handle,sizeof(struct UsbCdcLineCoding) + sizeof(struct UsbCdcLineCoding)); //獲取Request req = UsbFnAllocCtrlRequest(acm->ctrlIface.handle,sizeof(struct UsbCdcLineCoding) + sizeof(struct UsbCdcLineCoding));

4. 接收Event事件

通過UsbFnStartRecvInterfaceEvent函數(shù)接收Event事件,并通過UsbFnEventCallback回調(diào)函數(shù)對(duì)Event事件做出響應(yīng),實(shí)現(xiàn)代碼如下:

//開始接收Event事件 ret = UsbFnStartRecvInterfaceEvent(acm->ctrlIface.fn, 0xff, UsbAcmEventCallback, acm); //Event處理回調(diào)函數(shù) static void UsbAcmEventCallback(struct UsbFnEvent *event) { struct UsbAcmDevice *acm = NULL;if (event == NULL || event->context == NULL) {HDF\_LOGE("%s: event is null", \_\_func\_\_);return;}acm = (struct UsbAcmDevice *)event->context;switch (event->type) {case USBFN\_STATE\_BIND:HDF\_LOGI("%s: receive bind event", \_\_func\_\_);break;case USBFN\_STATE\_UNBIND:HDF\_LOGI("%s: receive unbind event", \_\_func\_\_);break;case USBFN\_STATE\_ENABLE:HDF\_LOGI("%s: receive enable event", \_\_func\_\_);AcmEnable(acm);break;case USBFN\_STATE\_DISABLE:HDF\_LOGI("%s: receive disable event", \_\_func\_\_);AcmDisable(acm);acm->enableEvtCnt = 0;break;case USBFN\_STATE\_SETUP:HDF\_LOGI("%s: receive setup event", \_\_func\_\_);if (event->setup != NULL) {AcmSetup(acm, event->setup);}break;case USBFN\_STATE\_SUSPEND:HDF\_LOGI("%s: receive suspend event", \_\_func\_\_);AcmSuspend(acm);break;case USBFN\_STATE\_RESUME:HDF\_LOGI("%s: receive resume event", \_\_func\_\_);AcmResume(acm);break;default:break;} }

5. 收發(fā)數(shù)據(jù)

可以選擇同步異步發(fā)送模式,實(shí)現(xiàn)代碼如下:

notify = (struct UsbCdcNotification *)req->buf;...if (memcpy\_s((void *)(notify + 1), length, data, length) != EOK) {return HDF\_FAILURE;} ret = UsbFnSubmitRequestAsync(req);//異步發(fā)送

感興趣的小伙伴可點(diǎn)擊下方鏈接查看完整的設(shè)備測(cè)開發(fā)代碼。

完整設(shè)備測(cè)開發(fā)代碼:https://gitee.com/openharmony/drivers_peripheral/tree/master/usb/gadget/function/

以上就是本期全部?jī)?nèi)容,通過本文的介紹相信你已經(jīng)對(duì)USB DDK有了深刻的認(rèn)識(shí),期待廣大的開發(fā)者加入我們,一起豐富基于USB DDK的第三方驅(qū)動(dòng)。

掃碼添加開發(fā)者小助手微信

獲取更多HarmonyOS開發(fā)資源和開發(fā)者活動(dòng)資訊

總結(jié)

以上是生活随笔為你收集整理的HarmonyOS USB DDK助你轻松实现USB驱动开发的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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

日韩欧美一区二区在线观看 | 国产欧美在线一区 | 91九色精品国产 | 欧美久草在线 | 欧美精品v国产精品v日韩精品 | 国产精品永久久久久久久久久 | 亚洲成av人影片在线观看 | 一区二区三区日韩在线观看 | 欧美性生活小视频 | 亚洲精品xxxx| 亚洲精品一区二区三区在线观看 | 日韩精品久久久久久中文字幕8 | 精品一区二区在线免费观看 | 就色干综合 | 午夜精品福利在线 | 国产在线黄色 | 久久亚洲欧美 | 久草网在线 | 免费看一级 | 久久久激情网 | 黄色三级网站在线观看 | 国产麻豆视频在线观看 | 青青河边草免费观看完整版高清 | 日韩在线视频二区 | 97超视频在线观看 | 天天插伊人 | 五月激情片| 天天操天天操天天操天天操天天操天天操 | 久久国产电影院 | 黄网av在线 | 99精品国产免费久久 | 999热视频 | 欧美一区二区三区激情视频 | 成人午夜免费剧场 | 国产精品九九九 | 国产精品theporn | 四虎影视国产精品免费久久 | 日韩精品久久久久 | 国产精品入口传媒 | 日韩高清国产精品 | 视频一区二区在线观看 | 日韩丝袜| 中文字幕成人 | 国产精品九九久久久久久久 | 深夜成人av | 亚洲成人av在线 | 国产美女视频免费 | 久久综合九色欧美综合狠狠 | 日韩欧美精品在线观看 | 国产黄色片免费看 | 国产精品美女在线观看 | 久久久久久国产精品亚洲78 | 91精品秘密在线观看 | 91九色蝌蚪在线 | 成人av高清在线 | 日韩色在线 | 奇米7777狠狠狠琪琪视频 | 欧美国产一区在线 | 啪一啪在线 | 欧美激情奇米色 | 人人艹视频 | 日韩免费区 | 精品视频在线看 | 国产精品久久久久久吹潮天美传媒 | 美女在线免费视频 | 国产精品久久久久久久久软件 | 中文字幕 国产 一区 | 国内精品久久久久久久久久 | 成人av免费网站 | 亚洲激情六月 | 午夜av影院 | 成人毛片久久 | 久草在线视频精品 | 97成人精品 | 亚洲精品1区2区3区 超碰成人网 | 国产午夜精品一区二区三区嫩草 | 国产精品一区二区久久国产 | 久久久久免费精品视频 | 中文字幕精品三级久久久 | 国产97av| 日韩一区二区三区高清在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产老熟 | 欧美日韩不卡在线 | 成人免费xxx在线观看 | 日韩特级片 | 九九久 | 中文字幕在线有码 | 九九综合久久 | www.激情五月.com | 久久不射电影院 | 欧美另类调教 | 国产99久久久久久免费看 | 精品久久免费 | 久久草 | 日b视频在线观看网址 | 天天操夜夜看 | 免费看色视频 | 亚洲精品高清在线观看 | 久久综合久久八八 | 麻豆视频免费播放 | 狠狠干狠狠操 | 国产精品第一视频 | 欧美成人在线免费观看 | 日韩av在线不卡 | 91传媒在线播放 | 国产一区二区在线观看视频 | 国产91精品看黄网站在线观看动漫 | 成人毛片一区二区三区 | 一区二区三区韩国免费中文网站 | 国产亚洲高清视频 | 国产高清视频在线免费观看 | 亚洲极色| 五月婷婷色丁香 | 久久在线| 亚洲观看黄色网 | 日韩色av色资源 | 激情五月av | ,午夜性刺激免费看视频 | 国产一二三四在线视频 | 日韩av视屏在线观看 | 欧美在线free | 黄色91在线观看 | 国产免码va在线观看免费 | 网站免费黄 | 欧美一级性生活视频 | 中文字幕电影网 | 五月婷婷六月综合 | 在线观看亚洲精品视频 | 精品美女国产在线 | 免费三级黄色片 | 狠狠躁日日躁狂躁夜夜躁av | 免费看污片 | 国产老太婆免费交性大片 | 久久艹中文字幕 | 精品国产aⅴ麻豆 | 综合精品在线 | 一级黄色片在线免费看 | 视频1区2区 | 丁香激情网 | 久久久久欧美精品 | 欧美日韩中文国产 | av大全免费在线观看 | 欧美激情综合网 | 日韩黄色免费看 | 麻豆视频免费入口 | 玖玖999 | 少妇av网 | 婷婷久久久久 | 亚洲电影一区二区 | 日韩手机视频 | 国产精品自产拍在线观看桃花 | 国产成人精品久久久久 | 日韩毛片久久久 | 99热.com| 91精品国产99久久久久久久 | 久草在线91| 国模精品一区二区三区 | 在线观看中文字幕网站 | 国产91学生粉嫩喷水 | 亚洲国产精彩中文乱码av | 麻豆视频在线观看 | 婷婷中文在线 | 在线观看mv的中文字幕网站 | 国产精品成人一区二区三区吃奶 | 亚洲国产午夜精品 | 96视频免费在线观看 | av在线小说 | 日韩av电影手机在线观看 | 免费一级日韩欧美性大片 | 在线99热| 欧美视频xxx | 超碰免费公开 | 国产一级特黄毛片在线毛片 | 天天干天天操天天入 | 国产精品久久久久久爽爽爽 | 亚洲视频综合在线 | 国产久视频| 五月激情天 | 六月丁香激情综合色啪小说 | 成人性生交大片免费观看网站 | 99久久精品久久久久久动态片 | 一区二区三区免费在线播放 | 日韩首页| 久久99久久精品 | 91桃色在线免费观看 | 黄色福利网 | 亚洲欧洲成人精品av97 | 欧美精品一区二区三区一线天视频 | 超碰人人干人人 | 国产亚洲精品久久久久秋 | www色av| 干综合网 | 丁香五月亚洲综合在线 | 高清在线观看av | 99久久电影 | 天天操天天色天天射 | 午夜18视频在线观看 | 免费观看视频的网站 | 国产一级免费播放 | 日韩成人精品一区二区三区 | 久久久久久久久黄色 | 国产日韩欧美网站 | 中文字幕一区二区三 | 中文字幕人成不卡一区 | 97在线观看 | 国产精品久久久网站 | 成人黄色小说网 | 欧美一二三区播放 | 久久天堂网站 | 国产高清在线观看av | 在线国产福利 | 在线视频 成人 | 国产精品免费久久久久久久久久中文 | 911精品美国片911久久久 | 亚洲天堂自拍视频 | 天天色.com | 国产婷婷一区二区 | 日韩欧美国产激情在线播放 | 国产久草在线观看 | www.97视频| 国产午夜精品一区二区三区在线观看 | 深爱婷婷久久综合 | 国产高清综合 | 欧美色久 | 日本一区二区三区免费看 | 一级片视频在线 | japanesefreesexvideo高潮 | 中文字幕一区二区三区四区久久 | 91av视频导航 | 免费碰碰 | 欧美一区二区在线免费观看 | 亚洲精品大片www | 国产一级免费电影 | 中文字幕黄网 | 天天操天天谢 | 日韩xxxx视频 | 久久亚洲私人国产精品 | 国产精品区免费视频 | 看片一区二区三区 | 美女在线观看网站 | 免费人人干 | 免费黄在线看 | 天天干视频在线 | 久久久在线视频 | 91在线观 | 午夜免费视频网站 | 日韩精品极品视频 | 最新国产精品久久精品 | 亚洲最大成人免费网站 | 另类老妇性bbwbbw高清 | 97免费在线观看视频 | 中文字幕日韩精品有码视频 | 91丨九色丨蝌蚪丨对白 | 狠狠综合久久av | av网站在线免费观看 | 亚洲精品456在线播放第一页 | 亚洲无人区小视频 | 国产在线91在线电影 | 久久不射电影院 | 在线成人观看 | 天天干天天天天 | 婷婷在线网 | 99成人免费视频 | 国产短视频在线播放 | 欧美天天干 | 久草影视在线观看 | 久久免费看毛片 | 中文区中文字幕免费看 | 亚洲国产中文字幕 | 国产精品国产三级国产aⅴ无密码 | 日本久久视频 | 久久精品屋 | 狠狠网站 | 97在线视频免费播放 | 免费福利小视频 | 三级在线视频播放 | 97在线免费视频观看 | 欧洲在线免费视频 | 丝袜美腿在线 | 黄色中文字幕在线 | 一区二区三区久久精品 | 在线看成人 | 天天躁日日躁狠狠 | 福利av在线| 免费在线色视频 | 久久精品视频在线播放 | 99久久99久久 | 久久久www成人免费精品张筱雨 | 日韩无在线| 欧美日韩免费视频 | 美女黄网站视频免费 | 国产一级视频在线 | 久久国产精品久久精品国产演员表 | 高清久久久 | 91在线播放综合 | 国产中文字幕一区二区 | 中文字幕在线国产 | 久久国产精品系列 | 久久精品一二三区白丝高潮 | 久草资源在线 | 福利片视频区 | 美女视频黄色免费 | 国产亚洲视频系列 | 午夜久久网站 | bbbbb女女女女女bbbbb国产 | 黄色毛片在线看 | 亚洲精品视频在线观看免费视频 | 国产一区二区三区高清播放 | h动漫中文字幕 | 天天综合网久久综合网 | 亚洲人人射 | 欧美日韩破处 | 能在线看的av | 国色天香在线观看 | 国产福利免费在线观看 | 91在线免费播放 | 99视频这里只有 | 久久都是精品 | 国产小视频在线 | 国产精品一区二区久久 | 精品视频一区在线观看 | 91免费网| 韩日电影在线免费看 | 最近免费中文字幕大全高清10 | 天天爱天天操天天爽 | 国产韩国精品一区二区三区 | 99免费精品视频 | 国产精品久久久久久久久久久免费 | 久久99视频精品 | 国产视频1区2区3区 久久夜视频 | 成人欧美日韩国产 | 国产成人av一区二区三区在线观看 | 中文字幕在线影院 | 国产精品久久久久毛片大屁完整版 | 91亚洲欧美激情 | 国产免费a | 区一区二区三在线观看 | 激情视频综合网 | 在线探花 | 久久久精品免费观看 | 97碰视频| 亚洲乱码中文字幕综合 | 天堂av在线网站 | 久久乐九色婷婷综合色狠狠182 | 一区二区三区在线视频观看58 | 久久免费99| 国产福利在线免费 | 91xav| 色狠狠综合天天综合综合 | 日本中文字幕电影在线免费观看 | 一区二区三区在线免费观看视频 | 9999在线视频 | 成人网大片 | 国产福利免费看 | 96亚洲精品久久 | 91视频在线免费看 | 成人毛片一区二区三区 | 91av视屏 | 日本三级香港三级人妇99 | 五月天亚洲精品 | av片在线观看免费 | 国产一区观看 | 韩国精品视频在线观看 | 91香蕉国产 | 国产成人精品在线播放 | 欧美一级在线看 | 亚洲亚洲精品在线观看 | 久精品视频免费观看2 | 黄色三级免费观看 | 国产色小视频 | 欧美成人在线网站 | 国产精品久久久久久久电影 | 欧美激情精品久久久久久 | a在线免费 | 在线免费视频a | 久久资源在线 | 久久免费一 | 欧美日韩亚洲在线观看 | 97超碰在线视 | 国产伦理一区二区三区 | 五月婷婷在线观看 | 国产小视频福利在线 | 亚洲免费色 | 片网站| 亚洲,播放 | 国产免费xvideos视频入口 | 摸bbb搡bbb搡bbbb | 欧美少妇18p | 亚洲精品久久久久999中文字幕 | 天天操福利视频 | 超碰97免费在线 | 国产男女免费完整视频 | 国产在线专区 | 美女免费视频观看网站 | 久久久久激情视频 | 国产黄色大全 | 午夜视频一区二区三区 | 伊人伊成久久人综合网站 | 国产精品九九热 | 亚洲视频在线视频 | 丁香高清视频在线看看 | 99热这里精品 | 五月激情视频 | 免费视频久久久 | 久久精品国产久精国产 | 天天天色综合 | 91av视频在线观看免费 | 成人免费在线看片 | 丁香资源影视免费观看 | www天天干com | 日韩啪啪小视频 | 91麻豆精品国产91久久久使用方法 | 69国产精品成人在线播放 | 九九九在线观看 | 国产一区在线免费观看 | 免费亚洲黄色 | 国产精品一区二区三区在线看 | 亚洲视频精品 | av解说在线 | 啪一啪在线 | 国产一级免费片 | 欧美另类人妖 | 亚洲精品午夜aaa久久久 | 91视频91色| 福利一区二区三区四区 | 欧美成人精品欧美一级乱 | 人人草人人草 | 国产高清视频免费 | 国产亚洲高清视频 | 久一网站| 国产精品美女久久久久久免费 | www.福利视频 | 久久久精品网 | 亚洲成人免费在线 | 激情五月看片 | 免费看的黄色录像 | 欧美日韩精品在线免费观看 | 久久精品视频在线播放 | 色妞色视频一区二区三区四区 | 九九精品在线观看 | 黄色a一级视频 | 国产精品少妇 | av片中文 | 亚洲视频在线视频 | 一级全黄毛片 | 亚洲欧美国产精品久久久久 | 99精品在这里 | 久久久国产99久久国产一 | 日韩免费高清在线观看 | 天堂在线一区二区 | 中文字幕免费高清av | 日韩精品久久中文字幕 | 99精品偷拍视频一区二区三区 | 精品国产一区二区三区四区vr | 97色视频在线 | 成人在线免费观看视视频 | 992tv在线观看网站 | 国产精品久久久久婷婷 | 99热在线国产精品 | 亚洲成a人片77777kkkk1在线观看 | 91私密视频 | 九九九视频精品 | 午夜视频二区 | 久久免费国产视频 | 国产午夜一区二区 | 欧美色图30p | 人人狠 | 久精品视频免费观看2 | 久久久久久久久精 | 中文字幕亚洲国产 | 欧美男男激情videos | 在线观看av中文字幕 | 黄色一级在线视频 | 国产精品 日韩 欧美 | 国产精品久久久久影院日本 | 人人爽人人爽人人 | 激情五月播播久久久精品 | 久热久草 | 五月天色站| 日韩国产精品一区 | 成年人在线看片 | 99在线国产 | 久久99网 | 国产精品综合在线 | 在线精品亚洲 | 色综合天天综合 | 国产成人av | 丁香高清视频在线看看 | 午夜av免费观看 | 亚洲天堂首页 | 国产成人免费在线 | 92国产精品久久久久首页 | 国产在线精品区 | 色www免费视频| 亚洲精品午夜视频 | 中文字幕亚洲五码 | 欧美精品二区 | a在线观看免费视频 | 欧美黑吊大战白妞欧美 | 午夜在线免费观看 | 久久一久久 | 久久久www成人免费毛片 | 国产又粗又猛又爽 | 亚洲精品国产片 | 精品国产一区二区三区男人吃奶 | 五月天婷亚洲天综合网精品偷 | 日韩免费在线观看 | 国产午夜精品福利视频 | 中日韩欧美精彩视频 | 国产视频在线观看一区二区 | 中文字幕亚洲高清 | 亚洲精品99久久久久久 | 午夜123| 福利视频一区二区 | 91av手机在线观看 | 十八岁以下禁止观看的1000个网站 | 国产在线一线 | 香蕉网址 | 在线看av网址 | 成人精品福利 | 天天干天天干天天干天天干天天干天天干 | 丁香婷五月 | 狠狠色狠狠色综合日日92 | 久久97精品| 最新av在线网站 | 欧洲精品久久久久毛片完整版 | 久久专区| 国产第一页福利影院 | 欧美日韩精品在线一区二区 | 成人午夜电影网站 | 日韩欧美网址 | 韩国精品福利一区二区三区 | 天天艹天天操 | 日本字幕网| 日日操夜夜操狠狠操 | 国产91免费在线观看 | 国产在线a免费观看 | 免费特级黄色片 | 亚洲国产大片 | 国产高清在线精品 | 亚洲最大色 | 久久免费视频精品 | 免费在线观看av网站 | 99精品免费在线 | 在线中文字幕播放 | 国产精品手机播放 | 国产亚洲精品无 | 99九九视频 | 色资源网免费观看视频 | av 一区 二区 久久 | 日日操操 | 亚洲一区免费在线 | 国产精品99久久99久久久二8 | 国产精品精 | av在线免费在线观看 | 看片黄网站 | 91人人爽久久涩噜噜噜 | 欧美精品久久久久a | 欧美激情精品久久久久久 | 黄色大片国产 | 天天爱天天操天天干 | 国产精品嫩草55av | 日韩av在线高清 | 国产精品久久久久久久免费观看 | 国产在线观看91 | 六月丁香激情综合色啪小说 | 97精品国产97久久久久久 | 国产精品久久99综合免费观看尤物 | 最新婷婷色| 美女视频久久黄 | 欧美日韩一区二区在线观看 | 日韩网页 | 天天干.com| 精品久久久久久综合 | 久久成人国产精品 | 伊人宗合网 | 国产日韩中文字幕在线 | av先锋中文字幕 | 午夜精品视频一区 | 日批网站免费观看 | 中文字幕高清视频 | 日韩高清毛片 | 国产一级淫片在线观看 | 天天色播 | 亚洲色影爱久久精品 | 日韩久久精品一区二区三区 | 欧美日本国产在线观看 | 久久99国产精品久久99 | 国产一级一片免费播放放a 一区二区三区国产欧美 | www久久九| 亚洲另类xxxx| 99电影456麻豆 | 久久韩国免费视频 | 亚洲欧美久久 | 亚洲精品乱码 | 欧美孕妇与黑人孕交 | 欧美成人亚洲成人 | 日韩精品欧美精品 | av永久网址 | 在线观看国产成人av片 | 超碰人人超 | 婷婷综合av| 久久久久久蜜桃一区二区 | 天天操天天操天天操天天操天天操 | 中文字幕一区二区三 | 精品爱爱| 91视频在线看 | 久久久这里有精品 | 日日夜夜精品免费视频 | 国产成人一区二区精品非洲 | 日韩欧美69 | 91av电影在线观看 | 久久激情视频免费观看 | 91麻豆高清视频 | 欧美日韩在线视频观看 | 在线观看第一页 | 国产成人精品一区二区三区网站观看 | 人人澡人人爽 | 久久999久久| 九色视频自拍 | 99精品视频免费观看视频 | 五月在线 | 日日碰狠狠躁久久躁综合网 | 99久久精品免费一区 | 中文字幕乱在线伦视频中文字幕乱码在线 | 亚洲精品美女免费 | 久久看毛片 | 欧美久草视频 | 国产xxxxx在线观看 | 亚洲欧洲一级 | 人人澡人人爽欧一区 | 狠狠干网站| 国产精品99久久久久久宅男 | 国产精品密入口果冻 | www.888av| 91chinesexxx| 911精品美国片911久久久 | 在线免费亚洲 | 欧美精品在线观看 | 成人午夜片av在线看 | 中日韩免费视频 | 欧洲成人av| 亚洲成人av电影在线 | 99热最新在线 | 在线免费看片 | 黄色午夜网站 | 亚洲婷婷伊人 | 成年人在线免费看 | 一本一道久久a久久精品 | 97人人人| 美女免费视频一区二区 | av九九| 国产精品网址在线观看 | 96亚洲精品久久久蜜桃 | 欧美精品xxx | 99在线精品免费视频九九视 | 992tv在线观看| 人人艹人人 | 国产精品9区 | 911香蕉视频 | 一区二区 不卡 | 日本不卡一区二区三区在线观看 | 人人爽影院 | 免费又黄又爽 | 精品久久久久免费极品大片 | 极品嫩模被强到高潮呻吟91 | 久久久久久久久免费视频 | 日本在线观看中文字幕无线观看 | 日韩av中文在线 | 午夜视频色 | 欧美日韩精品电影 | 人人狠狠综合久久亚洲婷 | 久久国产精品免费视频 | 国产高清视频网 | 九九在线精品视频 | 国产精品一区二区免费看 | 深爱激情五月婷婷 | 日韩黄色在线观看 | 99精品在线免费观看 | 色网站国产精品 | 久久久久久久久久亚洲精品 | av在线影片 | 成人h在线观看 | av电影一区二区三区 | 五月婷婷在线视频观看 | 日韩av片在线 | 欧洲一区二区在线观看 | 成人免费在线视频观看 | 手机在线看片日韩 | 久久精品久久精品久久精品 | 免费观看久久 | 免费中文字幕在线观看 | 在线视频 国产 日韩 | 在线视频一区二区 | 综合网在线视频 | 98涩涩国产露脸精品国产网 | 日韩av在线看 | 精品国产一区二区三区在线观看 | 成人视屏免费看 | 久久久国产精品人人片99精片欧美一 | 亚洲人视频在线 | av日韩精品 | 久久婷婷开心 | 九九亚洲视频 | 日本精油按摩3 | 亚洲综合视频在线 | 国产精品久久久久久久久毛片 | 国产在线高清 | 97成人在线免费视频 | 狠狠综合 | 国产 视频 高清 免费 | 五月天六月丁香 | 国产无套精品久久久久久 | 深爱婷婷网 | 亚洲专区在线 | 亚洲精品视频在线观看视频 | 欧美一级激情 | 国产色在线观看 | 一区二区视频电影在线观看 | a午夜在线 | 日本一区二区三区视频在线播放 | 99久久日韩精品免费热麻豆美女 | 午夜精品99久久免费 | 国产精品视频永久免费播放 | 国产精品久久久久久久午夜片 | 日韩高清一区在线 | 亚洲视频分类 | 日韩一二区在线 | av中文字幕不卡 | 亚洲最大av网站 | 国产一级免费播放 | 亚洲最大av | 日韩美女一级片 | 中文字幕在线看视频国产中文版 | 丝袜+亚洲+另类+欧美+变态 | 亚洲电影久久久 | 欧美一级激情 | 色黄久久久久久 | 毛片视频电影 | 在线观看中文字幕av | 免费福利片2019潦草影视午夜 | 久久综合狠狠综合 | 在线看成人| 91亚洲激情| 国产精品麻豆欧美日韩ww | 久久综合九色综合久99 | 国产精品福利小视频 | 国产精品久久视频 | 欧美国产在线看 | 日本不卡123 | 精品欧美小视频在线观看 | 午夜国产福利在线观看 | 午夜精品一区二区三区在线观看 | 91黄色在线观看 | 免费观看一区二区三区视频 | 色综合夜色一区 | 91九色在线视频 | 最近中文字幕视频完整版 | 狠狠色伊人亚洲综合成人 | 久久国内免费视频 | 一级黄色片在线播放 | 中国一级特黄毛片大片久久 | 国产精品99久久久久久有的能看 | a v在线观看 | 国产不卡视频在线播放 | aa级黄色大片 | 中文字幕av一区二区三区四区 | 久久久久国产免费免费 | 国产精品久久久久久久久费观看 | 免费黄色在线网址 | 国产成人精品午夜在线播放 | 91精品婷婷国产综合久久蝌蚪 | 天天干天天拍天天操 | 日韩欧美国产激情在线播放 | 又黄又刺激的视频 | 一区二区视频在线播放 | 成人av一区二区在线观看 | 日韩免费电影在线观看 | 久久久久久国产精品999 | 久久精品一区二 | 国产精品久久久免费看 | 国产超碰在线 | 99精品视频在线看 | 免费福利视频导航 | 2021国产精品 | 黄色毛片视频 | 成人四虎影院 | 国产高清在线一区 | 在线午夜av| 成年人免费av | 亚洲伊人网在线观看 | adn—256中文在线观看 | 国产拍在线 | 播五月综合 | 久久国产一二区 | 一本大道久久精品懂色aⅴ 五月婷社区 | 日韩视频图片 | 999日韩| 99夜色| 麻豆91精品视频 | 日本精品视频网站 | 日本xxxx裸体xxxx17| 在线观看视频中文字幕 | 偷拍久久久 | 日日碰狠狠躁久久躁综合网 | 久久精品一区二区三区中文字幕 | av免费在线播放 | 超碰在线97免费 | 992tv在线观看 | 在线小视频你懂的 | 四虎视频 | 亚洲精品国产精品久久99 | 国产精品九九热 | 91麻豆国产| 久草在线视频首页 | 97超视频在线观看 | 日日夜夜精品视频天天综合网 | 欧美日韩免费看 | 成人免费ⅴa| 热99久久精品 | av电影中文 | 天天操网站 | 黄网站免费看 | 日韩欧美有码在线 | 狠狠色丁婷婷日日 | 国产四虎在线 | 成人午夜av电影 | 色多视频在线观看 | 久艹视频在线免费观看 | 91人人视频在线观看 | av在线免费不卡 | 黄色的网站在线 | 欧美一区二区免费在线观看 | 777久久久| 亚洲欧美在线视频免费 | 九九欧美视频 | 国产成人一区二区精品非洲 | 久久成人久久 | 婷婷色视频 | 激情婷婷六月 | 日韩视频免费观看高清 | 91在线公开视频 | 99久久er热在这里只有精品15 | 一级久久精品 | 激情影院在线观看 | 中文字幕乱码日本亚洲一区二区 | 91手机在线看片 | 在线观看一区 | 成人高清在线 | 免费视频一二三区 | 成人国产一区二区 | 在线国产欧美 | 999国内精品永久免费视频 | 天堂av在线免费观看 | 欧美日性视频 | 日韩高清激情 | 日韩免费一级a毛片在线播放一级 | 99精品免费久久久久久久久日本 | 国产精品视频永久免费播放 | 午夜av免费观看 | 免费欧美高清视频 | 久久国产精品视频观看 | 天天摸天天舔天天操 | 国产福利小视频在线 | a在线一区 | 免费男女羞羞的视频网站中文字幕 | 欧美视频不卡 | 亚洲精品国产精品乱码在线观看 | 免费一级片视频 | 丁香婷婷色月天 | 最新三级在线 | 中文字幕在线观看视频网站 | 人人干,人人爽 | 一级欧美一级日韩 | 在线99视频 | 色婷婷视频在线观看 | 热久久电影 | 韩国精品视频在线观看 | 日韩影视精品 | 天堂在线免费视频 | 国产又粗又猛又黄又爽视频 | 黄色a一级视频 | 久久99国产一区二区三区 | 亚洲精品高清一区二区三区四区 | 国产在线欧美日韩 | 欧美国产日韩一区二区三区 | 久久av免费 | 国产精品午夜av | 亚洲成年人在线播放 | 国产成人一区二区三区免费看 | 最近更新中文字幕 | 国产精品精品 | 日韩免费不卡av | 国产高清小视频 | 成人在线视频免费看 | 久久精品日产第一区二区三区乱码 | 区一区二在线 | 成人久久精品 | 在线av资源 | 国产精品美女毛片真酒店 | 99色视频在线 | 久久综合五月天 | 成人一级视频在线观看 | 人人澡人摸人人添学生av | 亚洲激情| 黄色免费在线看 | 久久久精品综合 | 免费亚洲精品视频 | 超碰成人网 | 亚洲精品理论片 | 麻豆一区在线观看 | 日本不卡久久 | 天天·日日日干 | 亚洲激情在线播放 | 九九在线高清精品视频 | 精品国产一区二区在线 | 欧美日韩国产色综合一二三四 | 成年人在线免费看 | 丁香花在线视频观看免费 | 人人射网站| 日韩毛片一区 | 国产成人333kkk | 人人澡人人爽欧一区 | 日韩精品综合在线 | 久久艹99 | 午夜 久久 tv | 成人在线视频免费 | 精品嫩模福利一区二区蜜臀 | 91黄视频在线观看 | 亚洲精区二区三区四区麻豆 | 97超碰超碰 | 日韩h在线观看 | 中文字幕日本在线 | 久久天天综合网 | 国产最顶级的黄色片在线免费观看 | 久久免费看a级毛毛片 | 国产xxxxx在线观看 | 欧美一二三视频 | 三级av小说 | 免费日韩一区二区三区 | 综合网婷婷 | 91视频在线免费下载 | 日韩免费看视频 | 色资源在线 | 久久综合久久综合这里只有精品 | www.色在线| 99热在| 国产亚洲免费的视频看 | 九九热在线精品视频 | 麻豆视频免费网站 | 日韩在线视频免费看 | 国产精品一区二区62 | 精品免费观看 | 午夜丁香视频在线观看 | 免费91麻豆精品国产自产在线观看 | 久久99视频免费观看 | 精品在线视频一区 | 人人澡超碰碰97碰碰碰软件 | 国产女人18毛片水真多18精品 | 亚洲美女视频网 | 西西www4444大胆视频 | 91麻豆精品国产自产在线 | 成人午夜免费福利 | 亚洲精品免费在线观看视频 | 欧美国产日韩一区二区三区 | 在线小视频你懂的 | 99热这里 | 日韩欧美视频在线观看免费 | 999电影免费在线观看2020 | 91欧美视频网站 | 欧美在线18 | avove黑丝| 91精品在线观看视频 | 在线观看完整版 | 丁香婷婷网 | 国产精品麻豆91 | 九九交易行官网 | 粉嫩av一区二区三区入口 | 九九热在线精品 | 日韩欧美一区二区三区在线观看 | 国产精品ssss在线亚洲 | 欧美 亚洲 另类 激情 另类 | 日日碰狠狠添天天爽超碰97久久 | av亚洲产国偷v产偷v自拍小说 | 日韩欧美高清一区二区 | 婷婷国产在线 | 色网站中文字幕 | 大型av综合网站 | 在线精品视频免费播放 | 中文字幕在线一区观看 | 91黄色免费看 | 激情五月色播五月 | a级片韩国 | 亚洲国产美女精品久久久久∴ | 天天干天天做 | 亚洲精品成人免费 | 亚洲免费成人 |