fuchsia.usb.policy 接口为客户端提供了查询和监控 USB 设备和 USB 子系统整体状态的机制,而无需依赖底层硬件驱动程序实现。
协议
配置
在 fuchsia.usb.policy/policy.fidl 中定义
用于查询和动态重新配置 USB 外围设备功能的协议。
使政策管理中心和系统命令行工具能够在运行时检查活跃的 USB 外围设备配置并重新配置外围设备功能堆栈。
ConnectCable
在之前调用 DisconnectCable 后,通过 USB 电源调试服务重新连接 Type-C 端口 CC 线,并取消所有待处理的自动重新连接警报。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
Configuration_ConnectCable_Result
|
DisconnectCable
通过 USB 电源调试服务断开 C 型端口 CC 线路,以模拟物理线缆拔出。如果 duration 为正数,则在 duration 后使用永久性 usb-policy 服务中的硬件唤醒闹钟安排自动 Type-C 线缆重新连接,这样即使在 USB 链路断开时调用的 CLI 会话终止,重新连接仍会完成。
请求
| 名称 | 类型 |
|---|---|
duration |
zx/Duration
|
响应
| 名称 | 类型 |
|---|---|
payload |
Configuration_DisconnectCable_Result
|
GetConfiguration
检索当前 USB 设备描述符和活跃配置描述符。
错误
ZX_ERR_NOT_SUPPORTED:目标硬件不支持外围设备功能查询。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
Configuration_GetConfiguration_Result
|
SetConfiguration
设置并激活新的 USB 外围设备功能配置。
在初始化和绑定新指定的功能之前,系统会先拆解之前的外围设备功能堆栈。外围控制器和底层函数驱动程序注册完毕并准备就绪后,调用即完成。
错误
ZX_ERR_INVALID_ARGS:配置参数无效。ZX_ERR_ALREADY_BOUND:现有外围设备配置已锁定或正在进行转换。ZX_ERR_NOT_SUPPORTED:无法同时支持所请求的功能组合。
请求
| 名称 | 类型 |
|---|---|
device_desc |
fuchsia.hardware.usb.peripheral/DeviceDescriptor
|
config_descriptors |
vector<fuchsia.hardware.usb.peripheral/ConfigurationDescriptor>:5
|
响应
| 名称 | 类型 |
|---|---|
payload |
Configuration_SetConfiguration_Result
|
健康
在 fuchsia.usb.policy/policy.fidl 中定义
用于从 USB 系统检索诊断和健康信息的协议。
GetReport
返回当前 USB 运行状况和设备状态的快照。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
Health_GetReport_Result
|
PolicyProvider
在 fuchsia.usb.policy/policy.fidl 中定义
用于监控 USB 设备状态动态变化的接口。
WatchDeviceState
通过挂起获取操作,将更新后的设备状态值通知客户端。 首次调用此方法时,它会立即返回当前状态。后续调用将挂起,直到有更改要报告。返回一个包含更新后的设备状态的表。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.hardware.usb.policy/DeviceStateWatcher_WatchDeviceState_Result
|
STRUCTS
Configuration_ConnectCable_Response
在 fuchsia.usb.policy/policy.fidl 中定义
<EMPTY>
Configuration_DisconnectCable_Response
在 fuchsia.usb.policy/policy.fidl 中定义
<EMPTY>
Configuration_GetConfiguration_Response
在 fuchsia.usb.policy/policy.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
device_desc |
fuchsia.hardware.usb.peripheral/DeviceDescriptor
|
无默认应用 | |
config_descriptors |
vector<fuchsia.hardware.usb.peripheral/ConfigurationDescriptor>:5
|
无默认应用 |
Configuration_SetConfiguration_Response
在 fuchsia.usb.policy/policy.fidl 中定义
<EMPTY>
枚举
CableStatus flexible
类型:uint32
在 fuchsia.usb.policy/policy.fidl 中定义
USB 线物理连接的状态。
| 名称 | 值 | 说明 |
|---|---|---|
已断开连接 |
0 |
|
已连接 |
1 |
FunctionStatus flexible
类型:uint32
在 fuchsia.usb.policy/policy.fidl 中定义
USB 功能驱动程序或连接的健康状态。
| 名称 | 值 | 说明 |
|---|---|---|
已停用 |
0 |
|
已断开连接 |
1 |
|
已连接 |
2 |
|
ERROR |
3 |
TABLES
AdbHealth
在 fuchsia.usb.policy/policy.fidl 中定义
USB ADB 功能子系统的健康信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
status |
FunctionStatus
|
描述 ADB 功能的高级政策和配置状态。 |
2 |
details |
string:128
|
提供额外的诊断详细信息或状态说明。 |
3 |
online |
bool
|
指示底层 ADB 守护程序连接和传输是否处于活跃在线状态并与主机通信。与 |
4 |
driver_state |
string:32
|
描述 ADB 函数驱动程序报告的运行时执行状态(例如“kAwaitingUsbConnection”“kOnline”“kStoppingForReconnect”“kStoppingForUnbind”)。 |
CdcEthernetHealth
在 fuchsia.usb.policy/policy.fidl 中定义
USB CDC 以太网功能子系统的健康信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
status |
FunctionStatus
|
描述 CDC 以太网功能的高级政策和配置状态。 |
2 |
details |
string:128
|
提供额外的诊断详细信息或状态说明。 |
3 |
online |
bool
|
指示底层以太网网络接口和链路是否处于活跃在线状态,并已准备好处理网络流量。与 |
HealthReport
在 fuchsia.usb.policy/policy.fidl 中定义
USB 控制器当前状态和运行状况的快照。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
state |
fuchsia.hardware.usb.policy/DeviceState
|
描述 USB 2.0 规范定义的设备当前状态。 |
2 |
address |
uint8
|
分配给 USB 设备的地址。 |
3 |
cable_status |
CableStatus
|
指明是否连接了 USB 物理线缆 / |
4 |
adb |
AdbHealth
|
描述 ADB 功能子系统 ([AdbHealth]) 的健康状态。 |
5 |
cdc_ethernet |
CdcEthernetHealth
|
描述 CDC 以太网功能子系统的健康状态 ([CdcEthernetHealth])。 |
6 |
vsock |
VsockHealth
|
描述 VSOCK 功能子系统的健康状态 ([VsockHealth])。 |
VsockHealth
在 fuchsia.usb.policy/policy.fidl 中定义
USB VSOCK 功能子系统的健康信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
status |
FunctionStatus
|
描述 VSOCK 功能的高级政策和配置状态。 |
2 |
active_channels |
uint32
|
当前活跃或打开的多路复用 VSOCK 套接字通道的数量。如果未知或函数驱动程序不支持,则此字段不存在(无)。 |
3 |
details |
string:128
|
提供额外的诊断详细信息或状态说明。 |
4 |
online |
bool
|
指示底层 VSOCK 传输驱动程序是否处于活跃在线状态并准备好接收流量。
与 |
5 |
driver_state |
string:32
|
描述 VSOCK 函数驱动程序报告的运行时执行状态(例如“未配置”“正在运行”)。 |
UNIONS
Configuration_ConnectCable_Result strict
在 fuchsia.usb.policy/policy.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Configuration_ConnectCable_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Configuration_DisconnectCable_Result strict
在 fuchsia.usb.policy/policy.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Configuration_DisconnectCable_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Configuration_GetConfiguration_Result strict
在 fuchsia.usb.policy/policy.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Configuration_GetConfiguration_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Configuration_SetConfiguration_Result strict
在 fuchsia.usb.policy/policy.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Configuration_SetConfiguration_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Health_GetReport_Result strict
在 fuchsia.usb.policy/policy.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
HealthReport
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
常量
| 名称 | 值 | 类型 | 说明 |
|---|---|---|---|
| MAX_DETAILS_LENGTH |
128
|
uint32 |