embassy-stm32

Crates

git

Versions

stm32f412rg

Flavors

embassy_stm32::usb

Struct Driver

Source
pub struct Driver<'d, T: Instance> { /* private fields */ }
Expand description

USB driver.

Implementations§

Source§

impl<'d, T: Instance> Driver<'d, T>

Source

pub fn new_fs( _peri: impl Peripheral<P = T> + 'd, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, dp: impl Peripheral<P = impl DpPin<T>> + 'd, dm: impl Peripheral<P = impl DmPin<T>> + 'd, ep_out_buffer: &'d mut [u8], config: Config, ) -> Self

Initializes USB OTG peripheral with internal Full-Speed PHY.

§Arguments
  • ep_out_buffer - An internal buffer used to temporarily store received packets. Must be large enough to fit all OUT endpoint max packet sizes. Endpoint allocation will fail if it is too small.
Source

pub fn new_hs( _peri: impl Peripheral<P = T> + 'd, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, dp: impl Peripheral<P = impl DpPin<T>> + 'd, dm: impl Peripheral<P = impl DmPin<T>> + 'd, ep_out_buffer: &'d mut [u8], config: Config, ) -> Self

Initializes USB OTG peripheral with internal High-Speed PHY.

§Arguments
  • ep_out_buffer - An internal buffer used to temporarily store received packets. Must be large enough to fit all OUT endpoint max packet sizes. Endpoint allocation will fail if it is too small.
Source

pub fn new_fs_ulpi( _peri: impl Peripheral<P = T> + 'd, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, ulpi_clk: impl Peripheral<P = impl UlpiClkPin<T>> + 'd, ulpi_dir: impl Peripheral<P = impl UlpiDirPin<T>> + 'd, ulpi_nxt: impl Peripheral<P = impl UlpiNxtPin<T>> + 'd, ulpi_stp: impl Peripheral<P = impl UlpiStpPin<T>> + 'd, ulpi_d0: impl Peripheral<P = impl UlpiD0Pin<T>> + 'd, ulpi_d1: impl Peripheral<P = impl UlpiD1Pin<T>> + 'd, ulpi_d2: impl Peripheral<P = impl UlpiD2Pin<T>> + 'd, ulpi_d3: impl Peripheral<P = impl UlpiD3Pin<T>> + 'd, ulpi_d4: impl Peripheral<P = impl UlpiD4Pin<T>> + 'd, ulpi_d5: impl Peripheral<P = impl UlpiD5Pin<T>> + 'd, ulpi_d6: impl Peripheral<P = impl UlpiD6Pin<T>> + 'd, ulpi_d7: impl Peripheral<P = impl UlpiD7Pin<T>> + 'd, ep_out_buffer: &'d mut [u8], config: Config, ) -> Self

Initializes USB OTG peripheral with external Full-speed PHY (usually, a High-speed PHY in Full-speed mode).

§Arguments
  • ep_out_buffer - An internal buffer used to temporarily store received packets. Must be large enough to fit all OUT endpoint max packet sizes. Endpoint allocation will fail if it is too small.
Source

pub fn new_hs_ulpi( _peri: impl Peripheral<P = T> + 'd, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, ulpi_clk: impl Peripheral<P = impl UlpiClkPin<T>> + 'd, ulpi_dir: impl Peripheral<P = impl UlpiDirPin<T>> + 'd, ulpi_nxt: impl Peripheral<P = impl UlpiNxtPin<T>> + 'd, ulpi_stp: impl Peripheral<P = impl UlpiStpPin<T>> + 'd, ulpi_d0: impl Peripheral<P = impl UlpiD0Pin<T>> + 'd, ulpi_d1: impl Peripheral<P = impl UlpiD1Pin<T>> + 'd, ulpi_d2: impl Peripheral<P = impl UlpiD2Pin<T>> + 'd, ulpi_d3: impl Peripheral<P = impl UlpiD3Pin<T>> + 'd, ulpi_d4: impl Peripheral<P = impl UlpiD4Pin<T>> + 'd, ulpi_d5: impl Peripheral<P = impl UlpiD5Pin<T>> + 'd, ulpi_d6: impl Peripheral<P = impl UlpiD6Pin<T>> + 'd, ulpi_d7: impl Peripheral<P = impl UlpiD7Pin<T>> + 'd, ep_out_buffer: &'d mut [u8], config: Config, ) -> Self

Initializes USB OTG peripheral with external High-Speed PHY.

§Arguments
  • ep_out_buffer - An internal buffer used to temporarily store received packets. Must be large enough to fit all OUT endpoint max packet sizes. Endpoint allocation will fail if it is too small.

Trait Implementations§

Source§

impl<'d, T: Instance> Driver<'d> for Driver<'d, T>

Source§

type EndpointOut = Endpoint<'d, Out>

Type of the OUT endpoints for this driver.
Source§

type EndpointIn = Endpoint<'d, In>

Type of the IN endpoints for this driver.
Source§

type ControlPipe = ControlPipe<'d>

Type of the control pipe for this driver.
Source§

type Bus = Bus<'d, T>

Type for bus control for this driver.
Source§

fn alloc_endpoint_in( &mut self, ep_type: EndpointType, max_packet_size: u16, interval_ms: u8, ) -> Result<Self::EndpointIn, EndpointAllocError>

Allocates an IN endpoint. Read more
Source§

fn alloc_endpoint_out( &mut self, ep_type: EndpointType, max_packet_size: u16, interval_ms: u8, ) -> Result<Self::EndpointOut, EndpointAllocError>

Allocates an OUT endpoint. Read more
Source§

fn start(self, control_max_packet_size: u16) -> (Self::Bus, Self::ControlPipe)

Start operation of the USB device. Read more

Auto Trait Implementations§

§

impl<'d, T> Freeze for Driver<'d, T>

§

impl<'d, T> !RefUnwindSafe for Driver<'d, T>

§

impl<'d, T> Send for Driver<'d, T>
where T: Send,

§

impl<'d, T> Sync for Driver<'d, T>
where T: Sync,

§

impl<'d, T> Unpin for Driver<'d, T>

§

impl<'d, T> !UnwindSafe for Driver<'d, T>

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.