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 DriverDevelopmentKit
1961847f8eSopenharmony_ci */
2061847f8eSopenharmony_ci
2161847f8eSopenharmony_ciimport type { AsyncCallback } from './@ohos.base';
2261847f8eSopenharmony_ciimport type rpc from './@ohos.rpc';
2361847f8eSopenharmony_ci
2461847f8eSopenharmony_ci/**
2561847f8eSopenharmony_ci * This module provides the capability of manage external device.
2661847f8eSopenharmony_ci *
2761847f8eSopenharmony_ci * @namespace deviceManager
2861847f8eSopenharmony_ci * @syscap SystemCapability.Driver.ExternalDevice
2961847f8eSopenharmony_ci * @since 10
3061847f8eSopenharmony_ci */
3161847f8eSopenharmony_cideclare namespace deviceManager {
3261847f8eSopenharmony_ci  /**
3361847f8eSopenharmony_ci   * Query the external device list.
3461847f8eSopenharmony_ci   *
3561847f8eSopenharmony_ci   * @permission ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
3661847f8eSopenharmony_ci   * @param { number } busType - The bus type of device to be queried.
3761847f8eSopenharmony_ci   * @returns { Array<Readonly<Device>> } External device list.
3861847f8eSopenharmony_ci   * @throws { BusinessError } 201 - The permission check failed.
3961847f8eSopenharmony_ci   * @throws { BusinessError } 401 - The parameter check failed.
4061847f8eSopenharmony_ci   * @throws { BusinessError } 22900001 - ExternalDeviceManager service exception.
4161847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
4261847f8eSopenharmony_ci   * @since 10
4361847f8eSopenharmony_ci   */
4461847f8eSopenharmony_ci  function queryDevices(busType?: number): Array<Readonly<Device>>;
4561847f8eSopenharmony_ci
4661847f8eSopenharmony_ci  /**
4761847f8eSopenharmony_ci   * Bind the device based on the device information returned by queryDevices().
4861847f8eSopenharmony_ci   *
4961847f8eSopenharmony_ci   * @permission ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
5061847f8eSopenharmony_ci   * @param { number } deviceId - Device id on the device list returned by queryDevices().
5161847f8eSopenharmony_ci   * @param { AsyncCallback<number> } onDisconnect - Callback is invoked when device is disconnected after bind
5261847f8eSopenharmony_ci   * success.
5361847f8eSopenharmony_ci   * @param { AsyncCallback<{deviceId: number; remote: rpc.IRemoteObject;}> } callback - Indicates the bind result
5461847f8eSopenharmony_ci   * including device ID and remote object.
5561847f8eSopenharmony_ci   * @throws { BusinessError } 201 - The permission check failed.
5661847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.
5761847f8eSopenharmony_ci   * 3.Parameter verification failed.
5861847f8eSopenharmony_ci   * @throws { BusinessError } 22900001 - ExternalDeviceManager service exception.
5961847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
6061847f8eSopenharmony_ci   * @since 10
6161847f8eSopenharmony_ci   */
6261847f8eSopenharmony_ci  function bindDevice(deviceId: number, onDisconnect: AsyncCallback<number>,
6361847f8eSopenharmony_ci    callback: AsyncCallback<{deviceId: number; remote: rpc.IRemoteObject;}>): void;
6461847f8eSopenharmony_ci
6561847f8eSopenharmony_ci  /**
6661847f8eSopenharmony_ci   * Bind the device based on the device information returned by queryDevices().
6761847f8eSopenharmony_ci   *
6861847f8eSopenharmony_ci   * @permission ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
6961847f8eSopenharmony_ci   * @param { number } deviceId - Device id on the device list returned by queryDevices().
7061847f8eSopenharmony_ci   * @param { AsyncCallback<number> } onDisconnect - Callback is invoked when device is disconnected after bind
7161847f8eSopenharmony_ci   * success.
7261847f8eSopenharmony_ci   * @param { AsyncCallback<RemoteDeviceDriver> } callback - Indicates the bind result including device ID and
7361847f8eSopenharmony_ci   * remote object.
7461847f8eSopenharmony_ci   * @throws { BusinessError } 201 - The permission check failed.
7561847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.
7661847f8eSopenharmony_ci   * 3.Parameter verification failed.
7761847f8eSopenharmony_ci   * @throws { BusinessError } 22900001 - ExternalDeviceManager service exception.
7861847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
7961847f8eSopenharmony_ci   * @since 11
8061847f8eSopenharmony_ci   */
8161847f8eSopenharmony_ci  function bindDeviceDriver(deviceId: number, onDisconnect: AsyncCallback<number>,
8261847f8eSopenharmony_ci    callback: AsyncCallback<RemoteDeviceDriver>): void;
8361847f8eSopenharmony_ci
8461847f8eSopenharmony_ci  /**
8561847f8eSopenharmony_ci   * Bind the device based on the device information returned by queryDevices().
8661847f8eSopenharmony_ci   *
8761847f8eSopenharmony_ci   * @permission ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
8861847f8eSopenharmony_ci   * @param { number } deviceId - Device id on the device list returned by queryDevices().
8961847f8eSopenharmony_ci   * @param { AsyncCallback<number> } onDisconnect - Callback is invoked when device is disconnected after bind
9061847f8eSopenharmony_ci   * success.
9161847f8eSopenharmony_ci   * @returns { Promise<{deviceId: number; remote: rpc.IRemoteObject;}> } Indicates the bind result including device
9261847f8eSopenharmony_ci   * ID and remote object.
9361847f8eSopenharmony_ci   * @throws { BusinessError } 201 - The permission check failed.
9461847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.
9561847f8eSopenharmony_ci   * 3.Parameter verification failed.
9661847f8eSopenharmony_ci   * @throws { BusinessError } 22900001 - ExternalDeviceManager service exception.
9761847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
9861847f8eSopenharmony_ci   * @since 10
9961847f8eSopenharmony_ci   */
10061847f8eSopenharmony_ci  function bindDevice(deviceId: number, onDisconnect: AsyncCallback<number>): Promise<{deviceId: number;
10161847f8eSopenharmony_ci    remote: rpc.IRemoteObject;}>;
10261847f8eSopenharmony_ci
10361847f8eSopenharmony_ci  /**
10461847f8eSopenharmony_ci   * Bind the device based on the device information returned by queryDevices().
10561847f8eSopenharmony_ci   *
10661847f8eSopenharmony_ci   * @permission ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
10761847f8eSopenharmony_ci   * @param { number } deviceId - Device id on the device list returned by queryDevices().
10861847f8eSopenharmony_ci   * @param { AsyncCallback<number> } onDisconnect - Callback is invoked when device is disconnected after bind
10961847f8eSopenharmony_ci   * success.
11061847f8eSopenharmony_ci   * @returns { Promise<RemoteDeviceDriver> } Indicates the bind result including device ID and remote object.
11161847f8eSopenharmony_ci   * @throws { BusinessError } 201 - The permission check failed.
11261847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.
11361847f8eSopenharmony_ci   * 3.Parameter verification failed.
11461847f8eSopenharmony_ci   * @throws { BusinessError } 22900001 - ExternalDeviceManager service exception.
11561847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
11661847f8eSopenharmony_ci   * @since 11
11761847f8eSopenharmony_ci   */
11861847f8eSopenharmony_ci  function bindDeviceDriver(deviceId: number, onDisconnect: AsyncCallback<number>): Promise<RemoteDeviceDriver>;
11961847f8eSopenharmony_ci
12061847f8eSopenharmony_ci  /**
12161847f8eSopenharmony_ci   * Unbind the device based on the device information returned by queryDevices().
12261847f8eSopenharmony_ci   *
12361847f8eSopenharmony_ci   * @permission ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
12461847f8eSopenharmony_ci   * @param { number } deviceId - Device id on the device list returned by queryDevices().
12561847f8eSopenharmony_ci   * @param { AsyncCallback<number> } callback - Indicates the unbind result invoked when unbind is finished.
12661847f8eSopenharmony_ci   * @throws { BusinessError } 201 - The permission check failed.
12761847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.
12861847f8eSopenharmony_ci   * @throws { BusinessError } 22900001 - ExternalDeviceManager service exception.
12961847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
13061847f8eSopenharmony_ci   * @since 10
13161847f8eSopenharmony_ci   */
13261847f8eSopenharmony_ci  function unbindDevice(deviceId: number, callback: AsyncCallback<number>): void;
13361847f8eSopenharmony_ci
13461847f8eSopenharmony_ci  /**
13561847f8eSopenharmony_ci   * Unbind the device based on the device information returned by queryDevices().
13661847f8eSopenharmony_ci   *
13761847f8eSopenharmony_ci   * @permission ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
13861847f8eSopenharmony_ci   * @param { number } deviceId - Device id on the device list returned by queryDevices().
13961847f8eSopenharmony_ci   * @returns { Promise<number> } - Indicates the unbind result invoked when unbind is finished.
14061847f8eSopenharmony_ci   * @throws { BusinessError } 201 - The permission check failed.
14161847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.
14261847f8eSopenharmony_ci   * 3.Parameter verification failed.
14361847f8eSopenharmony_ci   * @throws { BusinessError } 22900001 - ExternalDeviceManager service exception.
14461847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
14561847f8eSopenharmony_ci   * @since 10
14661847f8eSopenharmony_ci   */
14761847f8eSopenharmony_ci  function unbindDevice(deviceId: number): Promise<number>;
14861847f8eSopenharmony_ci
14961847f8eSopenharmony_ci  /**
15061847f8eSopenharmony_ci   * Queries external device information.
15161847f8eSopenharmony_ci   *
15261847f8eSopenharmony_ci   * @permission ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
15361847f8eSopenharmony_ci   * @param { number } deviceId - ID of device to query.
15461847f8eSopenharmony_ci   * @returns { Array<Readonly<DeviceInfo>> } Device information obtained.
15561847f8eSopenharmony_ci   * @throws { BusinessError } 201 - The permission check failed.
15661847f8eSopenharmony_ci   * @throws { BusinessError } 202 - Permission denied. A non-system application cannot call a system API.
15761847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1.Incorrect parameter types.
15861847f8eSopenharmony_ci   * @throws { BusinessError } 26300001 - ExternalDeviceManager service exception.
15961847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
16061847f8eSopenharmony_ci   * @systemapi
16161847f8eSopenharmony_ci   * @since 12
16261847f8eSopenharmony_ci   */
16361847f8eSopenharmony_ci  function queryDeviceInfo(deviceId?: number): Array<Readonly<DeviceInfo>>;
16461847f8eSopenharmony_ci
16561847f8eSopenharmony_ci  /**
16661847f8eSopenharmony_ci   * Queries driver information.
16761847f8eSopenharmony_ci   *
16861847f8eSopenharmony_ci   * @permission ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
16961847f8eSopenharmony_ci   * @param { string } driverUid - Unique identifier of driver query.
17061847f8eSopenharmony_ci   * @returns { Array<Readonly<DriverInfo>> } Driver information obtained.
17161847f8eSopenharmony_ci   * @throws { BusinessError } 201 - The permission check failed.
17261847f8eSopenharmony_ci   * @throws { BusinessError } 202 - Permission denied. A non-system application cannot call a system API.
17361847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1.Incorrect parameter types.
17461847f8eSopenharmony_ci   * @throws { BusinessError } 26300001 - ExternalDeviceManager service exception.
17561847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
17661847f8eSopenharmony_ci   * @systemapi
17761847f8eSopenharmony_ci   * @since 12
17861847f8eSopenharmony_ci   */
17961847f8eSopenharmony_ci  function queryDriverInfo(driverUid?: string): Array<Readonly<DriverInfo>>;
18061847f8eSopenharmony_ci
18161847f8eSopenharmony_ci  /**
18261847f8eSopenharmony_ci   * Enumerates the bus types.
18361847f8eSopenharmony_ci   *
18461847f8eSopenharmony_ci   * @enum { number }
18561847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
18661847f8eSopenharmony_ci   * @since 10
18761847f8eSopenharmony_ci   */
18861847f8eSopenharmony_ci  export enum BusType {
18961847f8eSopenharmony_ci    /**
19061847f8eSopenharmony_ci     * USB device type
19161847f8eSopenharmony_ci     *
19261847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
19361847f8eSopenharmony_ci     * @since 10
19461847f8eSopenharmony_ci     */
19561847f8eSopenharmony_ci    USB = 1,
19661847f8eSopenharmony_ci  }
19761847f8eSopenharmony_ci
19861847f8eSopenharmony_ci  /**
19961847f8eSopenharmony_ci   * Represents a device.
20061847f8eSopenharmony_ci   *
20161847f8eSopenharmony_ci   * @typedef Device
20261847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
20361847f8eSopenharmony_ci   * @since 10
20461847f8eSopenharmony_ci   */
20561847f8eSopenharmony_ci  interface Device {
20661847f8eSopenharmony_ci    /**
20761847f8eSopenharmony_ci     * Bus type of the device.
20861847f8eSopenharmony_ci     *
20961847f8eSopenharmony_ci     * @type { BusType }
21061847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
21161847f8eSopenharmony_ci     * @since 10
21261847f8eSopenharmony_ci     */
21361847f8eSopenharmony_ci    busType: BusType;
21461847f8eSopenharmony_ci
21561847f8eSopenharmony_ci    /**
21661847f8eSopenharmony_ci     * Device ID.
21761847f8eSopenharmony_ci     *
21861847f8eSopenharmony_ci     * @type { number }
21961847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
22061847f8eSopenharmony_ci     * @since 10
22161847f8eSopenharmony_ci     */
22261847f8eSopenharmony_ci    deviceId: number;
22361847f8eSopenharmony_ci
22461847f8eSopenharmony_ci    /**
22561847f8eSopenharmony_ci     * Description of the device.
22661847f8eSopenharmony_ci     *
22761847f8eSopenharmony_ci     * @type { string }
22861847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
22961847f8eSopenharmony_ci     * @since 10
23061847f8eSopenharmony_ci     */
23161847f8eSopenharmony_ci    description: string;
23261847f8eSopenharmony_ci  }
23361847f8eSopenharmony_ci
23461847f8eSopenharmony_ci  /**
23561847f8eSopenharmony_ci   * Represents a USB device.
23661847f8eSopenharmony_ci   *
23761847f8eSopenharmony_ci   * @typedef USBDevice
23861847f8eSopenharmony_ci   * @extends Device
23961847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
24061847f8eSopenharmony_ci   * @since 10
24161847f8eSopenharmony_ci   */
24261847f8eSopenharmony_ci  interface USBDevice extends Device {
24361847f8eSopenharmony_ci    /**
24461847f8eSopenharmony_ci     * Vendor ID.
24561847f8eSopenharmony_ci     *
24661847f8eSopenharmony_ci     * @type { number }
24761847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
24861847f8eSopenharmony_ci     * @since 10
24961847f8eSopenharmony_ci     */
25061847f8eSopenharmony_ci    vendorId: number;
25161847f8eSopenharmony_ci
25261847f8eSopenharmony_ci    /**
25361847f8eSopenharmony_ci     * Product ID.
25461847f8eSopenharmony_ci     *
25561847f8eSopenharmony_ci     * @type { number }
25661847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
25761847f8eSopenharmony_ci     * @since 10
25861847f8eSopenharmony_ci     */
25961847f8eSopenharmony_ci    productId: number;
26061847f8eSopenharmony_ci  }
26161847f8eSopenharmony_ci  
26261847f8eSopenharmony_ci  /**
26361847f8eSopenharmony_ci   * Driver of the remote device bound with <b>deviceId</b>.
26461847f8eSopenharmony_ci   *
26561847f8eSopenharmony_ci   * @typedef RemoteDeviceDriver
26661847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
26761847f8eSopenharmony_ci   * @since 11
26861847f8eSopenharmony_ci   */
26961847f8eSopenharmony_ci  interface RemoteDeviceDriver {
27061847f8eSopenharmony_ci    /**
27161847f8eSopenharmony_ci     * Device ID.
27261847f8eSopenharmony_ci     *
27361847f8eSopenharmony_ci     * @type { number }
27461847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
27561847f8eSopenharmony_ci     * @since 11
27661847f8eSopenharmony_ci     */
27761847f8eSopenharmony_ci    deviceId: number;
27861847f8eSopenharmony_ci
27961847f8eSopenharmony_ci    /**
28061847f8eSopenharmony_ci     * Remote driver object.
28161847f8eSopenharmony_ci     *
28261847f8eSopenharmony_ci     * @type { rpc.IRemoteObject }
28361847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
28461847f8eSopenharmony_ci     * @since 11
28561847f8eSopenharmony_ci     */
28661847f8eSopenharmony_ci    remote: rpc.IRemoteObject;
28761847f8eSopenharmony_ci  }
28861847f8eSopenharmony_ci
28961847f8eSopenharmony_ci  /**
29061847f8eSopenharmony_ci   * Represents information about a device interface descriptor.
29161847f8eSopenharmony_ci   *
29261847f8eSopenharmony_ci   * @typedef USBInterfaceDesc
29361847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
29461847f8eSopenharmony_ci   * @systemapi
29561847f8eSopenharmony_ci   * @since 12
29661847f8eSopenharmony_ci   */
29761847f8eSopenharmony_ci  interface USBInterfaceDesc {
29861847f8eSopenharmony_ci    /**
29961847f8eSopenharmony_ci     * Interface number.
30061847f8eSopenharmony_ci     *
30161847f8eSopenharmony_ci     * @type { number }
30261847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
30361847f8eSopenharmony_ci     * @systemapi
30461847f8eSopenharmony_ci     * @since 12
30561847f8eSopenharmony_ci     */
30661847f8eSopenharmony_ci    bInterfaceNumber: number;
30761847f8eSopenharmony_ci
30861847f8eSopenharmony_ci    /**
30961847f8eSopenharmony_ci     * Interface class code.
31061847f8eSopenharmony_ci     *
31161847f8eSopenharmony_ci     * @type { number }
31261847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
31361847f8eSopenharmony_ci     * @systemapi
31461847f8eSopenharmony_ci     * @since 12
31561847f8eSopenharmony_ci     */
31661847f8eSopenharmony_ci    bClass: number;
31761847f8eSopenharmony_ci
31861847f8eSopenharmony_ci    /**
31961847f8eSopenharmony_ci     * Interface subclass code.
32061847f8eSopenharmony_ci     *
32161847f8eSopenharmony_ci     * @type { number }
32261847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
32361847f8eSopenharmony_ci     * @systemapi
32461847f8eSopenharmony_ci     * @since 12
32561847f8eSopenharmony_ci     */
32661847f8eSopenharmony_ci    bSubClass: number;
32761847f8eSopenharmony_ci
32861847f8eSopenharmony_ci    /**
32961847f8eSopenharmony_ci     * Interface protocol.
33061847f8eSopenharmony_ci     *
33161847f8eSopenharmony_ci     * @type { number }
33261847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
33361847f8eSopenharmony_ci     * @systemapi
33461847f8eSopenharmony_ci     * @since 12
33561847f8eSopenharmony_ci     */
33661847f8eSopenharmony_ci    bProtocol: number;
33761847f8eSopenharmony_ci  }
33861847f8eSopenharmony_ci
33961847f8eSopenharmony_ci
34061847f8eSopenharmony_ci  /**
34161847f8eSopenharmony_ci   * Represents the device information.
34261847f8eSopenharmony_ci   *
34361847f8eSopenharmony_ci   * @typedef DeviceInfo
34461847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
34561847f8eSopenharmony_ci   * @systemapi
34661847f8eSopenharmony_ci   * @since 12
34761847f8eSopenharmony_ci   */
34861847f8eSopenharmony_ci  interface DeviceInfo {
34961847f8eSopenharmony_ci    /**
35061847f8eSopenharmony_ci     * Device ID.
35161847f8eSopenharmony_ci     *
35261847f8eSopenharmony_ci     * @type { number }
35361847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
35461847f8eSopenharmony_ci     * @systemapi
35561847f8eSopenharmony_ci     * @since 12
35661847f8eSopenharmony_ci     */
35761847f8eSopenharmony_ci    deviceId: number;
35861847f8eSopenharmony_ci
35961847f8eSopenharmony_ci    /**
36061847f8eSopenharmony_ci     * Whether the device has a matched driver.
36161847f8eSopenharmony_ci     *
36261847f8eSopenharmony_ci     * @type { boolean }
36361847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
36461847f8eSopenharmony_ci     * @systemapi
36561847f8eSopenharmony_ci     * @since 12
36661847f8eSopenharmony_ci     */
36761847f8eSopenharmony_ci    isDriverMatched: boolean;
36861847f8eSopenharmony_ci
36961847f8eSopenharmony_ci    /**
37061847f8eSopenharmony_ci     * Unique identifier of the driver.
37161847f8eSopenharmony_ci     *
37261847f8eSopenharmony_ci     * @type { ?string }
37361847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
37461847f8eSopenharmony_ci     * @systemapi
37561847f8eSopenharmony_ci     * @since 12
37661847f8eSopenharmony_ci     */
37761847f8eSopenharmony_ci    driverUid?: string;
37861847f8eSopenharmony_ci  }
37961847f8eSopenharmony_ci
38061847f8eSopenharmony_ci  /**
38161847f8eSopenharmony_ci   * Represents the USB device information.
38261847f8eSopenharmony_ci   *
38361847f8eSopenharmony_ci   * @typedef USBDeviceInfo
38461847f8eSopenharmony_ci   * @extends DeviceInfo
38561847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
38661847f8eSopenharmony_ci   * @systemapi
38761847f8eSopenharmony_ci   * @since 12
38861847f8eSopenharmony_ci   */
38961847f8eSopenharmony_ci  interface USBDeviceInfo extends DeviceInfo {
39061847f8eSopenharmony_ci    /**
39161847f8eSopenharmony_ci     * Vendor ID.
39261847f8eSopenharmony_ci     *
39361847f8eSopenharmony_ci     * @type { number }
39461847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
39561847f8eSopenharmony_ci     * @systemapi
39661847f8eSopenharmony_ci     * @since 12
39761847f8eSopenharmony_ci     */
39861847f8eSopenharmony_ci    vendorId: number;
39961847f8eSopenharmony_ci
40061847f8eSopenharmony_ci    /**
40161847f8eSopenharmony_ci     * Product ID.
40261847f8eSopenharmony_ci     *
40361847f8eSopenharmony_ci     * @type { number }
40461847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
40561847f8eSopenharmony_ci     * @systemapi
40661847f8eSopenharmony_ci     * @since 12
40761847f8eSopenharmony_ci     */
40861847f8eSopenharmony_ci    productId: number;
40961847f8eSopenharmony_ci
41061847f8eSopenharmony_ci    /**
41161847f8eSopenharmony_ci     * List of USB interface descriptors.
41261847f8eSopenharmony_ci     *
41361847f8eSopenharmony_ci     * @type { Array<Readonly<USBInterfaceDesc>> }
41461847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
41561847f8eSopenharmony_ci     * @systemapi
41661847f8eSopenharmony_ci     * @since 12
41761847f8eSopenharmony_ci     */
41861847f8eSopenharmony_ci    interfaceDescList: Array<Readonly<USBInterfaceDesc>>;
41961847f8eSopenharmony_ci  }
42061847f8eSopenharmony_ci
42161847f8eSopenharmony_ci  /**
42261847f8eSopenharmony_ci   * Represents the driver information.
42361847f8eSopenharmony_ci   *
42461847f8eSopenharmony_ci   * @typedef DriverInfo
42561847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
42661847f8eSopenharmony_ci   * @systemapi
42761847f8eSopenharmony_ci   * @since 12
42861847f8eSopenharmony_ci   */
42961847f8eSopenharmony_ci  interface DriverInfo {
43061847f8eSopenharmony_ci    /**
43161847f8eSopenharmony_ci     * Bus type of the device.
43261847f8eSopenharmony_ci     *
43361847f8eSopenharmony_ci     * @type { BusType }
43461847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
43561847f8eSopenharmony_ci     * @systemapi
43661847f8eSopenharmony_ci     * @since 12
43761847f8eSopenharmony_ci     */
43861847f8eSopenharmony_ci    busType: BusType;
43961847f8eSopenharmony_ci
44061847f8eSopenharmony_ci    /**
44161847f8eSopenharmony_ci     * Unique identifier of the driver.
44261847f8eSopenharmony_ci     *
44361847f8eSopenharmony_ci     * @type { string }
44461847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
44561847f8eSopenharmony_ci     * @systemapi
44661847f8eSopenharmony_ci     * @since 12
44761847f8eSopenharmony_ci     */
44861847f8eSopenharmony_ci    driverUid: string;
44961847f8eSopenharmony_ci
45061847f8eSopenharmony_ci    /**
45161847f8eSopenharmony_ci     * Driver name.
45261847f8eSopenharmony_ci     *
45361847f8eSopenharmony_ci     * @type { string }
45461847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
45561847f8eSopenharmony_ci     * @systemapi
45661847f8eSopenharmony_ci     * @since 12
45761847f8eSopenharmony_ci     */
45861847f8eSopenharmony_ci    driverName: string;
45961847f8eSopenharmony_ci
46061847f8eSopenharmony_ci    /**
46161847f8eSopenharmony_ci     * Driver version.
46261847f8eSopenharmony_ci     *
46361847f8eSopenharmony_ci     * @type { string }
46461847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
46561847f8eSopenharmony_ci     * @systemapi
46661847f8eSopenharmony_ci     * @since 12
46761847f8eSopenharmony_ci     */
46861847f8eSopenharmony_ci    driverVersion: string;
46961847f8eSopenharmony_ci
47061847f8eSopenharmony_ci    /**
47161847f8eSopenharmony_ci     * Driver size.
47261847f8eSopenharmony_ci     *
47361847f8eSopenharmony_ci     * @type { string }
47461847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
47561847f8eSopenharmony_ci     * @systemapi
47661847f8eSopenharmony_ci     * @since 12
47761847f8eSopenharmony_ci     */
47861847f8eSopenharmony_ci    driverSize: string;
47961847f8eSopenharmony_ci
48061847f8eSopenharmony_ci    /**
48161847f8eSopenharmony_ci     * Driver description.
48261847f8eSopenharmony_ci     *
48361847f8eSopenharmony_ci     * @type { string }
48461847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
48561847f8eSopenharmony_ci     * @systemapi
48661847f8eSopenharmony_ci     * @since 12
48761847f8eSopenharmony_ci     */
48861847f8eSopenharmony_ci    description: string;
48961847f8eSopenharmony_ci  }
49061847f8eSopenharmony_ci
49161847f8eSopenharmony_ci  /**
49261847f8eSopenharmony_ci   * Represents the USB driver information.
49361847f8eSopenharmony_ci   *
49461847f8eSopenharmony_ci   * @typedef USBDriverInfo
49561847f8eSopenharmony_ci   * @extends DriverInfo
49661847f8eSopenharmony_ci   * @syscap SystemCapability.Driver.ExternalDevice
49761847f8eSopenharmony_ci   * @systemapi
49861847f8eSopenharmony_ci   * @since 12
49961847f8eSopenharmony_ci   */
50061847f8eSopenharmony_ci  interface USBDriverInfo extends DriverInfo {
50161847f8eSopenharmony_ci    /**
50261847f8eSopenharmony_ci     * IDs of supported products.
50361847f8eSopenharmony_ci     *
50461847f8eSopenharmony_ci     * @type { Array<number> }
50561847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
50661847f8eSopenharmony_ci     * @systemapi
50761847f8eSopenharmony_ci     * @since 12
50861847f8eSopenharmony_ci     */
50961847f8eSopenharmony_ci    productIdList: Array<number>;
51061847f8eSopenharmony_ci
51161847f8eSopenharmony_ci    /**
51261847f8eSopenharmony_ci     * IDs of supported vendors.
51361847f8eSopenharmony_ci     *
51461847f8eSopenharmony_ci     * @type { Array<number> }
51561847f8eSopenharmony_ci     * @syscap SystemCapability.Driver.ExternalDevice
51661847f8eSopenharmony_ci     * @systemapi
51761847f8eSopenharmony_ci     * @since 12
51861847f8eSopenharmony_ci     */
51961847f8eSopenharmony_ci    vendorIdList: Array<number>;
52061847f8eSopenharmony_ci  }
52161847f8eSopenharmony_ci}
52261847f8eSopenharmony_ci
52361847f8eSopenharmony_ciexport default deviceManager;
524