embassy-usb

Crates

git

Versions

default

Flavors

embassy_usb::class::hid

Struct HidReader

Source
pub struct HidReader<'d, D: Driver<'d>, const N: usize> { /* private fields */ }
Expand description

USB HID reader.

You can obtain a HidReader using HidReaderWriter::split.

Implementations§

Source§

impl<'d, D: Driver<'d>, const N: usize> HidReader<'d, D, N>

Source

pub async fn ready(&mut self)

Waits for the interrupt out endpoint to be enabled.

Source

pub async fn run<T: RequestHandler>( self, use_report_ids: bool, handler: &mut T, ) -> !

Delivers output reports from the Interrupt Out pipe to handler.

If use_report_ids is true, the first byte of the report will be used as the ReportId value. Otherwise the ReportId value will be 0.

Source

pub async fn read(&mut self, buf: &mut [u8]) -> Result<usize, ReadError>

Reads an output report from the Interrupt Out pipe.

Note: Any reports sent from the host over the control pipe will be passed to RequestHandler::set_report() for handling. The application is responsible for ensuring output reports from both pipes are handled correctly.

Note: If N > the maximum packet size of the endpoint (i.e. output reports may be split across multiple packets) and this method’s future is dropped after some packets have been read, the next call to read() will return a ReadError::Sync. The range in the sync error indicates the portion buf that was filled by the current call to read(). If the dropped future used the same buf, then buf will contain the full report.

Auto Trait Implementations§

§

impl<'d, D, const N: usize> Freeze for HidReader<'d, D, N>
where <D as Driver<'d>>::EndpointOut: Freeze,

§

impl<'d, D, const N: usize> RefUnwindSafe for HidReader<'d, D, N>
where <D as Driver<'d>>::EndpointOut: RefUnwindSafe,

§

impl<'d, D, const N: usize> Send for HidReader<'d, D, N>
where <D as Driver<'d>>::EndpointOut: Send,

§

impl<'d, D, const N: usize> Sync for HidReader<'d, D, N>
where <D as Driver<'d>>::EndpointOut: Sync,

§

impl<'d, D, const N: usize> Unpin for HidReader<'d, D, N>
where <D as Driver<'d>>::EndpointOut: Unpin,

§

impl<'d, D, const N: usize> UnwindSafe for HidReader<'d, D, N>
where <D as Driver<'d>>::EndpointOut: UnwindSafe,

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.