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