Embassy
embassy-usb

Crates

git

Versions

default

Flavors

Struct embassy_usb::Builder

source ·
pub struct Builder<'d, D: Driver<'d>> { /* private fields */ }
Expand description

UsbDevice builder.

Implementations§

source§

impl<'d, D: Driver<'d>> Builder<'d, D>

source

pub fn new( driver: D, config: Config<'d>, config_descriptor_buf: &'d mut [u8], bos_descriptor_buf: &'d mut [u8], msos_descriptor_buf: &'d mut [u8], control_buf: &'d mut [u8] ) -> Self

Creates a builder for constructing a new UsbDevice.

control_buf is a buffer used for USB control request data. It should be sized large enough for the length of the largest control request (in or out) anticipated by any class added to the device.

source

pub fn build(self) -> UsbDevice<'d, D>

Creates the UsbDevice instance with the configuration in this builder.

source

pub fn control_buf_len(&self) -> usize

Returns the size of the control request data buffer. Can be used by classes to validate the buffer is large enough for their needs.

source

pub fn function( &mut self, class: u8, subclass: u8, protocol: u8 ) -> FunctionBuilder<'_, 'd, D>

Add an USB function.

If Config::composite_with_iads is set, this will add an IAD descriptor with the given class/subclass/protocol, associating all the child interfaces.

If it’s not set, no IAD descriptor is added.

source

pub fn handler(&mut self, handler: &'d mut dyn Handler)

Add a Handler.

The Handler is called on some USB bus events, and to handle all control requests not already handled by the USB stack.

source

pub fn string(&mut self) -> StringIndex

Allocates a new string index.

source

pub fn msos_descriptor(&mut self, windows_version: u32, vendor_code: u8)

Add an MS OS 2.0 Descriptor Set.

Panics if called more than once.

source

pub fn msos_feature<T: DeviceLevelDescriptor>(&mut self, desc: T)

Add an MS OS 2.0 Device Level Feature Descriptor.

source

pub fn msos_writer(&mut self) -> &mut MsOsDescriptorWriter<'d>

Gets the underlying MsOsDescriptorWriter to allow adding subsets and features for classes that do not add their own.

Auto Trait Implementations§

§

impl<'d, D> Freeze for Builder<'d, D>
where D: Freeze,

§

impl<'d, D> !RefUnwindSafe for Builder<'d, D>

§

impl<'d, D> !Send for Builder<'d, D>

§

impl<'d, D> !Sync for Builder<'d, D>

§

impl<'d, D> Unpin for Builder<'d, D>
where D: Unpin,

§

impl<'d, D> !UnwindSafe for Builder<'d, D>

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

§

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

§

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.