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 = new usb.USBControlParams(); 379usb.controlTransfer(devicepipe, param).then((ret) => { 380 console.log(`controlTransfer = ${ret}`); 381}) 382``` 383 384## usb.bulkTransfer 385 386bulkTransfer(pipe: USBDevicePipe, endpoint: USBEndpoint, buffer: Uint8Array, timeout ?: number): Promise<number> 387 388批量传输。 389 390需要调用[usb.getDevices](#usbgetdevices)获取设备信息列表以及endpoint;再调用[usb.requestRight](#usbrequestright)获取设备请求权限;然后调用[usb.connectDevice](#usbconnectdevice)接口得到返回数据devicepipe之后,再次获取接口[usb.claimInterface](#usbclaiminterface);再调用usb.bulkTransfer接口。 391 392**系统能力:** SystemCapability.USB.USBManager 393 394**参数:** 395 396| 参数名 | 类型 | 必填 | 说明 | 397| -------- | -------- | -------- | -------- | 398| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定设备。 | 399| endpoint | [USBEndpoint](#usbendpoint) | 是 | 用于确定传输的端口。 | 400| buffer | Uint8Array | 是 | 用于写入或读取的缓冲区。 | 401| timeout | number | 否 | 超时时间(单位:ms),可选参数,默认为0不超时。| 402 403**返回值:** 404 405| 类型 | 说明 | 406| -------- | -------- | 407| Promise<number> | Promise对象,获取传输或接收到的数据块大小。失败返回-1。 | 408 409**示例:** 410 411```js 412//usb.getDevices 接口返回数据集合,取其中一个设备对象,并获取权限 。 413//把获取到的设备对象作为参数传入usb.connectDevice;当usb.connectDevice接口成功返回之后; 414//才可以调用第三个接口usb.claimInterface.当usb.claimInterface 调用成功以后,再调用该接口。 415usb.bulkTransfer(devicepipe, endpoint, buffer).then((ret) => { 416 console.log(`bulkTransfer = ${ret}`); 417}); 418``` 419 420## usb.closePipe 421 422closePipe(pipe: USBDevicePipe): number 423 424关闭设备消息控制通道。 425 426需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)得到devicepipe作为参数。 427 428**系统能力:** SystemCapability.USB.USBManager 429 430**参数:** 431 432| 参数名 | 类型 | 必填 | 说明 | 433| -------- | -------- | -------- | -------- | 434| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定USB设备消息控制通道。 | 435 436**返回值:** 437 438| 类型 | 说明 | 439| -------- | -------- | 440| number | 关闭设备消息控制通道成功返回0;关闭设备消息控制通道失败返回其他错误码。 | 441 442**示例:** 443 444```js 445let ret = usb.closePipe(devicepipe); 446console.log(`closePipe = ${ret}`); 447``` 448 449## usb.usbFunctionsFromString<sup>9+</sup> 450 451usbFunctionsFromString(funcs: string): number 452 453在设备模式下,将字符串形式的USB功能列表转化为数字掩码。 454 455**系统接口:** 此接口为系统接口。 456 457**系统能力:** SystemCapability.USB.USBManager 458 459**参数:** 460 461| 参数名 | 类型 | 必填 | 说明 | 462| ------ | ------ | ---- | ---------------------- | 463| funcs | string | 是 | 字符串形式的功能列表。 | 464 465**返回值:** 466 467| 类型 | 说明 | 468| ------ | ------------------ | 469| number | 转化后的数字掩码。 | 470 471**示例:** 472 473```js 474let funcs = "acm"; 475let ret = usb.usbFunctionsFromString(funcs); 476``` 477 478## usb.usbFunctionsToString<sup>9+</sup> 479 480usbFunctionsToString(funcs: FunctionType): string 481 482在设备模式下,将数字掩码形式的USB功能列表转化为字符串。 483 484**系统接口:** 此接口为系统接口。 485 486**系统能力:** SystemCapability.USB.USBManager 487 488**参数:** 489 490| 参数名 | 类型 | 必填 | 说明 | 491| ------ | ------------------------------ | ---- | ----------------- | 492| funcs | [FunctionType](#functiontype9) | 是 | USB功能数字掩码。 | 493 494**返回值:** 495 496| 类型 | 说明 | 497| ------ | ------------------------------ | 498| string | 转化后的字符串形式的功能列表。 | 499 500**示例:** 501 502```js 503let funcs = usb.ACM | usb.ECM; 504let ret = usb.usbFunctionsToString(funcs); 505``` 506 507## usb.setCurrentFunctions<sup>9+</sup> 508 509setCurrentFunctions(funcs: FunctionType): Promise\<boolean\> 510 511在设备模式下,设置当前的USB功能列表。 512 513**系统接口:** 此接口为系统接口。 514 515**系统能力:** SystemCapability.USB.USBManager 516 517**参数:** 518 519| 参数名 | 类型 | 必填 | 说明 | 520| ------ | ------------------------------ | ---- | ----------------- | 521| funcs | [FunctionType](#functiontype9) | 是 | USB功能数字掩码。 | 522 523**返回值:** 524 525| 类型 | 说明 | 526| ------------------ | ------------------------------------------------------------ | 527| Promise\<boolean\> | Promise对象,返回设置成功与否的结果。true表示设置成功,false表示设置失败。 | 528 529**示例:** 530 531```js 532let funcs = usb.HDC; 533let ret = usb.setCurrentFunctions(funcs); 534``` 535 536## usb.getCurrentFunctions<sup>9+</sup> 537 538getCurrentFunctions(): FunctionType 539 540在设备模式下,获取当前的USB功能列表的数字组合掩码。 541 542**系统接口:** 此接口为系统接口。 543 544**系统能力:** SystemCapability.USB.USBManager 545 546**返回值:** 547 548| 类型 | 说明 | 549| ------------------------------ | --------------------------------- | 550| [FunctionType](#functiontype9) | 当前的USB功能列表的数字组合掩码。 | 551 552**示例:** 553 554```js 555let ret = usb.getCurrentFunctions(); 556``` 557 558## usb.getPorts<sup>9+</sup> 559 560getPorts(): Array\<USBPort\> 561 562获取所有物理USB端口描述信息。 563 564**系统接口:** 此接口为系统接口。 565 566**系统能力:** SystemCapability.USB.USBManager 567 568**返回值:** 569 570| 类型 | 说明 | 571| ----------------------------- | --------------------- | 572| [Array\<USBPort\>](#usbport9) | USB端口描述信息列表。 | 573 574**示例:** 575 576```js 577let ret = usb.getPorts(); 578``` 579 580## usb.getSupportedModes<sup>9+</sup> 581 582getSupportedModes(portId: number): PortModeType 583 584获取指定的端口支持的模式列表的组合掩码。 585 586**系统接口:** 此接口为系统接口。 587 588**系统能力:** SystemCapability.USB.USBManager 589 590**参数:** 591 592| 参数名 | 类型 | 必填 | 说明 | 593| ------ | ------ | ---- | -------- | 594| portId | number | 是 | 端口号。 | 595 596**返回值:** 597 598| 类型 | 说明 | 599| ------------------------------ | -------------------------- | 600| [PortModeType](#portmodetype9) | 支持的模式列表的组合掩码。 | 601 602**示例:** 603 604```js 605let ret = usb.getSupportedModes(0); 606``` 607 608## usb.setPortRoles<sup>9+</sup> 609 610setPortRoles(portId: number, powerRole: PowerRoleType, dataRole: DataRoleType): Promise\<boolean\> 611 612设置指定的端口支持的角色模式,包含充电角色、数据传输角色。 613 614**系统接口:** 此接口为系统接口。 615 616**系统能力:** SystemCapability.USB.USBManager 617 618**参数:** 619 620| 参数名 | 类型 | 必填 | 说明 | 621| --------- | -------------------------------- | ---- | ---------------- | 622| portId | number | 是 | 端口号。 | 623| powerRole | [PowerRoleType](#powerroletype9) | 是 | 充电的角色。 | 624| dataRole | [DataRoleType](#dataroletype9) | 是 | 数据传输的角色。 | 625 626**返回值:** 627 628| 类型 | 说明 | 629| ------------------ | ------------------------------------------------------------ | 630| Promise\<boolean\> | Promise对象,返回设置成功与否的结果。true表示设置成功,false表示设置失败。 | 631 632**示例:** 633 634```js 635let portId = 1; 636usb.setPortRoles(portId, usb.PowerRoleType.SOURCE, usb.DataRoleType.HOST).then(() => { 637 console.info('usb setPortRoles successfully.'); 638}).catch(err => { 639 console.error('usb setPortRoles failed: ' + err.code + ' message: ' + err.message); 640}); 641``` 642 643## USBEndpoint 644 645通过USB发送和接收数据的端口。通过[USBInterface](#usbinterface)获取。 646 647**系统能力:** SystemCapability.USB.USBManager 648 649| 名称 | 类型 | 必填 | 说明 | 650| ------------- | ------------------------------------------- | ------------- |------------ | 651| address | number | 是 |端点地址。 | 652| attributes | number | 是 |端点属性。 | 653| interval | number | 是 |端点间隔。 | 654| maxPacketSize | number | 是 |端点最大数据包大小。 | 655| direction | [USBRequestDirection](#usbrequestdirection) | 是 |端点的方向。 | 656| number | number | 是 |端点号。 | 657| type | number | 是 |端点类型。 | 658| interfaceId | number | 是 |端点所属的接口的唯一标识。 | 659 660## USBInterface 661 662一个[USBConfig](#usbconfig)中可以含有多个USBInterface,每个USBInterface提供一个功能。 663 664**系统能力:** SystemCapability.USB.USBManager 665 666| 名称 | 类型 | 必填 |说明 | 667| ---------------- | ---------------------------------------- | ------------- |--------------------- | 668| id | number | 是 |接口的唯一标识。 | 669| protocol | number | 是 |接口的协议。 | 670| clazz | number | 是 |设备类型。 | 671| subClass | number | 是 |设备子类。 | 672| alternateSetting | number | 是 |在同一个接口中的多个描述符中进行切换设置。 | 673| name | string | 是 |接口名称。 | 674| endpoints | Array<[USBEndpoint](#usbendpoint)> | 是 |当前接口所包含的端点。 | 675 676## USBConfig 677 678USB配置,一个[USBDevice](#usbdevice)中可以含有多个配置。 679 680**系统能力:** SystemCapability.USB.USBManager 681 682| 名称 | 类型 | 必填 |说明 | 683| -------------- | ------------------------------------------------ | --------------- |----------- | 684| id | number | 是 |配置的唯一标识。 | 685| attributes | number | 是 |配置的属性。 | 686| maxPower | number | 是 |最大功耗,以毫安为单位。 | 687| name | string | 是 |配置的名称,可以为空。 | 688| isRemoteWakeup | boolean | 是 |检查当前配置是否支持远程唤醒。 | 689| isSelfPowered | boolean | 是 |检查当前配置是否支持独立电源。 | 690| interfaces | Array <[USBInterface](#usbinterface)> | 是 |配置支持的接口属性。 | 691 692## USBDevice 693 694USB设备信息。 695 696**系统能力:** SystemCapability.USB.USBManager 697 698| 名称 | 类型 | 必填 |说明 | 699| ---------------- | ------------------------------------ | ---------- |---------- | 700| busNum | number | 是 |总线地址。 | 701| devAddress | number | 是 |设备地址。 | 702| serial | string | 是 |序列号。 | 703| name | string | 是 |设备名字。 | 704| manufacturerName | string | 是 |产商信息。 | 705| productName | string | 是 |产品信息。 | 706| version | string | 是 |版本。 | 707| vendorId | number | 是 |厂商ID。 | 708| productId | number | 是 |产品ID。 | 709| clazz | number | 是 |设备类。 | 710| subClass | number | 是 |设备子类。 | 711| protocol | number | 是 |设备协议码。 | 712| configs | Array<[USBConfig](#usbconfig)> | 是 |设备配置描述符信息。 | 713 714## USBDevicePipe 715 716USB设备消息传输通道,用于确定设备。 717 718**系统能力:** SystemCapability.USB.USBManager 719 720| 名称 | 类型 | 必填 |说明 | 721| ---------- | ------ | ----- |----- | 722| busNum | number | 是 |总线地址。 | 723| devAddress | number | 是 |设备地址。 | 724 725## USBControlParams 726 727控制传输参数。 728 729**系统能力:** SystemCapability.USB.USBManager 730 731| 名称 | 类型 | 必填 |说明 | 732| ------- | ----------------------------------------------- | ---------------- |---------------- | 733| request | number | 是 |请求类型。 | 734| target | [USBRequestTargetType](#usbrequesttargettype) | 是 |请求目标类型。 | 735| reqType | [USBControlRequestType](#usbcontrolrequesttype) | 是 |请求控制类型。 | 736| value | number | 是 |请求参数。 | 737| index | number | 是 |请求参数value对应的索引值。 | 738| data | Uint8Array | 是 |用于写入或读取的缓冲区。 | 739 740## USBPort<sup>9+</sup> 741 742USB设备端口。 743 744**系统接口:** 此接口为系统接口。 745 746**系统能力:** SystemCapability.USB.USBManager 747 748| 名称 | 类型 | 必填 |说明 | 749| -------------- | -------------------------------- | -------------- |----------------------------------- | 750| id | number | 是 |USB端口唯一标识。 | 751| supportedModes | [PortModeType](#portmodetype9) | 是 |USB端口所支持的模式的数字组合掩码。 | 752| status | [USBPortStatus](#usbportstatus9) | 是 |USB端口角色。 | 753 754## USBPortStatus<sup>9+</sup> 755 756USB设备端口角色信息。 757 758**系统接口:** 此接口为系统接口。 759 760**系统能力:** SystemCapability.USB.USBManager 761 762| 名称 | 类型 | 必填 |说明 | 763| ---------------- | -------- | ----------- |---------------------- | 764| currentMode | number | 是 |当前的USB模式。 | 765| currentPowerRole | number | 是 |当前设备充电模式。 | 766| currentDataRole | number | 是 |当前设备数据传输模式。 | 767 768## USBRequestTargetType 769 770请求目标类型。 771 772**系统能力:** SystemCapability.USB.USBManager 773 774| 名称 | 值 | 说明 | 775| ---------------------------- | ---- | ------ | 776| USB_REQUEST_TARGET_DEVICE | 0 | 设备。 | 777| USB_REQUEST_TARGET_INTERFACE | 1 | 接口。 | 778| USB_REQUEST_TARGET_ENDPOINT | 2 | 端点。 | 779| USB_REQUEST_TARGET_OTHER | 3 | 其他。 | 780 781## USBControlRequestType 782 783控制请求类型。 784 785**系统能力:** SystemCapability.USB.USBManager 786 787| 名称 | 值 | 说明 | 788| ------------------------- | ---- | ------ | 789| USB_REQUEST_TYPE_STANDARD | 0 | 标准。 | 790| USB_REQUEST_TYPE_CLASS | 1 | 类。 | 791| USB_REQUEST_TYPE_VENDOR | 2 | 厂商。 | 792 793## USBRequestDirection 794 795请求方向。 796 797**系统能力:** SystemCapability.USB.USBManager 798 799| 名称 | 值 | 说明 | 800| --------------------------- | ---- | ------------------------ | 801| USB_REQUEST_DIR_TO_DEVICE | 0 | 写数据,主设备往从设备。 | 802| USB_REQUEST_DIR_FROM_DEVICE | 0x80 | 读数据,从设备往主设备。 | 803 804## FunctionType<sup>9+</sup> 805 806USB设备侧功能。 807 808**系统接口:** 此接口为系统接口。 809 810**系统能力:** SystemCapability.USB.USBManager 811 812| 名称 | 值 | 说明 | 813| ------------ | ---- | ---------- | 814| NONE | 0 | 没有功能。 | 815| ACM | 1 | acm功能。 | 816| ECM | 2 | ecm功能。 | 817| HDC | 4 | hdc功能。 | 818| MTP | 8 | 暂不支持。 | 819| PTP | 16 | 暂不支持。 | 820| RNDIS | 32 | 暂不支持。 | 821| MIDI | 64 | 暂不支持。 | 822| AUDIO_SOURCE | 128 | 暂不支持。 | 823| NCM | 256 | 暂不支持。 | 824 825## PortModeType<sup>9+</sup> 826 827USB端口模式类型。 828 829**系统接口:** 此接口为系统接口。 830 831**系统能力:** SystemCapability.USB.USBManager 832 833| 名称 | 值 | 说明 | 834| --------- | ---- | ---------------------------------------------------- | 835| NONE | 0 | 无。 | 836| UFP | 1 | 数据上行,需要外部供电。 | 837| DFP | 2 | 数据下行,对外提供电源。 | 838| DRP | 3 | 既可以做DFP(Host),也可以做UFP(Device),当前不支持。 | 839| NUM_MODES | 4 | 当前不支持。 | 840 841## PowerRoleType<sup>9+</sup> 842 843电源角色类型。 844 845**系统接口:** 此接口为系统接口。 846 847**系统能力:** SystemCapability.USB.USBManager 848 849| 名称 | 值 | 说明 | 850| ------ | ---- | ---------- | 851| NONE | 0 | 无。 | 852| SOURCE | 1 | 外部供电。 | 853| SINK | 2 | 内部供电。 | 854 855## DataRoleType<sup>9+</sup> 856 857数据角色类型。 858 859**系统接口:** 此接口为系统接口。 860 861**系统能力:** SystemCapability.USB.USBManager 862 863| 名称 | 值 | 说明 | 864| ------ | ---- | ------------ | 865| NONE | 0 | 无。 | 866| HOST | 1 | 主设备角色。 | 867| DEVICE | 2 | 从设备角色。 | 868 869