Releases: kevinmehall/nusb
Releases · kevinmehall/nusb
v0.2.0-beta.2
Changes since v0.2.0-beta.1
- Add
EndpointRead
andEndpointWrite
types that wrap anEndpoint
and buffer data to implementstd::io::{Read, Write}
and related async traits from Tokio and Smol (#141) - Define a new
Error
type instead of re-exportingstd::io::Error
(#142) - Panic if awaiting a blocking syscall without
smol
ortokio
features. (#147) - Linux: Canonicalize sysfs paths (#138)
- Linux: remove
BusInfo::parent_path
(#138) - macOS: Copy configuration descriptors when opening device (#140)
- macOS: Update core-foundation, switch to IOUSBInterfaceInterface700 and IOUSBDeviceInterface650 (#148)
v0.2.0-beta.1
This is a pre-release for anyone interested in testing the new functionality and APIs in v0.2.
New Features
- Redesigned
Endpoint
API. (#117) - Configuration functions that were previously blocking are available as blocking or async via
MaybeFuture
. If you are using them asynchronously, you will want to enable thesmol
ortokio
features to defer the blocking syscalls to the corresponding runtime's blocking thread pool. (#100) - Add
DeviceInfo::port_chain
with the path of port numbers from the root hub to this device. (#71) - Add
list_buses()
andBusInfo
for information on USB buses. (#77) - Include error code in
TransferError::Unknown
. (#64) - Add
Device::device_descriptor
for access to device details from an opened device. (#102) - Windows: Enable
RAW_IO
for bulk IN endpoints for improved performance. (#6) - Linux: Enable zero-copy IO with buffers allocated by
Endpoint::allocate
. (#11)
Fixes
- Windows: Allow claiming associated interfaces of multi-interface functions.
- Windows: List interfaces of composite devices that are bound to WinUSB at the device level.
- Windows: Include hubs in the device list. (#85)
Breaking Changes
list_devices
DeviceInfo::open
,Device::from_fd
,Device::set_configuration
,Device::reset
,Interface::set_alt_setting
,Device::claim_interface
Device::detach_and_claim_interface
, andEndpoint::clear_halt
now returnimpl MaybeFuture
. Adduse nusb::MaybeFuture
and call.wait()
for previous blocking functionality.Queue
has been replaced byEndpoint
.Interface
methods for single bulk and interupt transfers withTransferFuture
have been removed -- useEndpoint
or upcoming IO wrappers.Interface
andDevice
methodscontrol_in_blocking
/control_out_blocking
have been replaced withcontrol_in
/control_out
with.wait()
fromMaybeFuture
.Interface
andDevice
methodscontrol_in
/control_out
now accept a timeout. Dropping the returnedFuture
no longer cancels the transfer.- Bulk and Interrupt IN transfers that are not a multiple of the max packet size return an error.
DeviceInfo::bus_number
(integer) has been replaced withDeviceInfo::bus_id
(string).- Renamed
EndpointType
toTransferType
. - Renamed descriptor types (#115)
- Use
NonZeroU8
for string descriptor indexes. - Descriptor constructors return
Option
instead of panic. TransferError::Unknown
has an integer field for the error code.- Linux: Root hubs are no longer included in the device list.
Minimum Rust version is now 1.79.
Remaining for v0.2
- High-level transfer APIs wrapping
Endpoint
and managing transfers and buffers to implementBufRead
,AsyncBufRead
,Write
,AsyncWrite
to replace removedInterface
methods for simple use cases. - Comprehensive tests.
- Control transfer timeouts for Windows.
- Ensure API is compatible with WebUSB.
Contributors
@kevinmehall @pgorgon-hem @kirisauce @tuna-f1sh @CCnut @martinling
v0.1.14
Fixes
- Fix race condition in transfer cancellation that could lead to a crash on any OS when a transfer is cancelled at the exact moment it completes, and additionally on macOS when cancelling several transfers simultaneously by dropping or cancelling a Queue. (#130)
- macOS: Fix claiming interfaces on a device where interfaces are not numbered contiguously (#132)
Contributors
v0.1.13
v0.1.12
v0.1.11
Fixes
- macOS: Fix
Device::set_configuration
andDevice::reset
(#88) - macOS: Fix detection of
TransferError::Stall
(#88)
New Features
- Hotplug events:
nusb::watch_devices()
API for device connect / disconnect event notifications, supported on Windows, macOS, and Linux. (#20) Device::from_fd
for wrapping an already-opened usbfs file descriptor. This can be used with the Android APIs for requesting USB device permissions on a non-rooted Android device. (#80)Device::detach_kernel_driver
andDevice::attach_kernel_driver
for controlling kernel drivers on Linux without claiming an interface (#65)
Contributors
v0.1.10
Fixes
- windows: Fix speed detection for SuperSpeed and SuperSpeed+ by @kevinmehall and @wangxiaochuTHU in #56
- windows: Handle
ERROR_OPERATION_ABORTED
result when a transfer is cancelled by @martinling in #63 - macos: Fix listing of devices where bus number > 0x80 by @kevinmehall in #67
New Contributors
- @baloo made their first contribution in #55
- @martinling made their first contribution in #62
- @wangxiaochuTHU made their first contribution inhttps://github.com//pull/56
Full Changelog: v0.1.9...v0.1.10
v0.1.9
Fixes
- macOS: Update endpoints when interface alt setting is changed by @alexmoon in #50
- macOS: Don't panic when passed an invalid endpoint address
Improvements
- Extend the lifetime of objects returned from
Configuration::descriptors
,Configuration::interface_alt_settings
, andConfiguration::interfaces
by @kevinmehall in #51 - Add
Interface::interface_number
andInterface::descriptors
methods by @kevinmehall in #51
Full Changelog: v0.1.8...v0.1.9
v0.1.8
v0.1.7
New features
- Add
Interface::clear_halt
andQueue::clear_halt
- #46
Fixes
- windows: Allow opening interfaces of a composite device that use the registry key
DeviceInterfaceGUID
rather thanDeviceInterfaceGUIDs
- #39 - windows: Fix crash when calling
Interface::set_alt_setting
- windows: Improve error message when attempting to claim an interface not associated with WinUSB driver - #41
- windows: Document and warn on case where WinUSB changes the passed control transfer
index
field to the interface number - #45 - linux: Fix build on s390x and when using rustix libc backend - #44
- Lower log level to
debug!()
for errors in enumeration. - #40
Contributors
@elfmimi @jonlamb-gh @kevinmehall
Full Changelog: v0.1.6...v0.1.7