161847f8eSopenharmony_ci/*
261847f8eSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
361847f8eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
461847f8eSopenharmony_ci * you may not use this file except in compliance with the License.
561847f8eSopenharmony_ci * You may obtain a copy of the License at
661847f8eSopenharmony_ci *
761847f8eSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
861847f8eSopenharmony_ci *
961847f8eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1061847f8eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1161847f8eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1261847f8eSopenharmony_ci * See the License for the specific language governing permissions and
1361847f8eSopenharmony_ci * limitations under the License.
1461847f8eSopenharmony_ci */
1561847f8eSopenharmony_ci
1661847f8eSopenharmony_ci/**
1761847f8eSopenharmony_ci * @file
1861847f8eSopenharmony_ci * @kit BasicServicesKit
1961847f8eSopenharmony_ci */
2061847f8eSopenharmony_ci
2161847f8eSopenharmony_ci/**
2261847f8eSopenharmony_ci * This module provides the capability of manage USB device.
2361847f8eSopenharmony_ci *
2461847f8eSopenharmony_ci * @namespace usbManager
2561847f8eSopenharmony_ci * @syscap SystemCapability.USB.USBManager
2661847f8eSopenharmony_ci * @since 9
2761847f8eSopenharmony_ci */
2861847f8eSopenharmony_cideclare namespace usbManager {
2961847f8eSopenharmony_ci  /**
3061847f8eSopenharmony_ci   * Obtains the USB device list.
3161847f8eSopenharmony_ci   *
3261847f8eSopenharmony_ci   * @returns { Array<Readonly<USBDevice>> } USB device list.
3361847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
3461847f8eSopenharmony_ci   * @since 9
3561847f8eSopenharmony_ci   */
3661847f8eSopenharmony_ci  function getDevices(): Array<Readonly<USBDevice>>;
3761847f8eSopenharmony_ci
3861847f8eSopenharmony_ci  /**
3961847f8eSopenharmony_ci   * Connects to the USB device based on the device information returned by getDevices().
4061847f8eSopenharmony_ci   *
4161847f8eSopenharmony_ci   * @param { USBDevice } device - USB device on the device list returned by getDevices(). It cannot be empty.
4261847f8eSopenharmony_ci   * @returns { Readonly<USBDevicePipe> } object for data transfer.
4361847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
4461847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
4561847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.                             
4661847f8eSopenharmony_ci   * @throws { BusinessError } 14400001 - Permission denied. Call requestRight to get the permission first.
4761847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
4861847f8eSopenharmony_ci   * @since 9
4961847f8eSopenharmony_ci   */
5061847f8eSopenharmony_ci  function connectDevice(device: USBDevice): Readonly<USBDevicePipe>;
5161847f8eSopenharmony_ci
5261847f8eSopenharmony_ci  /**
5361847f8eSopenharmony_ci   * Checks whether the application has the permission to access the device.
5461847f8eSopenharmony_ci   *
5561847f8eSopenharmony_ci   * @param { string } deviceName - device name defined by USBDevice.name. It cannot be empty.
5661847f8eSopenharmony_ci   * @returns { boolean } indicates if the user has the permission to access the device.
5761847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
5861847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
5961847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
6061847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
6161847f8eSopenharmony_ci   * @since 9
6261847f8eSopenharmony_ci   */
6361847f8eSopenharmony_ci  function hasRight(deviceName: string): boolean;
6461847f8eSopenharmony_ci
6561847f8eSopenharmony_ci  /**
6661847f8eSopenharmony_ci   * Requests the permission for a given application to access the USB device.
6761847f8eSopenharmony_ci   * The system application has access to the device by default, and there is no need to call this interface to apply.
6861847f8eSopenharmony_ci   *
6961847f8eSopenharmony_ci   * @param { string } deviceName - device name defined by USBDevice.name. It cannot be empty.
7061847f8eSopenharmony_ci   * @returns { Promise<boolean> } indicates if the device access permissions are granted.
7161847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
7261847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
7361847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
7461847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
7561847f8eSopenharmony_ci   * @since 9
7661847f8eSopenharmony_ci   */
7761847f8eSopenharmony_ci  function requestRight(deviceName: string): Promise<boolean>;
7861847f8eSopenharmony_ci
7961847f8eSopenharmony_ci  /**
8061847f8eSopenharmony_ci   * Remove the permission for a given application to access the USB device.
8161847f8eSopenharmony_ci   * The system application has access to the device by default, and calling this interface will not have any impact.
8261847f8eSopenharmony_ci   *
8361847f8eSopenharmony_ci   * @param { string } deviceName - device name defined by USBDevice.name. It cannot be empty.
8461847f8eSopenharmony_ci   * @returns { boolean } indicates if the device access permissions are removed.
8561847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
8661847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
8761847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
8861847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
8961847f8eSopenharmony_ci   * @since 9
9061847f8eSopenharmony_ci   */
9161847f8eSopenharmony_ci  function removeRight(deviceName: string): boolean;
9261847f8eSopenharmony_ci
9361847f8eSopenharmony_ci  /**
9461847f8eSopenharmony_ci   * Add device access permission.
9561847f8eSopenharmony_ci   * The system application has access to the device by default, and calling this interface will not have any impact.
9661847f8eSopenharmony_ci   *
9761847f8eSopenharmony_ci   * @param { string } bundleName - refers to application that require access permissions. It cannot be empty.
9861847f8eSopenharmony_ci   * @param { string } deviceName - device name defined by USBDevice.name. It cannot be empty.
9961847f8eSopenharmony_ci   * @returns { boolean } value to indicate whether the permission is granted.
10061847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
10161847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
10261847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
10361847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
10461847f8eSopenharmony_ci   * @systemapi
10561847f8eSopenharmony_ci   * @since 9
10661847f8eSopenharmony_ci   * @deprecated since 12
10761847f8eSopenharmony_ci   * @useinstead ohos.usbManager/usbManager#addDeviceAccessRight
10861847f8eSopenharmony_ci   */
10961847f8eSopenharmony_ci  function addRight(bundleName: string, deviceName: string): boolean;
11061847f8eSopenharmony_ci
11161847f8eSopenharmony_ci  /**
11261847f8eSopenharmony_ci   * Converts the string descriptor of a given USB function list to a numeric mask combination.
11361847f8eSopenharmony_ci   *
11461847f8eSopenharmony_ci   * @param { string } funcs - descriptor of the supported function list. It cannot be empty.
11561847f8eSopenharmony_ci   * @returns { number } the numeric mask combination of the function list.
11661847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
11761847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
11861847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
11961847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
12061847f8eSopenharmony_ci   * @systemapi
12161847f8eSopenharmony_ci   * @since 9
12261847f8eSopenharmony_ci   * @deprecated since 12
12361847f8eSopenharmony_ci   * @useinstead ohos.usbManager/usbManager#getFunctionsFromString
12461847f8eSopenharmony_ci   */
12561847f8eSopenharmony_ci  function usbFunctionsFromString(funcs: string): number;
12661847f8eSopenharmony_ci
12761847f8eSopenharmony_ci  /**
12861847f8eSopenharmony_ci   * Converts the numeric mask combination of a given USB function list to a string descriptor.
12961847f8eSopenharmony_ci   *
13061847f8eSopenharmony_ci   * @param { FunctionType } funcs - numeric mask combination of the function list. The type of funcs must be number. It cannot be empty.
13161847f8eSopenharmony_ci   * @returns { string } - descriptor of the supported function list.
13261847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
13361847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
13461847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
13561847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
13661847f8eSopenharmony_ci   * @systemapi
13761847f8eSopenharmony_ci   * @since 9
13861847f8eSopenharmony_ci   * @deprecated since 12
13961847f8eSopenharmony_ci   * @useinstead ohos.usbManager/usbManager#getStringFromFunctions
14061847f8eSopenharmony_ci   */
14161847f8eSopenharmony_ci  function usbFunctionsToString(funcs: FunctionType): string;
14261847f8eSopenharmony_ci
14361847f8eSopenharmony_ci  /**
14461847f8eSopenharmony_ci   * Sets the current USB function list in Device mode.
14561847f8eSopenharmony_ci   *
14661847f8eSopenharmony_ci   * @param { FunctionType } funcs - numeric mask combination of the supported function list. It cannot be empty.
14761847f8eSopenharmony_ci   * @returns { Promise<void> } the promise returned by the function.
14861847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
14961847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
15061847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
15161847f8eSopenharmony_ci   * @throws { BusinessError } 14400002 - Permission denied. The HDC is disabled by the system.
15261847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
15361847f8eSopenharmony_ci   * @systemapi
15461847f8eSopenharmony_ci   * @since 9
15561847f8eSopenharmony_ci   * @deprecated since 12
15661847f8eSopenharmony_ci   * @useinstead ohos.usbManager/usbManager#setDeviceFunctions
15761847f8eSopenharmony_ci   */
15861847f8eSopenharmony_ci  function setCurrentFunctions(funcs: FunctionType): Promise<void>;
15961847f8eSopenharmony_ci
16061847f8eSopenharmony_ci  /**
16161847f8eSopenharmony_ci   * Obtains the numeric mask combination for the current USB function list in Device mode.
16261847f8eSopenharmony_ci   *
16361847f8eSopenharmony_ci   * @returns { FunctionType } the numeric mask combination for the current USB function list in FunctionType.
16461847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
16561847f8eSopenharmony_ci   * @systemapi
16661847f8eSopenharmony_ci   * @since 9
16761847f8eSopenharmony_ci   * @deprecated since 12
16861847f8eSopenharmony_ci   * @useinstead ohos.usbManager/usbManager#getDeviceFunctions
16961847f8eSopenharmony_ci   */
17061847f8eSopenharmony_ci  function getCurrentFunctions(): FunctionType;
17161847f8eSopenharmony_ci
17261847f8eSopenharmony_ci  /* usb port functions begin */
17361847f8eSopenharmony_ci  /**
17461847f8eSopenharmony_ci   * Obtains the USBPort list.
17561847f8eSopenharmony_ci   *
17661847f8eSopenharmony_ci   * @returns { Array<USBPort> } the USBPort list.
17761847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
17861847f8eSopenharmony_ci   * @systemapi
17961847f8eSopenharmony_ci   * @since 9
18061847f8eSopenharmony_ci   * @deprecated since 12
18161847f8eSopenharmony_ci   * @useinstead ohos.usbManager/usbManager#getPortList
18261847f8eSopenharmony_ci   */
18361847f8eSopenharmony_ci  function getPorts(): Array<USBPort>;
18461847f8eSopenharmony_ci
18561847f8eSopenharmony_ci  /**
18661847f8eSopenharmony_ci   * Gets the mask combination for the supported mode list of the specified USBPort.
18761847f8eSopenharmony_ci   *
18861847f8eSopenharmony_ci   * @param { number } portId - unique ID of the port. It cannot be empty.
18961847f8eSopenharmony_ci   * @returns { PortModeType } the mask combination for the supported mode list in PortModeType.
19061847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
19161847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
19261847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
19361847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
19461847f8eSopenharmony_ci   * @systemapi
19561847f8eSopenharmony_ci   * @since 9
19661847f8eSopenharmony_ci   * @deprecated since 12
19761847f8eSopenharmony_ci   * @useinstead ohos.usbManager/usbManager#getPortSupportModes
19861847f8eSopenharmony_ci   */
19961847f8eSopenharmony_ci  function getSupportedModes(portId: number): PortModeType;
20061847f8eSopenharmony_ci
20161847f8eSopenharmony_ci  /**
20261847f8eSopenharmony_ci   * Sets the role types supported by the specified USBPort, which can be powerRole (for charging) and dataRole (for data transfer).
20361847f8eSopenharmony_ci   *
20461847f8eSopenharmony_ci   * @param { number } portId - unique ID of the port. It cannot be empty.
20561847f8eSopenharmony_ci   * @param { PowerRoleType } powerRole - charging role. It cannot be empty.
20661847f8eSopenharmony_ci   * @param { DataRoleType } dataRole - data role. It cannot be empty.
20761847f8eSopenharmony_ci   * @returns { Promise<void> } the promise returned by the function.
20861847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
20961847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
21061847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
21161847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
21261847f8eSopenharmony_ci   * @systemapi
21361847f8eSopenharmony_ci   * @since 9
21461847f8eSopenharmony_ci   * @deprecated since 12
21561847f8eSopenharmony_ci   * @useinstead ohos.usbManager/usbManager#setPortRoleTypes
21661847f8eSopenharmony_ci   */
21761847f8eSopenharmony_ci  function setPortRoles(portId: number, powerRole: PowerRoleType, dataRole: DataRoleType): Promise<void>;
21861847f8eSopenharmony_ci
21961847f8eSopenharmony_ci  /**
22061847f8eSopenharmony_ci   * Add USB device access right.
22161847f8eSopenharmony_ci   * The system application has access to the device by default, and calling this interface will not have any impact.
22261847f8eSopenharmony_ci   *
22361847f8eSopenharmony_ci   * @permission ohos.permission.MANAGE_USB_CONFIG
22461847f8eSopenharmony_ci   * @param { string } tokenId - refers to application that require access permissions. It cannot be empty.
22561847f8eSopenharmony_ci   * @param { string } deviceName - device name defined by USBDevice.name. It cannot be empty.
22661847f8eSopenharmony_ci   * @returns { boolean } value to indicate whether the permission is granted.
22761847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
22861847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
22961847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
23061847f8eSopenharmony_ci   * @throws { BusinessError } 202 - Permission denied. Normal application do not have permission to use system api.
23161847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
23261847f8eSopenharmony_ci   * @systemapi
23361847f8eSopenharmony_ci   * @since 12
23461847f8eSopenharmony_ci   */
23561847f8eSopenharmony_ci  function addDeviceAccessRight(tokenId: string, deviceName: string): boolean;
23661847f8eSopenharmony_ci
23761847f8eSopenharmony_ci  /**
23861847f8eSopenharmony_ci   * Converts the string descriptor of a given USB function list to a numeric mask combination.
23961847f8eSopenharmony_ci   *
24061847f8eSopenharmony_ci   * @permission ohos.permission.MANAGE_USB_CONFIG
24161847f8eSopenharmony_ci   * @param { string } funcs - descriptor of the supported function list. It cannot be empty.
24261847f8eSopenharmony_ci   * @returns { number } the numeric mask combination of the function list.
24361847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
24461847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
24561847f8eSopenharmony_ci   * <br>2.Incorrect parameter types. 
24661847f8eSopenharmony_ci   * @throws { BusinessError } 202 - Permission denied. Normal application do not have permission to use system api.
24761847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
24861847f8eSopenharmony_ci   * @systemapi
24961847f8eSopenharmony_ci   * @since 12
25061847f8eSopenharmony_ci   */
25161847f8eSopenharmony_ci  function getFunctionsFromString(funcs: string): number;
25261847f8eSopenharmony_ci
25361847f8eSopenharmony_ci  /**
25461847f8eSopenharmony_ci   * Converts the numeric mask combination of a given USB function list to a string descriptor.
25561847f8eSopenharmony_ci   *
25661847f8eSopenharmony_ci   * @permission ohos.permission.MANAGE_USB_CONFIG
25761847f8eSopenharmony_ci   * @param { FunctionType } funcs - numeric mask combination of the function list. It cannot be empty.
25861847f8eSopenharmony_ci   * @returns { string } - descriptor of the supported function list.
25961847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
26061847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
26161847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
26261847f8eSopenharmony_ci   * @throws { BusinessError } 202 - Permission denied. Normal application do not have permission to use system api.
26361847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
26461847f8eSopenharmony_ci   * @systemapi
26561847f8eSopenharmony_ci   * @since 12
26661847f8eSopenharmony_ci   */
26761847f8eSopenharmony_ci  function getStringFromFunctions(funcs: FunctionType): string;
26861847f8eSopenharmony_ci
26961847f8eSopenharmony_ci  /**
27061847f8eSopenharmony_ci   * Sets the current USB function list in Device mode.
27161847f8eSopenharmony_ci   *
27261847f8eSopenharmony_ci   * @permission ohos.permission.MANAGE_USB_CONFIG
27361847f8eSopenharmony_ci   * @param { FunctionType } funcs - numeric mask combination of the supported function list. It cannot be empty.
27461847f8eSopenharmony_ci   * @returns { Promise<void> } the promise returned by the function.
27561847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
27661847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
27761847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
27861847f8eSopenharmony_ci   * @throws { BusinessError } 202 - Permission denied. Normal application do not have permission to use system api.
27961847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
28061847f8eSopenharmony_ci   * @systemapi
28161847f8eSopenharmony_ci   * @since 12
28261847f8eSopenharmony_ci   */
28361847f8eSopenharmony_ci  function setDeviceFunctions(funcs: FunctionType): Promise<void>;
28461847f8eSopenharmony_ci
28561847f8eSopenharmony_ci  /**
28661847f8eSopenharmony_ci   * Obtains the numeric mask combination for the current USB function list in Device mode.
28761847f8eSopenharmony_ci   *
28861847f8eSopenharmony_ci   * @permission ohos.permission.MANAGE_USB_CONFIG
28961847f8eSopenharmony_ci   * @returns { FunctionType } the numeric mask combination for the current USB function list in FunctionType.
29061847f8eSopenharmony_ci   * @throws { BusinessError } 202 - Permission denied. Normal application do not have permission to use system api.
29161847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
29261847f8eSopenharmony_ci   * @systemapi
29361847f8eSopenharmony_ci   * @since 12
29461847f8eSopenharmony_ci   */
29561847f8eSopenharmony_ci  function getDeviceFunctions(): FunctionType;
29661847f8eSopenharmony_ci
29761847f8eSopenharmony_ci  /* usb port functions begin */
29861847f8eSopenharmony_ci  /**
29961847f8eSopenharmony_ci   * Obtains the USBPort list.
30061847f8eSopenharmony_ci   *
30161847f8eSopenharmony_ci   * @permission ohos.permission.MANAGE_USB_CONFIG
30261847f8eSopenharmony_ci   * @returns { Array<USBPort> } the USBPort list.
30361847f8eSopenharmony_ci   * @throws { BusinessError } 202 - Permission denied. Normal application do not have permission to use system api.
30461847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
30561847f8eSopenharmony_ci   * @systemapi
30661847f8eSopenharmony_ci   * @since 12
30761847f8eSopenharmony_ci   */
30861847f8eSopenharmony_ci  function getPortList(): Array<USBPort>;
30961847f8eSopenharmony_ci
31061847f8eSopenharmony_ci  /**
31161847f8eSopenharmony_ci   * Gets the mask combination for the supported mode list of the specified USBPort.
31261847f8eSopenharmony_ci   *
31361847f8eSopenharmony_ci   * @permission ohos.permission.MANAGE_USB_CONFIG
31461847f8eSopenharmony_ci   * @param { number } portId - unique ID of the port. It cannot be empty.
31561847f8eSopenharmony_ci   * @returns { PortModeType } the mask combination for the supported mode list in PortModeType.
31661847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
31761847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
31861847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.   
31961847f8eSopenharmony_ci   * @throws { BusinessError } 202 - Permission denied. Normal application do not have permission to use system api.
32061847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
32161847f8eSopenharmony_ci   * @systemapi
32261847f8eSopenharmony_ci   * @since 12
32361847f8eSopenharmony_ci   */
32461847f8eSopenharmony_ci  function getPortSupportModes(portId: number): PortModeType;
32561847f8eSopenharmony_ci
32661847f8eSopenharmony_ci  /**
32761847f8eSopenharmony_ci   * Sets the role types supported by the specified USBPort, which can be powerRole (for charging) and dataRole (for data transfer).
32861847f8eSopenharmony_ci   *
32961847f8eSopenharmony_ci   * @permission ohos.permission.MANAGE_USB_CONFIG
33061847f8eSopenharmony_ci   * @param { number } portId - unique ID of the port. It cannot be empty.
33161847f8eSopenharmony_ci   * @param { PowerRoleType } powerRole - charging role. It cannot be empty.
33261847f8eSopenharmony_ci   * @param { DataRoleType } dataRole - data role. It cannot be empty.
33361847f8eSopenharmony_ci   * @returns { Promise<void> } the promise returned by the function.
33461847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
33561847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
33661847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
33761847f8eSopenharmony_ci   * @throws { BusinessError } 202 - Permission denied. Normal application do not have permission to use system api.
33861847f8eSopenharmony_ci   * @throws { BusinessError } 14400003 - Unsupported operation. The current device does not support port role switching.
33961847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
34061847f8eSopenharmony_ci   * @systemapi
34161847f8eSopenharmony_ci   * @since 12
34261847f8eSopenharmony_ci   */
34361847f8eSopenharmony_ci  function setPortRoleTypes(portId: number, powerRole: PowerRoleType, dataRole: DataRoleType): Promise<void>;
34461847f8eSopenharmony_ci
34561847f8eSopenharmony_ci  /* usb pipe functions begin */
34661847f8eSopenharmony_ci  /**
34761847f8eSopenharmony_ci   * Claims a USB interface.
34861847f8eSopenharmony_ci   *
34961847f8eSopenharmony_ci   * @param { USBDevicePipe } pipe - device pipe, which is used to determine the bus number and device address. It cannot be empty.
35061847f8eSopenharmony_ci   * @param { USBInterface } iface - USB interface, which is used to determine the interface to claim. It cannot be empty.
35161847f8eSopenharmony_ci   * @param { boolean } [force] - optional parameter that determines whether to forcibly claim the USB interface.
35261847f8eSopenharmony_ci   * @returns { number } returns **0** if the USB interface is successfully claimed; returns an error code otherwise.
35361847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
35461847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
35561847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
35661847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
35761847f8eSopenharmony_ci   * @since 9
35861847f8eSopenharmony_ci   */
35961847f8eSopenharmony_ci  function claimInterface(pipe: USBDevicePipe, iface: USBInterface, force?: boolean): number;
36061847f8eSopenharmony_ci
36161847f8eSopenharmony_ci  /**
36261847f8eSopenharmony_ci   * Releases a USB interface.
36361847f8eSopenharmony_ci   *
36461847f8eSopenharmony_ci   * @param { USBDevicePipe } pipe - device pipe, which is used to determine the bus number and device address. It cannot be empty.
36561847f8eSopenharmony_ci   * @param { USBInterface } iface - USB interface, which is used to determine the interface to release. It cannot be empty.
36661847f8eSopenharmony_ci   * @returns { number } returns **0** if the USB interface is successfully released; returns an error code otherwise.
36761847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
36861847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
36961847f8eSopenharmony_ci   * <br>2.Incorrect parameter types. 
37061847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
37161847f8eSopenharmony_ci   * @since 9
37261847f8eSopenharmony_ci   */
37361847f8eSopenharmony_ci  function releaseInterface(pipe: USBDevicePipe, iface: USBInterface): number;
37461847f8eSopenharmony_ci
37561847f8eSopenharmony_ci  /**
37661847f8eSopenharmony_ci   * Sets the device configuration.
37761847f8eSopenharmony_ci   *
37861847f8eSopenharmony_ci   * @param { USBDevicePipe } pipe - device pipe, which is used to determine the bus number and device address. It cannot be empty.
37961847f8eSopenharmony_ci   * @param { USBConfiguration } config - device configuration. It cannot be empty.
38061847f8eSopenharmony_ci   * @returns { number } returns **0** if the device configuration is successfully set; returns an error code otherwise.
38161847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
38261847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
38361847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
38461847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
38561847f8eSopenharmony_ci   * @since 9
38661847f8eSopenharmony_ci   */
38761847f8eSopenharmony_ci  function setConfiguration(pipe: USBDevicePipe, config: USBConfiguration): number;
38861847f8eSopenharmony_ci
38961847f8eSopenharmony_ci  /**
39061847f8eSopenharmony_ci   * Sets a USB interface.
39161847f8eSopenharmony_ci   *
39261847f8eSopenharmony_ci   * @param { USBDevicePipe } pipe - device pipe, which is used to determine the bus number and device address. It cannot be empty.
39361847f8eSopenharmony_ci   * @param { USBInterface } iface - USB interface, which is used to determine the interface to set. It cannot be empty.
39461847f8eSopenharmony_ci   * @returns { number } returns **0** if the USB interface is successfully set; return an error code otherwise.
39561847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
39661847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
39761847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
39861847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
39961847f8eSopenharmony_ci   * @since 9
40061847f8eSopenharmony_ci   */
40161847f8eSopenharmony_ci  function setInterface(pipe: USBDevicePipe, iface: USBInterface): number;
40261847f8eSopenharmony_ci
40361847f8eSopenharmony_ci  /**
40461847f8eSopenharmony_ci   * Obtains the raw USB descriptor.
40561847f8eSopenharmony_ci   *
40661847f8eSopenharmony_ci   * @param { USBDevicePipe } pipe - device pipe, which is used to determine the bus number and device address. It cannot be empty.
40761847f8eSopenharmony_ci   * @returns { Uint8Array } returns the raw descriptor data.
40861847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
40961847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
41061847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
41161847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
41261847f8eSopenharmony_ci   * @since 9
41361847f8eSopenharmony_ci   */
41461847f8eSopenharmony_ci  function getRawDescriptor(pipe: USBDevicePipe): Uint8Array;
41561847f8eSopenharmony_ci
41661847f8eSopenharmony_ci  /**
41761847f8eSopenharmony_ci   * Obtains the file descriptor.
41861847f8eSopenharmony_ci   *
41961847f8eSopenharmony_ci   * @param { USBDevicePipe } pipe - device pipe, which is used to determine the USB device. It cannot be empty.
42061847f8eSopenharmony_ci   * @returns { number } returns the file descriptor of the USB device.
42161847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
42261847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
42361847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
42461847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
42561847f8eSopenharmony_ci   * @since 9
42661847f8eSopenharmony_ci   */
42761847f8eSopenharmony_ci  function getFileDescriptor(pipe: USBDevicePipe): number;
42861847f8eSopenharmony_ci
42961847f8eSopenharmony_ci  /**
43061847f8eSopenharmony_ci   * Performs control transfer.
43161847f8eSopenharmony_ci   *
43261847f8eSopenharmony_ci   * @param { USBDevicePipe } pipe - device pipe, which is used to determine the USB device. It cannot be empty.
43361847f8eSopenharmony_ci   * @param { USBControlParams } controlparam - control transfer parameters. It cannot be empty.
43461847f8eSopenharmony_ci   * @param { number } [timeout] - timeout duration. This parameter is optional. The default value is **0**, indicating no timeout. 
43561847f8eSopenharmony_ci   * @returns { Promise<number> } returns the size of the transmitted or received data block if the control transfer is successful;
43661847f8eSopenharmony_ci   * return -1 if an exception occurs.
43761847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
43861847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
43961847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
44061847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
44161847f8eSopenharmony_ci   * @since 9
44261847f8eSopenharmony_ci   * @deprecated since 12
44361847f8eSopenharmony_ci   * @useinstead ohos.usbManager/usbManager#usbControlTransfer
44461847f8eSopenharmony_ci   */
44561847f8eSopenharmony_ci  function controlTransfer(pipe: USBDevicePipe, controlparam: USBControlParams, timeout?: number): Promise<number>;
44661847f8eSopenharmony_ci
44761847f8eSopenharmony_ci  /**
44861847f8eSopenharmony_ci   * Performs usb control transfer.
44961847f8eSopenharmony_ci   *
45061847f8eSopenharmony_ci   * @param { USBDevicePipe } pipe - device pipe, which is used to determine the USB device. It cannot be empty.
45161847f8eSopenharmony_ci   * @param { USBDeviceRequestParams } requestparam - control transfer parameters. It cannot be empty.
45261847f8eSopenharmony_ci   * @param { number } [timeout] - timeout duration. This parameter is optional. The default value is **0**, indicating no timeout. 
45361847f8eSopenharmony_ci   * @returns { Promise<number> } returns the size of the transmitted or received data block if the control transfer is successful;
45461847f8eSopenharmony_ci   * return -1 if an exception occurs.
45561847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
45661847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
45761847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
45861847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
45961847f8eSopenharmony_ci   * @since 12
46061847f8eSopenharmony_ci   */
46161847f8eSopenharmony_ci  function usbControlTransfer(pipe: USBDevicePipe, requestparam: USBDeviceRequestParams, timeout?: number): Promise<number>;
46261847f8eSopenharmony_ci
46361847f8eSopenharmony_ci  /**
46461847f8eSopenharmony_ci   * Performs bulk transfer.
46561847f8eSopenharmony_ci   *
46661847f8eSopenharmony_ci   * @param { USBDevicePipe } pipe - device pipe, which is used to determine the USB device. It cannot be empty.
46761847f8eSopenharmony_ci   * @param { USBEndpoint } endpoint - USB endpoint, which is used to determine the USB port for data transfer. It cannot be empty.
46861847f8eSopenharmony_ci   * @param { Uint8Array } buffer - buffer for writing or reading data. It cannot be empty.
46961847f8eSopenharmony_ci   * @param { number } [timeout] - timeout duration. This parameter is optional. The default value is **0**, indicating no timeout.
47061847f8eSopenharmony_ci   * @returns { Promise<number> } the size of the transmitted or received data block if the control transfer is successful;
47161847f8eSopenharmony_ci   * return -1 if an exception occurs.
47261847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
47361847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
47461847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.  
47561847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
47661847f8eSopenharmony_ci   * @since 9
47761847f8eSopenharmony_ci   */
47861847f8eSopenharmony_ci  function bulkTransfer(
47961847f8eSopenharmony_ci    pipe: USBDevicePipe,
48061847f8eSopenharmony_ci    endpoint: USBEndpoint,
48161847f8eSopenharmony_ci    buffer: Uint8Array,
48261847f8eSopenharmony_ci    timeout?: number
48361847f8eSopenharmony_ci  ): Promise<number>;
48461847f8eSopenharmony_ci
48561847f8eSopenharmony_ci  /**
48661847f8eSopenharmony_ci   * Closes a USB device pipe.
48761847f8eSopenharmony_ci   *
48861847f8eSopenharmony_ci   * @param { USBDevicePipe } pipe - device pipe, which is used to determine the USB device. It cannot be empty.
48961847f8eSopenharmony_ci   * @returns { number } returns **0** if the USB device pipe is closed successfully; return an error code otherwise.
49061847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes:
49161847f8eSopenharmony_ci   * <br>1.Mandatory parameters are left unspecified.
49261847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.
49361847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
49461847f8eSopenharmony_ci   * @since 9
49561847f8eSopenharmony_ci   */
49661847f8eSopenharmony_ci  function closePipe(pipe: USBDevicePipe): number;
49761847f8eSopenharmony_ci
49861847f8eSopenharmony_ci  /**
49961847f8eSopenharmony_ci   * Represents the USB endpoint from which data is sent or received. You can obtain the USB endpoint through USBInterface.
50061847f8eSopenharmony_ci   *
50161847f8eSopenharmony_ci   * @typedef USBEndpoint
50261847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
50361847f8eSopenharmony_ci   * @since 9
50461847f8eSopenharmony_ci   */
50561847f8eSopenharmony_ci  interface USBEndpoint {
50661847f8eSopenharmony_ci    /**
50761847f8eSopenharmony_ci     * Endpoint address
50861847f8eSopenharmony_ci     *
50961847f8eSopenharmony_ci     * @type { number }
51061847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
51161847f8eSopenharmony_ci     * @since 9
51261847f8eSopenharmony_ci     */
51361847f8eSopenharmony_ci    address: number;
51461847f8eSopenharmony_ci
51561847f8eSopenharmony_ci    /**
51661847f8eSopenharmony_ci     * Endpoint attributes
51761847f8eSopenharmony_ci     *
51861847f8eSopenharmony_ci     * @type { number }
51961847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
52061847f8eSopenharmony_ci     * @since 9
52161847f8eSopenharmony_ci     */
52261847f8eSopenharmony_ci    attributes: number;
52361847f8eSopenharmony_ci
52461847f8eSopenharmony_ci    /**
52561847f8eSopenharmony_ci     * Endpoint interval
52661847f8eSopenharmony_ci     *
52761847f8eSopenharmony_ci     * @type { number }
52861847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
52961847f8eSopenharmony_ci     * @since 9
53061847f8eSopenharmony_ci     */
53161847f8eSopenharmony_ci    interval: number;
53261847f8eSopenharmony_ci
53361847f8eSopenharmony_ci    /**
53461847f8eSopenharmony_ci     * Maximum size of data packets on the endpoint
53561847f8eSopenharmony_ci     *
53661847f8eSopenharmony_ci     * @type { number }
53761847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
53861847f8eSopenharmony_ci     * @since 9
53961847f8eSopenharmony_ci     */
54061847f8eSopenharmony_ci    maxPacketSize: number;
54161847f8eSopenharmony_ci
54261847f8eSopenharmony_ci    /**
54361847f8eSopenharmony_ci     * Endpoint direction
54461847f8eSopenharmony_ci     *
54561847f8eSopenharmony_ci     * @type { USBRequestDirection }
54661847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
54761847f8eSopenharmony_ci     * @since 9
54861847f8eSopenharmony_ci     */
54961847f8eSopenharmony_ci    direction: USBRequestDirection;
55061847f8eSopenharmony_ci
55161847f8eSopenharmony_ci    /**
55261847f8eSopenharmony_ci     * Endpoint number
55361847f8eSopenharmony_ci     *
55461847f8eSopenharmony_ci     * @type { number }
55561847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
55661847f8eSopenharmony_ci     * @since 9
55761847f8eSopenharmony_ci     */
55861847f8eSopenharmony_ci    number: number;
55961847f8eSopenharmony_ci
56061847f8eSopenharmony_ci    /**
56161847f8eSopenharmony_ci     * Endpoint type
56261847f8eSopenharmony_ci     *
56361847f8eSopenharmony_ci     * @type { number }
56461847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
56561847f8eSopenharmony_ci     * @since 9
56661847f8eSopenharmony_ci     */
56761847f8eSopenharmony_ci    type: number;
56861847f8eSopenharmony_ci
56961847f8eSopenharmony_ci    /**
57061847f8eSopenharmony_ci     * Unique ID defined by USBInterface.id, which indicates the interface to which the endpoint belongs
57161847f8eSopenharmony_ci     *
57261847f8eSopenharmony_ci     * @type { number }
57361847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
57461847f8eSopenharmony_ci     * @since 9
57561847f8eSopenharmony_ci     */
57661847f8eSopenharmony_ci    interfaceId: number;
57761847f8eSopenharmony_ci  }
57861847f8eSopenharmony_ci
57961847f8eSopenharmony_ci  /**
58061847f8eSopenharmony_ci   * Represents a USB interface. One config can contain multiple **USBInterface** instances, each providing a specific function.
58161847f8eSopenharmony_ci   *
58261847f8eSopenharmony_ci   * @typedef USBInterface
58361847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
58461847f8eSopenharmony_ci   * @since 9
58561847f8eSopenharmony_ci   */
58661847f8eSopenharmony_ci  interface USBInterface {
58761847f8eSopenharmony_ci    /**
58861847f8eSopenharmony_ci     * Unique ID of the USB interface
58961847f8eSopenharmony_ci     *
59061847f8eSopenharmony_ci     * @type { number }
59161847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
59261847f8eSopenharmony_ci     * @since 9
59361847f8eSopenharmony_ci     */
59461847f8eSopenharmony_ci    id: number;
59561847f8eSopenharmony_ci
59661847f8eSopenharmony_ci    /**
59761847f8eSopenharmony_ci     * Interface protocol
59861847f8eSopenharmony_ci     *
59961847f8eSopenharmony_ci     * @type { number }
60061847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
60161847f8eSopenharmony_ci     * @since 9
60261847f8eSopenharmony_ci     */
60361847f8eSopenharmony_ci    protocol: number;
60461847f8eSopenharmony_ci
60561847f8eSopenharmony_ci    /**
60661847f8eSopenharmony_ci     * Device type
60761847f8eSopenharmony_ci     *
60861847f8eSopenharmony_ci     * @type { number }
60961847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
61061847f8eSopenharmony_ci     * @since 9
61161847f8eSopenharmony_ci     */
61261847f8eSopenharmony_ci    clazz: number;
61361847f8eSopenharmony_ci
61461847f8eSopenharmony_ci    /**
61561847f8eSopenharmony_ci     * Device subclass
61661847f8eSopenharmony_ci     *
61761847f8eSopenharmony_ci     * @type { number }
61861847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
61961847f8eSopenharmony_ci     * @since 9
62061847f8eSopenharmony_ci     */
62161847f8eSopenharmony_ci    subClass: number;
62261847f8eSopenharmony_ci
62361847f8eSopenharmony_ci    /**
62461847f8eSopenharmony_ci     * Alternation between descriptors of the same USB interface
62561847f8eSopenharmony_ci     *
62661847f8eSopenharmony_ci     * @type { number }
62761847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
62861847f8eSopenharmony_ci     * @since 9
62961847f8eSopenharmony_ci     */
63061847f8eSopenharmony_ci    alternateSetting: number;
63161847f8eSopenharmony_ci
63261847f8eSopenharmony_ci    /**
63361847f8eSopenharmony_ci     * Interface name
63461847f8eSopenharmony_ci     *
63561847f8eSopenharmony_ci     * @type { string }
63661847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
63761847f8eSopenharmony_ci     * @since 9
63861847f8eSopenharmony_ci     */
63961847f8eSopenharmony_ci    name: string;
64061847f8eSopenharmony_ci
64161847f8eSopenharmony_ci    /**
64261847f8eSopenharmony_ci     * USBEndpoint that belongs to the USB interface
64361847f8eSopenharmony_ci     *
64461847f8eSopenharmony_ci     * @type { Array<USBEndpoint> }
64561847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
64661847f8eSopenharmony_ci     * @since 9
64761847f8eSopenharmony_ci     */
64861847f8eSopenharmony_ci    endpoints: Array<USBEndpoint>;
64961847f8eSopenharmony_ci  }
65061847f8eSopenharmony_ci
65161847f8eSopenharmony_ci  /**
65261847f8eSopenharmony_ci   * USB configuration. One USBDevice can contain multiple USBConfiguration instances.
65361847f8eSopenharmony_ci   *
65461847f8eSopenharmony_ci   * @typedef USBConfiguration
65561847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
65661847f8eSopenharmony_ci   * @since 9
65761847f8eSopenharmony_ci   */
65861847f8eSopenharmony_ci  interface USBConfiguration {
65961847f8eSopenharmony_ci    /**
66061847f8eSopenharmony_ci     * Unique ID of the USB configuration
66161847f8eSopenharmony_ci     *
66261847f8eSopenharmony_ci     * @type { number }
66361847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
66461847f8eSopenharmony_ci     * @since 9
66561847f8eSopenharmony_ci     */
66661847f8eSopenharmony_ci    id: number;
66761847f8eSopenharmony_ci
66861847f8eSopenharmony_ci    /**
66961847f8eSopenharmony_ci     * Configuration attributes
67061847f8eSopenharmony_ci     *
67161847f8eSopenharmony_ci     * @type { number }
67261847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
67361847f8eSopenharmony_ci     * @since 9
67461847f8eSopenharmony_ci     */
67561847f8eSopenharmony_ci    attributes: number;
67661847f8eSopenharmony_ci
67761847f8eSopenharmony_ci    /**
67861847f8eSopenharmony_ci     * Maximum power consumption, in mA
67961847f8eSopenharmony_ci     *
68061847f8eSopenharmony_ci     * @type { number }
68161847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
68261847f8eSopenharmony_ci     * @since 9
68361847f8eSopenharmony_ci     */
68461847f8eSopenharmony_ci    maxPower: number;
68561847f8eSopenharmony_ci
68661847f8eSopenharmony_ci    /**
68761847f8eSopenharmony_ci     * Configuration name, which can be left empty
68861847f8eSopenharmony_ci     *
68961847f8eSopenharmony_ci     * @type { string }
69061847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
69161847f8eSopenharmony_ci     * @since 9
69261847f8eSopenharmony_ci     */
69361847f8eSopenharmony_ci    name: string;
69461847f8eSopenharmony_ci
69561847f8eSopenharmony_ci    /**
69661847f8eSopenharmony_ci     * Support for remote wakeup
69761847f8eSopenharmony_ci     *
69861847f8eSopenharmony_ci     * @type { boolean }
69961847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
70061847f8eSopenharmony_ci     * @since 9
70161847f8eSopenharmony_ci     */
70261847f8eSopenharmony_ci    isRemoteWakeup: boolean;
70361847f8eSopenharmony_ci
70461847f8eSopenharmony_ci    /**
70561847f8eSopenharmony_ci     * Support for independent power supplies
70661847f8eSopenharmony_ci     *
70761847f8eSopenharmony_ci     * @type { boolean }
70861847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
70961847f8eSopenharmony_ci     * @since 9
71061847f8eSopenharmony_ci     */
71161847f8eSopenharmony_ci    isSelfPowered: boolean;
71261847f8eSopenharmony_ci
71361847f8eSopenharmony_ci    /**
71461847f8eSopenharmony_ci     * Supported interface attributes
71561847f8eSopenharmony_ci     *
71661847f8eSopenharmony_ci     * @type { Array<USBInterface> }
71761847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
71861847f8eSopenharmony_ci     * @since 9
71961847f8eSopenharmony_ci     */
72061847f8eSopenharmony_ci    interfaces: Array<USBInterface>;
72161847f8eSopenharmony_ci  }
72261847f8eSopenharmony_ci
72361847f8eSopenharmony_ci  /**
72461847f8eSopenharmony_ci   * Represents a USB device.
72561847f8eSopenharmony_ci   *
72661847f8eSopenharmony_ci   * @typedef USBDevice
72761847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
72861847f8eSopenharmony_ci   * @since 9
72961847f8eSopenharmony_ci   */
73061847f8eSopenharmony_ci  interface USBDevice {
73161847f8eSopenharmony_ci    /**
73261847f8eSopenharmony_ci     * Bus address
73361847f8eSopenharmony_ci     *
73461847f8eSopenharmony_ci     * @type { number }
73561847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
73661847f8eSopenharmony_ci     * @since 9
73761847f8eSopenharmony_ci     */
73861847f8eSopenharmony_ci    busNum: number;
73961847f8eSopenharmony_ci
74061847f8eSopenharmony_ci    /**
74161847f8eSopenharmony_ci     * Device address
74261847f8eSopenharmony_ci     *
74361847f8eSopenharmony_ci     * @type { number }
74461847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
74561847f8eSopenharmony_ci     * @since 9
74661847f8eSopenharmony_ci     */
74761847f8eSopenharmony_ci    devAddress: number;
74861847f8eSopenharmony_ci
74961847f8eSopenharmony_ci    /**
75061847f8eSopenharmony_ci     * Device SN
75161847f8eSopenharmony_ci     *
75261847f8eSopenharmony_ci     * @type { string }
75361847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
75461847f8eSopenharmony_ci     * @since 9
75561847f8eSopenharmony_ci     */
75661847f8eSopenharmony_ci    serial: string;
75761847f8eSopenharmony_ci
75861847f8eSopenharmony_ci    /**
75961847f8eSopenharmony_ci     * Device name
76061847f8eSopenharmony_ci     *
76161847f8eSopenharmony_ci     * @type { string }
76261847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
76361847f8eSopenharmony_ci     * @since 9
76461847f8eSopenharmony_ci     */
76561847f8eSopenharmony_ci    name: string;
76661847f8eSopenharmony_ci
76761847f8eSopenharmony_ci    /**
76861847f8eSopenharmony_ci     * Device manufacturer
76961847f8eSopenharmony_ci     *
77061847f8eSopenharmony_ci     * @type { string }
77161847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
77261847f8eSopenharmony_ci     * @since 9
77361847f8eSopenharmony_ci     */
77461847f8eSopenharmony_ci    manufacturerName: string;
77561847f8eSopenharmony_ci
77661847f8eSopenharmony_ci    /**
77761847f8eSopenharmony_ci     * Product information
77861847f8eSopenharmony_ci     *
77961847f8eSopenharmony_ci     * @type { string }
78061847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
78161847f8eSopenharmony_ci     * @since 9
78261847f8eSopenharmony_ci     */
78361847f8eSopenharmony_ci    productName: string;
78461847f8eSopenharmony_ci
78561847f8eSopenharmony_ci    /**
78661847f8eSopenharmony_ci     * Product version
78761847f8eSopenharmony_ci     *
78861847f8eSopenharmony_ci     * @type { string }
78961847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
79061847f8eSopenharmony_ci     * @since 9
79161847f8eSopenharmony_ci     */
79261847f8eSopenharmony_ci    version: string;
79361847f8eSopenharmony_ci
79461847f8eSopenharmony_ci    /**
79561847f8eSopenharmony_ci     * Vendor ID
79661847f8eSopenharmony_ci     *
79761847f8eSopenharmony_ci     * @type { number }
79861847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
79961847f8eSopenharmony_ci     * @since 9
80061847f8eSopenharmony_ci     */
80161847f8eSopenharmony_ci    vendorId: number;
80261847f8eSopenharmony_ci
80361847f8eSopenharmony_ci    /**
80461847f8eSopenharmony_ci     * Product ID
80561847f8eSopenharmony_ci     *
80661847f8eSopenharmony_ci     * @type { number }
80761847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
80861847f8eSopenharmony_ci     * @since 9
80961847f8eSopenharmony_ci     */
81061847f8eSopenharmony_ci    productId: number;
81161847f8eSopenharmony_ci
81261847f8eSopenharmony_ci    /**
81361847f8eSopenharmony_ci     * Device class
81461847f8eSopenharmony_ci     *
81561847f8eSopenharmony_ci     * @type { number }
81661847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
81761847f8eSopenharmony_ci     * @since 9
81861847f8eSopenharmony_ci     */
81961847f8eSopenharmony_ci    clazz: number;
82061847f8eSopenharmony_ci
82161847f8eSopenharmony_ci    /**
82261847f8eSopenharmony_ci     * Device subclass
82361847f8eSopenharmony_ci     *
82461847f8eSopenharmony_ci     * @type { number }
82561847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
82661847f8eSopenharmony_ci     * @since 9
82761847f8eSopenharmony_ci     */
82861847f8eSopenharmony_ci    subClass: number;
82961847f8eSopenharmony_ci
83061847f8eSopenharmony_ci    /**
83161847f8eSopenharmony_ci     * Device protocol code
83261847f8eSopenharmony_ci     *
83361847f8eSopenharmony_ci     * @type { number }
83461847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
83561847f8eSopenharmony_ci     * @since 9
83661847f8eSopenharmony_ci     */
83761847f8eSopenharmony_ci    protocol: number;
83861847f8eSopenharmony_ci
83961847f8eSopenharmony_ci    /**
84061847f8eSopenharmony_ci     * Device configuration descriptor information
84161847f8eSopenharmony_ci     *
84261847f8eSopenharmony_ci     * @type { Array<USBConfiguration> }
84361847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
84461847f8eSopenharmony_ci     * @since 9
84561847f8eSopenharmony_ci     */
84661847f8eSopenharmony_ci    configs: Array<USBConfiguration>;
84761847f8eSopenharmony_ci  }
84861847f8eSopenharmony_ci
84961847f8eSopenharmony_ci  /**
85061847f8eSopenharmony_ci   * Represents a USB device pipe, which is used to determine the USB device.
85161847f8eSopenharmony_ci   *
85261847f8eSopenharmony_ci   * @typedef USBDevicePipe
85361847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
85461847f8eSopenharmony_ci   * @since 9
85561847f8eSopenharmony_ci   */
85661847f8eSopenharmony_ci  interface USBDevicePipe {
85761847f8eSopenharmony_ci    /**
85861847f8eSopenharmony_ci     * Bus address.
85961847f8eSopenharmony_ci     *
86061847f8eSopenharmony_ci     * @type { number }
86161847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
86261847f8eSopenharmony_ci     * @since 9
86361847f8eSopenharmony_ci     */
86461847f8eSopenharmony_ci    busNum: number;
86561847f8eSopenharmony_ci
86661847f8eSopenharmony_ci    /**
86761847f8eSopenharmony_ci     * Device address
86861847f8eSopenharmony_ci     *
86961847f8eSopenharmony_ci     * @type { number }
87061847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
87161847f8eSopenharmony_ci     * @since 9
87261847f8eSopenharmony_ci     */
87361847f8eSopenharmony_ci    devAddress: number;
87461847f8eSopenharmony_ci  }
87561847f8eSopenharmony_ci
87661847f8eSopenharmony_ci  /**
87761847f8eSopenharmony_ci   * Enumerates power role types.
87861847f8eSopenharmony_ci   *
87961847f8eSopenharmony_ci   * @enum { number }
88061847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
88161847f8eSopenharmony_ci   * @systemapi
88261847f8eSopenharmony_ci   * @since 9
88361847f8eSopenharmony_ci   */
88461847f8eSopenharmony_ci  export enum PowerRoleType {
88561847f8eSopenharmony_ci    /**
88661847f8eSopenharmony_ci     * None
88761847f8eSopenharmony_ci     *
88861847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
88961847f8eSopenharmony_ci     * @systemapi
89061847f8eSopenharmony_ci     * @since 9
89161847f8eSopenharmony_ci     */
89261847f8eSopenharmony_ci    NONE = 0,
89361847f8eSopenharmony_ci
89461847f8eSopenharmony_ci    /**
89561847f8eSopenharmony_ci     * External power supply
89661847f8eSopenharmony_ci     *
89761847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
89861847f8eSopenharmony_ci     * @systemapi
89961847f8eSopenharmony_ci     * @since 9
90061847f8eSopenharmony_ci     */
90161847f8eSopenharmony_ci    SOURCE = 1,
90261847f8eSopenharmony_ci
90361847f8eSopenharmony_ci    /**
90461847f8eSopenharmony_ci     * Internal power supply
90561847f8eSopenharmony_ci     *
90661847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
90761847f8eSopenharmony_ci     * @systemapi
90861847f8eSopenharmony_ci     * @since 9
90961847f8eSopenharmony_ci     */
91061847f8eSopenharmony_ci    SINK = 2
91161847f8eSopenharmony_ci  }
91261847f8eSopenharmony_ci
91361847f8eSopenharmony_ci  /**
91461847f8eSopenharmony_ci   * Enumerates data role types.
91561847f8eSopenharmony_ci   *
91661847f8eSopenharmony_ci   * @enum { number }
91761847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
91861847f8eSopenharmony_ci   * @systemapi
91961847f8eSopenharmony_ci   * @since 9
92061847f8eSopenharmony_ci   */
92161847f8eSopenharmony_ci  export enum DataRoleType {
92261847f8eSopenharmony_ci    /**
92361847f8eSopenharmony_ci     * None
92461847f8eSopenharmony_ci     *
92561847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
92661847f8eSopenharmony_ci     * @systemapi
92761847f8eSopenharmony_ci     * @since 9
92861847f8eSopenharmony_ci     */
92961847f8eSopenharmony_ci    NONE = 0,
93061847f8eSopenharmony_ci
93161847f8eSopenharmony_ci    /**
93261847f8eSopenharmony_ci     * Host mode
93361847f8eSopenharmony_ci     *
93461847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
93561847f8eSopenharmony_ci     * @systemapi
93661847f8eSopenharmony_ci     * @since 9
93761847f8eSopenharmony_ci     */
93861847f8eSopenharmony_ci    HOST = 1,
93961847f8eSopenharmony_ci
94061847f8eSopenharmony_ci    /**
94161847f8eSopenharmony_ci     * Device mode
94261847f8eSopenharmony_ci     *
94361847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
94461847f8eSopenharmony_ci     * @systemapi
94561847f8eSopenharmony_ci     * @since 9
94661847f8eSopenharmony_ci     */
94761847f8eSopenharmony_ci    DEVICE = 2
94861847f8eSopenharmony_ci  }
94961847f8eSopenharmony_ci
95061847f8eSopenharmony_ci  /**
95161847f8eSopenharmony_ci   * Enumerates port mode types
95261847f8eSopenharmony_ci   *
95361847f8eSopenharmony_ci   * @enum { number }
95461847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
95561847f8eSopenharmony_ci   * @systemapi
95661847f8eSopenharmony_ci   * @since 9
95761847f8eSopenharmony_ci   */
95861847f8eSopenharmony_ci  export enum PortModeType {
95961847f8eSopenharmony_ci    /**
96061847f8eSopenharmony_ci     * None
96161847f8eSopenharmony_ci     *
96261847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
96361847f8eSopenharmony_ci     * @systemapi
96461847f8eSopenharmony_ci     * @since 9
96561847f8eSopenharmony_ci     */
96661847f8eSopenharmony_ci    NONE = 0,
96761847f8eSopenharmony_ci
96861847f8eSopenharmony_ci    /**
96961847f8eSopenharmony_ci     * Upstream facing port, which functions as the sink of power supply
97061847f8eSopenharmony_ci     *
97161847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
97261847f8eSopenharmony_ci     * @systemapi
97361847f8eSopenharmony_ci     * @since 9
97461847f8eSopenharmony_ci     */
97561847f8eSopenharmony_ci    UFP = 1,
97661847f8eSopenharmony_ci
97761847f8eSopenharmony_ci    /**
97861847f8eSopenharmony_ci     * Downstream facing port, which functions as the source of power supply
97961847f8eSopenharmony_ci     *
98061847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
98161847f8eSopenharmony_ci     * @systemapi
98261847f8eSopenharmony_ci     * @since 9
98361847f8eSopenharmony_ci     */
98461847f8eSopenharmony_ci    DFP = 2,
98561847f8eSopenharmony_ci
98661847f8eSopenharmony_ci    /**
98761847f8eSopenharmony_ci     * Dynamic reconfiguration port (DRP), which can function as the DFP (host) or UFP (device). It is not supported currently.
98861847f8eSopenharmony_ci     *
98961847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
99061847f8eSopenharmony_ci     * @systemapi
99161847f8eSopenharmony_ci     * @since 9
99261847f8eSopenharmony_ci     */
99361847f8eSopenharmony_ci    DRP = 3,
99461847f8eSopenharmony_ci
99561847f8eSopenharmony_ci    /**
99661847f8eSopenharmony_ci     * Not supported currently
99761847f8eSopenharmony_ci     *
99861847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
99961847f8eSopenharmony_ci     * @systemapi
100061847f8eSopenharmony_ci     * @since 9
100161847f8eSopenharmony_ci     */
100261847f8eSopenharmony_ci    NUM_MODES = 4
100361847f8eSopenharmony_ci  }
100461847f8eSopenharmony_ci
100561847f8eSopenharmony_ci  /**
100661847f8eSopenharmony_ci   * Enumerates USB device port roles.
100761847f8eSopenharmony_ci   *
100861847f8eSopenharmony_ci   * @typedef USBPortStatus
100961847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
101061847f8eSopenharmony_ci   * @systemapi
101161847f8eSopenharmony_ci   * @since 9
101261847f8eSopenharmony_ci   */
101361847f8eSopenharmony_ci  interface USBPortStatus {
101461847f8eSopenharmony_ci    /**
101561847f8eSopenharmony_ci     * USB mode
101661847f8eSopenharmony_ci     *
101761847f8eSopenharmony_ci     * @type { number }
101861847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
101961847f8eSopenharmony_ci     * @systemapi
102061847f8eSopenharmony_ci     * @since 9
102161847f8eSopenharmony_ci     */
102261847f8eSopenharmony_ci    currentMode: number;
102361847f8eSopenharmony_ci
102461847f8eSopenharmony_ci    /**
102561847f8eSopenharmony_ci     * Power role
102661847f8eSopenharmony_ci     *
102761847f8eSopenharmony_ci     * @type { number }
102861847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
102961847f8eSopenharmony_ci     * @systemapi
103061847f8eSopenharmony_ci     * @since 9
103161847f8eSopenharmony_ci     */
103261847f8eSopenharmony_ci    currentPowerRole: number;
103361847f8eSopenharmony_ci
103461847f8eSopenharmony_ci    /**
103561847f8eSopenharmony_ci     * Data role
103661847f8eSopenharmony_ci     *
103761847f8eSopenharmony_ci     * @type { number }
103861847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
103961847f8eSopenharmony_ci     * @systemapi
104061847f8eSopenharmony_ci     * @since 9
104161847f8eSopenharmony_ci     */
104261847f8eSopenharmony_ci    currentDataRole: number;
104361847f8eSopenharmony_ci  }
104461847f8eSopenharmony_ci
104561847f8eSopenharmony_ci  /**
104661847f8eSopenharmony_ci   * Represents a USB device port.
104761847f8eSopenharmony_ci   *
104861847f8eSopenharmony_ci   * @typedef USBPort
104961847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
105061847f8eSopenharmony_ci   * @systemapi
105161847f8eSopenharmony_ci   * @since 9
105261847f8eSopenharmony_ci   */
105361847f8eSopenharmony_ci  interface USBPort {
105461847f8eSopenharmony_ci    /**
105561847f8eSopenharmony_ci     * Unique ID of the USB port
105661847f8eSopenharmony_ci     *
105761847f8eSopenharmony_ci     * @type { number }
105861847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
105961847f8eSopenharmony_ci     * @systemapi
106061847f8eSopenharmony_ci     * @since 9
106161847f8eSopenharmony_ci     */
106261847f8eSopenharmony_ci    id: number;
106361847f8eSopenharmony_ci
106461847f8eSopenharmony_ci    /**
106561847f8eSopenharmony_ci     * Mask combination for the supported mode list of the USB port
106661847f8eSopenharmony_ci     *
106761847f8eSopenharmony_ci     * @type { PortModeType }
106861847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
106961847f8eSopenharmony_ci     * @systemapi
107061847f8eSopenharmony_ci     * @since 9
107161847f8eSopenharmony_ci     */
107261847f8eSopenharmony_ci    supportedModes: PortModeType;
107361847f8eSopenharmony_ci
107461847f8eSopenharmony_ci    /**
107561847f8eSopenharmony_ci     * USB port role
107661847f8eSopenharmony_ci     *
107761847f8eSopenharmony_ci     * @type { USBPortStatus }
107861847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
107961847f8eSopenharmony_ci     * @systemapi
108061847f8eSopenharmony_ci     * @since 9
108161847f8eSopenharmony_ci     */
108261847f8eSopenharmony_ci    status: USBPortStatus;
108361847f8eSopenharmony_ci  }
108461847f8eSopenharmony_ci
108561847f8eSopenharmony_ci  /**
108661847f8eSopenharmony_ci   * Represents control transfer parameters.
108761847f8eSopenharmony_ci   *
108861847f8eSopenharmony_ci   * @typedef USBControlParams
108961847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
109061847f8eSopenharmony_ci   * @since 9
109161847f8eSopenharmony_ci   */
109261847f8eSopenharmony_ci  interface USBControlParams {
109361847f8eSopenharmony_ci    /**
109461847f8eSopenharmony_ci     * Request type
109561847f8eSopenharmony_ci     *
109661847f8eSopenharmony_ci     * @type { number }
109761847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
109861847f8eSopenharmony_ci     * @since 9
109961847f8eSopenharmony_ci     */
110061847f8eSopenharmony_ci    request: number;
110161847f8eSopenharmony_ci
110261847f8eSopenharmony_ci    /**
110361847f8eSopenharmony_ci     * Request target type
110461847f8eSopenharmony_ci     *
110561847f8eSopenharmony_ci     * @type { USBRequestTargetType }
110661847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
110761847f8eSopenharmony_ci     * @since 9
110861847f8eSopenharmony_ci     */
110961847f8eSopenharmony_ci    target: USBRequestTargetType;
111061847f8eSopenharmony_ci
111161847f8eSopenharmony_ci    /**
111261847f8eSopenharmony_ci     * Control request type
111361847f8eSopenharmony_ci     *
111461847f8eSopenharmony_ci     * @type { USBControlRequestType }
111561847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
111661847f8eSopenharmony_ci     * @since 9
111761847f8eSopenharmony_ci     */
111861847f8eSopenharmony_ci    reqType: USBControlRequestType;
111961847f8eSopenharmony_ci
112061847f8eSopenharmony_ci    /**
112161847f8eSopenharmony_ci     * Request parameter value
112261847f8eSopenharmony_ci     *
112361847f8eSopenharmony_ci     * @type { number }
112461847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
112561847f8eSopenharmony_ci     * @since 9
112661847f8eSopenharmony_ci     */
112761847f8eSopenharmony_ci    value: number;
112861847f8eSopenharmony_ci
112961847f8eSopenharmony_ci    /**
113061847f8eSopenharmony_ci     * Index of the parameter value
113161847f8eSopenharmony_ci     *
113261847f8eSopenharmony_ci     * @type { number }
113361847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
113461847f8eSopenharmony_ci     * @since 9
113561847f8eSopenharmony_ci     */
113661847f8eSopenharmony_ci    index: number;
113761847f8eSopenharmony_ci
113861847f8eSopenharmony_ci    /**
113961847f8eSopenharmony_ci     * Data written to or read from the buffer
114061847f8eSopenharmony_ci     *
114161847f8eSopenharmony_ci     * @type { Uint8Array }
114261847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
114361847f8eSopenharmony_ci     * @since 9
114461847f8eSopenharmony_ci     */
114561847f8eSopenharmony_ci    data: Uint8Array;
114661847f8eSopenharmony_ci  }
114761847f8eSopenharmony_ci
114861847f8eSopenharmony_ci  /**
114961847f8eSopenharmony_ci   * Represents control transfer parameters.
115061847f8eSopenharmony_ci   *
115161847f8eSopenharmony_ci   * @typedef USBDeviceRequestParams
115261847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
115361847f8eSopenharmony_ci   * @since 12
115461847f8eSopenharmony_ci   */
115561847f8eSopenharmony_ci  interface USBDeviceRequestParams {
115661847f8eSopenharmony_ci    /**
115761847f8eSopenharmony_ci     * Bit map request type
115861847f8eSopenharmony_ci     *
115961847f8eSopenharmony_ci     * @type { number }
116061847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
116161847f8eSopenharmony_ci     * @since 12
116261847f8eSopenharmony_ci     */
116361847f8eSopenharmony_ci    bmRequestType: number;
116461847f8eSopenharmony_ci
116561847f8eSopenharmony_ci    /**
116661847f8eSopenharmony_ci     * Byte request
116761847f8eSopenharmony_ci     *
116861847f8eSopenharmony_ci     * @type { number }
116961847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
117061847f8eSopenharmony_ci     * @since 12
117161847f8eSopenharmony_ci     */
117261847f8eSopenharmony_ci    bRequest: number;
117361847f8eSopenharmony_ci
117461847f8eSopenharmony_ci    /**
117561847f8eSopenharmony_ci     * Request parameter word value
117661847f8eSopenharmony_ci     *
117761847f8eSopenharmony_ci     * @type { number }
117861847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
117961847f8eSopenharmony_ci     * @since 12
118061847f8eSopenharmony_ci     */
118161847f8eSopenharmony_ci    wValue: number;
118261847f8eSopenharmony_ci
118361847f8eSopenharmony_ci    /**
118461847f8eSopenharmony_ci     * Word index of the parameter value
118561847f8eSopenharmony_ci     *
118661847f8eSopenharmony_ci     * @type { number }
118761847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
118861847f8eSopenharmony_ci     * @since 12
118961847f8eSopenharmony_ci     */
119061847f8eSopenharmony_ci    wIndex: number;
119161847f8eSopenharmony_ci
119261847f8eSopenharmony_ci    /**
119361847f8eSopenharmony_ci     * Word length of the parameter value
119461847f8eSopenharmony_ci     *
119561847f8eSopenharmony_ci     * @type { number }
119661847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
119761847f8eSopenharmony_ci     * @since 12
119861847f8eSopenharmony_ci     */
119961847f8eSopenharmony_ci    wLength: number;
120061847f8eSopenharmony_ci
120161847f8eSopenharmony_ci    /**
120261847f8eSopenharmony_ci     * Data written to or read from the buffer
120361847f8eSopenharmony_ci     *
120461847f8eSopenharmony_ci     * @type { Uint8Array }
120561847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
120661847f8eSopenharmony_ci     * @since 12
120761847f8eSopenharmony_ci     */
120861847f8eSopenharmony_ci    data: Uint8Array;
120961847f8eSopenharmony_ci  }
121061847f8eSopenharmony_ci
121161847f8eSopenharmony_ci  /**
121261847f8eSopenharmony_ci   * Enumerates USB request target types.
121361847f8eSopenharmony_ci   *
121461847f8eSopenharmony_ci   * @enum { number }
121561847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
121661847f8eSopenharmony_ci   * @since 9
121761847f8eSopenharmony_ci   */
121861847f8eSopenharmony_ci  export enum USBRequestTargetType {
121961847f8eSopenharmony_ci    /**
122061847f8eSopenharmony_ci     * USB device
122161847f8eSopenharmony_ci     *
122261847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
122361847f8eSopenharmony_ci     * @since 9
122461847f8eSopenharmony_ci     */
122561847f8eSopenharmony_ci    USB_REQUEST_TARGET_DEVICE = 0,
122661847f8eSopenharmony_ci
122761847f8eSopenharmony_ci    /**
122861847f8eSopenharmony_ci     * USB interface
122961847f8eSopenharmony_ci     *
123061847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
123161847f8eSopenharmony_ci     * @since 9
123261847f8eSopenharmony_ci     */
123361847f8eSopenharmony_ci    USB_REQUEST_TARGET_INTERFACE = 1,
123461847f8eSopenharmony_ci
123561847f8eSopenharmony_ci    /**
123661847f8eSopenharmony_ci     * Endpoint
123761847f8eSopenharmony_ci     *
123861847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
123961847f8eSopenharmony_ci     * @since 9
124061847f8eSopenharmony_ci     */
124161847f8eSopenharmony_ci    USB_REQUEST_TARGET_ENDPOINT = 2,
124261847f8eSopenharmony_ci
124361847f8eSopenharmony_ci    /**
124461847f8eSopenharmony_ci     * Others
124561847f8eSopenharmony_ci     *
124661847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
124761847f8eSopenharmony_ci     * @since 9
124861847f8eSopenharmony_ci     */
124961847f8eSopenharmony_ci    USB_REQUEST_TARGET_OTHER = 3
125061847f8eSopenharmony_ci  }
125161847f8eSopenharmony_ci
125261847f8eSopenharmony_ci  /**
125361847f8eSopenharmony_ci   * Enumerates control request types.
125461847f8eSopenharmony_ci   *
125561847f8eSopenharmony_ci   * @enum { number }
125661847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
125761847f8eSopenharmony_ci   * @since 9
125861847f8eSopenharmony_ci   */
125961847f8eSopenharmony_ci  export enum USBControlRequestType {
126061847f8eSopenharmony_ci    /**
126161847f8eSopenharmony_ci     * Standard
126261847f8eSopenharmony_ci     *
126361847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
126461847f8eSopenharmony_ci     * @since 9
126561847f8eSopenharmony_ci     */
126661847f8eSopenharmony_ci    USB_REQUEST_TYPE_STANDARD = 0,
126761847f8eSopenharmony_ci
126861847f8eSopenharmony_ci    /**
126961847f8eSopenharmony_ci     * Class
127061847f8eSopenharmony_ci     *
127161847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
127261847f8eSopenharmony_ci     * @since 9
127361847f8eSopenharmony_ci     */
127461847f8eSopenharmony_ci    USB_REQUEST_TYPE_CLASS = 1,
127561847f8eSopenharmony_ci
127661847f8eSopenharmony_ci    /**
127761847f8eSopenharmony_ci     * Vendor
127861847f8eSopenharmony_ci     *
127961847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
128061847f8eSopenharmony_ci     * @since 9
128161847f8eSopenharmony_ci     */
128261847f8eSopenharmony_ci    USB_REQUEST_TYPE_VENDOR = 2
128361847f8eSopenharmony_ci  }
128461847f8eSopenharmony_ci
128561847f8eSopenharmony_ci  /**
128661847f8eSopenharmony_ci   * Enumerates request directions.
128761847f8eSopenharmony_ci   *
128861847f8eSopenharmony_ci   * @enum { number }
128961847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
129061847f8eSopenharmony_ci   * @since 9
129161847f8eSopenharmony_ci   */
129261847f8eSopenharmony_ci  export enum USBRequestDirection {
129361847f8eSopenharmony_ci    /**
129461847f8eSopenharmony_ci     * Request for writing data from the host to the device
129561847f8eSopenharmony_ci     *
129661847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
129761847f8eSopenharmony_ci     * @since 9
129861847f8eSopenharmony_ci     */
129961847f8eSopenharmony_ci    USB_REQUEST_DIR_TO_DEVICE = 0,
130061847f8eSopenharmony_ci
130161847f8eSopenharmony_ci    /**
130261847f8eSopenharmony_ci     * Request for reading data from the device to the host
130361847f8eSopenharmony_ci     *
130461847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
130561847f8eSopenharmony_ci     * @since 9
130661847f8eSopenharmony_ci     */
130761847f8eSopenharmony_ci    USB_REQUEST_DIR_FROM_DEVICE = 0x80
130861847f8eSopenharmony_ci  }
130961847f8eSopenharmony_ci
131061847f8eSopenharmony_ci  /**
131161847f8eSopenharmony_ci   * Enumerates function modes.
131261847f8eSopenharmony_ci   *
131361847f8eSopenharmony_ci   * @enum { number }
131461847f8eSopenharmony_ci   * @syscap SystemCapability.USB.USBManager
131561847f8eSopenharmony_ci   * @systemapi
131661847f8eSopenharmony_ci   * @since 9
131761847f8eSopenharmony_ci   */
131861847f8eSopenharmony_ci  export enum FunctionType {
131961847f8eSopenharmony_ci    /**
132061847f8eSopenharmony_ci     * None
132161847f8eSopenharmony_ci     *
132261847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
132361847f8eSopenharmony_ci     * @systemapi
132461847f8eSopenharmony_ci     * @since 9
132561847f8eSopenharmony_ci     */
132661847f8eSopenharmony_ci    NONE = 0,
132761847f8eSopenharmony_ci
132861847f8eSopenharmony_ci    /**
132961847f8eSopenharmony_ci     * Serial port device
133061847f8eSopenharmony_ci     *
133161847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
133261847f8eSopenharmony_ci     * @systemapi
133361847f8eSopenharmony_ci     * @since 9
133461847f8eSopenharmony_ci     */
133561847f8eSopenharmony_ci    ACM = 1,
133661847f8eSopenharmony_ci
133761847f8eSopenharmony_ci    /**
133861847f8eSopenharmony_ci     * Ethernet port device
133961847f8eSopenharmony_ci     *
134061847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
134161847f8eSopenharmony_ci     * @systemapi
134261847f8eSopenharmony_ci     * @since 9
134361847f8eSopenharmony_ci     */
134461847f8eSopenharmony_ci    ECM = 2,
134561847f8eSopenharmony_ci
134661847f8eSopenharmony_ci    /**
134761847f8eSopenharmony_ci     * HDC device
134861847f8eSopenharmony_ci     *
134961847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
135061847f8eSopenharmony_ci     * @systemapi
135161847f8eSopenharmony_ci     * @since 9
135261847f8eSopenharmony_ci     */
135361847f8eSopenharmony_ci    HDC = 4,
135461847f8eSopenharmony_ci
135561847f8eSopenharmony_ci    /**
135661847f8eSopenharmony_ci     * MTP device
135761847f8eSopenharmony_ci     *
135861847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
135961847f8eSopenharmony_ci     * @systemapi
136061847f8eSopenharmony_ci     * @since 9
136161847f8eSopenharmony_ci     */
136261847f8eSopenharmony_ci    MTP = 8,
136361847f8eSopenharmony_ci
136461847f8eSopenharmony_ci    /**
136561847f8eSopenharmony_ci     * PTP device
136661847f8eSopenharmony_ci     *
136761847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
136861847f8eSopenharmony_ci     * @systemapi
136961847f8eSopenharmony_ci     * @since 9
137061847f8eSopenharmony_ci     */
137161847f8eSopenharmony_ci    PTP = 16,
137261847f8eSopenharmony_ci
137361847f8eSopenharmony_ci    /**
137461847f8eSopenharmony_ci     * RNDIS device
137561847f8eSopenharmony_ci     *
137661847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
137761847f8eSopenharmony_ci     * @systemapi
137861847f8eSopenharmony_ci     * @since 9
137961847f8eSopenharmony_ci     */
138061847f8eSopenharmony_ci    RNDIS = 32,
138161847f8eSopenharmony_ci
138261847f8eSopenharmony_ci    /**
138361847f8eSopenharmony_ci     * MIDI device
138461847f8eSopenharmony_ci     *
138561847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
138661847f8eSopenharmony_ci     * @systemapi
138761847f8eSopenharmony_ci     * @since 9
138861847f8eSopenharmony_ci     */
138961847f8eSopenharmony_ci    MIDI = 64,
139061847f8eSopenharmony_ci
139161847f8eSopenharmony_ci    /**
139261847f8eSopenharmony_ci     * Audio source device
139361847f8eSopenharmony_ci     *
139461847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
139561847f8eSopenharmony_ci     * @systemapi
139661847f8eSopenharmony_ci     * @since 9
139761847f8eSopenharmony_ci     */
139861847f8eSopenharmony_ci    AUDIO_SOURCE = 128,
139961847f8eSopenharmony_ci
140061847f8eSopenharmony_ci    /**
140161847f8eSopenharmony_ci     * NCM device
140261847f8eSopenharmony_ci     *
140361847f8eSopenharmony_ci     * @syscap SystemCapability.USB.USBManager
140461847f8eSopenharmony_ci     * @systemapi
140561847f8eSopenharmony_ci     * @since 9
140661847f8eSopenharmony_ci     */
140761847f8eSopenharmony_ci    NCM = 256
140861847f8eSopenharmony_ci  }
140961847f8eSopenharmony_ci}
141061847f8eSopenharmony_ci
141161847f8eSopenharmony_ciexport default usbManager;
1412