ariel_os::reexports::embassy_usb::class::hid

Struct HidReader

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

USB HID reader.

You can obtain a HidReader using HidReaderWriter::split.

Implementations§

§

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

pub async fn ready(&mut self)

Waits for the interrupt out endpoint to be enabled.

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

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.

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.

§

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