Skip to main content

UsbBus

Struct UsbBus 

Source
pub struct UsbBus(/* private fields */);
Expand description

Usb bus driver to be used with the usb-device crate.

Implementations§

Source§

impl UsbBus

Source

pub fn new(usb: USB) -> UsbBusAllocator<Self>

Create a new UsbBus. Uses the heap for allocating the various buffers.

Source

pub fn enable_sof_irq(&self)

Enable Start Of Frame IRQ.

Source

pub fn disable_sof_irq(&self)

Disable Start Of Frame IRQ.

Trait Implementations§

Source§

impl Drop for UsbBus

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl UsbBus for UsbBus

Source§

fn alloc_ep( &mut self, ep_dir: UsbDirection, ep_addr: Option<EndpointAddress>, ep_type: EndpointType, ep_size: u16, _interval: u8, ) -> Result<EndpointAddress>

Allocate an unidirectional endpoint. To create a control endpoint, which is always bidirectional, this method needs to be called twice with different values for ep_dir.

Source§

fn enable(&mut self)

Enables and initializes the USB peripheral. Soon after enabling the device will be reset, so there is no need to perform a USB reset in this method.
Source§

fn reset(&self)

Called when the host resets the device. This will be soon called after poll returns PollResult::Reset. This method should reset the state of all endpoints and peripheral flags back to a state suitable for enumeration, as well as ensure that all endpoints previously allocated with alloc_ep are initialized as specified.
Source§

fn set_device_address(&self, addr: u8)

Sets the device USB address to addr.
Source§

fn write(&self, ep_addr: EndpointAddress, buf: &[u8]) -> Result<usize>

Writes a single packet of data to the specified endpoint and returns number of bytes actually written. Read more
Source§

fn read(&self, ep_addr: EndpointAddress, buf: &mut [u8]) -> Result<usize>

Reads a single packet of data from the specified endpoint and returns the actual length of the packet. Read more
Source§

fn set_stalled(&self, ep_addr: EndpointAddress, stalled: bool)

Sets or clears the STALL condition for an endpoint. If the endpoint is an OUT endpoint, it should be prepared to receive data again.
Source§

fn is_stalled(&self, _ep_addr: EndpointAddress) -> bool

Gets whether the STALL condition is set for an endpoint.
Source§

fn suspend(&self)

Causes the USB peripheral to enter USB suspend mode, lowering power consumption and preparing to detect a USB wakeup event. This will be called after poll returns PollResult::Suspend. The device will continue be polled, and it shall return a value other than Suspend from poll when it no longer detects the suspend condition.
Source§

fn resume(&self)

Resumes from suspend mode. This may only be called after the peripheral has been previously suspended.
Source§

fn poll(&self) -> PollResult

Gets information about events and incoming data. Usually called in a loop or from an interrupt handler. See the PollResult struct for more information.
Source§

fn force_reset(&self) -> Result<(), UsbError>

Simulates a disconnect from the USB bus, causing the host to reset and re-enumerate the device. Read more
Source§

const QUIRK_SET_ADDRESS_BEFORE_STATUS: bool = false

Indicates that set_device_address must be called before accepting the corresponding control transfer, not after. Read more

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> 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> 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, 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.