Skip to content

Commit

Permalink
Don't require UsbBus to be Sync.
Browse files Browse the repository at this point in the history
If the UsbBus is not Sync, it can still be used to make a UsbDevice,
but that UsbDevice will not be Sync.  This is quite limiting (as it
mostly means that the USB device can't be accessed from interrupt
contexts), but it is entirely safe from the Rust safety perspective.
  • Loading branch information
dlaw committed Jul 27, 2024
1 parent 4a10d59 commit 369d963
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

* [breaking] The control pipe is now provided in the `UsbDeviceBuilder` API to allow for user-provided control
pipes. This makes it so that control pipes have configurable sizing.
* Don't require UsbBus to be Sync. If a UsbBus is not Sync, it can still be used to make a UsbDevice, but that UsbDevice will not be Sync (ensuring soundness).

## [0.3.2] - 2024-03-06

Expand Down
2 changes: 1 addition & 1 deletion src/bus.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ use portable_atomic::{AtomicPtr, Ordering};
/// take place before [`enable`](UsbBus::enable) is called. After the bus is enabled, in practice
/// most access won't mutate the object itself but only endpoint-specific registers and buffers, the
/// access to which is mostly arbitrated by endpoint handles.
pub trait UsbBus: Sync + Sized {
pub trait UsbBus: Sized {
/// Allocates an endpoint and specified endpoint parameters. This method is called by the device
/// and class implementations to allocate endpoints, and can only be called before
/// [`enable`](UsbBus::enable) is called.
Expand Down

0 comments on commit 369d963

Please sign in to comment.