• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# UsbDDK
2
3
4## 概述
5
6提供USB DDK接口,包括主机侧打开和关闭接口、管道同步异步读写通信、控制传输、中断传输等。
7
8\@syscap SystemCapability.Driver.USB.Extension
9
10**起始版本:**
11
1210
13
14
15## 汇总
16
17
18### 文件
19
20| 名称 | 描述 |
21| -------- | -------- |
22| [usb_ddk_api.h](usb__ddk__api_8h.md) | 声明用于主机侧访问设备的USB DDK接口。<br/>引用文件:&lt;usb/usb_ddk_api.h&gt; <br/>库: libusb_ndk.z.so|
23| [usb_ddk_types.h](usb__ddk__types_8h.md) | 提供USB DDK中的枚举变量、结构体定义与宏定义。<br/>引用文件:&lt;usb/usb_ddk_types.h&gt; <br/>库: libusb_ndk.z.so|
24
25
26### 结构体
27
28| 名称 | 描述 |
29| -------- | -------- |
30| [UsbControlRequestSetup](_usb_control_request_setup.md) | 控制传输setup包,对应USB协议中的Setup Data。 |
31| [UsbDeviceDescriptor](_usb_device_descriptor.md) | 标准设备描述符,对应USB协议中Standard Device Descriptor。 |
32| [UsbConfigDescriptor](_usb_config_descriptor.md) | 标准配置描述符,对应USB协议中Standard Configuration Descriptor。 |
33| [UsbInterfaceDescriptor](_usb_interface_descriptor.md) | 标准接口描述符,对应USB协议中Standard Interface Descriptor。 |
34| [UsbEndpointDescriptor](_usb_endpoint_descriptor.md) | 标准端点描述符,对应USB协议中Standard Endpoint Descriptor。 |
35| [UsbDdkEndpointDescriptor](_usb_ddk_endpoint_descriptor.md) | 端点描述符。 |
36| [UsbDdkInterfaceDescriptor](_usb_ddk_interface_descriptor.md) | 接口描述符。 |
37| [UsbDdkInterface](_usb_ddk_interface.md) | USB接口,是特定接口下备用设置的集合。 |
38| [UsbDdkConfigDescriptor](_usb_ddk_config_descriptor.md) | 配置描述符。 |
39| [UsbRequestPipe](_usb_request_pipe.md) | 请求管道。 |
40| [UsbDeviceMemMap](_usb_device_mem_map.md) | 设备内存映射,通过[OH_Usb_CreateDeviceMemMap()](#oh_usb_createdevicememmap)创建设备内存映射,使用内存映射后的缓冲区,获得更好的性能。 |
41
42
43### 类型定义
44
45| 名称 | 描述 |
46| -------- | -------- |
47| [UsbDdkEndpointDescriptor](#usbddkendpointdescriptor) | 端点描述符。 |
48| [UsbDdkInterfaceDescriptor](#usbddkinterfacedescriptor) | 接口描述符。 |
49| [UsbDdkInterface](#usbddkinterface) | USB接口,是特定接口下备用设置的集合。 |
50| [UsbDdkConfigDescriptor](#usbddkconfigdescriptor) | 配置描述符。 |
51| [UsbDeviceMemMap](#usbdevicememmap) | 设备内存映射,通过[OH_Usb_CreateDeviceMemMap()](#oh_usb_createdevicememmap)创建设备内存映射,使用内存映射后的缓冲区,获得更好的性能。 |
52
53
54### 枚举
55
56| 名称 | 描述 |
57| -------- | -------- |
58| [UsbDdkErrCode](#usbddkerrcode) {<br/>USB_DDK_SUCCESS = 0, USB_DDK_FAILED = -1, USB_DDK_INVALID_PARAMETER = -2, USB_DDK_MEMORY_ERROR = -3,<br/>USB_DDK_INVALID_OPERATION = -4, USB_DDK_NULL_PTR = -5, USB_DDK_DEVICE_BUSY = -6, USB_DDK_TIMEOUT = -7<br/>} | USB DDK 错误码定义。 |
59
60
61### 函数
62
63| 名称 | 描述 |
64| -------- | -------- |
65| [OH_Usb_Init](#oh_usb_init) (void) | 初始化DDK。 |
66| [OH_Usb_Release](#oh_usb_release) (void) | 释放DDK。 |
67| [OH_Usb_GetDeviceDescriptor](#oh_usb_getdevicedescriptor) (uint64_t deviceId, struct [UsbDeviceDescriptor](_usb_device_descriptor.md) \*desc) | 获取设备描述符。 |
68| [OH_Usb_GetConfigDescriptor](#oh_usb_getconfigdescriptor) (uint64_t deviceId, uint8_t configIndex, struct [UsbDdkConfigDescriptor](_usb_ddk_config_descriptor.md) \*\*const config) | 获取配置描述符。请在描述符使用完后使用[OH_Usb_FreeConfigDescriptor()](#oh_usb_freeconfigdescriptor)释放描述符,否则会造成内存泄露。 |
69| [OH_Usb_FreeConfigDescriptor](#oh_usb_freeconfigdescriptor) (const struct [UsbDdkConfigDescriptor](_usb_ddk_config_descriptor.md) \*const config) | 释放配置描述符,请在描述符使用完后释放描述符,否则会造成内存泄露。 |
70| [OH_Usb_ClaimInterface](#oh_usb_claiminterface) (uint64_t deviceId, uint8_t interfaceIndex, uint64_t \*[interfaceHandle](usb__ddk__types_8h.md#interfacehandle)) | 声明接口。 |
71| [OH_Usb_ReleaseInterface](#oh_usb_releaseinterface) (uint64_t [interfaceHandle](usb__ddk__types_8h.md#interfacehandle)) | 释放接口。 |
72| [OH_Usb_SelectInterfaceSetting](#oh_usb_selectinterfacesetting) (uint64_t [interfaceHandle](usb__ddk__types_8h.md#interfacehandle), uint8_t settingIndex) | 激活接口的备用设置。 |
73| [OH_Usb_GetCurrentInterfaceSetting](#oh_usb_getcurrentinterfacesetting) (uint64_t [interfaceHandle](usb__ddk__types_8h.md#interfacehandle), uint8_t \*settingIndex) | 获取接口当前激活的备用设置。 |
74| [OH_Usb_SendControlReadRequest](#oh_usb_sendcontrolreadrequest) (uint64_t [interfaceHandle](usb__ddk__types_8h.md#interfacehandle), const struct [UsbControlRequestSetup](_usb_control_request_setup.md) \*setup, uint32_t [timeout](usb__ddk__types_8h.md#timeout), uint8_t \*data, uint32_t \*dataLen) | 发送控制读请求,该接口为同步接口。 |
75| [OH_Usb_SendControlWriteRequest](#oh_usb_sendcontrolwriterequest) (uint64_t [interfaceHandle](usb__ddk__types_8h.md#interfacehandle), const struct [UsbControlRequestSetup](_usb_control_request_setup.md) \*setup, uint32_t [timeout](usb__ddk__types_8h.md#timeout), const uint8_t \*data, uint32_t dataLen) | 发送控制写请求,该接口为同步接口。 |
76| [OH_Usb_SendPipeRequest](#oh_usb_sendpiperequest) (const struct [UsbRequestPipe](_usb_request_pipe.md) \*pipe, [UsbDeviceMemMap](_usb_device_mem_map.md) \*devMmap) | 发送管道请求,该接口为同步接口。中断传输和批量传输都使用该接口发送请求。 |
77| [OH_Usb_CreateDeviceMemMap](#oh_usb_createdevicememmap) (uint64_t deviceId, size_t size, [UsbDeviceMemMap](_usb_device_mem_map.md) \*\*devMmap) | 创建缓冲区。请在缓冲区使用完后,调用[OH_Usb_DestroyDeviceMemMap()](#oh_usb_destroydevicememmap)销毁缓冲区,否则会造成资源泄露。 |
78| [OH_Usb_DestroyDeviceMemMap](#oh_usb_destroydevicememmap) ([UsbDeviceMemMap](_usb_device_mem_map.md) \*devMmap) | 销毁缓冲区。请在缓冲区使用完后及时销毁缓冲区,否则会造成资源泄露。 |
79
80
81## 类型定义说明
82
83
84### UsbDdkConfigDescriptor
85
86
87```
88typedef struct UsbDdkConfigDescriptor UsbDdkConfigDescriptor
89```
90
91**描述:**
92
93配置描述符。
94
95
96### UsbDdkEndpointDescriptor
97
98
99```
100typedef struct UsbDdkEndpointDescriptor UsbDdkEndpointDescriptor
101```
102
103**描述:**
104
105端点描述符。
106
107
108### UsbDdkInterface
109
110
111```
112typedef struct UsbDdkInterface UsbDdkInterface
113```
114
115**描述:**
116
117USB接口,是特定接口下备用设置的集合。
118
119
120### UsbDdkInterfaceDescriptor
121
122
123```
124typedef struct UsbDdkInterfaceDescriptor UsbDdkInterfaceDescriptor
125```
126
127**描述:**
128
129接口描述符。
130
131
132### UsbDeviceMemMap
133
134
135```
136typedef struct UsbDeviceMemMap UsbDeviceMemMap
137```
138
139**描述:**
140
141设备内存映射,通过[OH_Usb_CreateDeviceMemMap()](#oh_usb_createdevicememmap)创建设备内存映射,使用内存映射后的缓冲区,获得更好的性能。
142
143
144## 枚举类型说明
145
146
147### UsbDdkErrCode
148
149
150```
151enum UsbDdkErrCode
152```
153
154**描述:**
155
156USB DDK 错误码定义。
157
158| 枚举值 | 描述 |
159| -------- | -------- |
160| USB_DDK_SUCCESS | 操作成功。 |
161| USB_DDK_FAILED | 操作失败。 |
162| USB_DDK_INVALID_PARAMETER | 非法参数。 |
163| USB_DDK_MEMORY_ERROR | 内存相关的错误,包括:内存不足、内存数据拷贝失败、内存申请失败等。 |
164| USB_DDK_INVALID_OPERATION | 非法操作。 |
165| USB_DDK_NULL_PTR | 空指针异常。 |
166| USB_DDK_DEVICE_BUSY | 设备忙。 |
167| USB_DDK_TIMEOUT | 传输超时。 |
168
169
170## 函数说明
171
172
173### OH_Usb_ClaimInterface()
174
175
176```
177int32_t OH_Usb_ClaimInterface (uint64_t deviceId, uint8_t interfaceIndex, uint64_t * interfaceHandle )
178```
179
180**描述:**
181
182声明接口。
183
184**需要权限**:ohos.permission.ACCESS_DDK_USB
185
186**参数:**
187
188| 名称 | 描述 |
189| -------- | -------- |
190| deviceId | 设备ID,代表要操作的设备。 |
191| interfaceIndex | 接口索引,对应USB协议中的[bInterfaceNumber](_usb_interface_descriptor.md#binterfacenumber)。 |
192| interfaceHandle | 接口操作句柄,接口声明成功后,该参数将会被赋值。 |
193
194**返回:**
195
196成功返回0,否则返回负数。
197
198
199### OH_Usb_CreateDeviceMemMap()
200
201
202```
203int32_t OH_Usb_CreateDeviceMemMap (uint64_t deviceId, size_t size, UsbDeviceMemMap ** devMmap )
204```
205
206**描述:**
207
208创建缓冲区。请在缓冲区使用完后,调用[OH_Usb_DestroyDeviceMemMap()](#oh_usb_destroydevicememmap)销毁缓冲区,否则会造成资源泄露。
209
210**需要权限**:ohos.permission.ACCESS_DDK_USB
211
212**参数:**
213
214| 名称 | 描述 |
215| -------- | -------- |
216| deviceId | 设备ID,代表要创建缓冲区的设备。 |
217| size | 缓冲区的大小。 |
218| devMmap | 创建的缓冲区通过该参数返回给调用者。 |
219
220**返回:**
221
222成功返回0,否则返回负数。
223
224
225### OH_Usb_DestroyDeviceMemMap()
226
227
228```
229void OH_Usb_DestroyDeviceMemMap (UsbDeviceMemMap * devMmap)
230```
231
232**描述:**
233
234销毁缓冲区。请在缓冲区使用完后及时销毁缓冲区,否则会造成资源泄露。
235
236**需要权限**:ohos.permission.ACCESS_DDK_USB
237
238**参数:**
239
240| 名称 | 描述 |
241| -------- | -------- |
242| devMmap | 销毁由[OH_Usb_CreateDeviceMemMap()](#oh_usb_createdevicememmap)创建的缓冲区。 |
243
244
245### OH_Usb_FreeConfigDescriptor()
246
247
248```
249void OH_Usb_FreeConfigDescriptor (const struct UsbDdkConfigDescriptor *const config)
250```
251
252**描述:**
253
254释放配置描述符,请在描述符使用完后释放描述符,否则会造成内存泄露。
255
256**需要权限**:ohos.permission.ACCESS_DDK_USB
257
258**参数:**
259
260| 名称 | 描述 |
261| -------- | -------- |
262| config | 配置描述符,通过[OH_Usb_GetConfigDescriptor()](#oh_usb_getconfigdescriptor)获得的配置描述符。 |
263
264
265### OH_Usb_GetConfigDescriptor()
266
267
268```
269int32_t OH_Usb_GetConfigDescriptor (uint64_t deviceId, uint8_t configIndex, struct UsbDdkConfigDescriptor **const config )
270```
271
272**描述:**
273
274获取配置描述符。请在描述符使用完后使用[OH_Usb_FreeConfigDescriptor()](#oh_usb_freeconfigdescriptor)释放描述符,否则会造成内存泄露。
275
276**需要权限**:ohos.permission.ACCESS_DDK_USB
277
278**参数:**
279
280| 名称 | 描述 |
281| -------- | -------- |
282| deviceId | 设备ID,代表要获取配置描述符的设备。 |
283| configIndex | 配置id,对应USB协议中的[bConfigurationValue](_usb_config_descriptor.md#bconfigurationvalue)。 |
284| config | 配置描述符,包含USB协议中定义的标准配置描述符,以及与其关联的接口描述符和端点描述符。 |
285
286**返回:**
287
288成功返回0,否则返回负数。
289
290
291### OH_Usb_GetCurrentInterfaceSetting()
292
293
294```
295int32_t OH_Usb_GetCurrentInterfaceSetting (uint64_t interfaceHandle, uint8_t * settingIndex )
296```
297
298**描述:**
299
300获取接口当前激活的备用设置。
301
302**需要权限**:ohos.permission.ACCESS_DDK_USB
303
304**参数:**
305
306| 名称 | 描述 |
307| -------- | -------- |
308| interfaceHandle | 接口操作句柄,代表要操作的接口。 |
309| settingIndex | 备用设置索引,对应USB协议中的[bAlternateSetting](_usb_interface_descriptor.md#balternatesetting)。 |
310
311**返回:**
312
313成功返回0,否则返回负数。
314
315
316### OH_Usb_GetDeviceDescriptor()
317
318
319```
320int32_t OH_Usb_GetDeviceDescriptor (uint64_t deviceId, struct UsbDeviceDescriptor * desc )
321```
322
323**描述:**
324
325获取设备描述符。
326
327**需要权限**:ohos.permission.ACCESS_DDK_USB
328
329**参数:**
330
331| 名称 | 描述 |
332| -------- | -------- |
333| deviceId | 设备ID,代表要获取描述符的设备。 |
334| desc | 设备描述符,详细定义请参考[UsbDeviceDescriptor](_usb_device_descriptor.md)。 |
335
336**返回:**
337
338成功返回0,否则返回负数。
339
340
341### OH_Usb_Init()
342
343
344```
345int32_t OH_Usb_Init (void )
346```
347
348**描述:**
349
350初始化DDK。
351
352**需要权限**:ohos.permission.ACCESS_DDK_USB
353
354**返回:**
355
356成功返回0,否则返回负数。
357
358
359### OH_Usb_Release()
360
361
362```
363void OH_Usb_Release (void )
364```
365
366**描述:**
367
368释放DDK。
369
370**需要权限**:ohos.permission.ACCESS_DDK_USB
371
372
373### OH_Usb_ReleaseInterface()
374
375
376```
377int32_t OH_Usb_ReleaseInterface (uint64_t interfaceHandle)
378```
379
380**描述:**
381
382释放接口。
383
384**需要权限**:ohos.permission.ACCESS_DDK_USB
385
386**参数:**
387
388| 名称 | 描述 |
389| -------- | -------- |
390| interfaceHandle | 接口操作句柄,代表要释放的接口。 |
391
392**返回:**
393
394成功返回0,否则返回负数。
395
396
397### OH_Usb_SelectInterfaceSetting()
398
399
400```
401int32_t OH_Usb_SelectInterfaceSetting (uint64_t interfaceHandle, uint8_t settingIndex )
402```
403
404**描述:**
405
406激活接口的备用设置。
407
408**需要权限**:ohos.permission.ACCESS_DDK_USB
409
410**参数:**
411
412| 名称 | 描述 |
413| -------- | -------- |
414| interfaceHandle | 接口操作句柄,代表要操作的接口。 |
415| settingIndex | 备用设置索引,对应USB协议中的[bAlternateSetting](_usb_interface_descriptor.md#balternatesetting)。 |
416
417**返回:**
418
419成功返回0,否则返回负数。
420
421
422### OH_Usb_SendControlReadRequest()
423
424
425```
426int32_t OH_Usb_SendControlReadRequest (uint64_t interfaceHandle, const struct UsbControlRequestSetup * setup, uint32_t timeout, uint8_t * data, uint32_t * dataLen )
427```
428
429**描述:**
430
431发送控制读请求,该接口为同步接口。
432
433**需要权限**:ohos.permission.ACCESS_DDK_USB
434
435**参数:**
436
437| 名称 | 描述 |
438| -------- | -------- |
439| interfaceHandle | 接口操作句柄,代表要操作的接口。 |
440| setup | 请求相关的参数,详细定义请参考 [UsbControlRequestSetup](_usb_control_request_setup.md)。 |
441| timeout | 超时时间,单位为毫秒。 |
442| data | 要传输的数据。 |
443| dataLen | 表示data的数据长度,在函数返回后,表示实际读取到的数据的长度。 |
444
445**返回:**
446
447成功返回0,否则返回负数。
448
449
450### OH_Usb_SendControlWriteRequest()
451
452
453```
454int32_t OH_Usb_SendControlWriteRequest (uint64_t interfaceHandle, const struct UsbControlRequestSetup * setup, uint32_t timeout, const uint8_t * data, uint32_t dataLen )
455```
456
457**描述:**
458
459发送控制写请求,该接口为同步接口。
460
461**需要权限**:ohos.permission.ACCESS_DDK_USB
462
463**参数:**
464
465| 名称 | 描述 |
466| -------- | -------- |
467| interfaceHandle | 接口操作句柄,代表要操作的接口。 |
468| setup | 请求相关的参数,详细定义请参考 [UsbControlRequestSetup](_usb_control_request_setup.md)。 |
469| timeout | 超时时间,单位为毫秒。 |
470| data | 要传输的数据。 |
471| dataLen | 表示data的数据长度。 |
472
473**返回:**
474
475成功返回0,否则返回负数。
476
477
478### OH_Usb_SendPipeRequest()
479
480
481```
482int32_t OH_Usb_SendPipeRequest (const struct UsbRequestPipe * pipe, UsbDeviceMemMap * devMmap )
483```
484
485**描述:**
486
487发送管道请求,该接口为同步接口。中断传输和批量传输都使用该接口发送请求。
488
489**需要权限**:ohos.permission.ACCESS_DDK_USB
490
491**参数:**
492
493| 名称 | 描述 |
494| -------- | -------- |
495| pipe | 要传输数据的管道信息。 |
496| devMmap | 数据缓冲区,可以通过[OH_Usb_CreateDeviceMemMap()](#oh_usb_createdevicememmap)获得。 |
497
498**返回:**
499
500成功返回0,否则返回负数。
501