1e41f4b71Sopenharmony_ci# USB DDK
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci## Overview
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ciProvides USB DDK APIs to open and close USB interfaces, perform non-isochronous and isochronous data transfer over USB pipes, and implement control transfer and interrupt transfer, etc.
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Driver.USB.Extension
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci**Since**
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci10
13e41f4b71Sopenharmony_ci
14e41f4b71Sopenharmony_ci## Summary
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci### File
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci| Name| Description|
20e41f4b71Sopenharmony_ci| -------- | -------- |
21e41f4b71Sopenharmony_ci| [usb_ddk_api.h](usb__ddk__api_8h.md) | Declares the USB DDK APIs used by the USB host to access USB devices.<br>File to include: &lt;usb/usb_ddk_api.h&gt;<br>Library: libusb_ndk.z.so|
22e41f4b71Sopenharmony_ci| [usb_ddk_types.h](usb__ddk__types_8h.md) | Provides the enumerated variables, structures, and macros used in USB DDK APIs.<br>File to include: &lt;usb/usb_ddk_types.h&gt; <br>Library: libusb_ndk.z.so|
23e41f4b71Sopenharmony_ci
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci### Structs
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci| Name| Description|
28e41f4b71Sopenharmony_ci| -------- | -------- |
29e41f4b71Sopenharmony_ci| [UsbControlRequestSetup](_usb_control_request_setup.md) | Setup data for control transfer. It corresponds to **Setup Data** in the USB protocol.|
30e41f4b71Sopenharmony_ci| [UsbDeviceDescriptor](_usb_device_descriptor.md) | Standard device descriptor, corresponding to **Standard Device Descriptor** in the USB protocol.|
31e41f4b71Sopenharmony_ci| [UsbConfigDescriptor](_usb_config_descriptor.md) | Standard configuration descriptor, corresponding to **Standard Configuration Descriptor** in the USB protocol.|
32e41f4b71Sopenharmony_ci| [UsbInterfaceDescriptor](_usb_interface_descriptor.md) | Standard interface descriptor, corresponding to **Standard Interface Descriptor** in the USB protocol.|
33e41f4b71Sopenharmony_ci| [UsbEndpointDescriptor](_usb_endpoint_descriptor.md) | Standard endpoint descriptor, corresponding to **Standard Endpoint Descriptor** in the USB protocol.|
34e41f4b71Sopenharmony_ci| [UsbDdkEndpointDescriptor](_usb_ddk_endpoint_descriptor.md) | Endpoint descriptor.|
35e41f4b71Sopenharmony_ci| [UsbDdkInterfaceDescriptor](_usb_ddk_interface_descriptor.md) | Interface descriptor.|
36e41f4b71Sopenharmony_ci| [UsbDdkInterface](_usb_ddk_interface.md) | USB DDK interface, which is a collection of alternate settings for a particular USB interface.|
37e41f4b71Sopenharmony_ci| [UsbDdkConfigDescriptor](_usb_ddk_config_descriptor.md) | Configuration descriptor.|
38e41f4b71Sopenharmony_ci| [UsbRequestPipe](_usb_request_pipe.md) | Request pipe.|
39e41f4b71Sopenharmony_ci| [UsbDeviceMemMap](_usb_device_mem_map.md) | Device memory map created by calling [OH_Usb_CreateDeviceMemMap()](#oh_usb_createdevicememmap). A buffer using the device memory map can provide better performance.|
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci### Enums
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci| Name| Description|
44e41f4b71Sopenharmony_ci| -------- | -------- |
45e41f4b71Sopenharmony_ci| [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 error code definitions.|
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ci
48e41f4b71Sopenharmony_ci### Functions
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ci| Name| Description|
51e41f4b71Sopenharmony_ci| -------- | -------- |
52e41f4b71Sopenharmony_ci| [OH_Usb_Init](#oh_usb_init) (void) | Initializes the DDK.|
53e41f4b71Sopenharmony_ci| [OH_Usb_Release](#oh_usb_release) (void) | Releases the DDK.|
54e41f4b71Sopenharmony_ci| [OH_Usb_GetDeviceDescriptor](#oh_usb_getdevicedescriptor) (uint64_t deviceId, struct [UsbDeviceDescriptor](_usb_device_descriptor.md) \*desc) | Obtains the device descriptor.|
55e41f4b71Sopenharmony_ci| [OH_Usb_GetConfigDescriptor](#oh_usb_getconfigdescriptor) (uint64_t deviceId, uint8_t configIndex, struct [UsbDdkConfigDescriptor](_usb_ddk_config_descriptor.md) \*\*const config) | Obtains the configuration descriptor. To avoid memory leakage, use **OH_Usb_FreeConfigDescriptor** to release a descriptor after use.|
56e41f4b71Sopenharmony_ci| [OH_Usb_FreeConfigDescriptor](#oh_usb_freeconfigdescriptor) (const struct [UsbDdkConfigDescriptor](_usb_ddk_config_descriptor.md) \*const config) | Releases the configuration descriptor. To avoid memory leakage, release a descriptor after use.|
57e41f4b71Sopenharmony_ci| [OH_Usb_ClaimInterface](#oh_usb_claiminterface) (uint64_t deviceId, uint8_t interfaceIndex, uint64_t \*[interfaceHandle](usb__ddk__types_8h.md#interfacehandle)) | Declares a USB interface.|
58e41f4b71Sopenharmony_ci| [OH_Usb_ReleaseInterface](#oh_usb_releaseinterface) (uint64_t [interfaceHandle](usb__ddk__types_8h.md#interfacehandle)) | Releases a USB interface.|
59e41f4b71Sopenharmony_ci| [OH_Usb_SelectInterfaceSetting](#oh_usb_selectinterfacesetting) (uint64_t [interfaceHandle](usb__ddk__types_8h.md#interfacehandle), uint8_t settingIndex) | Activates the alternate setting of a USB interface.|
60e41f4b71Sopenharmony_ci| [OH_Usb_GetCurrentInterfaceSetting](#oh_usb_getcurrentinterfacesetting) (uint64_t [interfaceHandle](usb__ddk__types_8h.md#interfacehandle), uint8_t \*settingIndex) | Obtains the activated alternate setting of a USB interface.|
61e41f4b71Sopenharmony_ci| [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) | Sends a control read transfer request. This API works in a synchronous manner.|
62e41f4b71Sopenharmony_ci| [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) | Sends a control write transfer request. This API works in a synchronous manner.|
63e41f4b71Sopenharmony_ci| [OH_Usb_SendPipeRequest](#oh_usb_sendpiperequest) (const struct [UsbRequestPipe](_usb_request_pipe.md) \*pipe, [UsbDeviceMemMap](_usb_device_mem_map.md) \*devMmap) | Sends a pipe request. This API works in a synchronous manner. It applies to interrupt transfer and bulk transfer.|
64e41f4b71Sopenharmony_ci| [OH_Usb_SendPipeRequestWithAshmem](#oh_usb_sendpiperequestwithashmem) (const struct [UsbRequestPipe](_usb_request_pipe.md) \*pipe, [DDK_Ashmem](_ddk_ashmem.md) \*ashmem) | Sends a pipe request for the shared memory. This API returns the result synchronously. It applies to interrupt transfer and bulk transfer.|
65e41f4b71Sopenharmony_ci| [OH_Usb_CreateDeviceMemMap](#oh_usb_createdevicememmap) (uint64_t deviceId, size_t size, [UsbDeviceMemMap](_usb_device_mem_map.md) \*\*devMmap) | Creates a buffer. To avoid memory leakage, use [OH_Usb_DestroyDeviceMemMap()](#oh_usb_destroydevicememmap) to destroy a buffer after use.|
66e41f4b71Sopenharmony_ci| [OH_Usb_DestroyDeviceMemMap](#oh_usb_destroydevicememmap) ([UsbDeviceMemMap](_usb_device_mem_map.md) \*devMmap) | Destroys a buffer. To avoid resource leakage, destroy a buffer in time after use.|
67e41f4b71Sopenharmony_ci
68e41f4b71Sopenharmony_ci#### deviceId Description
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ciYou can call **queryDevices()** to obtain the device ID, that is, **deviceId**.
71e41f4b71Sopenharmony_ciFor details, see [Peripheral Management Development](../../device/driver/externaldevice-guidelines.md).
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci#### deviceId Conversion
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ciThe **deviceId** obtained through **queryDevices()** cannot be directly used as the input parameter for functions such as [OH_Usb_GetDeviceDescriptor](#oh_usb_getdevicedescriptor).
76e41f4b71Sopenharmony_ci<p>Specifically, you need to extract its first 32 bits as the input parameter **deviceId** for C APIs.</p>
77e41f4b71Sopenharmony_ci<p>The following code is for reference only: </p>
78e41f4b71Sopenharmony_ci
79e41f4b71Sopenharmony_ci ~~~
80e41f4b71Sopenharmony_ciuint64_t JsDeviceIdToNative(uint64_t deviceId)
81e41f4b71Sopenharmony_ci{
82e41f4b71Sopenharmony_ci    uint32_t busNum = (uint32_t)(deviceId >> 48);
83e41f4b71Sopenharmony_ci    uint32_t devNum = (uint32_t)((deviceId & 0x0000FFFF00000000) >> 32);
84e41f4b71Sopenharmony_ci    return (((static_cast<uint64_t>(busNum)) << 32) | devNum);
85e41f4b71Sopenharmony_ci}
86e41f4b71Sopenharmony_ci~~~
87e41f4b71Sopenharmony_ci
88e41f4b71Sopenharmony_ci## Enum Description
89e41f4b71Sopenharmony_ci
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ci### UsbDdkErrCode
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci
94e41f4b71Sopenharmony_ci```
95e41f4b71Sopenharmony_cienum UsbDdkErrCode
96e41f4b71Sopenharmony_ci```
97e41f4b71Sopenharmony_ci
98e41f4b71Sopenharmony_ci**Description**
99e41f4b71Sopenharmony_ci
100e41f4b71Sopenharmony_ciUSB DDK error code definitions.
101e41f4b71Sopenharmony_ci
102e41f4b71Sopenharmony_ci| Value| Description|
103e41f4b71Sopenharmony_ci| -------- | -------- |
104e41f4b71Sopenharmony_ci| USB_DDK_SUCCESS | Operation successful.|
105e41f4b71Sopenharmony_ci| USB_DDK_FAILED | Operation failed.|
106e41f4b71Sopenharmony_ci| USB_DDK_INVALID_PARAMETER | Invalid parameter.|
107e41f4b71Sopenharmony_ci| USB_DDK_MEMORY_ERROR | Memory-related error, for example, insufficient memory, memory data copy failure, or memory application failure.|
108e41f4b71Sopenharmony_ci| USB_DDK_INVALID_OPERATION | Invalid operation.|
109e41f4b71Sopenharmony_ci| USB_DDK_NULL_PTR | Null pointer.|
110e41f4b71Sopenharmony_ci| USB_DDK_DEVICE_BUSY | Device busy.|
111e41f4b71Sopenharmony_ci| USB_DDK_TIMEOUT | Transfer timed out.|
112e41f4b71Sopenharmony_ci
113e41f4b71Sopenharmony_ci
114e41f4b71Sopenharmony_ci## Function Description
115e41f4b71Sopenharmony_ci
116e41f4b71Sopenharmony_ci
117e41f4b71Sopenharmony_ci### OH_Usb_ClaimInterface()
118e41f4b71Sopenharmony_ci
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ci```
121e41f4b71Sopenharmony_ciint32_t OH_Usb_ClaimInterface (uint64_t deviceId, uint8_t interfaceIndex, uint64_t * interfaceHandle )
122e41f4b71Sopenharmony_ci```
123e41f4b71Sopenharmony_ci
124e41f4b71Sopenharmony_ci**Description**
125e41f4b71Sopenharmony_ci
126e41f4b71Sopenharmony_ciDeclares a USB interface.
127e41f4b71Sopenharmony_ci
128e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.ACCESS_DDK_USB
129e41f4b71Sopenharmony_ci
130e41f4b71Sopenharmony_ci**Parameters**
131e41f4b71Sopenharmony_ci
132e41f4b71Sopenharmony_ci| Name| Description|
133e41f4b71Sopenharmony_ci| -------- | -------- |
134e41f4b71Sopenharmony_ci| deviceId | Device ID.|
135e41f4b71Sopenharmony_ci| interfaceIndex | Interface index, which corresponds to [bInterfaceNumber](_usb_interface_descriptor.md#binterfacenumber) in the USB protocol.|
136e41f4b71Sopenharmony_ci| interfaceHandle | Interface operation handle. After the interface is claimed successfully, a value will be assigned to this parameter.|
137e41f4b71Sopenharmony_ci
138e41f4b71Sopenharmony_ci**Returns**
139e41f4b71Sopenharmony_ci
140e41f4b71Sopenharmony_ci**0** if the operation is successful; a negative value otherwise.
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ci
143e41f4b71Sopenharmony_ci### OH_Usb_CreateDeviceMemMap()
144e41f4b71Sopenharmony_ci
145e41f4b71Sopenharmony_ci
146e41f4b71Sopenharmony_ci```
147e41f4b71Sopenharmony_ciint32_t OH_Usb_CreateDeviceMemMap (uint64_t deviceId, size_t size, UsbDeviceMemMap ** devMmap )
148e41f4b71Sopenharmony_ci```
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ci**Description**
151e41f4b71Sopenharmony_ci
152e41f4b71Sopenharmony_ciCreates a buffer. To avoid memory leakage, use [OH_Usb_DestroyDeviceMemMap()](#oh_usb_destroydevicememmap) to destroy a buffer after use.
153e41f4b71Sopenharmony_ci
154e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.ACCESS_DDK_USB
155e41f4b71Sopenharmony_ci
156e41f4b71Sopenharmony_ci**Parameters**
157e41f4b71Sopenharmony_ci
158e41f4b71Sopenharmony_ci| Name| Description|
159e41f4b71Sopenharmony_ci| -------- | -------- |
160e41f4b71Sopenharmony_ci| deviceId | Device ID.|
161e41f4b71Sopenharmony_ci| size | Buffer size.|
162e41f4b71Sopenharmony_ci| devMmap | Data memory map, through which the created buffer is returned to the caller.|
163e41f4b71Sopenharmony_ci
164e41f4b71Sopenharmony_ci**Returns**
165e41f4b71Sopenharmony_ci
166e41f4b71Sopenharmony_ci**0** if the operation is successful; a negative value otherwise.
167e41f4b71Sopenharmony_ci
168e41f4b71Sopenharmony_ci
169e41f4b71Sopenharmony_ci### OH_Usb_DestroyDeviceMemMap()
170e41f4b71Sopenharmony_ci
171e41f4b71Sopenharmony_ci
172e41f4b71Sopenharmony_ci```
173e41f4b71Sopenharmony_civoid OH_Usb_DestroyDeviceMemMap (UsbDeviceMemMap * devMmap)
174e41f4b71Sopenharmony_ci```
175e41f4b71Sopenharmony_ci
176e41f4b71Sopenharmony_ci**Description**
177e41f4b71Sopenharmony_ci
178e41f4b71Sopenharmony_ciDestroys a buffer. To avoid resource leakage, destroy a buffer in time after use.
179e41f4b71Sopenharmony_ci
180e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.ACCESS_DDK_USB
181e41f4b71Sopenharmony_ci
182e41f4b71Sopenharmony_ci**Parameters**
183e41f4b71Sopenharmony_ci
184e41f4b71Sopenharmony_ci| Name| Description|
185e41f4b71Sopenharmony_ci| -------- | -------- |
186e41f4b71Sopenharmony_ci| devMmap | Destroys the buffer created by [OH_Usb_CreateDeviceMemMap()](#oh_usb_createdevicememmap).|
187e41f4b71Sopenharmony_ci
188e41f4b71Sopenharmony_ci
189e41f4b71Sopenharmony_ci### OH_Usb_FreeConfigDescriptor()
190e41f4b71Sopenharmony_ci
191e41f4b71Sopenharmony_ci
192e41f4b71Sopenharmony_ci```
193e41f4b71Sopenharmony_civoid OH_Usb_FreeConfigDescriptor (struct UsbDdkConfigDescriptor *const config)
194e41f4b71Sopenharmony_ci```
195e41f4b71Sopenharmony_ci
196e41f4b71Sopenharmony_ci**Description**
197e41f4b71Sopenharmony_ci
198e41f4b71Sopenharmony_ciReleases the configuration descriptor. To avoid memory leakage, use **OH_Usb_FreeConfigDescriptor** to release a descriptor after use.
199e41f4b71Sopenharmony_ci
200e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.ACCESS_DDK_USB
201e41f4b71Sopenharmony_ci
202e41f4b71Sopenharmony_ci**Parameters**
203e41f4b71Sopenharmony_ci
204e41f4b71Sopenharmony_ci| Name| Description|
205e41f4b71Sopenharmony_ci| -------- | -------- |
206e41f4b71Sopenharmony_ci| config | Configuration descriptor obtained by calling [OH_Usb_GetConfigDescriptor()](#oh_usb_getconfigdescriptor).|
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ci
209e41f4b71Sopenharmony_ci### OH_Usb_GetConfigDescriptor()
210e41f4b71Sopenharmony_ci
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci```
213e41f4b71Sopenharmony_ciint32_t OH_Usb_GetConfigDescriptor (uint64_t deviceId, uint8_t configIndex, struct UsbDdkConfigDescriptor **const config )
214e41f4b71Sopenharmony_ci```
215e41f4b71Sopenharmony_ci
216e41f4b71Sopenharmony_ci**Description**
217e41f4b71Sopenharmony_ci
218e41f4b71Sopenharmony_ciObtains the configuration descriptor. To avoid memory leakage, use **OH_Usb_FreeConfigDescriptor** to release a descriptor after use.
219e41f4b71Sopenharmony_ci
220e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.ACCESS_DDK_USB
221e41f4b71Sopenharmony_ci
222e41f4b71Sopenharmony_ci**Parameters**
223e41f4b71Sopenharmony_ci
224e41f4b71Sopenharmony_ci| Name| Description|
225e41f4b71Sopenharmony_ci| -------- | -------- |
226e41f4b71Sopenharmony_ci| deviceId | Device ID.|
227e41f4b71Sopenharmony_ci| configIndex | Configuration ID, which corresponds to [bConfigurationValue](_usb_config_descriptor.md#bconfigurationvalue) in the USB protocol.|
228e41f4b71Sopenharmony_ci| config | Configuration descriptor, which includes the standard configuration descriptor defined in the USB protocol and the associated interface descriptor and endpoint descriptor.|
229e41f4b71Sopenharmony_ci
230e41f4b71Sopenharmony_ci**Returns**
231e41f4b71Sopenharmony_ci
232e41f4b71Sopenharmony_ci**0** if the operation is successful; a negative value otherwise.
233e41f4b71Sopenharmony_ci
234e41f4b71Sopenharmony_ci
235e41f4b71Sopenharmony_ci### OH_Usb_GetCurrentInterfaceSetting()
236e41f4b71Sopenharmony_ci
237e41f4b71Sopenharmony_ci
238e41f4b71Sopenharmony_ci```
239e41f4b71Sopenharmony_ciint32_t OH_Usb_GetCurrentInterfaceSetting (uint64_t interfaceHandle, uint8_t * settingIndex )
240e41f4b71Sopenharmony_ci```
241e41f4b71Sopenharmony_ci
242e41f4b71Sopenharmony_ci**Description**
243e41f4b71Sopenharmony_ci
244e41f4b71Sopenharmony_ciObtains the activated alternate setting of a USB interface.
245e41f4b71Sopenharmony_ci
246e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.ACCESS_DDK_USB
247e41f4b71Sopenharmony_ci
248e41f4b71Sopenharmony_ci**Parameters**
249e41f4b71Sopenharmony_ci
250e41f4b71Sopenharmony_ci| Name| Description|
251e41f4b71Sopenharmony_ci| -------- | -------- |
252e41f4b71Sopenharmony_ci| interfaceHandle | Interface operation handle.|
253e41f4b71Sopenharmony_ci| settingIndex | Index of the alternate setting, which corresponds to [bAlternateSetting](_usb_interface_descriptor.md#balternatesetting) in the USB protocol.|
254e41f4b71Sopenharmony_ci
255e41f4b71Sopenharmony_ci**Returns**
256e41f4b71Sopenharmony_ci
257e41f4b71Sopenharmony_ci**0** if the operation is successful; a negative value otherwise.
258e41f4b71Sopenharmony_ci
259e41f4b71Sopenharmony_ci
260e41f4b71Sopenharmony_ci### OH_Usb_GetDeviceDescriptor()
261e41f4b71Sopenharmony_ci
262e41f4b71Sopenharmony_ci
263e41f4b71Sopenharmony_ci```
264e41f4b71Sopenharmony_ciint32_t OH_Usb_GetDeviceDescriptor (uint64_t deviceId, struct UsbDeviceDescriptor * desc )
265e41f4b71Sopenharmony_ci```
266e41f4b71Sopenharmony_ci
267e41f4b71Sopenharmony_ci**Description**
268e41f4b71Sopenharmony_ci
269e41f4b71Sopenharmony_ciObtains the device descriptor.
270e41f4b71Sopenharmony_ci
271e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.ACCESS_DDK_USB
272e41f4b71Sopenharmony_ci
273e41f4b71Sopenharmony_ci**Parameters**
274e41f4b71Sopenharmony_ci
275e41f4b71Sopenharmony_ci| Name| Description|
276e41f4b71Sopenharmony_ci| -------- | -------- |
277e41f4b71Sopenharmony_ci| deviceId | Device ID.|
278e41f4b71Sopenharmony_ci| desc | Device descriptor. For details, see [UsbDeviceDescriptor](_usb_device_descriptor.md).|
279e41f4b71Sopenharmony_ci
280e41f4b71Sopenharmony_ci**Returns**
281e41f4b71Sopenharmony_ci
282e41f4b71Sopenharmony_ci**0** if the operation is successful; a negative value otherwise.
283e41f4b71Sopenharmony_ci
284e41f4b71Sopenharmony_ci
285e41f4b71Sopenharmony_ci### OH_Usb_Init()
286e41f4b71Sopenharmony_ci
287e41f4b71Sopenharmony_ci
288e41f4b71Sopenharmony_ci```
289e41f4b71Sopenharmony_ciint32_t OH_Usb_Init (void )
290e41f4b71Sopenharmony_ci```
291e41f4b71Sopenharmony_ci
292e41f4b71Sopenharmony_ci**Description**
293e41f4b71Sopenharmony_ci
294e41f4b71Sopenharmony_ciInitializes the DDK.
295e41f4b71Sopenharmony_ci
296e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.ACCESS_DDK_USB
297e41f4b71Sopenharmony_ci
298e41f4b71Sopenharmony_ci**Returns**
299e41f4b71Sopenharmony_ci
300e41f4b71Sopenharmony_ci**0** if the operation is successful; a negative value otherwise.
301e41f4b71Sopenharmony_ci
302e41f4b71Sopenharmony_ci
303e41f4b71Sopenharmony_ci### OH_Usb_Release()
304e41f4b71Sopenharmony_ci
305e41f4b71Sopenharmony_ci
306e41f4b71Sopenharmony_ci```
307e41f4b71Sopenharmony_civoid OH_Usb_Release (void )
308e41f4b71Sopenharmony_ci```
309e41f4b71Sopenharmony_ci
310e41f4b71Sopenharmony_ci**Description**
311e41f4b71Sopenharmony_ci
312e41f4b71Sopenharmony_ciReleases the DDK.
313e41f4b71Sopenharmony_ci
314e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.ACCESS_DDK_USB
315e41f4b71Sopenharmony_ci
316e41f4b71Sopenharmony_ci
317e41f4b71Sopenharmony_ci### OH_Usb_ReleaseInterface()
318e41f4b71Sopenharmony_ci
319e41f4b71Sopenharmony_ci
320e41f4b71Sopenharmony_ci```
321e41f4b71Sopenharmony_ciint32_t OH_Usb_ReleaseInterface (uint64_t interfaceHandle)
322e41f4b71Sopenharmony_ci```
323e41f4b71Sopenharmony_ci
324e41f4b71Sopenharmony_ci**Description**
325e41f4b71Sopenharmony_ci
326e41f4b71Sopenharmony_ciReleases a USB interface.
327e41f4b71Sopenharmony_ci
328e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.ACCESS_DDK_USB
329e41f4b71Sopenharmony_ci
330e41f4b71Sopenharmony_ci**Parameters**
331e41f4b71Sopenharmony_ci
332e41f4b71Sopenharmony_ci| Name| Description|
333e41f4b71Sopenharmony_ci| -------- | -------- |
334e41f4b71Sopenharmony_ci| interfaceHandle | Interface operation handle.|
335e41f4b71Sopenharmony_ci
336e41f4b71Sopenharmony_ci**Returns**
337e41f4b71Sopenharmony_ci
338e41f4b71Sopenharmony_ci**0** if the operation is successful; a negative value otherwise.
339e41f4b71Sopenharmony_ci
340e41f4b71Sopenharmony_ci
341e41f4b71Sopenharmony_ci### OH_Usb_SelectInterfaceSetting()
342e41f4b71Sopenharmony_ci
343e41f4b71Sopenharmony_ci
344e41f4b71Sopenharmony_ci```
345e41f4b71Sopenharmony_ciint32_t OH_Usb_SelectInterfaceSetting (uint64_t interfaceHandle, uint8_t settingIndex )
346e41f4b71Sopenharmony_ci```
347e41f4b71Sopenharmony_ci
348e41f4b71Sopenharmony_ci**Description**
349e41f4b71Sopenharmony_ci
350e41f4b71Sopenharmony_ciActivates the alternate setting of a USB interface.
351e41f4b71Sopenharmony_ci
352e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.ACCESS_DDK_USB
353e41f4b71Sopenharmony_ci
354e41f4b71Sopenharmony_ci**Parameters**
355e41f4b71Sopenharmony_ci
356e41f4b71Sopenharmony_ci| Name| Description|
357e41f4b71Sopenharmony_ci| -------- | -------- |
358e41f4b71Sopenharmony_ci| interfaceHandle | Interface operation handle.|
359e41f4b71Sopenharmony_ci| settingIndex | Index of the alternate setting, which corresponds to [bAlternateSetting](_usb_interface_descriptor.md#balternatesetting) in the USB protocol.|
360e41f4b71Sopenharmony_ci
361e41f4b71Sopenharmony_ci**Returns**
362e41f4b71Sopenharmony_ci
363e41f4b71Sopenharmony_ci**0** if the operation is successful; a negative value otherwise.
364e41f4b71Sopenharmony_ci
365e41f4b71Sopenharmony_ci
366e41f4b71Sopenharmony_ci### OH_Usb_SendControlReadRequest()
367e41f4b71Sopenharmony_ci
368e41f4b71Sopenharmony_ci
369e41f4b71Sopenharmony_ci```
370e41f4b71Sopenharmony_ciint32_t OH_Usb_SendControlReadRequest (uint64_t interfaceHandle, const struct UsbControlRequestSetup * setup, uint32_t timeout, uint8_t * data, uint32_t * dataLen )
371e41f4b71Sopenharmony_ci```
372e41f4b71Sopenharmony_ci
373e41f4b71Sopenharmony_ci**Description**
374e41f4b71Sopenharmony_ci
375e41f4b71Sopenharmony_ciSends a control read transfer request. This API works in a synchronous manner.
376e41f4b71Sopenharmony_ci
377e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.ACCESS_DDK_USB
378e41f4b71Sopenharmony_ci
379e41f4b71Sopenharmony_ci**Parameters**
380e41f4b71Sopenharmony_ci
381e41f4b71Sopenharmony_ci| Name| Description|
382e41f4b71Sopenharmony_ci| -------- | -------- |
383e41f4b71Sopenharmony_ci| interfaceHandle | Interface operation handle.|
384e41f4b71Sopenharmony_ci| setup | Request parameters. For details, see [UsbControlRequestSetup](_usb_control_request_setup.md).|
385e41f4b71Sopenharmony_ci| timeout | Timeout duration, in milliseconds.|
386e41f4b71Sopenharmony_ci| data | Data to be transferred.|
387e41f4b71Sopenharmony_ci| dataLen | Data length. The return value indicates the length of the actually read data.|
388e41f4b71Sopenharmony_ci
389e41f4b71Sopenharmony_ci**Returns**
390e41f4b71Sopenharmony_ci
391e41f4b71Sopenharmony_ci**0** if the operation is successful; a negative value otherwise.
392e41f4b71Sopenharmony_ci
393e41f4b71Sopenharmony_ci
394e41f4b71Sopenharmony_ci### OH_Usb_SendControlWriteRequest()
395e41f4b71Sopenharmony_ci
396e41f4b71Sopenharmony_ci
397e41f4b71Sopenharmony_ci```
398e41f4b71Sopenharmony_ciint32_t OH_Usb_SendControlWriteRequest (uint64_t interfaceHandle, const struct UsbControlRequestSetup * setup, uint32_t timeout, const uint8_t * data, uint32_t dataLen )
399e41f4b71Sopenharmony_ci```
400e41f4b71Sopenharmony_ci
401e41f4b71Sopenharmony_ci**Description**
402e41f4b71Sopenharmony_ci
403e41f4b71Sopenharmony_ciSends a control write transfer request. This API works in a synchronous manner.
404e41f4b71Sopenharmony_ci
405e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.ACCESS_DDK_USB
406e41f4b71Sopenharmony_ci
407e41f4b71Sopenharmony_ci**Parameters**
408e41f4b71Sopenharmony_ci
409e41f4b71Sopenharmony_ci| Name| Description|
410e41f4b71Sopenharmony_ci| -------- | -------- |
411e41f4b71Sopenharmony_ci| interfaceHandle | Interface operation handle.|
412e41f4b71Sopenharmony_ci| setup | Request parameters. For details, see [UsbControlRequestSetup](_usb_control_request_setup.md).|
413e41f4b71Sopenharmony_ci| timeout | Timeout duration, in milliseconds.|
414e41f4b71Sopenharmony_ci| data | Data to be transferred.|
415e41f4b71Sopenharmony_ci| dataLen | Data length.|
416e41f4b71Sopenharmony_ci
417e41f4b71Sopenharmony_ci**Returns**
418e41f4b71Sopenharmony_ci
419e41f4b71Sopenharmony_ci**0** if the operation is successful; a negative value otherwise.
420e41f4b71Sopenharmony_ci
421e41f4b71Sopenharmony_ci
422e41f4b71Sopenharmony_ci### OH_Usb_SendPipeRequest()
423e41f4b71Sopenharmony_ci
424e41f4b71Sopenharmony_ci
425e41f4b71Sopenharmony_ci```
426e41f4b71Sopenharmony_ciint32_t OH_Usb_SendPipeRequest (const struct UsbRequestPipe * pipe, UsbDeviceMemMap * devMmap )
427e41f4b71Sopenharmony_ci```
428e41f4b71Sopenharmony_ci
429e41f4b71Sopenharmony_ci**Description**
430e41f4b71Sopenharmony_ci
431e41f4b71Sopenharmony_ciSends a pipe request. This API works in a synchronous manner. It applies to interrupt transfer and bulk transfer.
432e41f4b71Sopenharmony_ci
433e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.ACCESS_DDK_USB
434e41f4b71Sopenharmony_ci
435e41f4b71Sopenharmony_ci**Parameters**
436e41f4b71Sopenharmony_ci
437e41f4b71Sopenharmony_ci| Name| Description|
438e41f4b71Sopenharmony_ci| -------- | -------- |
439e41f4b71Sopenharmony_ci| pipe | Pipe used to transfer data.|
440e41f4b71Sopenharmony_ci| devMmap | Device memory map, which can be obtained by calling [OH_Usb_CreateDeviceMemMap()](#oh_usb_createdevicememmap).|
441e41f4b71Sopenharmony_ci
442e41f4b71Sopenharmony_ci**Returns**
443e41f4b71Sopenharmony_ci
444e41f4b71Sopenharmony_ci**0** if the operation is successful; a negative value otherwise.
445e41f4b71Sopenharmony_ci
446e41f4b71Sopenharmony_ci
447e41f4b71Sopenharmony_ci### OH_Usb_SendPipeRequestWithAshmem()
448e41f4b71Sopenharmony_ci
449e41f4b71Sopenharmony_ci
450e41f4b71Sopenharmony_ci```
451e41f4b71Sopenharmony_ciint32_t OH_Usb_SendPipeRequestWithAshmem(const struct UsbRequestPipe *pipe, DDK_Ashmem *ashmem);
452e41f4b71Sopenharmony_ci```
453e41f4b71Sopenharmony_ci
454e41f4b71Sopenharmony_ci**Description**
455e41f4b71Sopenharmony_ci
456e41f4b71Sopenharmony_ciSends a pipe request for the shared memory. This API returns the result synchronously. It applies to interrupt transfer and bulk transfer.
457e41f4b71Sopenharmony_ci
458e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.ACCESS_DDK_USB
459e41f4b71Sopenharmony_ci
460e41f4b71Sopenharmony_ci**Parameters**
461e41f4b71Sopenharmony_ci
462e41f4b71Sopenharmony_ci| Name| Description|
463e41f4b71Sopenharmony_ci| -------- | -------- |
464e41f4b71Sopenharmony_ci| pipe | Pipe used to transfer data.|
465e41f4b71Sopenharmony_ci| ashmem | Shared memory, which can be obtained through [OH_DDK_CreateAshmem()](_base_ddk.md#oh_ddk_createashmem).|
466e41f4b71Sopenharmony_ci
467e41f4b71Sopenharmony_ci**Returns**
468e41f4b71Sopenharmony_ci
469e41f4b71Sopenharmony_ci**0** if the operation is successful; a negative value otherwise.
470