• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.usb (USB管理)
2
3本模块主要提供管理USB设备的相关功能,包括查询USB设备列表、批量数据传输、控制命令传输、权限控制等。
4
5>  **说明:**
6>
7> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9> 从API version 9开始,该接口不再维护,推荐使用新接口[`@ohos.usbManager`](js-apis-usbManager.md)。
10
11## 导入模块
12
13```js
14import usb from "@ohos.usb";
15```
16
17## usb.getDevices
18
19getDevices(): Array<Readonly<USBDevice>>
20
21获取USB设备列表。
22
23**系统能力:**  SystemCapability.USB.USBManager
24
25**返回值:**
26
27| 类型                                                   | 说明      |
28| ---------------------------------------------------- | ------- |
29| Array<Readonly<[USBDevice](#usbdevice)>> | 设备信息列表。 |
30
31**示例:**
32
33```js
34let devicesList = usb.getDevices();
35console.log(`devicesList = ${devicesList}`);
36//devicesList  返回的数据结构
37//此处提供一个简单的示例,如下
38[
39  {
40    name: "1-1",
41    serial: "",
42    manufacturerName: "",
43    productName: "",
44    version: "",
45    vendorId: 7531,
46    productId: 2,
47    clazz: 9,
48    subClass: 0,
49    protocol: 1,
50    devAddress: 1,
51    busNum: 1,
52    configs: [
53      {
54        id: 1,
55        attributes: 224,
56        isRemoteWakeup: true,
57        isSelfPowered: true,
58        maxPower: 0,
59        name: "1-1",
60        interfaces: [
61          {
62            id: 0,
63            protocol: 0,
64            clazz: 9,
65            subClass: 0,
66            alternateSetting: 0,
67            name: "1-1",
68            endpoints: [
69              {
70                address: 129,
71                attributes: 3,
72                interval: 12,
73                maxPacketSize: 4,
74                direction: 128,
75                number: 1,
76                type: 3,
77                interfaceId: 0,
78              },
79            ],
80          },
81        ],
82      },
83    ],
84  },
85]
86```
87
88## usb.connectDevice
89
90connectDevice(device: USBDevice): Readonly<USBDevicePipe>
91
92打开USB设备。
93
94需要调用[usb.getDevices](#usbgetdevices)获取设备信息以及device,再调用[usb.requestRight](#usbrequestright)获取设备请求权限。
95
96**系统能力:**  SystemCapability.USB.USBManager
97
98**参数:**
99
100| 参数名 | 类型 | 必填 | 说明 |
101| -------- | -------- | -------- | -------- |
102| device | [USBDevice](#usbdevice) | 是 | USB设备信息。 |
103
104**返回值:**
105
106| 类型 | 说明 |
107| -------- | -------- |
108| Readonly<[USBDevicePipe](#usbdevicepipe)> | 指定的传输通道对象。 |
109
110**示例:**
111
112```js
113let devicepipe= usb.connectDevice(device);
114console.log(`devicepipe = ${devicepipe}`);
115```
116
117## usb.hasRight
118
119hasRight(deviceName: string): boolean
120
121判断是否有权访问该设备。
122
123**系统能力:**  SystemCapability.USB.USBManager
124
125**参数:**
126
127| 参数名 | 类型 | 必填 | 说明 |
128| -------- | -------- | -------- | -------- |
129| deviceName | string | 是 | 设备名称。 |
130
131**返回值:**
132
133| 类型 | 说明 |
134| -------- | -------- |
135| boolean | true表示有访问设备的权限,false表示没有访问设备的权限。 |
136
137**示例:**
138
139```js
140let devicesName= "1-1";
141let bool = usb.hasRight(devicesName);
142console.log(`${bool}`);
143```
144
145## usb.requestRight
146
147requestRight(deviceName: string): Promise<boolean>
148
149请求软件包的临时权限以访问设备。使用Promise异步回调。
150
151**系统能力:**  SystemCapability.USB.USBManager
152
153**参数:**
154
155| 参数名 | 类型 | 必填 | 说明 |
156| -------- | -------- | -------- | -------- |
157| deviceName | string | 是 | 设备名称。 |
158
159**返回值:**
160
161| 类型 | 说明 |
162| -------- | -------- |
163| Promise<boolean> | Promise对象,返回临时权限的申请结果。返回true表示临时权限申请成功;返回false则表示临时权限申请失败。 |
164
165**示例:**
166
167```js
168let devicesName= "1-1";
169usb.requestRight(devicesName).then((ret) => {
170  console.log(`requestRight = ${ret}`);
171});
172```
173
174## usb.claimInterface
175
176claimInterface(pipe: USBDevicePipe, iface: USBInterface, force ?: boolean): number
177
178注册通信接口。
179
180需要调用[usb.getDevices](#usbgetdevices)获取设备信息以及interfaces;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。
181
182**系统能力:**  SystemCapability.USB.USBManager
183
184**参数:**
185
186| 参数名 | 类型 | 必填 | 说明 |
187| -------- | -------- | -------- | -------- |
188| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 |
189| iface | [USBInterface](#usbinterface) | 是 | 用于确定需要获取接口的索引。 |
190| force | boolean | 否 | 可选参数,是否强制获取。默认值为false ,表示不强制获取。 |
191
192**返回值:**
193
194| 类型 | 说明 |
195| -------- | -------- |
196| number | 注册通信接口成功返回0;注册通信接口失败返回其他错误码。 |
197
198**示例:**
199
200```js
201let ret = usb.claimInterface(devicepipe, interfaces);
202console.log(`claimInterface = ${ret}`);
203```
204
205## usb.releaseInterface
206
207releaseInterface(pipe: USBDevicePipe, iface: USBInterface): number
208
209释放注册过的通信接口。
210
211需要调用[usb.claimInterface](#usbclaiminterface)先获取接口,才能使用此方法释放接口。
212
213**系统能力:**  SystemCapability.USB.USBManager
214
215**参数:**
216
217| 参数名 | 类型 | 必填 | 说明 |
218| -------- | -------- | -------- | -------- |
219| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 |
220| iface | [USBInterface](#usbinterface) | 是 | 用于确定需要释放接口的索引。 |
221
222**返回值:**
223
224| 类型 | 说明 |
225| -------- | -------- |
226| number | 释放接口成功返回0;释放接口失败返回其他错误码。 |
227
228**示例:**
229
230```js
231let ret = usb.releaseInterface(devicepipe, interfaces);
232console.log(`releaseInterface = ${ret}`);
233```
234
235## usb.setConfiguration
236
237setConfiguration(pipe: USBDevicePipe, config: USBConfig): number
238
239设置设备配置。
240
241需要调用[usb.getDevices](#usbgetdevices)获取设备信息以及config;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)得到devicepipe作为参数。
242
243**系统能力:**  SystemCapability.USB.USBManager
244
245**参数:**
246
247| 参数名 | 类型 | 必填 | 说明 |
248| -------- | -------- | -------- | -------- |
249| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 |
250| config | [USBConfig](#usbconfig) | 是 | 用于确定需要设置的配置。 |
251
252**返回值:**
253
254| 类型 | 说明 |
255| -------- | -------- |
256| number | 设置设备配置成功返回0;设置设备配置失败返回其他错误码。 |
257
258**示例:**
259
260```js
261let ret = usb.setConfiguration(devicepipe, config);
262console.log(`setConfiguration = ${ret}`);
263```
264
265## usb.setInterface
266
267setInterface(pipe: USBDevicePipe, iface: USBInterface): number
268
269设置设备接口。
270
271需要调用[usb.getDevices](#usbgetdevices)获取设备列表以及interfaces;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)得到devicepipe作为参数;调用[usb.claimInterface](#usbclaiminterface)注册通信接口。
272
273**系统能力:**  SystemCapability.USB.USBManager
274
275**参数:**
276
277| 参数名   | 类型                              | 必填  | 说明            |
278| ----- | ------------------------------- | --- | ------------- |
279| pipe  | [USBDevicePipe](#usbdevicepipe) | 是   | 用于确定总线号和设备地址。 |
280| iface | [USBInterface](#usbinterface)   | 是   | 用于确定需要设置的接口。  |
281
282**返回值:**
283
284| 类型 | 说明 |
285| -------- | -------- |
286| number | 设置设备接口成功返回0;设置设备接口失败返回其他错误码。 |
287
288**示例:**
289
290```js
291let ret = usb.setInterface(devicepipe, interfaces);
292console.log(`setInterface = ${ret}`);
293```
294
295## usb.getRawDescriptor
296
297getRawDescriptor(pipe: USBDevicePipe): Uint8Array
298
299获取原始的USB描述符。
300
301需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。
302
303**系统能力:**  SystemCapability.USB.USBManager
304
305**参数:**
306
307| 参数名 | 类型 | 必填 | 说明 |
308| -------- | -------- | -------- | -------- |
309| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 |
310
311**返回值:**
312
313| 类型 | 说明 |
314| -------- | -------- |
315| Uint8Array | 返回获取的原始数据;失败返回undefined。 |
316
317**示例:**
318
319```js
320let ret = usb.getRawDescriptor(devicepipe);
321```
322
323## usb.getFileDescriptor
324
325getFileDescriptor(pipe: USBDevicePipe): number
326
327获取文件描述符。
328
329需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。
330
331**系统能力:**  SystemCapability.USB.USBManager
332
333**参数:**
334
335| 参数名 | 类型 | 必填 | 说明 |
336| -------- | -------- | -------- | -------- |
337| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 |
338
339**返回值:**
340
341| 类型     | 说明                   |
342| ------ | -------------------- |
343| number | 返回设备对应的文件描述符;失败返回-1。 |
344
345**示例:**
346
347```js
348let ret = usb.getFileDescriptor(devicepipe);
349```
350
351## usb.controlTransfer
352
353controlTransfer(pipe: USBDevicePipe, controlparam: USBControlParams, timeout ?: number): Promise<number>
354
355控制传输。
356
357需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。
358
359**系统能力:**  SystemCapability.USB.USBManager
360
361**参数:**
362
363| 参数名 | 类型 | 必填 | 说明 |
364| -------- | -------- | -------- | -------- |
365| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定设备。 |
366| controlparam | [USBControlParams](#usbcontrolparams) | 是 | 控制传输参数。 |
367| timeout | number | 否 | 超时时间(单位:ms),可选参数,默认为0不超时。 |
368
369**返回值:**
370
371| 类型 | 说明 |
372| -------- | -------- |
373| Promise<number> | Promise对象,获取传输或接收到的数据块大小。失败返回-1。 |
374
375**示例:**
376
377```js
378let param = {
379  request: 0,
380  reqType: 0,
381  target:0,
382  value: 0,
383  index: 0,
384  data: null
385};
386usb.controlTransfer(devicepipe, param).then((ret) => {
387  console.log(`controlTransfer = ${ret}`);
388});
389```
390
391## usb.bulkTransfer
392
393bulkTransfer(pipe: USBDevicePipe, endpoint: USBEndpoint, buffer: Uint8Array, timeout ?: number): Promise<number>
394
395批量传输。
396
397需要调用[usb.getDevices](#usbgetdevices)获取设备信息列表以及endpoint;再调用[usb.requestRight](#usbrequestright)获取设备请求权限;然后调用[usb.connectDevice](#usbconnectdevice)接口得到返回数据devicepipe之后,再次获取接口[usb.claimInterface](#usbclaiminterface);再调用usb.bulkTransfer接口。
398
399**系统能力:**  SystemCapability.USB.USBManager
400
401**参数:**
402
403| 参数名 | 类型 | 必填 | 说明 |
404| -------- | -------- | -------- | -------- |
405| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定设备。 |
406| endpoint | [USBEndpoint](#usbendpoint) | 是 | 用于确定传输的端口。 |
407| buffer | Uint8Array | 是 | 用于写入或读取的缓冲区。 |
408| timeout | number | 否 | 超时时间(单位:ms),可选参数,默认为0不超时。|
409
410**返回值:**
411
412| 类型 | 说明 |
413| -------- | -------- |
414| Promise<number> | Promise对象,获取传输或接收到的数据块大小。失败返回-1。 |
415
416**示例:**
417
418```js
419//usb.getDevices 接口返回数据集合,取其中一个设备对象,并获取权限 。
420//把获取到的设备对象作为参数传入usb.connectDevice;当usb.connectDevice接口成功返回之后;
421//才可以调用第三个接口usb.claimInterface.usb.claimInterface 调用成功以后,再调用该接口。
422usb.bulkTransfer(devicepipe, endpoint, buffer).then((ret) => {
423  console.log(`bulkTransfer = ${ret}`);
424});
425```
426
427## usb.closePipe
428
429closePipe(pipe: USBDevicePipe): number
430
431关闭设备消息控制通道。
432
433需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)得到devicepipe作为参数。
434
435**系统能力:**  SystemCapability.USB.USBManager
436
437**参数:**
438
439| 参数名 | 类型 | 必填 | 说明 |
440| -------- | -------- | -------- | -------- |
441| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定USB设备消息控制通道。 |
442
443**返回值:**
444
445| 类型 | 说明 |
446| -------- | -------- |
447| number | 关闭设备消息控制通道成功返回0;关闭设备消息控制通道失败返回其他错误码。 |
448
449**示例:**
450
451```js
452let ret = usb.closePipe(devicepipe);
453console.log(`closePipe = ${ret}`);
454```
455
456## usb.usbFunctionsFromString<sup>9+</sup>
457
458usbFunctionsFromString(funcs: string): number
459
460在设备模式下,将字符串形式的USB功能列表转化为数字掩码。
461
462**系统接口:** 此接口为系统接口。
463
464**系统能力:**  SystemCapability.USB.USBManager
465
466**参数:**
467
468| 参数名 | 类型   | 必填 | 说明                   |
469| ------ | ------ | ---- | ---------------------- |
470| funcs  | string | 是   | 字符串形式的功能列表。 |
471
472**返回值:**
473
474| 类型   | 说明               |
475| ------ | ------------------ |
476| number | 转化后的数字掩码。 |
477
478**示例:**
479
480```js
481let funcs = "acm";
482let ret = usb.usbFunctionsFromString(funcs);
483```
484
485## usb.usbFunctionsToString<sup>9+</sup>
486
487usbFunctionsToString(funcs: FunctionType): string
488
489在设备模式下,将数字掩码形式的USB功能列表转化为字符串。
490
491**系统接口:** 此接口为系统接口。
492
493**系统能力:**  SystemCapability.USB.USBManager
494
495**参数:**
496
497| 参数名 | 类型                           | 必填 | 说明              |
498| ------ | ------------------------------ | ---- | ----------------- |
499| funcs  | [FunctionType](#functiontype9) | 是   | USB功能数字掩码。 |
500
501**返回值:**
502
503| 类型   | 说明                           |
504| ------ | ------------------------------ |
505| string | 转化后的字符串形式的功能列表。 |
506
507**示例:**
508
509```js
510let funcs = usb.FunctionType.ACM | usb.FunctionType.ECM;
511let ret = usb.usbFunctionsToString(funcs);
512```
513
514## usb.setCurrentFunctions<sup>9+</sup>
515
516setCurrentFunctions(funcs: FunctionType): Promise\<boolean\>
517
518在设备模式下,设置当前的USB功能列表。
519
520**系统接口:** 此接口为系统接口。
521
522**系统能力:**  SystemCapability.USB.USBManager
523
524**参数:**
525
526| 参数名 | 类型                           | 必填 | 说明              |
527| ------ | ------------------------------ | ---- | ----------------- |
528| funcs  | [FunctionType](#functiontype9) | 是   | USB功能数字掩码。 |
529
530**返回值:**
531
532| 类型               | 说明                                                         |
533| ------------------ | ------------------------------------------------------------ |
534| Promise\<boolean\> | Promise对象,返回设置成功与否的结果。true表示设置成功,false表示设置失败。 |
535
536**示例:**
537
538```js
539let funcs = usb.FunctionType.HDC;
540usb.setCurrentFunctions(funcs).then(() => {
541    console.info('usb setCurrentFunctions successfully.');
542}).catch(err => {
543    console.error('usb setCurrentFunctions failed: ' + err.code + ' message: ' + err.message);
544});
545```
546
547## usb.getCurrentFunctions<sup>9+</sup>
548
549getCurrentFunctions(): FunctionType
550
551在设备模式下,获取当前的USB功能列表的数字组合掩码。
552
553**系统接口:** 此接口为系统接口。
554
555**系统能力:**  SystemCapability.USB.USBManager
556
557**返回值:**
558
559| 类型                           | 说明                              |
560| ------------------------------ | --------------------------------- |
561| [FunctionType](#functiontype9) | 当前的USB功能列表的数字组合掩码。 |
562
563**示例:**
564
565```js
566let ret = usb.getCurrentFunctions();
567```
568
569## usb.getPorts<sup>9+</sup>
570
571getPorts(): Array\<USBPort\>
572
573获取所有物理USB端口描述信息。
574
575**系统接口:** 此接口为系统接口。
576
577**系统能力:**  SystemCapability.USB.USBManager
578
579**返回值:**
580
581| 类型                          | 说明                  |
582| ----------------------------- | --------------------- |
583| [Array\<USBPort\>](#usbport9) | USB端口描述信息列表。 |
584
585**示例:**
586
587```js
588let ret = usb.getPorts();
589```
590
591## usb.getSupportedModes<sup>9+</sup>
592
593getSupportedModes(portId: number): PortModeType
594
595获取指定的端口支持的模式列表的组合掩码。
596
597**系统接口:** 此接口为系统接口。
598
599**系统能力:**  SystemCapability.USB.USBManager
600
601**参数:**
602
603| 参数名 | 类型   | 必填 | 说明     |
604| ------ | ------ | ---- | -------- |
605| portId | number | 是   | 端口号。 |
606
607**返回值:**
608
609| 类型                           | 说明                       |
610| ------------------------------ | -------------------------- |
611| [PortModeType](#portmodetype9) | 支持的模式列表的组合掩码。 |
612
613**示例:**
614
615```js
616let ret = usb.getSupportedModes(0);
617```
618
619## usb.setPortRoles<sup>9+</sup>
620
621setPortRoles(portId: number, powerRole: PowerRoleType, dataRole: DataRoleType): Promise\<boolean\>
622
623设置指定的端口支持的角色模式,包含充电角色、数据传输角色。
624
625**系统接口:** 此接口为系统接口。
626
627**系统能力:**  SystemCapability.USB.USBManager
628
629**参数:**
630
631| 参数名    | 类型                             | 必填 | 说明             |
632| --------- | -------------------------------- | ---- | ---------------- |
633| portId    | number                           | 是   | 端口号。         |
634| powerRole | [PowerRoleType](#powerroletype9) | 是   | 充电的角色。     |
635| dataRole  | [DataRoleType](#dataroletype9)   | 是   | 数据传输的角色。 |
636
637**返回值:**
638
639| 类型               | 说明                                                         |
640| ------------------ | ------------------------------------------------------------ |
641| Promise\<boolean\> | Promise对象,返回设置成功与否的结果。true表示设置成功,false表示设置失败。 |
642
643**示例:**
644
645```js
646let portId = 1;
647usb.setPortRoles(portId, usb.PowerRoleType.SOURCE, usb.DataRoleType.HOST).then(() => {
648    console.info('usb setPortRoles successfully.');
649}).catch(err => {
650    console.error('usb setPortRoles failed: ' + err.code + ' message: ' + err.message);
651});
652```
653
654## USBEndpoint
655
656通过USB发送和接收数据的端口。通过[USBInterface](#usbinterface)获取。
657
658**系统能力:** SystemCapability.USB.USBManager
659
660| 名称            | 类型                                        |   必填      | 说明            |
661| ------------- | ------------------------------------------- | ------------- |------------ |
662| address       | number                                      | 是   |端点地址。         |
663| attributes    | number                                      | 是   |端点属性。         |
664| interval      | number                                      | 是   |端点间隔。         |
665| maxPacketSize | number                                      | 是   |端点最大数据包大小。    |
666| direction     | [USBRequestDirection](#usbrequestdirection) | 是   |端点的方向。        |
667| number        | number                                      | 是   |端点号。          |
668| type          | number                                      | 是   |端点类型。         |
669| interfaceId   | number                                      | 是   |端点所属的接口的唯一标识。 |
670
671## USBInterface
672
673一个[USBConfig](#usbconfig)中可以含有多个USBInterface,每个USBInterface提供一个功能。
674
675**系统能力:** SystemCapability.USB.USBManager
676
677| 名称               | 类型                                     |  必填      |说明                    |
678| ---------------- | ---------------------------------------- | ------------- |--------------------- |
679| id               | number                                   | 是   |接口的唯一标识。              |
680| protocol         | number                                   | 是   |接口的协议。                |
681| clazz            | number                                   | 是   |设备类型。                 |
682| subClass         | number                                   | 是   |设备子类。                 |
683| alternateSetting | number                                   | 是   |在同一个接口中的多个描述符中进行切换设置。 |
684| name             | string                                   | 是   |接口名称。                 |
685| endpoints        | Array&lt;[USBEndpoint](#usbendpoint)&gt; | 是   |当前接口所包含的端点。           |
686
687## USBConfig
688
689USB配置,一个[USBDevice](#usbdevice)中可以含有多个配置。
690
691**系统能力:** SystemCapability.USB.USBManager
692
693| 名称             | 类型                                             | 必填   |说明              |
694| -------------- | ------------------------------------------------ | --------------- |----------- |
695| id             | number                                           | 是   |配置的唯一标识。        |
696| attributes     | number                                           | 是   |配置的属性。          |
697| maxPower       | number                                           | 是   |最大功耗,以毫安为单位。    |
698| name           | string                                           | 是   |配置的名称,可以为空。     |
699| isRemoteWakeup | boolean                                          | 是   |检查当前配置是否支持远程唤醒。 |
700| isSelfPowered  | boolean                                          | 是   |检查当前配置是否支持独立电源。 |
701| interfaces     | Array&nbsp;&lt;[USBInterface](#usbinterface)&gt; | 是   |配置支持的接口属性。      |
702
703## USBDevice
704
705USB设备信息。
706
707**系统能力:** SystemCapability.USB.USBManager
708
709| 名称               | 类型                                 | 必填   |说明         |
710| ---------------- | ------------------------------------ | ---------- |---------- |
711| busNum           | number                               | 是   |总线地址。      |
712| devAddress       | number                               | 是   |设备地址。      |
713| serial           | string                               | 是   |序列号。       |
714| name             | string                               | 是   |设备名字。      |
715| manufacturerName | string                               | 是   |产商信息。      |
716| productName      | string                               | 是   |产品信息。      |
717| version          | string                               | 是   |版本。        |
718| vendorId         | number                               | 是   |厂商ID。      |
719| productId        | number                               | 是   |产品ID。      |
720| clazz            | number                               | 是   |设备类。       |
721| subClass         | number                               | 是   |设备子类。      |
722| protocol         | number                               | 是   |设备协议码。     |
723| configs          | Array&lt;[USBConfig](#usbconfig)&gt; | 是   |设备配置描述符信息。 |
724
725## USBDevicePipe
726
727USB设备消息传输通道,用于确定设备。
728
729**系统能力:** SystemCapability.USB.USBManager
730
731| 名称       | 类型   | 必填  |说明    |
732| ---------- | ------ | ----- |----- |
733| busNum     | number | 是   |总线地址。 |
734| devAddress | number | 是   |设备地址。 |
735
736## USBControlParams
737
738控制传输参数。
739
740**系统能力:** SystemCapability.USB.USBManager
741
742| 名称      | 类型                                            | 必填 |说明               |
743| ------- | ----------------------------------------------- | ---------------- |---------------- |
744| request | number                                          | 是   |请求类型。            |
745| target  | [USBRequestTargetType](#usbrequesttargettype)   | 是   |请求目标类型。          |
746| reqType | [USBControlRequestType](#usbcontrolrequesttype) | 是   |请求控制类型。          |
747| value   | number                                          | 是   |请求参数。            |
748| index   | number                                          | 是   |请求参数value对应的索引值。 |
749| data    | Uint8Array                                      | 是   |用于写入或读取的缓冲区。     |
750
751## USBPort<sup>9+</sup>
752
753USB设备端口。
754
755**系统接口:** 此接口为系统接口。
756
757**系统能力:** SystemCapability.USB.USBManager
758
759| 名称           | 类型                         | 必填 |说明                                |
760| -------------- | -------------------------------- | -------------- |----------------------------------- |
761| id             | number                           | 是   |USB端口唯一标识。                   |
762| supportedModes | [PortModeType](#portmodetype9)   | 是   |USB端口所支持的模式的数字组合掩码。 |
763| status         | [USBPortStatus](#usbportstatus9) | 是   |USB端口角色。                       |
764
765## USBPortStatus<sup>9+</sup>
766
767USB设备端口角色信息。
768
769**系统接口:** 此接口为系统接口。
770
771**系统能力:** SystemCapability.USB.USBManager
772
773| 名称             | 类型 | 必填 |说明                   |
774| ---------------- | -------- | ----------- |---------------------- |
775| currentMode      | number   | 是   |当前的USB模式。        |
776| currentPowerRole | number   | 是   |当前设备充电模式。     |
777| currentDataRole  | number   | 是   |当前设备数据传输模式。 |
778
779## USBRequestTargetType
780
781请求目标类型。
782
783**系统能力:** SystemCapability.USB.USBManager
784
785| 名称                         | 值   | 说明   |
786| ---------------------------- | ---- | ------ |
787| USB_REQUEST_TARGET_DEVICE    | 0    | 设备。 |
788| USB_REQUEST_TARGET_INTERFACE | 1    | 接口。 |
789| USB_REQUEST_TARGET_ENDPOINT  | 2    | 端点。 |
790| USB_REQUEST_TARGET_OTHER     | 3    | 其他。 |
791
792## USBControlRequestType
793
794控制请求类型。
795
796**系统能力:** SystemCapability.USB.USBManager
797
798| 名称                      | 值   | 说明   |
799| ------------------------- | ---- | ------ |
800| USB_REQUEST_TYPE_STANDARD | 0    | 标准。 |
801| USB_REQUEST_TYPE_CLASS    | 1    | 类。   |
802| USB_REQUEST_TYPE_VENDOR   | 2    | 厂商。 |
803
804## USBRequestDirection
805
806请求方向。
807
808**系统能力:** SystemCapability.USB.USBManager
809
810| 名称                        | 值   | 说明                     |
811| --------------------------- | ---- | ------------------------ |
812| USB_REQUEST_DIR_TO_DEVICE   | 0    | 写数据,主设备往从设备。 |
813| USB_REQUEST_DIR_FROM_DEVICE | 0x80 | 读数据,从设备往主设备。 |
814
815## FunctionType<sup>9+</sup>
816
817USB设备侧功能。
818
819**系统接口:** 此接口为系统接口。
820
821**系统能力:** SystemCapability.USB.USBManager
822
823| 名称         | 值   | 说明       |
824| ------------ | ---- | ---------- |
825| NONE         | 0    | 没有功能。 |
826| ACM          | 1    | acm功能。  |
827| ECM          | 2    | ecm功能。  |
828| HDC          | 4    | hdc功能。  |
829| MTP          | 8    | 暂不支持。 |
830| PTP          | 16   | 暂不支持。 |
831| RNDIS        | 32   | 暂不支持。 |
832| MIDI         | 64   | 暂不支持。 |
833| AUDIO_SOURCE | 128  | 暂不支持。 |
834| NCM          | 256  | 暂不支持。 |
835
836## PortModeType<sup>9+</sup>
837
838USB端口模式类型。
839
840**系统接口:** 此接口为系统接口。
841
842**系统能力:** SystemCapability.USB.USBManager
843
844| 名称      | 值   | 说明                                                 |
845| --------- | ---- | ---------------------------------------------------- |
846| NONE      | 0    | 无。                                                 |
847| UFP       | 1    | 数据上行,需要外部供电。                             |
848| DFP       | 2    | 数据下行,对外提供电源。                             |
849| DRP       | 3    | 既可以做DFP(Host),也可以做UFP(Device),当前不支持。 |
850| NUM_MODES | 4    | 当前不支持。                                         |
851
852## PowerRoleType<sup>9+</sup>
853
854电源角色类型。
855
856**系统接口:** 此接口为系统接口。
857
858**系统能力:** SystemCapability.USB.USBManager
859
860| 名称   | 值   | 说明       |
861| ------ | ---- | ---------- |
862| NONE   | 0    | 无。       |
863| SOURCE | 1    | 外部供电。 |
864| SINK   | 2    | 内部供电。 |
865
866## DataRoleType<sup>9+</sup>
867
868数据角色类型。
869
870**系统接口:** 此接口为系统接口。
871
872**系统能力:** SystemCapability.USB.USBManager
873
874| 名称   | 值   | 说明         |
875| ------ | ---- | ------------ |
876| NONE   | 0    | 无。         |
877| HOST   | 1    | 主设备角色。 |
878| DEVICE | 2    | 从设备角色。 |
879
880