diff --git a/usb/v1_0/IUsbInterface.idl b/usb/v1_0/IUsbInterface.idl
index 1876d798554570dbf73f5c9168585a28ce7a4103..60052fc1848851083cfc58c4fa7cd344543d92da 100644
--- a/usb/v1_0/IUsbInterface.idl
+++ b/usb/v1_0/IUsbInterface.idl
@@ -478,4 +478,4 @@ interface IUsbInterface {
* @since 3.2
*/
BulkCancel([in] struct UsbDev dev, [in] struct UsbPipe pipe);
-}
\ No newline at end of file
+}
diff --git a/usb/v1_0/UsbTypes.idl b/usb/v1_0/UsbTypes.idl
index 055480eb15d5815a7fb2a98e8f68cd4875a676d2..ff31459e08bdc30448d009fad6c67bfcc07e44f0 100644
--- a/usb/v1_0/UsbTypes.idl
+++ b/usb/v1_0/UsbTypes.idl
@@ -56,6 +56,10 @@ struct UsbPipe {
unsigned char endpointId;
};
+/**
+ * @deprecated since 5.0
+ * @useinstead ohos.hdi.usb.v1_1.ExtendedUsbCtrlTransfer
+ */
struct UsbCtrlTransfer {
int requestType;
int requestCmd;
diff --git a/usb/v1_1/BUILD.gn b/usb/v1_1/BUILD.gn
index f3193765106ac296317c3b6835a906d9ade390a3..42bfb359ff372dde513b78deb691e55e50699f56 100644
--- a/usb/v1_1/BUILD.gn
+++ b/usb/v1_1/BUILD.gn
@@ -22,7 +22,10 @@ if (defined(ohos_lite)) {
module_name = "usbd"
imports = [ "ohos.hdi.usb.v1_0:usb" ]
- sources = [ "IUsbInterface.idl" ]
+ sources = [
+ "IUsbInterface.idl",
+ "UsbTypes.idl",
+ ]
language = "cpp"
subsystem_name = "hdf"
diff --git a/usb/v1_1/IUsbInterface.idl b/usb/v1_1/IUsbInterface.idl
index 7a73537ab11cd09e80c67f3aa2dde73c3b7ba3a3..740d7fbbf3ca9ae036e1c6b8e008f558825c7fc8 100644
--- a/usb/v1_1/IUsbInterface.idl
+++ b/usb/v1_1/IUsbInterface.idl
@@ -40,6 +40,7 @@
package ohos.hdi.usb.v1_1;
+import ohos.hdi.usb.v1_1.UsbTypes;
import ohos.hdi.usb.v1_0.UsbTypes;
import ohos.hdi.usb.v1_0.IUsbdSubscriber;
import ohos.hdi.usb.v1_0.IUsbdBulkCallback;
@@ -63,6 +64,7 @@ interface IUsbInterface extends ohos.hdi.usb.v1_0.IUsbInterface{
*
* @return Returns 0 if the operation is successful; returns a non-0 value if the operation fails.
* @since 5.0
+ * @version 1.0
*/
GetInterfaceActiveStatus ([in] struct UsbDev dev, [in] unsigned char interfaceid, [out] boolean unactivated );
@@ -74,6 +76,7 @@ interface IUsbInterface extends ohos.hdi.usb.v1_0.IUsbInterface{
*
* @return Returns 0 if the operation is successful; returns a non-0 value if the operation fails.
* @since 5.0
+ * @version 1.0
*/
GetDeviceSpeed ([in] struct UsbDev dev, [out] unsigned char speed );
@@ -88,4 +91,20 @@ interface IUsbInterface extends ohos.hdi.usb.v1_0.IUsbInterface{
* @version 1.0
*/
GetDeviceFileDescriptor([in] struct UsbDev dev, [out] FileDescriptor fd);
-}
\ No newline at end of file
+
+ /* *
+ * @brief Performs control transfer for endpoint 0 of the device. The data transfer direction is determined by the
+ * request type. If the result of requestType&
+ * USB_ENDPOINT_DIR_MASK is USB_DIR_OUT, the endpoint is in the data writing direction; if the result
+ * is USB_DIR_IN, the endpoint is in the data reading direction.
+ *
+ * @param dev Indicates the USB device address.
+ * @param ctrl Indicates the control data packet structure.
+ * @param data Indicates the read data.
+ *
+ * @return Returns 0 if the operation is successful; returns a non-0 value if the operation fails.
+ * @since 5.0
+ * @version 1.0
+ */
+ ControlTransferReadwithLength([in] struct UsbDev dev, [in] struct ExtendedUsbCtrlTransfer ctrl, [out] unsigned char[] data);
+}
diff --git a/usb/v1_1/UsbTypes.idl b/usb/v1_1/UsbTypes.idl
new file mode 100644
index 0000000000000000000000000000000000000000..bae895c7662aa52e15af7adbc4daa8c06de2c8c2
--- /dev/null
+++ b/usb/v1_1/UsbTypes.idl
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2024 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ /**
+ * @addtogroup HdiUsb
+ * @{
+ *
+ * @brief Provides unified APIs for usb services to access usb drivers.
+ *
+ * A usb service can obtain a usb driver object or agent and then call APIs provided by this object or agent to
+ * access different types of usb devices based on the usb IDs, thereby obtaining usb information,
+ * subscribing to or unsubscribing from usb data, enabling or disabling a usb,
+ * setting the usb data reporting mode, and setting usb options such as the accuracy and measurement range.
+ *
+ * @since 5.0
+ */
+
+/**
+ * @file UsbTypes.idl
+ *
+ * @brief Defines the data used by the usb module, including the usb information,
+ * and reported usb data.
+ *
+ * @since 5.0
+ * @version 1.0
+ */
+
+package ohos.hdi.usb.v1_1;
+
+import ohos.hdi.usb.v1_0.UsbTypes;
+
+/**
+ * @since 5.0
+ * @version 1.0
+ */
+struct ExtendedUsbCtrlTransfer {
+ int requestType;
+ int requestCmd;
+ int value;
+ int index;
+ int length;
+ int timeout;
+};
\ No newline at end of file