ariel_os::reexports::embassy_usb

Struct Builder

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

UsbDevice builder.

Implementations§

§

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

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], ) -> Builder<'d, D>

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.

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

Creates the UsbDevice instance with the configuration in this builder.

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.

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.

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.

pub fn string(&mut self) -> StringIndex

Allocates a new string index.

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.

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

Add an MS OS 2.0 Device Level Feature Descriptor.

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.

§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

§

const WITNESS: W = W::MAKE

A constant of the type witness
§

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

§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
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> Same for T

Source§

type Output = T

Should always be Self
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V