usbhostenum.c 中的 USBHCPepeStatus()无用:
uint32_t USBHCPepeStatus (uint32_t ui32Pipe) { 返回(0); }
我需要这样做、以便能够检测并从我看到的写入传输故障中恢复。 这些文档甚至引用了一个值 USBHCD_PIPLE_NO_CHANGE、该值在 USBLIB 的任何位置都未定义。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
usbhostenum.c 中的 USBHCPepeStatus()无用:
uint32_t USBHCPepeStatus (uint32_t ui32Pipe) { 返回(0); }
我需要这样做、以便能够检测并从我看到的写入传输故障中恢复。 这些文档甚至引用了一个值 USBHCD_PIPLE_NO_CHANGE、该值在 USBLIB 的任何位置都未定义。
usbhostenum.c 中的 USBHCSDPipeStatus ()无用:
我所有 的“纪律力量” 都不想说, “理查德——你真的感觉如何?”
然而-拉尔夫到达-他确认了你的感受。
这个主题领域在我的脑海中—但我的"照片"回忆起一位客户 (至少一位采用"USB 管道"的人)、我们 "接到了电话"。
现在-这一客户(过去)案例让我感兴趣的是-他们回顾了(其他):
"已执行-在其特定的"意图区域"中。 我记得,他们能够"讲出来"充分理解(复制)他们的努力确实取得了成功。
你(看来)在这里"死了"--我认为这可能会提供 一个"终审法院"。 (可能)
我可以报告、我们使用多家供应商提供的许多 ARM MCU 通常会暴露"优势技术"、同样、这些" 不太..." 有时-"吹入风"(45°-精确)使您能够达到目标-即使是在-尤其是当-这似乎令人怀疑的情况下-也是如此...
您好、Robert、
[报价用户="R Sexton"]如何检查传输失败?
根据我在代码方面所做的回顾、在 usbhostenum.c 文件中、实现方案需要与此 API 一同执行:
// // //! 此函数返回 LPM 请求的当前状态。 //! //! param psDevice 是要查询的设备。 //! //! 此函数返回给定 //!的 LPM 请求的当前状态 器件。 调用此函数可确定先前的请求是否已完成 //! 或者是否存在错误。 //! //! 返回此函数返回以下值: //! -\b USBHCD_LPM_AVAIL -此特定的无挂起的 LPM 请求 //! 设备或最后一个请求成功完成。 //! -\b USBHCD_LPM_ERROR -此器件的最后一个 LPM 请求未 //! 成功完成。 //! -\b USBHCD_LPM_PENDING -最后一个 LPM 请求尚未完成。 //// ***************** uint32_t USBHCCDLPMStatus (tUSBHostDevice * psDevice) { uint32_t ui32Ret; assert (psDevice!= 0); // //不应同时具有 USBHDEV_FLAG_LPMERROR 和 USBHDEV_FLAG_LPMPEND //同时设置。 // assert((psDevice->ui32Flags & (USBHDEV_FLAG_LPMERROR | USBHDEV_FLAG_LPMPEND))!= (USBHDEV_FLAG_LPMERROR | USBHDEV_FLAG_LPMPEND); // //默认为无待处理的传输或错误。 // ui32Ret = USBHCD_LPM_AVAIL; if (psDevice->ui32Flags & USBHDEV_FLAG_LPMERROR) { // //在发送 LPM 命令的最后一次调用后发生错误。 // ui32Ret = USBHCD_LPM_ERROR; } 否则、如果(psDevice->ui32Flags & USBHDEV_FLAG_LPMPEND) { // //仍有待处理的传输。 // ui32Ret = USBHCD_LPM_PENDING; } return (ui32Ret); }
使用的标志是用户定义的、放置在文件的顶部、 ui32Flags 变量被添加到 tUSBHostDevice 结构中(这可能更难拉取、因为它在7个文件中使用、所以如果你觉得它足够干净、你可以选择一个不与结构相关联的全局变量)。
更困难的部分是集成新标志是 USBHostIntHandlerInternal 的一部分、在该部分中、您可以指定哪些事件会导致设置哪些标志、然后当然将标志检查添加到相关函数中以获得所需的行为。
不幸的是、无论我以何种方式看待它、我都看不到一种快速/简单的实施方法-尽管我总是有机会看到一种更简单的方法、而我只是没有知识水平可以查看。