pub struct Driver<'d, T: Instance> { /* private fields */ }
Expand description
USB driver.
Implementations§
source§impl<'d, T: Instance> Driver<'d, T>
impl<'d, T: Instance> Driver<'d, T>
sourcepub 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
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.
sourcepub 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
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.
sourcepub 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
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.
sourcepub 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
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>
impl<'d, T: Instance> Driver<'d> for Driver<'d, T>
source§type EndpointOut = Endpoint<'d, Out>
type EndpointOut = Endpoint<'d, Out>
Type of the OUT endpoints for this driver.
source§type EndpointIn = Endpoint<'d, In>
type EndpointIn = Endpoint<'d, In>
Type of the IN endpoints for this driver.
source§type ControlPipe = ControlPipe<'d>
type ControlPipe = ControlPipe<'d>
Type of the control pipe for this driver.
source§fn alloc_endpoint_in(
&mut self,
ep_type: EndpointType,
max_packet_size: u16,
interval_ms: u8,
) -> Result<Self::EndpointIn, EndpointAllocError>
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>
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
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more