Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

add maybe_write() for lazy data closures on Endpoint and UsbBus #78

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

mutantbob
Copy link

@mutantbob mutantbob commented Dec 9, 2021

The write() API for Endpoint is a little clumsy because it returns an error if the write would block, forcing the code that invokes it to hang on to the buffer and retry later.

This is a solution, but it adds method to the UsbBus trait, forcing downstream implementers to update (see twitchyliquid64/usbd-hid#34 ).

I am mostly trying to start a conversation about this so options (such as the ability to check WouldBlock before calling write) can be discussed.

@mutantbob
Copy link
Author

An example of how it might simplify code that uses USB: mutantbob/imxrt-usbd@05c6584

@ithinuel
Copy link
Contributor

Wouldn't an fn is_writable(&self) -> bool method be simpler?

simpkins added a commit to simpkins/usbd-hid-rs that referenced this pull request Apr 9, 2024
This reverts commit c1210a9. (twitchyliquid64#34)
This commit breaks the build since it attempts to use `EndpointIn`
methods from a PR that were never landed in the usb-device crate:
rust-embedded-community/usb-device#78
twitchyliquid64 pushed a commit to twitchyliquid64/usbd-hid that referenced this pull request Apr 9, 2024
This reverts commit c1210a9. (#34)
This commit breaks the build since it attempts to use `EndpointIn`
methods from a PR that were never landed in the usb-device crate:
rust-embedded-community/usb-device#78
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants