5cbd1f6c39
In case the host doesn't pull the new data from the endpoint, the work task would schedule itself again delayed (at the max. priority). When there is no terminal program or active application reading the endpoint this results in a constant polling of the endpoint burning up to 5% of the CPU cycles. By using a atomic flag for tx busy, the polling is solved and changed into a postponed execution of the next work task which saves up to 5% of CPU cycles and allows a better real-time behavior for other tasks. Secondly, if the TX interrupt is disabled but there is still data in the TX FIFO (ring buffer), the implementation will continue to trigger subsequent TX work and attempt to flush the data to the host. Signed-off-by: Vincent van der Locht <vincent@synchronicit.nl> |
||
---|---|---|
.. | ||
class | ||
CMakeLists.txt | ||
Kconfig | ||
usbd_ch9.c | ||
usbd_ch9.h | ||
usbd_class.c | ||
usbd_class.h | ||
usbd_class_api.h | ||
usbd_config.c | ||
usbd_config.h | ||
usbd_core.c | ||
usbd_data.ld | ||
usbd_desc.c | ||
usbd_desc.h | ||
usbd_device.c | ||
usbd_device.h | ||
usbd_endpoint.c | ||
usbd_endpoint.h | ||
usbd_init.c | ||
usbd_init.h | ||
usbd_interface.c | ||
usbd_interface.h | ||
usbd_msg.c | ||
usbd_msg.h | ||
usbd_shell.c |