• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.usbManager (USB管理)
2
3本模块主要提供管理USB设备的相关功能,包括主设备上查询USB设备列表、批量数据传输、控制命令传输、权限控制等;从设备上端口管理、功能切换及查询等。
4
5>  **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```ts
12import { usbManager } from '@kit.BasicServicesKit';
13```
14
15## usbManager.getDevices
16
17getDevices(): Array<Readonly<USBDevice>>
18
19获取接入主设备的USB设备列表。如果没有设备接入,那么将会返回一个空的列表。开发者模式关闭时,如果没有设备接入,接口可能返回`undefined`,注意需要对接口返回值做判空处理。
20
21**系统能力:**  SystemCapability.USB.USBManager
22
23**返回值:**
24
25| 类型                                                   | 说明      |
26| ---------------------------------------------------- | ------- |
27| Array<Readonly<[USBDevice](#usbdevice)>> | 设备信息列表。 |
28
29**示例:**
30
31```ts
32let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
33console.log(`devicesList = ${devicesList}`);
34/*
35devicesList 返回的数据结构,此处提供一个简单的示例,如下
36[
37  {
38    name: "1-1",
39    serial: "",
40    manufacturerName: "",
41    productName: "",
42    version: "",
43    vendorId: 7531,
44    productId: 2,
45    clazz: 9,
46    subClass: 0,
47    protocol: 1,
48    devAddress: 1,
49    busNum: 1,
50    configs: [
51      {
52        id: 1,
53        attributes: 224,
54        isRemoteWakeup: true,
55        isSelfPowered: true,
56        maxPower: 0,
57        name: "1-1",
58        interfaces: [
59          {
60            id: 0,
61            protocol: 0,
62            clazz: 9,
63            subClass: 0,
64            alternateSetting: 0,
65            name: "1-1",
66            endpoints: [
67              {
68                address: 129,
69                attributes: 3,
70                interval: 12,
71                maxPacketSize: 4,
72                direction: 128,
73                number: 1,
74                type: 3,
75                interfaceId: 0,
76              },
77            ],
78          },
79        ],
80      },
81    ],
82  },
83]
84*/
85```
86
87## usbManager.connectDevice
88
89connectDevice(device: USBDevice): Readonly&lt;USBDevicePipe&gt;
90
91根据getDevices()返回的设备信息打开USB设备。如果USB服务异常,可能返回`undefined`,注意需要对接口返回值做判空处理。
92
931. 需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备信息以及device;
942. 调用[usbManager.requestRight](#usbmanagerrequestright)请求使用该设备的权限。
95
96> **说明:**
97>
98> 单次批量传输的传输数据总量(包括pipe、endpoint、buffer、timeout)请控制在200KB以下。
99
100**系统能力:**  SystemCapability.USB.USBManager
101
102**参数:**
103
104| 参数名 | 类型 | 必填 | 说明 |
105| -------- | -------- | -------- | ---------------- |
106| device | [USBDevice](#usbdevice) | 是 | USB设备信息,用getDevices获取的busNum和devAddress确定设备,当前其他属性不做处理。 |
107
108**返回值:**
109
110| 类型 | 说明 |
111| -------- | -------- |
112| Readonly&lt;[USBDevicePipe](#usbdevicepipe)&gt; | 指定的传输通道对象。 |
113
114**错误码:**
115
116以下错误码的详细介绍参见[USB服务错误码](errorcode-usb.md)。
117
118| 错误码ID | 错误信息                                                     |
119| -------- | ------------------------------------------------------------ |
120| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
121| 14400001 | Permission denied. Call requestRight to get the permission first. |
122
123**示例:**
124
125```ts
126let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
127if (devicesList.length == 0) {
128  console.log(`device list is empty`);
129}
130
131let device: usbManager.USBDevice = devicesList[0];
132usbManager.requestRight(device.name);
133let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device);
134console.log(`devicepipe = ${devicepipe}`);
135```
136
137## usbManager.hasRight
138
139hasRight(deviceName: string): boolean
140
141判断是否有权访问该设备。
142
143如果“使用者”(如各种App或系统)有权访问设备则返回true;无权访问设备则返回false。
144
145**系统能力:**  SystemCapability.USB.USBManager
146
147**参数:**
148
149| 参数名 | 类型 | 必填 | 说明 |
150| -------- | -------- | -------- | -------- |
151| deviceName | string | 是 | 设备名称,来自getDevices获取的设备列表。 |
152
153**错误码:**
154
155以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
156
157| 错误码ID | 错误信息                                                     |
158| -------- | ------------------------------------------------------------ |
159| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
160
161**返回值:**
162
163| 类型 | 说明 |
164| -------- | -------- |
165| boolean | true表示有访问设备的权限,false表示没有访问设备的权限。调用失败返回其他错误码如下:<br>- 88080385:接口未初始化。<br>- 88080492:写入服务数据包过程发生错误。<br>- 88080493:读取服务数据包过程发送错误。|
166
167**示例:**
168
169```ts
170let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
171if (devicesList.length == 0) {
172  console.log(`device list is empty`);
173}
174
175let device: usbManager.USBDevice = devicesList[0];
176usbManager.requestRight(device.name);
177let right: boolean = usbManager.hasRight(device.name);
178console.log(`${right}`);
179```
180
181## usbManager.requestRight
182
183requestRight(deviceName: string): Promise&lt;boolean&gt;
184
185请求软件包的临时权限以访问设备。使用Promise异步回调。系统应用默认拥有访问设备权限,无需调用此接口申请。
186
187**系统能力:**  SystemCapability.USB.USBManager
188
189**参数:**
190
191| 参数名 | 类型 | 必填 | 说明 |
192| -------- | -------- | -------- | -------- |
193| deviceName | string | 是 | 设备名称,来自getDevices获取的设备列表。|
194
195**错误码:**
196
197以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
198
199| 错误码ID | 错误信息                                                     |
200| -------- | ------------------------------------------------------------ |
201| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
202
203**返回值:**
204
205| 类型 | 说明 |
206| -------- | -------- |
207| Promise&lt;boolean&gt; | Promise对象,返回临时权限的申请结果。返回true表示临时权限申请成功;返回false则表示临时权限申请失败。调用失败返回其他错误码如下:<br>- 88080385:接口未初始化。<br>- 88080392:写入接口数据包过程发生错误。<br>- 88080393:读取接口数据包过程发送错误。<br>- 88080492:写入服务数据包过程发生错误。<br>- 88080493:读取服务数据包过程发生错误。<br>- 88080497:服务内部逻辑执行发生错误。|
208
209**示例:**
210
211```ts
212let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
213if (devicesList.length == 0) {
214  console.log(`device list is empty`);
215}
216
217let device: usbManager.USBDevice = devicesList[0];
218usbManager.requestRight(device.name).then(ret => {
219  console.log(`requestRight = ${ret}`);
220});
221```
222
223## usbManager.removeRight
224
225removeRight(deviceName: string): boolean
226
227移除软件包访问设备的权限。系统应用默认拥有访问设备权限,调用此接口不会产生影响。
228
229**系统能力:**  SystemCapability.USB.USBManager
230
231**参数:**
232
233| 参数名 | 类型 | 必填 | 说明 |
234| -------- | -------- | -------- | -------- |
235| deviceName | string | 是 | 设备名称,来自getDevices获取的设备列表。|
236
237**错误码:**
238
239以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
240
241| 错误码ID | 错误信息                                                     |
242| -------- | ------------------------------------------------------------ |
243| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
244
245**返回值:**
246
247| 类型 | 说明 |
248| -------- | -------- |
249| boolean | 返回权限移除结果。返回true表示权限移除成功;返回false则表示权限移除失败。调用失败返回其他错误码如下:<br>- 88080382:接口操作过程中遇到无效值或参数。<br>- 88080385:接口未初始化。<br>- 88080392:写入接口数据包过程发生错误。<br>- 88080393:读取接口数据包过程发送错误。<br>- 88080492:写入服务数据包过程发生错误。<br>- 88080493:读取服务数据包过程发生错误。<br>- 88080497:服务内部逻辑执行发生错误。|
250
251**示例:**
252
253```ts
254let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
255if (devicesList.length == 0) {
256  console.log(`device list is empty`);
257}
258
259let device: usbManager.USBDevice = devicesList[0];
260if (usbManager.removeRight(device.name)) {
261  console.log(`Succeed in removing right`);
262}
263```
264
265## usbManager.claimInterface
266
267claimInterface(pipe: USBDevicePipe, iface: USBInterface, force ?: boolean): number
268
269注册通信接口。
270
2711. 需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备信息以及interfaces;
2722. 调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;
2733. 调用[usbManager.connectDevice](#usbmanagerconnectdevice)接口得到devicepipe作为参数。
274
275**系统能力:**  SystemCapability.USB.USBManager
276
277**参数:**
278
279| 参数名 | 类型 | 必填 | 说明 |
280| -------- | -------- | -------- | -------- |
281| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址,需要调用connectDevice获取。|
282| iface | [USBInterface](#usbinterface) | 是 | 用于确定需要获取接口的索引,需要调用getDevices获取设备信息并通过id确定唯一接口。|
283| force | boolean | 否 | 可选参数,是否强制获取。默认值为false&nbsp;,表示不强制获取,用户按需选择。|
284
285**错误码:**
286
287以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
288
289| 错误码ID | 错误信息                                                     |
290| -------- | ------------------------------------------------------------ |
291| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
292
293**返回值:**
294
295| 类型 | 说明 |
296| -------- | -------- |
297| number | 注册通信接口成功返回0;注册通信接口失败返回其他错误码如下:<br>- 63:数据量超过预期的最大值。<br>- 88080385:接口未初始化。<br>- 88080482:服务过程中遇到无效值或参数。<br>- 88080484:没有权限。<br>- 88080492:写入服务数据包过程发生错误。<br>- 88080493:读取服务数据包过程发生错误。<br>- 88080497:服务内部逻辑执行发生错误。<br>- -1:调用底层接口失败。|
298
299**示例:**
300
301```ts
302let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
303if (devicesList.length == 0) {
304  console.log(`device list is empty`);
305}
306
307let device: usbManager.USBDevice = devicesList[0];
308usbManager.requestRight(device.name);
309let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device);
310let interfaces: usbManager.USBInterface = device.configs[0].interfaces[0];
311let ret: number= usbManager.claimInterface(devicepipe, interfaces);
312console.log(`claimInterface = ${ret}`);
313```
314
315## usbManager.releaseInterface
316
317releaseInterface(pipe: USBDevicePipe, iface: USBInterface): number
318
319释放注册过的通信接口。
320
321需要调用[usbManager.claimInterface](#usbmanagerclaiminterface)先获取接口,才能使用此方法释放接口。
322
323**系统能力:**  SystemCapability.USB.USBManager
324
325**参数:**
326
327| 参数名 | 类型 | 必填 | 说明 |
328| -------- | -------- | -------- | -------- |
329| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址,需要调用connectDevice获取。|
330| iface | [USBInterface](#usbinterface) | 是 | 用于确定需要释放接口的索引,需要调用getDevices获取设备信息并通过id确定唯一接口。|
331
332**错误码:**
333
334以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
335
336| 错误码ID | 错误信息                                                     |
337| -------- | ------------------------------------------------------------ |
338| 401      | Parameter error.Possible causes:1.Mandatory parameters are left unspecified.2.Incorrect parameter types. |
339
340**返回值:**
341
342| 类型 | 说明 |
343| -------- | -------- |
344| number | 释放接口成功返回0;释放接口失败返回其他错误码如下:<br>- 63:数据量超过预期的最大值。<br>- 88080381:无效的接口操作。<br>- 88080385:接口未初始化。<br>- 88080482:服务过程中遇到无效值或参数。<br>- 88080484:没有权限。<br>- 88080492:写入服务数据包过程发生错误。<br>- 88080493:读取服务数据包过程发生错误。<br>- 88080497:服务内部逻辑执行发生错误。<br>- -1:调用底层接口失败。|
345
346**示例:**
347
348```ts
349let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
350if (devicesList.length == 0) {
351  console.log(`device list is empty`);
352}
353
354let device: usbManager.USBDevice = devicesList[0];
355usbManager.requestRight(device.name);
356let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device);
357let interfaces: usbManager.USBInterface = device.configs[0].interfaces[0];
358let ret: number = usbManager.claimInterface(devicepipe, interfaces);
359ret = usbManager.releaseInterface(devicepipe, interfaces);
360console.log(`releaseInterface = ${ret}`);
361```
362
363## usbManager.setConfiguration
364
365setConfiguration(pipe: USBDevicePipe, config: USBConfiguration): number
366
367设置设备配置。
368
3691. 需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备信息以及config;
3702. 调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;
3713. 调用[usbManager.connectDevice](#usbmanagerconnectdevice)得到devicepipe作为参数。
372
373**系统能力:**  SystemCapability.USB.USBManager
374
375**参数:**
376
377| 参数名 | 类型 | 必填 | 说明 |
378| -------- | -------- | -------- | -------- |
379| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址,需要调用connectDevice获取。|
380| config | [USBConfiguration](#usbconfiguration) | 是 | 用于确定需要设置的配置,需要调用getDevices获取设备信息并通过id用于确定唯一设置。|
381
382**错误码:**
383
384以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
385
386| 错误码ID | 错误信息                                                     |
387| -------- | ------------------------------------------------------------ |
388| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
389
390**返回值:**
391
392| 类型 | 说明 |
393| -------- | -------- |
394| number | 设置设备配置成功返回0;设置设备配置失败返回其他错误码如下:<br>- 63:数据量超过预期的最大值。<br>- 88080385:接口未初始化。<br>- 88080482:服务过程中遇到无效值或参数。<br>- 88080484:没有权限。<br>- 88080492:写入服务数据包过程发生错误。<br>- 88080493:读取服务数据包过程发生错误。<br>- 88080497:服务内部逻辑执行发生错误。<br>- -1:调用底层接口失败。<br>- -17:I/O失败。|
395
396**示例:**
397
398```ts
399let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
400if (devicesList.length == 0) {
401  console.log(`device list is empty`);
402}
403
404let device: usbManager.USBDevice = devicesList[0];
405usbManager.requestRight(device.name);
406let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device);
407let config: usbManager.USBConfiguration = device.configs[0];
408let ret: number= usbManager.setConfiguration(devicepipe, config);
409console.log(`setConfiguration = ${ret}`);
410```
411
412## usbManager.setInterface
413
414setInterface(pipe: USBDevicePipe, iface: USBInterface): number
415
416设置设备接口。
417
4181. 需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备列表以及interfaces;
4192. 调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;
4203. 调用[usbManager.connectDevice](#usbmanagerconnectdevice)得到devicepipe作为参数;
4214. 调用[usbManager.claimInterface](#usbmanagerclaiminterface)注册通信接口。
422
423**系统能力:**  SystemCapability.USB.USBManager
424
425**参数:**
426
427| 参数名 | 类型 | 必填 | 说明 |
428| -------- | -------- | -------- | -------- |
429| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址,需要调用connectDevice获取。|
430| iface | [USBInterface](#usbinterface)   | 是 | 用于确定需要设置的接口,需要调用getDevices获取设备信息并通过id和alternateSetting确定唯一接口。|
431
432**错误码:**
433
434以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
435
436| 错误码ID | 错误信息                                                     |
437| -------- | ------------------------------------------------------------ |
438| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
439
440**返回值:**
441
442| 类型 | 说明 |
443| -------- | -------- |
444| number | 设置设备接口成功返回0;设置设备接口失败返回其他错误码如下:<br>- 63:数据量超过预期的最大值。<br>- 88080385:接口未初始化。<br>- 88080482:服务过程中遇到无效值或参数。<br>- 88080484:没有权限。<br>- 88080492:写入服务数据包过程发生错误。<br>- 88080493:读取服务数据包过程发生错误。<br>- 88080497:服务内部逻辑执行发生错误。<br>- -1:调用底层接口失败。|
445
446**示例:**
447
448```ts
449let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
450if (devicesList.length == 0) {
451  console.log(`device list is empty`);
452}
453
454let device: usbManager.USBDevice = devicesList[0];
455usbManager.requestRight(device.name);
456let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device);
457let interfaces: usbManager.USBInterface = device.configs[0].interfaces[0];
458let ret: number = usbManager.claimInterface(devicepipe, interfaces);
459ret = usbManager.setInterface(devicepipe, interfaces);
460console.log(`setInterface = ${ret}`);
461```
462
463## usbManager.getRawDescriptor
464
465getRawDescriptor(pipe: USBDevicePipe): Uint8Array
466
467获取原始的USB描述符。如果USB服务异常,可能返回`undefined`,注意需要对接口返回值做判空处理。
468
4691. 需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备列表;
4702. 调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;
4713. 调用[usbManager.connectDevice](#usbmanagerconnectdevice)接口得到devicepipe作为参数。
472
473**系统能力:**  SystemCapability.USB.USBManager
474
475**参数:**
476
477| 参数名 | 类型 | 必填 | 说明 |
478| -------- | -------- | -------- | -------- |
479| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址,需要调用connectDevice获取。|
480
481**错误码:**
482
483以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
484
485| 错误码ID | 错误信息                                                     |
486| -------- | ------------------------------------------------------------ |
487| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
488
489**返回值:**
490
491| 类型 | 说明 |
492| -------- | -------- |
493| Uint8Array | 返回获取的原始数据;失败返回undefined。 |
494
495**示例:**
496
497```ts
498let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
499if (devicesList.length == 0) {
500  console.log(`device list is empty`);
501}
502
503usbManager.requestRight(devicesList[0].name);
504let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]);
505let ret: Uint8Array = usbManager.getRawDescriptor(devicepipe);
506```
507
508## usbManager.getFileDescriptor
509
510getFileDescriptor(pipe: USBDevicePipe): number
511
512获取文件描述符。
513
5141. 需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备列表;
5152. 调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;
5163. 调用[usbManager.connectDevice](#usbmanagerconnectdevice)接口得到devicepipe作为参数。
517
518**系统能力:**  SystemCapability.USB.USBManager
519
520**参数:**
521
522| 参数名 | 类型 | 必填 | 说明 |
523| -------- | -------- | -------- | -------- |
524| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址,需要调用connectDevice获取。|
525
526**错误码:**
527
528以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
529
530| 错误码ID | 错误信息                                                     |
531| -------- | ------------------------------------------------------------ |
532| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
533
534**返回值:**
535
536| 类型     | 说明                   |
537| ------ | -------------------- |
538| number | 返回设备对应的文件描述符;失败返回其他错误码如下:<br>- 63:数据量超过预期的最大值。<br>- 88080385:接口未初始化。<br>- 88080482:服务过程中遇到无效值或参数。<br>- 88080484:没有权限。<br>- 88080492:写入服务数据包过程发生错误。<br>- 88080493:读取服务数据包过程发生错误。<br>- 88080497:服务内部逻辑执行发生错误。<br>- -1:调用底层接口失败。|
539
540**示例:**
541
542```ts
543let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
544if (devicesList.length == 0) {
545  console.log(`device list is empty`);
546}
547
548usbManager.requestRight(devicesList[0].name);
549let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]);
550let ret: number = usbManager.getFileDescriptor(devicepipe);
551```
552
553## usbManager.controlTransfer<sup>(deprecated)</sup>
554
555controlTransfer(pipe: USBDevicePipe, controlparam: USBControlParams, timeout ?: number): Promise&lt;number&gt;
556
557控制传输。
558
5591. 需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备列表;
5602. 调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;
5613. 调用[usbManager.connectDevice](#usbmanagerconnectdevice)接口得到devicepipe作为参数。
562
563**说明:**
564
565> 从 API version 9开始支持,从API version 12开始废弃。建议使用 [usbControlTransfer](#usbmanagerusbcontroltransfer12) 替代。
566
567**系统能力:**  SystemCapability.USB.USBManager
568
569**参数:**
570
571| 参数名 | 类型 | 必填 | 说明 |
572| -------- | -------- | -------- | -------- |
573| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定设备,需要调用connectDevice获取。|
574| controlparam | [USBControlParams](#usbcontrolparams) | 是 | 控制传输参数,按需设置参数,参数传参类型请参考USB协议。|
575| timeout | number | 否 | 超时时间(单位:ms),可选参数,默认为0不超时,用户按需选择。 |
576
577**错误码:**
578
579以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
580
581| 错误码ID | 错误信息                                                     |
582| -------- | ------------------------------------------------------------ |
583| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
584
585**返回值:**
586
587| 类型 | 说明 |
588| -------- | -------- |
589| Promise&lt;number&gt; | Promise对象,获取传输或接收到的数据块大小。失败返回其他错误码如下:<br>- 88080385:接口未初始化。<br>- 88080482:服务过程中遇到无效值或参数。<br>- 88080484:没有权限。<br>- 88080492:写入服务数据包过程发生错误。<br>- 88080493:读取服务数据包过程发生错误。<br>- 88080497:服务内部逻辑执行发生错误。<br>- -1:调用底层接口失败。|
590
591**示例:**
592
593```ts
594class PARA {
595  request: number = 0
596  reqType: usbManager.USBControlRequestType = 0
597  target: usbManager.USBRequestTargetType = 0
598  value: number = 0
599  index: number = 0
600  data: Uint8Array = new Uint8Array()
601}
602
603let param: PARA = {
604  request: 0x06,
605  reqType: 0x80,
606  target:0,
607  value: 0x01 << 8 | 0,
608  index: 0,
609  data: new Uint8Array(18)
610};
611
612let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
613if (devicesList.length == 0) {
614  console.log(`device list is empty`);
615}
616
617usbManager.requestRight(devicesList[0].name);
618let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]);
619usbManager.controlTransfer(devicepipe, param).then((ret: number) => {
620console.log(`controlTransfer = ${ret}`);
621})
622```
623
624## usbManager.usbControlTransfer<sup>12+</sup>
625
626usbControlTransfer(pipe: USBDevicePipe, requestparam: USBDeviceRequestParams, timeout ?: number): Promise&lt;number&gt;
627
628控制传输。
629
6301. 需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备列表;
6312. 调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;
6323. 调用[usbManager.connectDevice](#usbmanagerconnectdevice)接口得到devicepipe作为参数。
633
634**系统能力:**  SystemCapability.USB.USBManager
635
636**参数:**
637
638| 参数名 | 类型 | 必填 | 说明 |
639| -------- | -------- | -------- | -------- |
640| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定设备。 |
641| requestparam | [USBDeviceRequestParams](#usbdevicerequestparams12) | 是 | 控制传输参数,按需设置参数,参数传参类型请参考USB协议。 |
642| timeout | number | 否 | 超时时间(单位:ms),可选参数,默认为0不超时。 |
643
644**错误码:**
645
646以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
647
648| 错误码ID | 错误信息                                                     |
649| -------- | ------------------------------------------------------------ |
650| 401      | Parameter error.Possible causes:1.Mandatory parameters are left unspecified.2.Incorrect parameter types. |
651
652**返回值:**
653
654| 类型 | 说明 |
655| -------- | -------- |
656| Promise&lt;number&gt; | Promise对象,获取传输或接收到的数据块大小。失败返回其他错误码如下:<br>- 88080385:接口未初始化。<br>- 88080482:服务过程中遇到无效值或参数。<br>- 88080484:没有权限。<br>- 88080492:写入服务数据包过程发生错误。<br>- 88080493:读取服务数据包过程发生错误。<br>- 88080497:服务内部逻辑执行发生错误。<br>- -1:调用底层接口失败。|
657
658**示例:**
659
660```ts
661class PARA {
662  bmRequestType: number = 0
663  bRequest: number = 0
664  wValue: number = 0
665  wIndex: number = 0
666  wLength: number = 0
667  data: Uint8Array = new Uint8Array()
668}
669
670let param: PARA = {
671  bmRequestType: 0x80,
672  bRequest: 0x06,
673
674  wValue:0x01 << 8 | 0,
675  wIndex: 0,
676  wLength: 18,
677  data: new Uint8Array(18)
678};
679
680let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
681if (devicesList.length == 0) {
682  console.log(`device list is empty`);
683}
684
685usbManager.requestRight(devicesList[0].name);
686let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]);
687usbManager.usbControlTransfer(devicepipe, param).then((ret: number) => {
688console.log(`usbControlTransfer = ${ret}`);
689})
690```
691
692## usbManager.bulkTransfer
693
694bulkTransfer(pipe: USBDevicePipe, endpoint: USBEndpoint, buffer: Uint8Array, timeout ?: number): Promise&lt;number&gt;
695
696批量传输。
697
6981. 需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备信息列表以及endpoint;
6992. 调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;
7003. 调用[usbManager.connectDevice](#usbmanagerconnectdevice)接口得到返回数据devicepipe之后,
7014. 再次获取接口[usbManager.claimInterface](#usbmanagerclaiminterface);
7025. 再调用usb.bulkTransfer接口。
703
704**系统能力:**  SystemCapability.USB.USBManager
705
706**参数:**
707
708| 参数名 | 类型 | 必填 | 说明 |
709| -------- | -------- | -------- | -------- |
710| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定设备,需要调用connectDevice获取。|
711| endpoint | [USBEndpoint](#usbendpoint) | 是 | 用于确定传输的端口,需要调用getDevices获取设备信息列表以及endpoint,address用于确定端点地址,direction用于确定端点的方向,interfaceId用于确定所属接口,当前其他属性不做处理。|
712| buffer | Uint8Array | 是 | 用于写入或读取数据的缓冲区。 |
713| timeout | number | 否 | 超时时间(单位:ms),可选参数,默认为0不超时,用户按需选择。 |
714
715**错误码:**
716
717以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
718
719| 错误码ID | 错误信息                                                     |
720| -------- | ------------------------------------------------------------ |
721| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
722
723**返回值:**
724
725| 类型 | 说明 |
726| -------- | -------- |
727| Promise&lt;number&gt; | Promise对象,获取传输或接收到的数据块大小。失败返回其他错误码如下:<br>- 63:数据量超过预期的最大值。<br>- 88080385:接口未初始化。<br>- 88080482:服务过程中遇到无效值或参数。<br>- 88080484:没有权限。<br>- 88080492:写入服务数据包过程发生错误。<br>- 88080493:读取服务数据包过程发生错误。<br>- 88080497:服务内部逻辑执行发生错误。<br>- -1:调用底层接口失败。<br>- -3:参数无效。<br>- -202:设备未找到。|
728
729**示例:**
730
731> **说明:**
732>
733> 以下示例代码只是调用bulkTransfer接口的必要流程,实际调用时,设备开发者需要遵循设备相关协议进行调用,确保数据的正确传输和设备的兼容性。
734
735```ts
736//usbManager.getDevices 接口返回数据集合,取其中一个设备对象,并获取权限。
737//把获取到的设备对象作为参数传入usbManager.connectDevice;当usbManager.connectDevice接口成功返回之后;
738//才可以调用第三个接口usbManager.claimInterface.usbManager.claimInterface 调用成功以后,再调用该接口。
739let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
740if (devicesList.length == 0) {
741  console.log(`device list is empty`);
742}
743
744let device: usbManager.USBDevice = devicesList[0];
745usbManager.requestRight(device.name);
746
747let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device);
748for (let i = 0; i < device.configs[0].interfaces.length; i++) {
749  if (device.configs[0].interfaces[i].endpoints[0].attributes == 2) {
750    let endpoint: usbManager.USBEndpoint = device.configs[0].interfaces[i].endpoints[0];
751    let interfaces: usbManager.USBInterface = device.configs[0].interfaces[i];
752    let ret: number = usbManager.claimInterface(devicepipe, interfaces);
753    let buffer =  new Uint8Array(128);
754    usbManager.bulkTransfer(devicepipe, endpoint, buffer).then((ret: number) => {
755      console.log(`bulkTransfer = ${ret}`);
756    });
757  }
758}
759```
760
761## usbManager.closePipe
762
763closePipe(pipe: USBDevicePipe): number
764
765关闭设备消息控制通道。
766
7671. 需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备列表;
7682. 调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;
7693. 调用[usbManager.connectDevice](#usbmanagerconnectdevice)得到devicepipe作为参数。
770
771**系统能力:**  SystemCapability.USB.USBManager
772
773**参数:**
774
775| 参数名 | 类型 | 必填 | 说明 |
776| -------- | -------- | -------- | -------- |
777| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定USB设备消息控制通道,需要调用connectDevice获取。|
778
779**错误码:**
780
781以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
782
783| 错误码ID | 错误信息                                                     |
784| -------- | ------------------------------------------------------------ |
785| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
786
787**返回值:**
788
789| 类型 | 说明 |
790| -------- | -------- |
791| number | 关闭设备消息控制通道成功返回0;关闭设备消息控制通道失败返回其他错误码如下:<br>- 63:数据量超过预期的最大值。<br>- 88080393:读取接口数据包过程发生错误。<br>- 88080482:服务过程中遇到无效值或参数。<br>- 88080484:没有权限。<br>- 88080493:读取服务数据包过程发生错误。<br>- 88080497:服务内部逻辑执行发生错误。<br>- -1:调用底层接口失败。 |
792
793**示例:**
794
795```ts
796let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
797if (devicesList.length == 0) {
798  console.log(`device list is empty`);
799}
800
801usbManager.requestRight(devicesList[0].name);
802let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]);
803let ret: number = usbManager.closePipe(devicepipe);
804console.log(`closePipe = ${ret}`);
805```
806
807## usbManager.hasAccessoryRight<sup>14+</sup>
808
809hasAccessoryRight(accessory: USBAccessory): boolean
810
811检查应用程序是否有权访问USB配件。
812
813需要调用[usbManager.getAccessoryList](#usbmanagergetaccessorylist14)获取配件列表,得到[USBAccessory](#usbaccessory14)作为参数。
814
815**系统能力:**  SystemCapability.USB.USBManager
816
817**参数:**
818
819| 参数名    | 类型         | 必填 | 说明                                  |
820| --------- | ------------ | ---- | ------------------------------------- |
821| accessory | [USBAccessory](#usbaccessory14) | 是   | USB配件,需要通过[getAccessoryList](#usbmanagergetaccessorylist14)获取。 |
822
823**错误码:**
824
825以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
826
827| 错误码ID | 错误信息                                                     |
828| -------- | ------------------------------------------------------------ |
829| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
830| 14400004 | Service exception. Possible causes: 1. No accessory is plugged in. |
831| 14400005 | Database operation exception.                                |
832| 14401001 | The target USBAccessory not matched.                         |
833
834**返回值:**
835
836| 类型    | 说明                          |
837| ------- | ----------------------------- |
838| boolean | true表示应用程序有权访问USB配件,false表示应用程序无权访问USB配件。 |
839
840**示例:**
841
842```ts
843import { hilog } from '@kit.PerformanceAnalysisKit';
844try {
845  let accList: usbManager.USBAccessory[] = usbManager.getAccessoryList()
846  let flag = usbManager.hasAccessoryRight(accList[0])
847  hilog.info(0, 'testTag ui', `hasAccessoryRight success, ret:${flag}`)
848} catch (error) {
849  hilog.info(0, 'testTag ui', `hasAccessoryRight error ${error.code}, message is ${error.message}`)
850}
851```
852
853## usbManager.requestAccessoryRight<sup>14+</sup>
854
855requestAccessoryRight(accessory: USBAccessory): Promise&lt;boolean&gt;
856
857为指定应用程序申请访问USB配件的访问权限。
858
859需要调用[usbManager.getAccessoryList](#usbmanagergetaccessorylist14)获取配件列表,得到[USBAccessory](#usbaccessory14)作为参数。
860
861**系统能力:**  SystemCapability.USB.USBManager
862
863**参数:**
864
865| 参数名    | 类型         | 必填 | 说明                                  |
866| --------- | ------------ | ---- | ------------------------------------- |
867| accessory | [USBAccessory](#usbaccessory14) | 是   | USB配件,需要通过[getAccessoryList](#usbmanagergetaccessorylist14)获取。 |
868
869**错误码:**
870
871以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
872
873| 错误码ID | 错误信息                                                     |
874| -------- | ------------------------------------------------------------ |
875| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
876| 14400004 | Service exception. Possible causes: 1. No accessory is plugged in. |
877| 14400005 | Database operation exception.                                |
878| 14401001 | The target USBAccessory not matched.                         |
879
880**返回值:**
881
882| 类型             | 说明                          |
883| ---------------- | ----------------------------- |
884| Promise&lt;boolean&gt; | Promise对象,返回应用程序访问配件权限的申请结果。返回true表示权限申请成功;返回false表示权限申请失败。 |
885
886**示例:**
887
888```ts
889import { hilog } from '@kit.PerformanceAnalysisKit';
890try {
891  let accList: usbManager.USBAccessory[] = usbManager.getAccessoryList()
892  let flag = usbManager.requestAccessoryRight(accList[0])
893  hilog.info(0, 'testTag ui', `requestAccessoryRight success, ret:${flag}`)
894} catch (error) {
895  hilog.info(0, 'testTag ui', `requestAccessoryRight error ${error.code}, message is ${error.message}`)
896}
897```
898
899## usbManager.cancelAccessoryRight<sup>14+</sup>
900
901cancelAccessoryRight(accessory: USBAccessory): void;
902
903取消当前应用程序访问USB配件的权限。
904
905需要调用[usbManager.getAccessoryList](#usbmanagergetaccessorylist14)获取配件列表,得到[USBAccessory](#usbaccessory14)作为参数。
906
907**系统能力:**  SystemCapability.USB.USBManager
908
909**参数:**
910
911| 参数名    | 类型         | 必填 | 说明                                  |
912| --------- | ------------ | ---- | ------------------------------------- |
913| accessory | [USBAccessory](#usbaccessory14) | 是   | USB配件,需要通过[getAccessoryList](#usbmanagergetaccessorylist14)获取。 |
914
915**错误码:**
916
917以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
918
919| 错误码ID | 错误信息                                                     |
920| -------- | ------------------------------------------------------------ |
921| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
922| 14400004 | Service exception. Possible causes: 1. No accessory is plugged in. |
923| 14400005 | Database operation exception.                                |
924| 14401001 | The target USBAccessory not matched.                         |
925
926**示例:**
927
928```ts
929import { hilog } from '@kit.PerformanceAnalysisKit';
930try {
931  let accList: usbManager.USBAccessory[] = usbManager.getAccessoryList()
932  let flag = usbManager.requestAccessoryRight(accList[0])
933  usbManager.cancelAccessoryRight(accList[0])
934  hilog.info(0, 'testTag ui', `cancelAccessoryRight success`)
935} catch (error) {
936  hilog.info(0, 'testTag ui', `cancelAccessoryRight error ${error.code}, message is ${error.message}`)
937}
938```
939
940## usbManager.getAccessoryList<sup>14+</sup>
941
942getAccessoryList(): Array<Readonly&lt;USBAccessory&gt;>
943
944获取当前已接入主机的USB配件列表。
945
946**系统能力:**  SystemCapability.USB.USBManager
947
948**错误码:**
949
950以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
951
952| 错误码ID | 错误信息                                                     |
953| -------- | ------------------------------------------------------------ |
954| 14400004 | Service exception. Possible causes: 1. No accessory is plugged in. |
955
956**返回值:**
957
958| 类型                          | 说明                                               |
959| ----------------------------- | -------------------------------------------------- |
960| Array<Readonly&lt;USBAccessory&gt;> | 只读的USB配件列表。当前仅支持列表中包含1个USB配件。 |
961
962**示例:**
963
964```ts
965import { hilog } from '@kit.PerformanceAnalysisKit';
966try {
967  let accList: usbManager.USBAccessory[] = usbManager.getAccessoryList()
968  hilog.info(0, 'testTag ui', `getAccessoryList success, accList: ${JSON.stringify(accList)}`)
969} catch (error) {
970  hilog.info(0, 'testTag ui', `getAccessoryList error ${error.code}, message is ${error.message}`)
971}
972```
973
974## usbManager.openAccessory<sup>14+</sup>
975
976openAccessory(accessory: USBAccessory): USBAccessoryHandle;
977
978获取配件句柄并打开配件文件描述符。
979
980需要调用[usbManager.getAccessoryList](#usbmanagergetaccessorylist14)获取配件列表,得到[USBAccessory](#usbaccessory14)作为参数。
981
982**系统能力:**  SystemCapability.USB.USBManager
983
984**参数:**
985
986| 参数名    | 类型         | 必填 | 说明                                  |
987| --------- | ------------ | ---- | ------------------------------------- |
988| accessory | [USBAccessory](#usbaccessory14) | 是   | USB配件,需要通过[getAccessoryList](#usbmanagergetaccessorylist14)获取。 |
989
990**错误码:**
991
992以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
993
994| 错误码ID | 错误信息                                                     |
995| -------- | ------------------------------------------------------------ |
996| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
997| 14400001 | Permission denied. Call requestAccessoryRight to get the right first. |
998| 14400004 | Service exception. Possible causes: 1. No accessory is plugged in. |
999| 14401001 | The target USBAccessory not matched.                         |
1000| 14401002 | Failed to open the native accessory node.                    |
1001| 14401003 | Cannot reopen the accessory.                                 |
1002
1003**返回值:**
1004
1005| 类型               | 说明        |
1006| ------------------ | ----------- |
1007| [USBAccessoryHandle](#usbaccessoryhandle14) | USB配件句柄。 |
1008
1009**示例:**
1010
1011```ts
1012import { hilog } from '@kit.PerformanceAnalysisKit';
1013try {
1014  let accList: usbManager.USBAccessory[] = usbManager.getAccessoryList()
1015  let flag = usbManager.requestAccessoryRight(accList[0])
1016  let handle = usbManager.openAccessory(accList[0])
1017  hilog.info(0, 'testTag ui', `openAccessory success`)
1018} catch (error) {
1019  hilog.info(0, 'testTag ui', `openAccessory error ${error.code}, message is ${error.message}`)
1020}
1021```
1022
1023## usbManager.closeAccessory<sup>14+</sup>
1024
1025closeAccessory(accessoryHandle: USBAccessoryHandle): void;
1026
1027关闭配件文件描述符。
1028
1029需要调用[usbManager.openAccessory](#usbmanageropenaccessory14)获取配件列表,得到[USBAccessoryHandle](#usbaccessoryhandle14)作为参数。
1030
1031**系统能力:**  SystemCapability.USB.USBManager
1032
1033**参数:**
1034
1035| 参数名          | 类型               | 必填 | 说明                                   |
1036| --------------- | ------------------ | ---- | -------------------------------------- |
1037| accessoryHandle | [USBAccessoryHandle](#usbaccessoryhandle14) | 是   | USB配件句柄。需要通过[openAccessory](#usbmanageropenaccessory14)获取。 |
1038
1039**错误码:**
1040
1041以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。
1042
1043| 错误码ID | 错误信息                                                     |
1044| -------- | ------------------------------------------------------------ |
1045| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
1046| 14400004 | Service exception. Possible causes: 1. No accessory is plugged in. |
1047
1048**示例:**
1049
1050```ts
1051import { hilog } from '@kit.PerformanceAnalysisKit';
1052try {
1053  let accList: usbManager.USBAccessory[] = usbManager.getAccessoryList()
1054  let flag = usbManager.requestAccessoryRight(accList[0])
1055  let handle = usbManager.openAccessory(accList[0])
1056  usbManager.closeAccessory(handle)
1057  hilog.info(0, 'testTag ui', `closeAccessory success`)
1058} catch (error) {
1059  hilog.info(0, 'testTag ui', `closeAccessory error ${error.code}, message is ${error.message}`)
1060}
1061```
1062
1063## USBEndpoint
1064
1065通过USB发送和接收数据的端口。通过[USBInterface](#usbinterface)获取。
1066
1067**系统能力:** SystemCapability.USB.USBManager
1068
1069| 名称            | 类型                                        | 必填            |说明            |
1070| ------------- | ------------------------------------------- | ------------- |------------- |
1071| address       | number                                      | 是 |端点地址。         |
1072| attributes    | number                                      | 是 |端点属性。         |
1073| interval      | number                                      | 是 |端点间隔。         |
1074| maxPacketSize | number                                      | 是 |端点最大数据包大小。    |
1075| direction     | [USBRequestDirection](#usbrequestdirection) | 是 |端点的方向。        |
1076| number        | number                                      | 是 |端点号。          |
1077| type          | number                                      | 是 |端点类型。         |
1078| interfaceId   | number                                      | 是 |端点所属的接口的唯一标识。 |
1079
1080## USBInterface
1081
1082一个[USBConfiguration](#usbconfiguration)中可以含有多个USBInterface,每个USBInterface提供一个功能。
1083
1084**系统能力:** SystemCapability.USB.USBManager
1085
1086| 名称               | 类型                                     | 必填            |说明                    |
1087| ---------------- | ---------------------------------------- | ------------- |--------------------- |
1088| id               | number                                   | 是 |接口的唯一标识。              |
1089| protocol         | number                                   | 是 |接口的协议。                |
1090| clazz            | number                                   | 是 |设备类型。                 |
1091| subClass         | number                                   | 是 |设备子类。                 |
1092| alternateSetting | number                                   | 是 |在同一个接口中的多个描述符中进行切换设置。 |
1093| name             | string                                   | 是 |接口名称。                 |
1094| endpoints        | Array&lt;[USBEndpoint](#usbendpoint)&gt; | 是 |当前接口所包含的端点。           |
1095
1096## USBConfiguration
1097
1098USB配置,一个[USBDevice](#usbdevice)中可以含有多个配置。
1099
1100**系统能力:** SystemCapability.USB.USBManager
1101
1102| 名称             | 类型                                             | 必填  |说明              |
1103| -------------- | ------------------------------------------------ | --------------- |--------------- |
1104| id             | number                                           | 是 |配置的唯一标识。        |
1105| attributes     | number                                           | 是 |配置的属性。          |
1106| maxPower       | number                                           | 是 |最大功耗,以毫安为单位。    |
1107| name           | string                                           | 是 |配置的名称,可以为空。     |
1108| isRemoteWakeup | boolean                                          | 是 |检查当前配置是否支持远程唤醒。 |
1109| isSelfPowered  | boolean                                          | 是 | 检查当前配置是否支持独立电源。 |
1110| interfaces     | Array&nbsp;&lt;[USBInterface](#usbinterface)&gt; | 是 |配置支持的接口属性。      |
1111
1112## USBDevice
1113
1114USB设备信息。
1115
1116**系统能力:** SystemCapability.USB.USBManager
1117
1118| 名称               | 类型                                 | 必填         |说明         |
1119| ---------------- | ------------------------------------ | ---------- |---------- |
1120| busNum           | number                               | 是 |总线地址。      |
1121| devAddress       | number                               | 是 |设备地址。      |
1122| serial           | string                               | 是 |序列号。       |
1123| name             | string                               | 是 |设备名字。      |
1124| manufacturerName | string                               | 是 | 产商信息。      |
1125| productName      | string                               | 是 |产品信息。      |
1126| version          | string                               | 是 |版本。        |
1127| vendorId         | number                               | 是 |厂商ID。      |
1128| productId        | number                               | 是 |产品ID。      |
1129| clazz            | number                               | 是 |设备类。       |
1130| subClass         | number                               | 是 |设备子类。      |
1131| protocol         | number                               | 是 |设备协议码。     |
1132| configs          | Array&lt;[USBConfiguration](#usbconfiguration)&gt; | 是 |设备配置描述符信息。 |
1133
1134## USBDevicePipe
1135
1136USB设备消息传输通道,用于确定设备。
1137
1138**系统能力:** SystemCapability.USB.USBManager
1139
1140| 名称         | 类型   | 必填    |说明    |
1141| ---------- | ------ | ----- |----- |
1142| busNum     | number |是 | 总线地址。 |
1143| devAddress | number |是 | 设备地址。 |
1144
1145## USBControlParams
1146
1147控制传输参数。
1148
1149**系统能力:** SystemCapability.USB.USBManager
1150
1151| 名称      | 类型                                            | 必填               |说明               |
1152| ------- | ----------------------------------------------- | ---------------- |---------------- |
1153| request | number                                          | 是   |请求类型。            |
1154| target  | [USBRequestTargetType](#usbrequesttargettype)   | 是   |请求目标类型。          |
1155| reqType | [USBControlRequestType](#usbcontrolrequesttype) | 是   |请求控制类型。          |
1156| value   | number                                          | 是   |请求参数。            |
1157| index   | number                                          | 是   |请求参数value对应的索引值。 |
1158| data    | Uint8Array                                      | 是   |用于写入或读取的缓冲区。     |
1159
1160## USBDeviceRequestParams<sup>12+</sup>
1161
1162控制传输参数。
1163
1164**系统能力:** SystemCapability.USB.USBManager
1165
1166| 名称      | 类型                                            | 必填               |说明               |
1167| ------- | ----------------------------------------------- | ---------------- |---------------- |
1168| bmRequestType | number                                    | 是   |请求控制类型。            |
1169| bRequest  | number                                        | 是   |请求类型。          |
1170| wValue | number                                           | 是   |请求参数。          |
1171| wIndex   | number                                         | 是   |请求参数value对应的索引值。            |
1172| wLength   | number                                        | 是   |请求数据的长度。 |
1173| data    | Uint8Array                                      | 是   |用于写入或读取的缓冲区。     |
1174
1175## USBRequestTargetType
1176
1177请求目标类型。
1178
1179**系统能力:** SystemCapability.USB.USBManager
1180
1181| 名称                         | 值   | 说明   |
1182| ---------------------------- | ---- | ------ |
1183| USB_REQUEST_TARGET_DEVICE    | 0    | 设备。 |
1184| USB_REQUEST_TARGET_INTERFACE | 1    | 接口。 |
1185| USB_REQUEST_TARGET_ENDPOINT  | 2    | 端点。 |
1186| USB_REQUEST_TARGET_OTHER     | 3    | 其他。 |
1187
1188## USBControlRequestType
1189
1190控制请求类型。
1191
1192**系统能力:** SystemCapability.USB.USBManager
1193
1194| 名称                      | 值   | 说明   |
1195| ------------------------- | ---- | ------ |
1196| USB_REQUEST_TYPE_STANDARD | 0    | 标准。 |
1197| USB_REQUEST_TYPE_CLASS    | 1    | 类。   |
1198| USB_REQUEST_TYPE_VENDOR   | 2    | 厂商。 |
1199
1200## USBRequestDirection
1201
1202请求方向。
1203
1204**系统能力:** SystemCapability.USB.USBManager
1205
1206| 名称                        | 值   | 说明                     |
1207| --------------------------- | ---- | ------------------------ |
1208| USB_REQUEST_DIR_TO_DEVICE   | 0    | 写数据,主设备往从设备。 |
1209| USB_REQUEST_DIR_FROM_DEVICE | 0x80 | 读数据,从设备往主设备。 |
1210
1211## USBAccessory<sup>14+</sup>
1212
1213USB配件信息。
1214
1215**系统能力:** SystemCapability.USB.USBManager
1216
1217| 名称         | 类型   | 必填 | 说明             |
1218| ------------ | ------ | ---- | ---------------- |
1219| manufacturer | string | 是   | 配件的生产厂商。 |
1220| product      | string | 是   | 配件的产品类型。 |
1221| description  | string | 是   | 配件的描述。     |
1222| version      | string | 是   | 配件的版本。     |
1223| serialNumber | string | 是   | 配件的SN号。     |
1224
1225## USBAccessoryHandle<sup>14+</sup>
1226
1227USB配件句柄。
1228
1229**系统能力:** SystemCapability.USB.USBManager
1230
1231| 名称        | 类型   | 必填 | 说明                                      |
1232| ----------- | ------ | ---- | ----------------------------------------- |
1233| accessoryFd | number | 是   | 配件文件描述符。合法的accessoryFd是正整数。 |
1234