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: <usb/usb_ddk_api.h><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: <usb/usb_ddk_types.h> <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