Skip to main content

UsbError

Enum UsbError 

Source
#[non_exhaustive]
pub enum UsbError { Stall, Timeout, Overflow, BitStuffError, CrcError, DataSeqError, BufferTooSmall, AllPipesInUse, ProtocolError, TooManyDevices, NoSuchEndpoint, }
Expand description

Errors reported from a USB operation

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Stall

The device has stalled the endpoint

See USB 2.0 section 8.5.2 and 8.5.3.4, and, for a prolific user of stall conditions, the USB Mass Storage Bulk-Only Transport section 6.

§

Timeout

The USB transaction has timed out

A NAK response is automatically retried, but if NAKs persist, eventually the transfer will time out.

§

Overflow

The input FIFO overflowed

This error, produced by the USB host-controller hardware, probably represents a bug in cotton-usb-host (or perhaps a failure to service interrupts quickly enough).

§

BitStuffError

The USB hardware experienced a bit-stuffing error

§

CrcError

The USB hardware experienced a CRC error

§

DataSeqError

The USB hardware received a DATA1 packet when expecting DATA0, or vice versa

This probably indicates a bug in cotton-usb-host (which is intended to take care of the data toggle without client code needing to intervene).

§

BufferTooSmall

A buffer supplied to cotton-usb-host was too small for the intended data

§

AllPipesInUse

A USB transaction was attempted when all hardware resources were in use

This error is returned from HostController::try_alloc_interrupt_pipe() when all interrupt-capable pipes are already in use. Users of UsbBus::interrupt_endpoint_in() do not experience this error, as that call will wait for the next pipe to be available.

§

ProtocolError

The device has reacted in a way contrary to the expected protocol

§

TooManyDevices

The limit of attached USB devices has been reached

§

NoSuchEndpoint

UsbDevice::open_in_endpoint() was called with a bogus endpoint number

Trait Implementations§

Source§

impl Clone for UsbError

Source§

fn clone(&self) -> UsbError

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for UsbError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Format for UsbError

Source§

fn format(&self, f: Formatter<'_>)

Writes the defmt representation of self to fmt.
Source§

impl PartialEq for UsbError

Source§

fn eq(&self, other: &UsbError) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for UsbError

Source§

impl Eq for UsbError

Source§

impl StructuralPartialEq for UsbError

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Any for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Source§

fn type_name(&self) -> &'static str

Source§

impl<T> AnySync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.