我刚刚开始使用 QNX。我正在尝试通过改编在 github 上找到的代码来在 QNX 下编写 USB3 视觉驱动程序: https://github.com/ni/usb3vision/tree/master
我想知道如何用 QNX libusbdi 的函数替换 usb_bulk_msg() 函数,但我不知道该怎么做。
提前谢谢您。
大部分功能是相同的,但我不知道如何替换usb_bulk_msg。
我只能访问 QNX 6.5 及更早版本的
libusbdi
文档。当时,QNX libusbdi 不提供同步消息传递功能,仅通过usbd_io
提供异步完成回调接口。您需要编写自己的垫片函数。
usb_bulk_msg
本身实际上是使用与libusbdi非常相似的底层异步USB API实现的;您可以使用那里的内核源代码作为如何实现它的指南。在 QNX 上,struct completion
可以使用 condvar 来实现。请注意,您还需要跟踪未完成的请求,以便管理设备删除回调中的清理工作。