- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
一个 USB 设备可以进入低功耗模式(支持挂起和恢复)。
主机还可以为设备启动挂起和恢复,在这种情况下,主机知道设备状态。
场景是:
最佳答案
根据 USB 规范,USB 设备不能暂停与 USB 主机的链接。只有主机可以暂停链接。此外,挂起(U3)与低功耗模式(U1/U2)不同。设备可以通过与主机协商而不是暂停来开始切换到低功耗模式。
现在假设您指的是低功耗模式 (U1/U2),那么主机驱动程序无法知道端口何时切换到由设备启动的低功耗模式,因为不会有任何事件发生。您需要自己监控链路状态,以查看链路是否已切换到低功耗模式。
据我所知,有一个 API 用于获取连接到集线器的设备的链路状态。
static void xhci_hub_report_link_state(struct xhci_hcd *xhci,
u32 *status, u32 status_reg)
此 API 可用于跟踪通过外部集线器连接的设备的链接状态。但是没有可用于读取根集线器端口链路状态的 API。如果主机 Controller 驱动程序公开任何接口(interface),则可以使用该接口(interface)。
查看 dwc3 Controller 代码,它公开了一个可用于读取链接状态的 debugfs 接口(interface)。
路径 - usb/dwc3/debugfs.c
API-
static int dwc3_link_state_show(struct seq_file *s, void *unused)
PS - 我认为您有 XHCI Controller 。但 EHCI Controller 也几乎相同。设备永远不会暂停 USB 链接。
关于android - 内核如何知道 USB 设备何时自行进入低功耗模式(不是由主机启动)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45351924/
我发现以下帖子非常有帮助: How to pickle yourself? 但是,此解决方案的局限性在于,重新加载类时,它不会以其“运行时”状态返回。即它将重新加载所有变量等以及类在转储时的一般状态.
我是一名优秀的程序员,十分优秀!